当前位置: 首页>>代码示例>>Java>>正文


Java Sort类代码示例

本文整理汇总了Java中org.apache.calcite.rel.core.Sort的典型用法代码示例。如果您正苦于以下问题:Java Sort类的具体用法?Java Sort怎么用?Java Sort使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


Sort类属于org.apache.calcite.rel.core包,在下文中一共展示了Sort类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: OrderByInSubQueryRemover

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
/**
 * Constructor.
 *
 * @param root The root of the plan.
 */
public OrderByInSubQueryRemover(RelNode root)
{
  // Identify if there is either a sort at the plan root, or
  // a Project with a sort at the plan root. These Sorts should not
  // be skipped since ORDER BY is always legal there.
  if (root instanceof Sort) {
    this.topLevelSort = (Sort) root;
  }
  else if (root instanceof Project &&
    root.getInput(0) instanceof Sort) {
    this.topLevelSort = (Sort) root.getInput(0);
  }
  else {
    this.topLevelSort = null;
  }
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:22,代码来源:MoreRelOptUtil.java

示例2: onMatch

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override
public void onMatch(RelOptRuleCall call) {
    final Sort sort = call.rel(0);
    if (sort.offset == null && sort.fetch == null) {
        return;
    }

    RelTraitSet origTraitSet = sort.getTraitSet();
    RelTraitSet traitSet = origTraitSet.replace(OLAPRel.CONVENTION).simplify();

    RelNode input = sort.getInput();
    if (!sort.getCollation().getFieldCollations().isEmpty()) {
        // Create a sort with the same sort key, but no offset or fetch.
        input = sort.copy(sort.getTraitSet(), input, sort.getCollation(), null, null);
    }
    RelNode x = convert(input, input.getTraitSet().replace(OLAPRel.CONVENTION));
    call.transformTo(new OLAPLimitRel(sort.getCluster(), traitSet, x, sort.offset, sort.fetch));
}
 
开发者ID:apache,项目名称:kylin,代码行数:19,代码来源:OLAPLimitRule.java

示例3: signature

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
/** Returns a string describing the operations inside this query.
 *
 * <p>For example, "sfpaol" means {@link TableScan} (s)
 * followed by {@link Filter} (f)
 * followed by {@link Project} (p)
 * followed by {@link Aggregate} (a)
 * followed by {@link Project} (o)
 * followed by {@link Sort} (l).
 *
 * @see #isValidSignature(String)
 */
String signature() {
  final StringBuilder b = new StringBuilder();
  boolean flag = false;
  for (RelNode rel : rels) {
    b.append(rel instanceof TableScan ? 's'
        : (rel instanceof Project && flag) ? 'o'
        : rel instanceof Filter ? 'f'
        : rel instanceof Aggregate ? 'a'
        : rel instanceof Sort ? 'l'
        : rel instanceof Project ? 'p'
        : '!');
    flag = flag || rel instanceof Aggregate;
  }
  return b.toString();
}
 
开发者ID:apache,项目名称:calcite,代码行数:27,代码来源:DruidQuery.java

示例4: onMatch

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
public void onMatch(RelOptRuleCall call) {
  final Sort sort = call.rel(0);
  final DruidQuery query = call.rel(1);
  if (!DruidQuery.isValidSignature(query.signature() + 'l')) {
    return;
  }
  // Either it is:
  // - a sort and limit on a dimension/metric part of the druid group by query or
  // - a sort without limit on the time column on top of
  //     Agg operator (transformable to timeseries query), or
  // - a simple limit on top of other operator than Agg
  if (!validSortLimit(sort, query)) {
    return;
  }
  final RelNode newSort = sort.copy(sort.getTraitSet(),
          ImmutableList.of(Util.last(query.rels)));
  call.transformTo(DruidQuery.extendQuery(query, newSort));
}
 
开发者ID:apache,项目名称:calcite,代码行数:19,代码来源:DruidRules.java

示例5: getMaxRowCount

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
public Double getMaxRowCount(Sort rel, RelMetadataQuery mq) {
  Double rowCount = mq.getMaxRowCount(rel.getInput());
  if (rowCount == null) {
    rowCount = Double.POSITIVE_INFINITY;
  }
  final int offset = rel.offset == null ? 0 : RexLiteral.intValue(rel.offset);
  rowCount = Math.max(rowCount - offset, 0D);

  if (rel.fetch != null) {
    final int limit = RexLiteral.intValue(rel.fetch);
    if (limit < rowCount) {
      return (double) limit;
    }
  }
  return rowCount;
}
 
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:RelMdMaxRowCount.java

示例6: getMinRowCount

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
public Double getMinRowCount(Sort rel, RelMetadataQuery mq) {
  Double rowCount = mq.getMinRowCount(rel.getInput());
  if (rowCount == null) {
    rowCount = 0D;
  }
  final int offset = rel.offset == null ? 0 : RexLiteral.intValue(rel.offset);
  rowCount = Math.max(rowCount - offset, 0D);

  if (rel.fetch != null) {
    final int limit = RexLiteral.intValue(rel.fetch);
    if (limit < rowCount) {
      return (double) limit;
    }
  }
  return rowCount;
}
 
开发者ID:apache,项目名称:calcite,代码行数:17,代码来源:RelMdMinRowCount.java

示例7: onMatch

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
public void onMatch(RelOptRuleCall call) {
  final Project project = call.rel(0);
  final Sort sort = call.rel(1);
  if (sort.getClass() != Sort.class) {
    return;
  }
  RelNode newProject =
      project.copy(
          project.getTraitSet(), ImmutableList.of(sort.getInput()));
  final Sort newSort =
      sort.copy(
          sort.getTraitSet(),
          newProject,
          sort.getCollation(),
          sort.offset,
          sort.fetch);
  call.transformTo(newSort);
}
 
开发者ID:apache,项目名称:calcite,代码行数:19,代码来源:ProjectSortTransposeRule.java

示例8: convert

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
public RelNode convert(
    RelOptPlanner planner,
    RelNode rel,
    RelCollation toCollation,
    boolean allowInfiniteCostConverters) {
  if (toCollation.getFieldCollations().isEmpty()) {
    // An empty sort doesn't make sense.
    return null;
  }

  // Create a logical sort, then ask the planner to convert its remaining
  // traits (e.g. convert it to an EnumerableSortRel if rel is enumerable
  // convention)
  final Sort sort = LogicalSort.create(rel, toCollation, null, null);
  RelNode newRel = planner.register(sort, rel);
  final RelTraitSet newTraitSet = rel.getTraitSet().replace(toCollation);
  if (!newRel.getTraitSet().equals(newTraitSet)) {
    newRel = planner.changeTraits(newRel, newTraitSet);
  }
  return newRel;
}
 
开发者ID:apache,项目名称:calcite,代码行数:22,代码来源:RelCollationTraitDef.java

示例9: visit

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
/** @see #dispatch */
public Result visit(Sort e) {
  Result x = visitChild(0, e.getInput());
  Builder builder = x.builder(e, Clause.ORDER_BY);
  List<SqlNode> orderByList = Expressions.list();
  for (RelFieldCollation field : e.getCollation().getFieldCollations()) {
    builder.addOrderItem(orderByList, field);
  }
  if (!orderByList.isEmpty()) {
    builder.setOrderBy(new SqlNodeList(orderByList, POS));
    x = builder.result();
  }
  if (e.fetch != null) {
    builder = x.builder(e, Clause.FETCH);
    builder.setFetch(builder.context.toSql(null, e.fetch));
    x = builder.result();
  }
  if (e.offset != null) {
    builder = x.builder(e, Clause.OFFSET);
    builder.setOffset(builder.context.toSql(null, e.offset));
    x = builder.result();
  }
  return x;
}
 
开发者ID:apache,项目名称:calcite,代码行数:25,代码来源:RelToSqlConverter.java

示例10: rewriteRel

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
public void rewriteRel(Sort rel) {
  RelCollation oldCollation = rel.getCollation();
  final RelNode oldChild = rel.getInput();
  final RelNode newChild = getNewForOldRel(oldChild);
  final Mappings.TargetMapping mapping =
      getNewForOldInputMapping(oldChild);

  // validate
  for (RelFieldCollation field : oldCollation.getFieldCollations()) {
    int oldInput = field.getFieldIndex();
    RelDataType sortFieldType =
        oldChild.getRowType().getFieldList().get(oldInput).getType();
    if (sortFieldType.isStruct()) {
      // TODO jvs 10-Feb-2005
      throw Util.needToImplement("sorting on structured types");
    }
  }
  RelCollation newCollation = RexUtil.apply(mapping, oldCollation);
  Sort newRel =
      LogicalSort.create(newChild, newCollation, rel.offset, rel.fetch);
  setNewForOldRel(rel, newRel);
}
 
开发者ID:apache,项目名称:calcite,代码行数:23,代码来源:RelStructuredTypeFlattener.java

示例11: onMatch

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override
public void onMatch(RelOptRuleCall call) {
  final Sort incomingSort = call.rel(0);
  final RelTraitSet incomingTraits = incomingSort.getTraitSet();
  RelNode input = incomingSort.getInput();

  // if the Optiq sort rel includes a collation and a limit, we need to create a copy the sort rel that excludes the
  // limit information.
  if (!incomingSort.getCollation().getFieldCollations().isEmpty()) {
    input = incomingSort.copy(incomingTraits, input, incomingSort.getCollation(), null, null);
  }

  RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
  call.transformTo(new DrillLimitRel(incomingSort.getCluster(), convertedInput.getTraitSet().plus(DrillRel.DRILL_LOGICAL), convertedInput, incomingSort.offset, incomingSort.fetch));
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:16,代码来源:DrillLimitRule.java

示例12: onMatch

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override
public void onMatch(RelOptRuleCall call) {

  final Sort sort = call.rel(0);

  final RelNode input = sort.getInput();
  final RelTraitSet traits = sort.getTraitSet().plus(DrillRel.DRILL_LOGICAL);

  final RelNode convertedInput = convert(input, input.getTraitSet().plus(DrillRel.DRILL_LOGICAL));
  call.transformTo(new DrillSortRel(sort.getCluster(), traits, convertedInput, sort.getCollation()));
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:12,代码来源:DrillSortRule.java

示例13: convert

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override
public RelNode convert(RelNode r) {
  Sort rel = (Sort) r;
  return new SortPrel(rel.getCluster(),
                      rel.getInput().getTraitSet().replace(Prel.DRILL_PHYSICAL).plus(rel.getCollation()),
                      convert(rel.getInput(), rel.getInput().getTraitSet().replace(Prel.DRILL_PHYSICAL)),
                      rel.getCollation());
}
 
开发者ID:skhalifa,项目名称:QDrill,代码行数:9,代码来源:SortConvertPrule.java

示例14: onMatch

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override
public void onMatch(RelOptRuleCall call) {

  final Sort sort = call.rel(0);

  final RelNode input = sort.getInput();
  final RelTraitSet traits = sort.getTraitSet().plus(Rel.LOGICAL);

  final RelNode convertedInput = convert(input, input.getTraitSet().plus(Rel.LOGICAL).simplify());
  call.transformTo(new SortRel(sort.getCluster(), traits, convertedInput, sort.getCollation()));
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:12,代码来源:SortRule.java

示例15: onMatch

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override
public void onMatch(RelOptRuleCall call) {
  final Sort incomingSort = call.rel(0);
  final RelTraitSet incomingTraits = incomingSort.getTraitSet();
  RelNode input = incomingSort.getInput();

  // if the calcite sort rel includes a collation and a limit, we need to create a copy the sort rel that excludes the
  // limit information.
  if (!incomingSort.getCollation().getFieldCollations().isEmpty()) {
    input = incomingSort.copy(incomingTraits, input, incomingSort.getCollation(), null, null);
  }

  RelNode convertedInput = convert(input, input.getTraitSet().plus(Rel.LOGICAL).simplify());
  call.transformTo(new LimitRel(incomingSort.getCluster(), convertedInput.getTraitSet().plus(Rel.LOGICAL), convertedInput, incomingSort.offset, incomingSort.fetch));
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:16,代码来源:LimitRule.java


注:本文中的org.apache.calcite.rel.core.Sort类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。