Если кому интересно, то начало тут: прошлое обсуждение (закрыл этот вопрос, потому как код не обновился, смысла там что-то писать нет) Переписал полностью весь код с 5, 6, 7 шага. (QLQuery inteface), выделил утилитные методы в отдельные классы. Методы для работы с запросом в QueryUtils.class методы для работы с логами в LogsUtils.class. Методы сделал статическими. Изменил логику работы метода LogParser.execute(String query) и получил +3 пункта "ОК". А непонятки остались. То есть, если рассуждать логически то: 1. Если проходят последние два пункта, а в особенности последний пункт, значит запрос разбирается верно, и алгоритм выборки данных по основной части запроса работает, условие из запроса парсится верно, метод возвращает верный набор данных 2. Если проходит хоть одно из всех прочих условий, значит верно парсятся и даты запрашиваемого промежутка. Алгоритм работы то на все возможные наборы полей запроса тоже один. То есть либо он по разному тестирует разные наборы <Запрашиваемое поле> for <Условие> = <Значение> and date between <промежуток времени>, либо он требует от одного алгоритма выбора и фильтрации данных разные результаты. Вопрос знатокам: А че надо то ему вообще? Проверял ручками что смог - все вроде верно работает. Понять не могу, как проверяет валидатор и что проверяет. Где он ошибку находит? Что должен вернуть метод, если для какого-то запроса не окажется данных. Например, логическая ошибка запроса вроде: "get status for date = "01.01.2015 0:00:00" and date between "01.01.2019 0:00:00" and "01.01.2020 0:00:00"" - null, пустой список? Фильтровать по датам интервала включительно или же нет?