RelBuilder.toString()
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/c33a4f46 Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/c33a4f46 Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/c33a4f46 Branch: refs/heads/master Commit: c33a4f46177419b3191fadd5ccc60a8a2ecc8524 Parents: 0b7b24a Author: Julian Hyde <[email protected]> Authored: Fri Sep 28 17:46:11 2018 -0700 Committer: Julian Hyde <[email protected]> Committed: Wed Oct 31 12:01:27 2018 -0700 ---------------------------------------------------------------------- .../org/apache/calcite/tools/RelBuilder.java | 9 ++++++++ .../org/apache/calcite/test/RelBuilderTest.java | 22 ++++++++++++++++++++ 2 files changed, 31 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/calcite/blob/c33a4f46/core/src/main/java/org/apache/calcite/tools/RelBuilder.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java index 9a42e58..d13df3c 100644 --- a/core/src/main/java/org/apache/calcite/tools/RelBuilder.java +++ b/core/src/main/java/org/apache/calcite/tools/RelBuilder.java @@ -104,6 +104,7 @@ import java.util.Objects; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; +import java.util.stream.Collectors; import javax.annotation.Nonnull; import static org.apache.calcite.util.Static.RESOURCE; @@ -207,6 +208,14 @@ public class RelBuilder { return new RelBuilder(config.getContext(), clusters[0], relOptSchemas[0]); } + /** Converts this RelBuilder to a string. + * The string is the string representation of all of the RelNodes on the stack. */ + @Override public String toString() { + return stack.stream() + .map(frame -> RelOptUtil.toString(frame.rel)) + .collect(Collectors.joining("")); + } + /** Returns the type factory. */ public RelDataTypeFactory getTypeFactory() { return cluster.getTypeFactory(); http://git-wip-us.apache.org/repos/asf/calcite/blob/c33a4f46/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java index e89026a..880a1a9 100644 --- a/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java +++ b/core/src/test/java/org/apache/calcite/test/RelBuilderTest.java @@ -2162,6 +2162,28 @@ public class RelBuilderTest { assertThat(root, hasTree(expected)); } + @Test public void testRelBuilderToString() { + final RelBuilder builder = RelBuilder.create(config().build()); + builder.scan("EMP"); + + // One entry on the stack, a single-node tree + final String expected1 = "LogicalTableScan(table=[[scott, EMP]])\n"; + assertThat(builder.toString(), is(expected1)); + + // One entry on the stack, a two-node tree + builder.filter(builder.equals(builder.field(2), builder.literal(3))); + final String expected2 = "LogicalFilter(condition=[=($2, 3)])\n" + + " LogicalTableScan(table=[[scott, EMP]])\n"; + assertThat(builder.toString(), is(expected2)); + + // Two entries on the stack + builder.scan("DEPT"); + final String expected3 = "LogicalTableScan(table=[[scott, DEPT]])\n" + + "LogicalFilter(condition=[=($2, 3)])\n" + + " LogicalTableScan(table=[[scott, EMP]])\n"; + assertThat(builder.toString(), is(expected3)); + } + /** * Ensures that relational algebra ({@link RelBuilder}) works with SQL views. *
