org.apache.calcite.rel.core.Join.getInput()方法的使用及代码示例

x33g5p2x  于2022-01-22 转载在 其他  
字(10.2k)|赞(0)|评价(0)|浏览(68)

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

Join.getInput介绍

暂无

代码示例

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

private void infer(List<RexNode> predicates, Set<String> allExprsDigests,
  List<RexNode> inferedPredicates, List<RexNode> nonFieldsPredicates,
  boolean includeEqualityInference, ImmutableBitSet inferringFields) {
 for (RexNode r : predicates) {
  if (!includeEqualityInference
    && equalityPredicates.contains(r.toString())) {
   continue;
  }
  Iterable<Mapping> ms = mappings(r);
  if (ms.iterator().hasNext()) {
   for (Mapping m : ms) {
    RexNode tr = r.accept(
      new RexPermuteInputsShuttle(m, joinRel.getInput(0),
        joinRel.getInput(1)));
    if (inferringFields.contains(RelOptUtil.InputFinder.bits(tr))
      && !allExprsDigests.contains(tr.toString())
      && !isAlwaysTrue(tr)) {
     inferedPredicates.add(tr);
     allExprsDigests.add(tr.toString());
    }
   }
  } else {
   if (!isAlwaysTrue(r)) {
    nonFieldsPredicates.add(r);
   }
  }
 }
}

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

/** Infers predicates for a {@link org.apache.calcite.rel.core.Join}. */
public RelOptPredicateList getPredicates(Join join, RelMetadataQuery mq) {
 RexBuilder rB = join.getCluster().getRexBuilder();
 RelNode left = join.getInput(0);
 RelNode right = join.getInput(1);
 final RelOptPredicateList leftInfo = mq.getPulledUpPredicates(left);
 final RelOptPredicateList rightInfo = mq.getPulledUpPredicates(right);
 JoinConditionBasedPredicateInference jI =
   new JoinConditionBasedPredicateInference(join,
     RexUtil.composeConjunction(rB, leftInfo.pulledUpPredicates, false),
     RexUtil.composeConjunction(rB, rightInfo.pulledUpPredicates,
       false));
 return jI.inferPredicates(false);
}

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

private void infer(List<RexNode> predicates, Set<String> allExprsDigests,
  List<RexNode> inferedPredicates, List<RexNode> nonFieldsPredicates,
  boolean includeEqualityInference, ImmutableBitSet inferringFields) {
 for (RexNode r : predicates) {
  if (!includeEqualityInference
    && equalityPredicates.contains(r.toString())) {
   continue;
  }
  Iterable<Mapping> ms = mappings(r);
  if (ms.iterator().hasNext()) {
   for (Mapping m : ms) {
    RexNode tr = r.accept(
      new RexPermuteInputsShuttle(m, joinRel.getInput(0),
        joinRel.getInput(1)));
    if (inferringFields.contains(RelOptUtil.InputFinder.bits(tr))
      && !allExprsDigests.contains(tr.toString())
      && !isAlwaysTrue(tr)) {
     inferedPredicates.add(tr);
     allExprsDigests.add(tr.toString());
    }
   }
  } else {
   if (!isAlwaysTrue(r)) {
    nonFieldsPredicates.add(r);
   }
  }
 }
}

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

/** Infers predicates for a {@link org.apache.calcite.rel.core.Join}. */
public RelOptPredicateList getPredicates(Join join, RelMetadataQuery mq) {
 RexBuilder rB = join.getCluster().getRexBuilder();
 RelNode left = join.getInput(0);
 RelNode right = join.getInput(1);
 final RelOptPredicateList leftInfo = mq.getPulledUpPredicates(left);
 final RelOptPredicateList rightInfo = mq.getPulledUpPredicates(right);
 JoinConditionBasedPredicateInference jI =
   new JoinConditionBasedPredicateInference(join,
     RexUtil.composeConjunction(rB, leftInfo.pulledUpPredicates, false),
     RexUtil.composeConjunction(rB, rightInfo.pulledUpPredicates,
       false));
 return jI.inferPredicates(false);
}

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

private boolean filterRefersToBothSidesOfJoin(RexNode filter, Join j) {
  boolean refersToBothSides = false;

  int joinNoOfProjects = j.getRowType().getFieldCount();
  ImmutableBitSet filterProjs = ImmutableBitSet.FROM_BIT_SET.apply(new BitSet(joinNoOfProjects));
  ImmutableBitSet allLeftProjs = filterProjs.union(ImmutableBitSet.range(0, j.getInput(0)
    .getRowType().getFieldCount()));
  ImmutableBitSet allRightProjs = filterProjs.union(ImmutableBitSet.range(j.getInput(0)
    .getRowType().getFieldCount(), joinNoOfProjects));

  filterProjs = filterProjs.union(InputFinder.bits(filter));

  if (allLeftProjs.intersects(filterProjs) && allRightProjs.intersects(filterProjs))
   refersToBothSides = true;

  return refersToBothSides;
 }
}

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

final RelNode oldLeft = rel.getInput(0);
final RelNode oldRight = rel.getInput(1);

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

