Skip to content

Commit

Permalink
[CALCITE-3111] Add RelBuilder.correlate method, and allow custom impl…
Browse files Browse the repository at this point in the history
…ementations of Correlate in RelDecorrelator (Juhwan Kim)

In RelDecorrelator, refactor all Logical rels into corresponding
abstract rels, and use given RelBuilder when creating a new rel.
Add abstract rel visitors in CorelMapBuilder, and change access
levels to allow extending RelDecorrelator.

Close #1334
  • Loading branch information
jh3507 authored and julianhyde committed Aug 20, 2019
1 parent a71def5 commit 11116f6
Show file tree
Hide file tree
Showing 8 changed files with 358 additions and 179 deletions.
28 changes: 28 additions & 0 deletions core/src/main/java/org/apache/calcite/plan/RelOptUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -1019,6 +1019,18 @@ public static RexNode splitCorrelatedFilterCondition(
List<RexNode> joinKeys,
List<RexNode> correlatedJoinKeys,
boolean extractCorrelatedFieldAccess) {
return splitCorrelatedFilterCondition(
(Filter) filter,
joinKeys,
correlatedJoinKeys,
extractCorrelatedFieldAccess);
}

public static RexNode splitCorrelatedFilterCondition(
Filter filter,
List<RexNode> joinKeys,
List<RexNode> correlatedJoinKeys,
boolean extractCorrelatedFieldAccess) {
final List<RexNode> nonEquiList = new ArrayList<>();

splitCorrelatedFilterCondition(
Expand Down Expand Up @@ -1371,6 +1383,22 @@ private static void splitCorrelatedFilterCondition(
List<RexNode> correlatedJoinKeys,
List<RexNode> nonEquiList,
boolean extractCorrelatedFieldAccess) {
splitCorrelatedFilterCondition(
(Filter) filter,
condition,
joinKeys,
correlatedJoinKeys,
nonEquiList,
extractCorrelatedFieldAccess);
}

private static void splitCorrelatedFilterCondition(
Filter filter,
RexNode condition,
List<RexNode> joinKeys,
List<RexNode> correlatedJoinKeys,
List<RexNode> nonEquiList,
boolean extractCorrelatedFieldAccess) {
if (condition instanceof RexCall) {
RexCall call = (RexCall) condition;
if (call.getOperator().getKind() == SqlKind.AND) {
Expand Down

0 comments on commit 11116f6

Please sign in to comment.