本文整理了Java中org.apache.calcite.plan.RelOptUtil.pushDownJoinConditions
方法的一些代码示例,展示了RelOptUtil.pushDownJoinConditions
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。RelOptUtil.pushDownJoinConditions
方法的具体详情如下:
包路径:org.apache.calcite.plan.RelOptUtil
类名称: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);
}
内容来源于网络,如有侵权,请联系作者删除!