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

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

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

RelOptUtil.pushDownJoinConditions介绍

[英]Pushes down expressions in "equal" join condition.

For example, given "emp JOIN dept ON emp.deptno + 1 = dept.deptno", adds a project above "emp" that computes the expression "emp.deptno + 1". The resulting join condition is a simple combination of AND, equals, and input fields, plus the remaining non-equal conditions.
[中]按下“相等”连接条件下的表达式。
例如,给定“emp JOIN dept ON emp.deptno+1=dept.deptno”,在“emp”上方添加一个项目,该项目计算表达式“emp.deptno+1”。生成的联接条件是AND、equals和输入字段的简单组合,以及剩余的非相等条件。

代码示例

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

@Deprecated // to be removed before 2.0
public static RelNode pushDownJoinConditions(Join originalJoin) {
 return pushDownJoinConditions(originalJoin, RelFactories.LOGICAL_BUILDER);
}

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

@Deprecated // to be removed before 2.0
public static RelNode pushDownJoinConditions(Join originalJoin) {
 return pushDownJoinConditions(originalJoin, RelFactories.LOGICAL_BUILDER);
}

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

@Deprecated // to be removed before 2.0
public static RelNode pushDownJoinConditions(Join originalJoin,
  RelFactories.ProjectFactory projectFactory) {
 return pushDownJoinConditions(
   originalJoin, RelBuilder.proto(projectFactory));
}

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

@Deprecated // to be removed before 2.0
public static RelNode pushDownJoinConditions(Join originalJoin,
  RelFactories.ProjectFactory projectFactory) {
 return pushDownJoinConditions(
   originalJoin, RelBuilder.proto(projectFactory));
}

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

private static RelNode pushDownJoinConditions(Join originalJoin,
  RelBuilderFactory relBuilderFactory) {
 return pushDownJoinConditions(originalJoin,
   relBuilderFactory.create(originalJoin.getCluster(), null));
}

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

private static RelNode pushDownJoinConditions(Join originalJoin,
  RelBuilderFactory relBuilderFactory) {
 return pushDownJoinConditions(originalJoin,
   relBuilderFactory.create(originalJoin.getCluster(), null));
}

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

@Override public void onMatch(RelOptRuleCall call) {
  Join join = call.rel(0);

  // Push expression in join condition into Project below Join.
  RelNode newJoin = RelOptUtil.pushDownJoinConditions(join, call.builder());

  // If the join is the same, we bail out
  if (newJoin instanceof Join) {
   final RexNode newCondition = ((Join) newJoin).getCondition();
   if (join.getCondition().toString().equals(newCondition.toString())) {
    return;
   }
  }

  call.transformTo(newJoin);
 }
}

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

protected RelNode createJoin(
  Blackboard bb,
  RelNode leftRel,
  RelNode rightRel,
  RexNode joinCond,
  JoinRelType joinType) {
 assert joinCond != null;
 final CorrelationUse p = getCorrelationUse(bb, rightRel);
 if (p != null) {
  LogicalCorrelate corr = LogicalCorrelate.create(leftRel, p.r,
    p.id, p.requiredColumns, SemiJoinType.of(joinType));
  if (!joinCond.isAlwaysTrue()) {
   final RelFactories.FilterFactory factory =
     RelFactories.DEFAULT_FILTER_FACTORY;
   return factory.createFilter(corr, joinCond);
  }
  return corr;
 }
 final Join originalJoin =
   (Join) RelFactories.DEFAULT_JOIN_FACTORY.createJoin(leftRel, rightRel,
     joinCond, ImmutableSet.of(), joinType, false);
 return RelOptUtil.pushDownJoinConditions(originalJoin, relBuilder);
}

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

protected RelNode createJoin(
  Blackboard bb,
  RelNode leftRel,
  RelNode rightRel,
  RexNode joinCond,
  JoinRelType joinType) {
 assert joinCond != null;
 final CorrelationUse p = getCorrelationUse(bb, rightRel);
 if (p != null) {
  LogicalCorrelate corr = LogicalCorrelate.create(leftRel, p.r,
    p.id, p.requiredColumns, SemiJoinType.of(joinType));
  if (!joinCond.isAlwaysTrue()) {
   final RelFactories.FilterFactory factory =
     RelFactories.DEFAULT_FILTER_FACTORY;
   return factory.createFilter(corr, joinCond);
  }
  return corr;
 }
 final Join originalJoin =
   (Join) RelFactories.DEFAULT_JOIN_FACTORY.createJoin(leftRel, rightRel,
     joinCond, ImmutableSet.of(), joinType, false);
 return RelOptUtil.pushDownJoinConditions(originalJoin, relBuilder);
}

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

