• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Sort类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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


示例16: 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.PHYSICAL).plus(rel.getCollation()),
                      convert(rel.getInput(), rel.getInput().getTraitSet().replace(Prel.PHYSICAL).simplify()),
                      rel.getCollation());
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:9,代码来源:SortConvertPrule.java


示例17: visitChild

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override
protected RelNode visitChild(RelNode parent, int i, RelNode child) {

  // Ignore the root node.
  if (null == parent) {
    return super.visitChild(parent, i, child);
  }

  // Ignore non-sort child nodes.
  if (!(child instanceof Sort)) {
    return super.visitChild(parent, i, child);
  }

  // Ignore the sort for the top level SELECT. It's valid to use ORDER BY
  // without FETCH / OFFSET here.
  if (child == topLevelSort) {
    return super.visitChild(parent, i, child);
  }

  // If the child Sort has FETCH and LIMIT clauses, do not touch them.
  Sort childAsSort = (Sort) child;
  if (childAsSort.offset == null &&
      childAsSort.fetch == null) {
    parent.replaceInput(i, childAsSort.getInput());
    return super.visitChild(parent, i, childAsSort.getInput());
  }

  return super.visitChild(parent, i, child);
}
 
开发者ID:dremio,项目名称:dremio-oss,代码行数:30,代码来源:MoreRelOptUtil.java


示例18: convert

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
@Override public RelNode convert(RelNode rel) {
  Sort sort = (Sort) rel;
  final RelNode input = sort.getInput();
  return new BeamSortRel(
      sort.getCluster(),
      sort.getTraitSet().replace(BeamLogicalConvention.INSTANCE),
      convert(input, input.getTraitSet().replace(BeamLogicalConvention.INSTANCE)),
      sort.getCollation(),
      sort.offset,
      sort.fetch
  );
}
 
开发者ID:apache,项目名称:beam,代码行数:13,代码来源:BeamSortRule.java


示例19: requiredCollation

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
private RelCollation requiredCollation(RelNode r) {
	if (r instanceof Sort) {
		return ((Sort) r).collation;
	}
	if (r instanceof Project) {
		return requiredCollation(((Project) r).getInput());
	}
	if (r instanceof Delta) {
		return requiredCollation(((Delta) r).getInput());
	}
	throw new AssertionError();
}
 
开发者ID:axbaretto,项目名称:flink,代码行数:13,代码来源:SqlToRelConverter.java


示例20: decorrelateRel

import org.apache.calcite.rel.core.Sort; //导入依赖的package包/类
/**
 * Rewrite Sort.
 *
 * @param rel Sort to be rewritten
 */
public Frame decorrelateRel(Sort rel) {
	//
	// Rewrite logic:
	//
	// 1. change the collations field to reference the new input.
	//

	// Sort itself should not reference cor vars.
	assert !cm.mapRefRelToCorVar.containsKey(rel);

	// Sort only references field positions in collations field.
	// The collations field in the newRel now need to refer to the
	// new output positions in its input.
	// Its output does not change the input ordering, so there's no
	// need to call propagateExpr.

	final RelNode oldInput = rel.getInput();
	final Frame frame = getInvoke(oldInput, rel);
	if (frame == null) {
		// If input has not been rewritten, do not rewrite this rel.
		return null;
	}
	final RelNode newInput = frame.r;

	Mappings.TargetMapping mapping = Mappings.target(frame.oldToNewOutputPos, oldInput.getRowType().getFieldCount(), newInput.getRowType().getFieldCount());

	RelCollation oldCollation = rel.getCollation();
	RelCollation newCollation = RexUtil.apply(mapping, oldCollation);

	final Sort newSort = LogicalSort.create(newInput, newCollation, rel.offset, rel.fetch);

	// Sort does not change input ordering
	return register(rel, newSort, frame.oldToNewOutputPos, frame.corVarOutputPos);
}
 
开发者ID:axbaretto,项目名称:flink,代码行数:40,代码来源:FlinkRelDecorrelator.java



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Policies类代码示例发布时间:2022-05-22
下一篇:
Java JvmGenericArrayTypeReference类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap