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;
}