com.facebook.presto.sql.tree.QuerySpecification.getOrderBy()方法的使用及代码示例

x33g5p2x  于2022-01-28 转载在 其他  
字(10.1k)|赞(0)|评价(0)|浏览(79)

本文整理了Java中com.facebook.presto.sql.tree.QuerySpecification.getOrderBy方法的一些代码示例,展示了QuerySpecification.getOrderBy的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。QuerySpecification.getOrderBy方法的具体详情如下:
包路径:com.facebook.presto.sql.tree.QuerySpecification
类名称:QuerySpecification
方法名:getOrderBy

QuerySpecification.getOrderBy介绍

暂无

代码示例

代码示例来源:origin: prestodb/presto

private void analyzeWindowFunctions(QuerySpecification node, List<Expression> outputExpressions, List<Expression> orderByExpressions)
{
  analysis.setWindowFunctions(node, analyzeWindowFunctions(node, outputExpressions));
  if (node.getOrderBy().isPresent()) {
    analysis.setOrderByWindowFunctions(node.getOrderBy().get(), analyzeWindowFunctions(node, orderByExpressions));
  }
}

代码示例来源:origin: prestodb/presto

private boolean hasAggregates(QuerySpecification node)
{
  ImmutableList.Builder<Node> toExtractBuilder = ImmutableList.builder();
  toExtractBuilder.addAll(node.getSelect().getSelectItems().stream()
      .filter(SingleColumn.class::isInstance)
      .collect(toImmutableList()));
  toExtractBuilder.addAll(getSortItemsFromOrderBy(node.getOrderBy()));
  node.getHaving().ifPresent(toExtractBuilder::add);
  List<FunctionCall> aggregates = extractAggregateFunctions(toExtractBuilder.build(), metadata.getFunctionRegistry());
  return !aggregates.isEmpty();
}

代码示例来源:origin: prestodb/presto

private List<Expression> analyzeOrderBy(QuerySpecification node, Scope orderByScope, List<Expression> outputExpressions)
{
  checkState(node.getOrderBy().isPresent(), "orderBy is absent");
  List<SortItem> sortItems = getSortItemsFromOrderBy(node.getOrderBy());
  if (node.getSelect().isDistinct()) {
    verifySelectDistinct(node, outputExpressions);
  }
  return analyzeOrderBy(node, sortItems, orderByScope);
}

代码示例来源:origin: prestodb/presto

private PlanBuilder limit(PlanBuilder subPlan, QuerySpecification node)
{
  return limit(subPlan, node.getOrderBy(), node.getLimit());
}

代码示例来源:origin: prestodb/presto

private PlanBuilder sort(PlanBuilder subPlan, QuerySpecification node)
{
  return sort(subPlan, node.getOrderBy(), node.getLimit(), analysis.getOrderByExpressions(node));
}

代码示例来源:origin: prestodb/presto

@Override
protected R visitQuerySpecification(QuerySpecification node, C context)
{
  process(node.getSelect(), context);
  if (node.getFrom().isPresent()) {
    process(node.getFrom().get(), context);
  }
  if (node.getWhere().isPresent()) {
    process(node.getWhere().get(), context);
  }
  if (node.getGroupBy().isPresent()) {
    process(node.getGroupBy().get(), context);
  }
  if (node.getHaving().isPresent()) {
    process(node.getHaving().get(), context);
  }
  if (node.getOrderBy().isPresent()) {
    process(node.getOrderBy().get(), context);
  }
  return null;
}

代码示例来源:origin: prestodb/presto

