Repository: calcite Updated Branches: refs/heads/master 3b5d88e6a -> 29f518f0d
In EXPLAIN, give more descriptive names for streams derived from tables Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/a445ff2f Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/a445ff2f Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/a445ff2f Branch: refs/heads/master Commit: a445ff2f18d09a72a0f66f0db9d816d6a4bcd7c2 Parents: 3b5d88e Author: Julian Hyde <[email protected]> Authored: Thu Jun 23 16:41:22 2016 -0700 Committer: Julian Hyde <[email protected]> Committed: Sun Jun 26 17:55:30 2016 -0700 ---------------------------------------------------------------------- .../org/apache/calcite/prepare/RelOptTableImpl.java | 9 +++------ .../java/org/apache/calcite/rel/stream/StreamRules.java | 5 ++++- .../org/apache/calcite/sql2rel/SqlToRelConverter.java | 3 ++- .../test/java/org/apache/calcite/test/StreamTest.java | 12 ++++++------ 4 files changed, 15 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/a445ff2f/core/src/main/java/org/apache/calcite/prepare/RelOptTableImpl.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/prepare/RelOptTableImpl.java b/core/src/main/java/org/apache/calcite/prepare/RelOptTableImpl.java index 05c1127..969fa99 100644 --- a/core/src/main/java/org/apache/calcite/prepare/RelOptTableImpl.java +++ b/core/src/main/java/org/apache/calcite/prepare/RelOptTableImpl.java @@ -169,15 +169,12 @@ public class RelOptTableImpl implements Prepare.PreparingTable { } } - public static RelOptTableImpl create( - RelOptSchema schema, - RelDataType rowType, - Table table) { + public static RelOptTableImpl create(RelOptSchema schema, + RelDataType rowType, Table table, ImmutableList<String> names) { assert table instanceof TranslatableTable || table instanceof ScannableTable || table instanceof ModifiableTable; - return new RelOptTableImpl(schema, rowType, ImmutableList.<String>of(), - table, null, null); + return new RelOptTableImpl(schema, rowType, names, table, null, null); } public <T> T unwrap(Class<T> clazz) { http://git-wip-us.apache.org/repos/asf/calcite/blob/a445ff2f/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java b/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java index acb4eb6..538261c 100644 --- a/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java +++ b/core/src/main/java/org/apache/calcite/rel/stream/StreamRules.java @@ -192,7 +192,10 @@ public class StreamRules { final Table table1 = streamableTable.stream(); final RelOptTable relOptTable2 = RelOptTableImpl.create(relOptTable.getRelOptSchema(), - relOptTable.getRowType(), table1); + relOptTable.getRowType(), table1, + ImmutableList.<String>builder() + .addAll(relOptTable.getQualifiedName()) + .add("(STREAM)").build()); final LogicalTableScan newScan = LogicalTableScan.create(cluster, relOptTable2); call.transformTo(newScan); http://git-wip-us.apache.org/repos/asf/calcite/blob/a445ff2f/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java index 8b13e26..898e402 100644 --- a/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java +++ b/core/src/main/java/org/apache/calcite/sql2rel/SqlToRelConverter.java @@ -2120,7 +2120,8 @@ public class SqlToRelConverter { final TranslatableTable table = udf.getTable(typeFactory, callBinding.operands()); final RelDataType rowType = table.getRowType(typeFactory); - RelOptTable relOptTable = RelOptTableImpl.create(null, rowType, table); + RelOptTable relOptTable = RelOptTableImpl.create(null, rowType, table, + udf.getNameAsId().names); RelNode converted = toRel(relOptTable); bb.setRoot(converted, true); return; http://git-wip-us.apache.org/repos/asf/calcite/blob/a445ff2f/core/src/test/java/org/apache/calcite/test/StreamTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/StreamTest.java b/core/src/test/java/org/apache/calcite/test/StreamTest.java index 99403bd..6d79b1d 100644 --- a/core/src/test/java/org/apache/calcite/test/StreamTest.java +++ b/core/src/test/java/org/apache/calcite/test/StreamTest.java @@ -115,7 +115,7 @@ public class StreamTest { + " LogicalProject(ROWTIME=[$0], ID=[$1], PRODUCT=[$2], UNITS=[$3])\n" + " LogicalTableScan(table=[[STREAMS, ORDERS]])\n") .explainContains("EnumerableInterpreter\n" - + " BindableTableScan(table=[[]])") + + " BindableTableScan(table=[[STREAMS, ORDERS, (STREAM)]])") .returns( startsWith( "ROWTIME=2015-02-15 10:15:00; ID=1; PRODUCT=paint; UNITS=10", @@ -134,7 +134,7 @@ public class StreamTest { .explainContains( "EnumerableCalc(expr#0..3=[{inputs}], expr#4=[6], expr#5=[>($t3, $t4)], PRODUCT=[$t2], $condition=[$t5])\n" + " EnumerableInterpreter\n" - + " BindableTableScan(table=[[]])") + + " BindableTableScan(table=[[STREAMS, ORDERS, (STREAM)]])") .returns( startsWith("PRODUCT=paint", "PRODUCT=brush")); @@ -159,7 +159,7 @@ public class StreamTest { + " EnumerableAggregate(group=[{0, 1}], C=[COUNT()])\n" + " EnumerableCalc(expr#0..3=[{inputs}], expr#4=[FLAG(HOUR)], expr#5=[FLOOR($t0, $t4)], ROWTIME=[$t5], PRODUCT=[$t2])\n" + " EnumerableInterpreter\n" - + " BindableTableScan(table=[[]])") + + " BindableTableScan(table=[[STREAMS, ORDERS, (STREAM)]])") .returns( startsWith("ROWTIME=2015-02-15 10:00:00; PRODUCT=paint; C=2")); } @@ -180,7 +180,7 @@ public class StreamTest { "EnumerableSort(sort0=[$0], sort1=[$1], dir0=[ASC], dir1=[DESC])\n" + " EnumerableCalc(expr#0..3=[{inputs}], expr#4=[FLAG(HOUR)], expr#5=[FLOOR($t0, $t4)], ROWTIME=[$t5], PRODUCT=[$t2], UNITS=[$t3])\n" + " EnumerableInterpreter\n" - + " BindableTableScan(table=[[]])") + + " BindableTableScan(table=[[STREAMS, ORDERS, (STREAM)]])") .returns( startsWith("ROWTIME=2015-02-15 10:00:00; PRODUCT=paper; UNITS=5", "ROWTIME=2015-02-15 10:00:00; PRODUCT=paint; UNITS=10", @@ -230,7 +230,7 @@ public class StreamTest { .query("select stream * from orders") .limit(100) .explainContains("EnumerableInterpreter\n" - + " BindableTableScan(table=[[]])") + + " BindableTableScan(table=[[INFINITE_STREAMS, ORDERS, (STREAM)]])") .returnsCount(100); } @@ -252,7 +252,7 @@ public class StreamTest { + " EnumerableJoin(condition=[=($4, $5)], joinType=[inner])\n" + " EnumerableCalc(expr#0..3=[{inputs}], expr#4=[CAST($t2):VARCHAR(32) CHARACTER SET \"ISO-8859-1\" COLLATE \"ISO-8859-1$en_US$primary\" NOT NULL], proj#0..4=[{exprs}])\n" + " EnumerableInterpreter\n" - + " BindableTableScan(table=[[]])\n" + + " BindableTableScan(table=[[STREAM_JOINS, ORDERS, (STREAM)]])\n" + " EnumerableInterpreter\n" + " BindableTableScan(table=[[STREAM_JOINS, PRODUCTS]])") .returns(
