org.apache.calcite.plan.RelOptUtil.permutation()方法的使用及代码示例

x33g5p2x  于2022-01-29 转载在 其他  
字(3.5k)|赞(0)|评价(0)|浏览(81)

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

RelOptUtil.permutation介绍

[英]Returns a permutation describing where output fields come from. In the returned map, value of map.getTargetOpt(i) is n if field i projects input field n, -1 if it is an expression.
[中]返回描述输出字段来源的排列。在返回的映射中,映射的值。如果字段i投影输入字段n,则GetTargetToPt(i)为n,如果它是表达式,则为-1。

代码示例

代码示例来源:origin: apache/hive

RelOptUtil.permutation(refs, union.getInput(0).getRowType()).inverse();
topChildExprs = ImmutableList.copyOf(RexUtil.apply(mapping, topChildExprs));

代码示例来源:origin: apache/hive

RelOptUtil.permutation(Pair.left(newChildExprs), sort.getInput().getRowType()).inverse();
List<RelFieldCollation> fieldCollations = new ArrayList<>();
for (RelFieldCollation fc : sort.getCollation().getFieldCollations()) {

代码示例来源:origin: apache/drill

RelOptUtil.permutation(refs, union.getInput(0).getRowType()).inverse();
topChildExprs = ImmutableList.copyOf(RexUtil.apply(mapping, topChildExprs));

代码示例来源:origin: apache/drill

RelOptUtil.permutation(Pair.left(newChildExprs), sort.getInput().getRowType()).inverse();
List<RelFieldCollation> fieldCollations = new ArrayList<>();
for (RelFieldCollation fc : sort.getCollation().getFieldCollations()) {

代码示例来源:origin: apache/drill

public void onMatch(RelOptRuleCall call) {
 final HiveSortLimit sort = call.rel(0);
 final HiveProject project = call.rel(1);
 // Determine mapping between project input and output fields. If sort
 // relies on non-trivial expressions, we can't push.
 final Mappings.TargetMapping map =
   RelOptUtil.permutation(
     project.getProjects(), project.getInput().getRowType());
 for (RelFieldCollation fc : sort.getCollation().getFieldCollations()) {
  if (map.getTargetOpt(fc.getFieldIndex()) < 0) {
   return;
  }
 }
 // Create new collation
 final RelCollation newCollation =
   RelCollationTraitDef.INSTANCE.canonize(
     RexUtil.apply(map, sort.getCollation()));
 // New operators
 final HiveSortLimit newSort = sort.copy(sort.getTraitSet().replace(newCollation),
     project.getInput(), newCollation, sort.offset, sort.fetch);
 final RelNode newProject = project.copy(sort.getTraitSet(),
     ImmutableList.<RelNode>of(newSort));
 call.transformTo(newProject);
}

代码示例来源:origin: apache/drill

public void onMatch(RelOptRuleCall call) {
 final HiveProject project = call.rel(0);
 final HiveSortLimit sort = call.rel(1);
 // Determine mapping between project input and output fields. If sort
 // relies on non-trivial expressions, we can't push.
 final Mappings.TargetMapping map =
   RelOptUtil.permutation(
     project.getProjects(), project.getInput().getRowType()).inverse();
 for (RelFieldCollation fc : sort.getCollation().getFieldCollations()) {
  if (map.getTarget(fc.getFieldIndex()) < 0) {
   return;
  }
 }
 // Create new collation
 final RelCollation newCollation =
   RelCollationTraitDef.INSTANCE.canonize(
     RexUtil.apply(map, sort.getCollation()));
 // New operators
 final RelNode newProject = project.copy(sort.getInput().getTraitSet(),
     ImmutableList.<RelNode>of(sort.getInput()));
 final HiveSortLimit newSort = sort.copy(newProject.getTraitSet(),
     newProject, newCollation, sort.offset, sort.fetch);
 call.transformTo(newSort);
}

代码示例来源:origin: Qihoo360/Quicksql

RelOptUtil.permutation(refs, union.getInput(0).getRowType()).inverse();
topChildExprs = ImmutableList.copyOf(RexUtil.apply(mapping, topChildExprs));

代码示例来源:origin: org.apache.calcite/calcite-core

RelOptUtil.permutation(refs, union.getInput(0).getRowType()).inverse();
topChildExprs = ImmutableList.copyOf(RexUtil.apply(mapping, topChildExprs));

相关文章

微信公众号

最新文章

更多

RelOptUtil类方法