@Override public void onMatch(RelOptRuleCall call) {
  Join join = call.rel(0);

  // Push expression in join condition into Project below Join.
  RelNode newJoin = RelOptUtil.pushDownJoinConditions(join, call.builder());

  // If the join is the same, we bail out
  if (newJoin instanceof Join) {
   final RexNode newCondition = ((Join) newJoin).getCondition();
   if (join.getCondition().equals(newCondition)) {
    return;
   }
  }

  call.transformTo(newJoin);
 }
}

代码示例来源:origin: org.apache.kylin/atopcalcite

protected RelNode createJoin(
  Blackboard bb,
  RelNode leftRel,
  RelNode rightRel,
  RexNode joinCond,
  JoinRelType joinType) {
 assert joinCond != null;
 final CorrelationUse p = getCorrelationUse(bb, rightRel);
 if (p != null) {
  LogicalCorrelate corr = LogicalCorrelate.create(leftRel, p.r,
    p.id, p.requiredColumns, SemiJoinType.of(joinType));
  if (!joinCond.isAlwaysTrue()) {
   final RelFactories.FilterFactory factory =
     RelFactories.DEFAULT_FILTER_FACTORY;
   return factory.createFilter(corr, joinCond);
  }
  return corr;
 }
 // OVERRIDE POINT
 if (containOnlyCast(joinCond)) {
  joinCond = convertCastCondition(joinCond);
 }
 final Join originalJoin =
   (Join) RelFactories.DEFAULT_JOIN_FACTORY.createJoin(leftRel, rightRel,
     joinCond, ImmutableSet.<CorrelationId>of(), joinType, false);
 return RelOptUtil.pushDownJoinConditions(originalJoin);
}

代码示例来源:origin: dremio/dremio-oss

@Override
public void onMatch(RelOptRuleCall call) {
 final Join join = call.rel(0);
 final RelBuilder builder = factory.create(join.getCluster(), null);
 RelNode newJoin = RelOptUtil.pushDownJoinConditions(join, builder);
 // If the join is the same, reset to the original join so we can bail out later
 if (newJoin instanceof Join) {
  final RexNode newCondition = ((Join) newJoin).getCondition();
  if (join.getCondition().toString().equals(newCondition.toString())) {
   newJoin = join;
  }
 }
 // newJoin might be a join, or might be a join below a project.
 // Need to visit the tree to find the first join and extract the remaining
 // condition in a separate filter
 newJoin = newJoin.accept(new RelShuttleImpl() {
  @Override
  public RelNode visit(RelNode other) {
   if (!(other instanceof Join)) {
    return super.visit(other);
   }
   Join join = (Join) other;
   return getNewJoinCondition(builder, join);
  }
 });
 if (newJoin != join) {
  call.transformTo(newJoin);
 }
}

代码示例来源:origin: org.apache.flink/flink-table_2.10

protected RelNode createJoin(
  Blackboard bb,
  RelNode leftRel,
  RelNode rightRel,
  RexNode joinCond,
  JoinRelType joinType) {
  assert joinCond != null;
  final CorrelationUse p = getCorrelationUse(bb, rightRel);
  if (p != null) {
    LogicalCorrelate corr = LogicalCorrelate.create(leftRel, p.r,
      p.id, p.requiredColumns, SemiJoinType.of(joinType));
    if (!joinCond.isAlwaysTrue()) {
      final RelFactories.FilterFactory factory =
        RelFactories.DEFAULT_FILTER_FACTORY;
      return factory.createFilter(corr, joinCond);
    }
    return corr;
  }
  final Join originalJoin =
    (Join) RelFactories.DEFAULT_JOIN_FACTORY.createJoin(leftRel, rightRel,
      joinCond, ImmutableSet.<CorrelationId>of(), joinType, false);
  return RelOptUtil.pushDownJoinConditions(originalJoin);
}

相关文章

微信公众号

最新文章

更多

RelOptUtil类方法