private boolean filterRefersToBothSidesOfJoin(RexNode filter, Join j) {
  boolean refersToBothSides = false;

  int joinNoOfProjects = j.getRowType().getFieldCount();
  ImmutableBitSet filterProjs = ImmutableBitSet.FROM_BIT_SET.apply(new BitSet(joinNoOfProjects));
  ImmutableBitSet allLeftProjs = filterProjs.union(ImmutableBitSet.range(0, j.getInput(0)
    .getRowType().getFieldCount()));
  ImmutableBitSet allRightProjs = filterProjs.union(ImmutableBitSet.range(j.getInput(0)
    .getRowType().getFieldCount(), joinNoOfProjects));

  filterProjs = filterProjs.union(InputFinder.bits(filter));

  if (allLeftProjs.intersects(filterProjs) && allRightProjs.intersects(filterProjs))
   refersToBothSides = true;

  return refersToBothSides;
 }
}

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

nSysFields + nFieldsLeft, nSysFields, 0, nFieldsLeft);
leftChildPredicates = lPreds.accept(
  new RexPermuteInputsShuttle(leftMapping, joinRel.getInput(0)));
  nSysFields + nFieldsLeft, 0, nFieldsRight);
rightChildPredicates = rPreds.accept(
  new RexPermuteInputsShuttle(rightMapping, joinRel.getInput(1)));

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

nSysFields + nFieldsLeft, nSysFields, 0, nFieldsLeft);
leftChildPredicates = lPreds.accept(
  new RexPermuteInputsShuttle(leftMapping, joinRel.getInput(0)));
  nSysFields + nFieldsLeft, 0, nFieldsRight);
rightChildPredicates = rPreds.accept(
  new RexPermuteInputsShuttle(rightMapping, joinRel.getInput(1)));

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

for (int s = 0; s < 2; s++) {
 final Side side = new Side();
 final RelNode joinInput = join.getInput(s);
 int fieldCount = joinInput.getRowType().getFieldCount();
 final ImmutableBitSet fieldSet =

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

for (int s = 0; s < 2; s++) {
 final Side side = new Side();
 final RelNode joinInput = join.getInput(s);
 int fieldCount = joinInput.getRowType().getFieldCount();
 final ImmutableBitSet fieldSet =

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

@Test public void testAllPredicates() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkAllPredicates(cluster, empTable, deptTable);
  return null;
 });
}

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

/** Unit test for
 * {@link org.apache.calcite.rel.metadata.RelMdCollation#project}
 * and other helper functions for deducing collations. */
@Test public void testCollation() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkCollation(cluster, empTable, deptTable);
  return null;
 });
}

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

@Test public void testAllPredicates() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkAllPredicates(cluster, empTable, deptTable);
  return null;
 });
}

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

/** Unit test for
 * {@link org.apache.calcite.rel.metadata.RelMdPredicates#getPredicates(Join, RelMetadataQuery)}. */
@Test public void testPredicates() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkPredicates(cluster, empTable, deptTable);
  return null;
 });
}

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

/** Unit test for
 * {@link org.apache.calcite.rel.metadata.RelMdCollation#project}
 * and other helper functions for deducing collations. */
@Test public void testCollation() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkCollation(cluster, empTable, deptTable);
  return null;
 });
}

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

/** Unit test for
 * {@link org.apache.calcite.rel.metadata.RelMetadataQuery#getAverageColumnSizes(org.apache.calcite.rel.RelNode)},
 * {@link org.apache.calcite.rel.metadata.RelMetadataQuery#getAverageRowSize(org.apache.calcite.rel.RelNode)}. */
@Test public void testAverageRowSize() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkAverageRowSize(cluster, empTable, deptTable);
  return null;
 });
}

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

/** Unit test for
 * {@link org.apache.calcite.rel.metadata.RelMdPredicates#getPredicates(Join, RelMetadataQuery)}. */
@Test public void testPredicates() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkPredicates(cluster, empTable, deptTable);
  return null;
 });
}

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

/** Unit test for
 * {@link org.apache.calcite.rel.metadata.RelMetadataQuery#getAverageColumnSizes(org.apache.calcite.rel.RelNode)},
 * {@link org.apache.calcite.rel.metadata.RelMetadataQuery#getAverageRowSize(org.apache.calcite.rel.RelNode)}. */
@Test public void testAverageRowSize() {
 final Project rel = (Project) convertSql("select * from emp, dept");
 final Join join = (Join) rel.getInput();
 final RelOptTable empTable = join.getInput(0).getTable();
 final RelOptTable deptTable = join.getInput(1).getTable();
 Frameworks.withPlanner((cluster, relOptSchema, rootSchema) -> {
  checkAverageRowSize(cluster, empTable, deptTable);
  return null;
 });
}

代码示例来源:origin: com.alibaba.blink/flink-table

private static boolean isAggregateKeyApplicable(ImmutableBitSet aggregateKeys, Join join) {
  JoinInfo joinInfo = join.analyzeCondition();
  return (join.getJoinType() == JoinRelType.LEFT && joinInfo.leftSet().contains(aggregateKeys)) ||
      (join.getJoinType() == JoinRelType.RIGHT &&
          joinInfo.rightSet().shift(join.getInput(0).getRowType().getFieldCount())
              .contains(aggregateKeys));
}

相关文章