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.
    *

Reply via email to