minor, append context info in Rel writer
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/c21fe432 Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/c21fe432 Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/c21fe432 Branch: refs/heads/2.2.x Commit: c21fe4325ee6a846a7f2432df8e3330fa5fa556f Parents: da0d153 Author: Roger Shi <rogershijich...@hotmail.com> Authored: Fri Oct 13 10:57:57 2017 +0800 Committer: Roger Shi <rogershijich...@hotmail.com> Committed: Thu Oct 19 10:03:36 2017 +0800 ---------------------------------------------------------------------- .../java/org/apache/kylin/query/relnode/OLAPAggregateRel.java | 7 +++++++ .../java/org/apache/kylin/query/relnode/OLAPFilterRel.java | 7 +++++++ .../main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java | 7 +++++++ .../java/org/apache/kylin/query/relnode/OLAPLimitRel.java | 4 +++- .../java/org/apache/kylin/query/relnode/OLAPProjectRel.java | 7 +++++++ .../main/java/org/apache/kylin/query/relnode/OLAPSortRel.java | 6 ++++++ .../java/org/apache/kylin/query/relnode/OLAPTableScan.java | 5 ++++- .../apache/kylin/query/relnode/OLAPToEnumerableConverter.java | 6 ++++++ .../java/org/apache/kylin/query/relnode/OLAPUnionRel.java | 7 +++++-- .../java/org/apache/kylin/query/relnode/OLAPWindowRel.java | 4 +++- 10 files changed, 55 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java index 1540483..ca7c8ea 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPAggregateRel.java @@ -35,6 +35,7 @@ import org.apache.calcite.plan.RelTrait; import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.InvalidRelException; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; import org.apache.calcite.rel.core.Aggregate; import org.apache.calcite.rel.core.AggregateCall; import org.apache.calcite.rel.metadata.RelMetadataQuery; @@ -487,4 +488,10 @@ public class OLAPAggregateRel extends Aggregate implements OLAPRel { this.traitSet = this.traitSet.replace(trait); return oldTraitSet; } + + @Override + public RelWriter explainTerms(RelWriter pw) { + return super.explainTerms(pw).item("ctx", + context == null ? "" : String.valueOf(context.id) + "@" + context.realization); + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java index 8f86ae0..1887ecb 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPFilterRel.java @@ -36,6 +36,7 @@ import org.apache.calcite.plan.RelOptPlanner; import org.apache.calcite.plan.RelTrait; import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; import org.apache.calcite.rel.core.Filter; import org.apache.calcite.rel.metadata.RelMetadataQuery; import org.apache.calcite.rel.type.RelDataType; @@ -437,4 +438,10 @@ public class OLAPFilterRel extends Filter implements OLAPRel { this.traitSet = this.traitSet.replace(trait); return oldTraitSet; } + + @Override + public RelWriter explainTerms(RelWriter pw) { + return super.explainTerms(pw).item("ctx", + context == null ? "" : String.valueOf(context.id) + "@" + context.realization); + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java index 6d0a657..2a97a4c 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPJoinRel.java @@ -43,6 +43,7 @@ import org.apache.calcite.plan.RelTrait; import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.InvalidRelException; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; import org.apache.calcite.rel.core.CorrelationId; import org.apache.calcite.rel.core.JoinInfo; import org.apache.calcite.rel.core.JoinRelType; @@ -373,4 +374,10 @@ public class OLAPJoinRel extends EnumerableJoin implements OLAPRel { this.traitSet = this.traitSet.replace(trait); return oldTraitSet; } + + @Override + public RelWriter explainTerms(RelWriter pw) { + return super.explainTerms(pw).item("ctx", + context == null ? "" : String.valueOf(context.id) + "@" + context.realization); + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java index 2a248cc..700f615 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPLimitRel.java @@ -66,7 +66,9 @@ public class OLAPLimitRel extends SingleRel implements OLAPRel { @Override public RelWriter explainTerms(RelWriter pw) { - return super.explainTerms(pw).itemIf("offset", localOffset, localOffset != null).itemIf("fetch", localFetch, localFetch != null); + return super.explainTerms(pw) + .item("ctx", context == null ? "" : String.valueOf(context.id) + "@" + context.realization) + .itemIf("offset", localOffset, localOffset != null).itemIf("fetch", localFetch, localFetch != null); } @Override http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java index 8e93659..311e420 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPProjectRel.java @@ -36,6 +36,7 @@ import org.apache.calcite.plan.RelOptPlanner; import org.apache.calcite.plan.RelTrait; import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; import org.apache.calcite.rel.core.Project; import org.apache.calcite.rel.metadata.RelMetadataQuery; import org.apache.calcite.rel.type.RelDataType; @@ -372,4 +373,10 @@ public class OLAPProjectRel extends Project implements OLAPRel { public boolean isMerelyPermutation() { return isMerelyPermutation; } + + @Override + public RelWriter explainTerms(RelWriter pw) { + return super.explainTerms(pw).item("ctx", + context == null ? "" : String.valueOf(context.id) + "@" + context.realization); + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java index 03ba9c5..9a90d33 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPSortRel.java @@ -31,6 +31,7 @@ import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.RelCollation; import org.apache.calcite.rel.RelFieldCollation; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.RelWriter; import org.apache.calcite.rel.core.Sort; import org.apache.calcite.rel.metadata.RelMetadataQuery; import org.apache.calcite.rex.RexNode; @@ -147,4 +148,9 @@ public class OLAPSortRel extends Sort implements OLAPRel { return oldTraitSet; } + @Override + public RelWriter explainTerms(RelWriter pw) { + return super.explainTerms(pw).item("ctx", + context == null ? "" : String.valueOf(context.id) + "@" + context.realization); + } } http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPTableScan.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPTableScan.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPTableScan.java index b739326..2ee4513 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPTableScan.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPTableScan.java @@ -203,7 +203,10 @@ public class OLAPTableScan extends TableScan implements OLAPRel, EnumerableRel { @Override public RelWriter explainTerms(RelWriter pw) { - return super.explainTerms(pw).item("fields", Primitive.asList(fields)); + + return super.explainTerms(pw) + .item("ctx", context == null ? "" : String.valueOf(context.id) + "@" + context.realization) + .item("fields", Primitive.asList(fields)); } @Override http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java index 99dee11..cdef91d 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPToEnumerableConverter.java @@ -80,6 +80,12 @@ public class OLAPToEnumerableConverter extends ConverterImpl implements Enumerab intercept.intercept(contexts); } + if (System.getProperty("calcite.debug") != null) { + String dumpPlan = RelOptUtil.dumpPlan("", this, false, SqlExplainLevel.DIGEST_ATTRIBUTES); + System.out.println("EXECUTION PLAN AFTER OLAPCONTEXT IS SET"); + System.out.println(dumpPlan); + } + RealizationChooser.selectRealization(contexts); doAccessControl(contexts); http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPUnionRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPUnionRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPUnionRel.java index dadec58..f409045 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPUnionRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPUnionRel.java @@ -69,9 +69,12 @@ public class OLAPUnionRel extends Union implements OLAPRel { @Override public RelWriter explainTerms(RelWriter pw) { - return super.explainTerms(pw).itemIf("all", all, true); - } + boolean contextNotNull = context != null; + return super.explainTerms(pw) + .item("ctx", context == null ? "" : String.valueOf(context.id) + "@" + context.realization) + .itemIf("all", all, true); + } @Override public void implementOLAP(OLAPImplementor implementor) { // Always create new OlapContext to combine columns from all children contexts. http://git-wip-us.apache.org/repos/asf/kylin/blob/c21fe432/query/src/main/java/org/apache/kylin/query/relnode/OLAPWindowRel.java ---------------------------------------------------------------------- diff --git a/query/src/main/java/org/apache/kylin/query/relnode/OLAPWindowRel.java b/query/src/main/java/org/apache/kylin/query/relnode/OLAPWindowRel.java index 6470504..5cd94fd 100644 --- a/query/src/main/java/org/apache/kylin/query/relnode/OLAPWindowRel.java +++ b/query/src/main/java/org/apache/kylin/query/relnode/OLAPWindowRel.java @@ -65,7 +65,9 @@ public class OLAPWindowRel extends Window implements OLAPRel { @Override public RelWriter explainTerms(RelWriter pw) { - return super.explainTerms(pw) // + + return super.explainTerms(pw) + .item("ctx", context == null ? "" : String.valueOf(context.id) + "@" + context.realization)// .itemIf("constants", constants, !constants.isEmpty()) // .itemIf("groups", groups, !groups.isEmpty()); }