public static SelectBuilder buildQuery()

in java/clickhouse-client/src/main/java/com/epam/deltix/clickhouse/util/SelectQueryHelper.java [63:105]


    public static SelectBuilder buildQuery(QuerySource querySource, SearchRequestDefinition<String> searchRequest,
                                           Map<String, ColumnDeclaration> columnDeclarations, boolean distinct) {
        validateSearchRequest(searchRequest, columnDeclarations);

        List<String> expressions = searchRequest.getExpressions();
        FilterNode<String> filter = searchRequest.getFilter();
        List<? extends SortDefinition<String>> sorts = searchRequest.getSorts();
        List<String> groupByExpressions = searchRequest.getGroupByExpressions();
        Long skip = searchRequest.getSkip();
        Integer take = searchRequest.getTake();

        SelectBuilder selectBuilder = new SelectBuilder();
        querySource.populateFrom(selectBuilder);

        if (expressions != null)
            selectBuilder.expressions(expressions);
        else
            selectBuilder.expressions(SqlQueryHelper.getQueryExpressions(querySource.getExpressions()));

        if (filter != null)
            selectBuilder.where(parseWhereNode(querySource, filter, columnDeclarations));

        if (sorts != null)
            addSorts(selectBuilder, sorts, columnDeclarations);

        if (groupByExpressions != null)
            selectBuilder.groupBy(groupByExpressions);

        if (distinct)
            selectBuilder.distinct();

        if (take != null) {
            if (skip != null)
                selectBuilder.limit(skip.longValue(), take.intValue());
            else
                selectBuilder.limit(take.intValue());
        } else {
            if (skip != null)
                LOG.info().append("Ignoring 'skip' parameter as take was not set.");
        }

        return selectBuilder;
    }