if (node.getOrderBy().isPresent()) {
  process(node.getOrderBy().get(), indent);

代码示例来源:origin: prestodb/presto

if (node.getOrderBy().isPresent()) {
  orderByScope = Optional.of(computeAndAssignOrderByScope(node.getOrderBy().get(), sourceScope, outputScope));
  orderByExpressions = analyzeOrderBy(node, orderByScope.get(), outputExpressions);
analyzeWindowFunctions(node, outputExpressions, orderByExpressions);
if (analysis.isAggregation(node) && node.getOrderBy().isPresent()) {
  computeAndAssignOrderByScopeWithAggregation(node.getOrderBy().get(), sourceScope, outputScope, orderByAggregations, groupByExpressions, orderByGroupingOperations);

代码示例来源:origin: prestodb/presto

querySpecification.getGroupBy(),
querySpecification.getHaving(),
querySpecification.getOrderBy(),
Optional.of("0"));

代码示例来源:origin: prestodb/presto

private void verifySelectDistinct(QuerySpecification node, List<Expression> outputExpressions)
{
  for (SortItem item : node.getOrderBy().get().getSortItems()) {
    Expression expression = item.getSortKey();
    if (expression instanceof LongLiteral) {
      continue;
    }
    Expression rewrittenOrderByExpression = ExpressionTreeRewriter.rewriteWith(new OrderByExpressionRewriter(extractNamedOutputExpressions(node.getSelect())), expression);
    int index = outputExpressions.indexOf(rewrittenOrderByExpression);
    if (index == -1) {
      throw new SemanticException(ORDER_BY_MUST_BE_IN_SELECT, node.getSelect(), "For SELECT DISTINCT, ORDER BY expressions must appear in select list");
    }
    if (!isDeterministic(expression)) {
      throw new SemanticException(NONDETERMINISTIC_ORDER_BY_EXPRESSION_WITH_SELECT_DISTINCT, expression, "Non deterministic ORDER BY expression is not supported with SELECT DISTINCT");
    }
  }
}

代码示例来源:origin: prestodb/presto

private void validateShowStatsSubquery(ShowStats node, Query query, QuerySpecification querySpecification, Plan plan)
{
  // The following properties of SELECT subquery are required:
  //  - only one relation in FROM
  //  - only predicates that can be pushed down can be in the where clause
  //  - no group by
  //  - no having
  //  - no set quantifier
  Optional<FilterNode> filterNode = searchFrom(plan.getRoot())
      .where(FilterNode.class::isInstance)
      .findSingle();
  check(!filterNode.isPresent(), node, "Only predicates that can be pushed down are supported in the SHOW STATS WHERE clause");
  check(querySpecification.getFrom().isPresent(), node, "There must be exactly one table in query passed to SHOW STATS SELECT clause");
  check(querySpecification.getFrom().get() instanceof Table, node, "There must be exactly one table in query passed to SHOW STATS SELECT clause");
  check(!query.getWith().isPresent(), node, "WITH is not supported by SHOW STATS SELECT clause");
  check(!querySpecification.getOrderBy().isPresent(), node, "ORDER BY is not supported in SHOW STATS SELECT clause");
  check(!querySpecification.getLimit().isPresent(), node, "LIMIT is not supported by SHOW STATS SELECT clause");
  check(!querySpecification.getHaving().isPresent(), node, "HAVING is not supported in SHOW STATS SELECT clause");
  check(!querySpecification.getGroupBy().isPresent(), node, "GROUP BY is not supported in SHOW STATS SELECT clause");
  check(!querySpecification.getSelect().isDistinct(), node, "DISTINCT is not supported by SHOW STATS SELECT clause");
  List<SelectItem> selectItems = querySpecification.getSelect().getSelectItems();
  check(selectItems.size() == 1 && selectItems.get(0) instanceof AllColumns, node, "Only SELECT * is supported in SHOW STATS SELECT clause");
}

代码示例来源:origin: prestodb/presto

builder = handleSubqueries(builder, node, outputs);
if (node.getOrderBy().isPresent()) {
  if (!analysis.isAggregation(node)) {
    builder = planBuilderFor(builder, analysis.getScope(node.getOrderBy().get()));
    List<Expression> orderByAggregates = analysis.getOrderByAggregates(node.getOrderBy().get());
    builder = project(builder, Iterables.concat(outputs, orderByAggregates));
    outputs = toSymbolReferences(computeOutputs(builder, outputs));
        .filter(expression -> !analysis.isColumnReference(expression))
        .collect(toImmutableList());
    builder = planBuilderFor(builder, analysis.getScope(node.getOrderBy().get()), complexOrderByAggregatesToRemap);
  builder = window(builder, node.getOrderBy().get());

代码示例来源:origin: prestodb/presto

if (node.getOrderBy().isPresent()) {
  print(indentLevel, "OrderBy");
  process(node.getOrderBy().get(), indentLevel + 1);

代码示例来源:origin: rakam-io/rakam

@Override
protected Void visitQuerySpecification(QuerySpecification node, Integer indent) {
  process(node.getSelect(), indent);
  if (node.getFrom().isPresent()) {
    append(indent, "FROM");
    builder.append('\n');
    append(indent, "  ");
    process(node.getFrom().get(), indent);
  }
  builder.append('\n');
  if (node.getWhere().isPresent()) {
    append(indent, "WHERE " + formatExpression(node.getWhere().get(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier))
        .append('\n');
  }
  if (node.getGroupBy().isPresent()) {
    append(indent, "GROUP BY " + (node.getGroupBy().get().isDistinct() ? " DISTINCT " : "") + formatGroupBy(node.getGroupBy().get().getGroupingElements())).append('\n');
  }
  if (node.getHaving().isPresent()) {
    append(indent, "HAVING " + formatExpression(node.getHaving().get(), tableNameMapper, columnNameMapper, queryWithTables, escapeIdentifier))
        .append('\n');
  }
  if (node.getOrderBy().isPresent()) {
    process(node.getOrderBy().get(), indent);
  }
  if (node.getLimit().isPresent()) {
    append(indent, "LIMIT " + node.getLimit().get())
        .append('\n');
  }
  return null;
}

代码示例来源:origin: rakam-io/rakam

.collect(Collectors.toList());
} else {
  orderBy = queryBody.getOrderBy().map(v -> v.getSortItems().stream().map(item ->
      new Ordering(item.getOrdering(), mapper.apply(item.getSortKey()), item.getSortKey().toString()))
      .collect(Collectors.toList())).orElse(ImmutableList.of());

代码示例来源:origin: rakam-io/rakam

node.getOrderBy().ifPresent((orderBy -> {
  for (SortItem sortItem : orderBy.getSortItems()) {
    String expression = RakamSqlFormatter.formatExpression(sortItem.getSortKey(), qualifiedNameStringFunction, columnMappingFunction, ' ');

代码示例来源:origin: uk.co.nichesolutions.presto/presto-main

private PlanBuilder limit(PlanBuilder subPlan, QuerySpecification node)
{
  return limit(subPlan, node.getOrderBy(), node.getLimit());
}

代码示例来源:origin: uk.co.nichesolutions.presto/presto-main

private PlanBuilder sort(PlanBuilder subPlan, QuerySpecification node)
{
  return sort(subPlan, node.getOrderBy(), node.getLimit(), analysis.getOrderByExpressions(node));
}

代码示例来源:origin: stackoverflow.com

public class PrestoParserTest {
  public static void main(String[] args) {
    SqlParser parser = new SqlParser();
    String sql = "select * from xyz where x=y group by x order by y limit 10";
    Query query = (Query)parser.createStatement(sql);
    QuerySpecification body = (QuerySpecification)query.getQueryBody();
    Select select = body.getSelect();
    System.out.println("Columns = " + select.getSelectItems());
    System.out.println("From = " + body.getFrom().get());
    Optional<Expression> where = body.getWhere();
    System.out.println("Where = " + where.get());
    System.out.println("Group by = " + body.getGroupBy());
    System.out.println("Order by = " + body.getOrderBy());
    System.out.println("Limit = " + body.getLimit().get());

  }
}

代码示例来源:origin: uk.co.nichesolutions.presto/presto-main

private List<FunctionCall> extractAggregates(QuerySpecification node)
{
  AggregateExtractor extractor = new AggregateExtractor(metadata);
  for (SelectItem item : node.getSelect().getSelectItems()) {
    if (item instanceof SingleColumn) {
      extractor.process(((SingleColumn) item).getExpression(), null);
    }
  }
  for (SortItem item : node.getOrderBy()) {
    extractor.process(item.getSortKey(), null);
  }
  if (node.getHaving().isPresent()) {
    extractor.process(node.getHaving().get(), null);
  }
  List<FunctionCall> aggregates = extractor.getAggregates();
  analysis.setAggregates(node, aggregates);
  return aggregates;
}

相关文章