You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by mm...@apache.org on 2018/07/20 17:41:39 UTC
[26/53] [abbrv] calcite git commit: [CALCITE-2398] SqlSelect must
call into SqlDialect for unparse (James Duong)
[CALCITE-2398] SqlSelect must call into SqlDialect for unparse (James Duong)
Close apache/calcite#750
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/606240d4
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/606240d4
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/606240d4
Branch: refs/heads/site
Commit: 606240d4f1e39ab36447a9b4abe20c6c519d5cab
Parents: 870e54f
Author: James Duong <jd...@dremio.com>
Authored: Tue Jul 3 16:42:18 2018 -0700
Committer: Julian Hyde <jh...@apache.org>
Committed: Sun Jul 8 22:41:09 2018 -0700
----------------------------------------------------------------------
.../java/org/apache/calcite/sql/SqlSelect.java | 4 ++--
.../rel/rel2sql/RelToSqlConverterTest.java | 24 ++++++++++++++++++++
2 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/606240d4/core/src/main/java/org/apache/calcite/sql/SqlSelect.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/calcite/sql/SqlSelect.java b/core/src/main/java/org/apache/calcite/sql/SqlSelect.java
index ad7d6ef..2c23774 100644
--- a/core/src/main/java/org/apache/calcite/sql/SqlSelect.java
+++ b/core/src/main/java/org/apache/calcite/sql/SqlSelect.java
@@ -233,10 +233,10 @@ public class SqlSelect extends SqlCall {
// ORDER. In this case, we don't need a wrapper frame.)
final SqlWriter.Frame frame =
writer.startList(SqlWriter.FrameTypeEnum.SUB_QUERY, "(", ")");
- getOperator().unparse(writer, this, 0, 0);
+ writer.getDialect().unparseCall(writer, this, 0, 0);
writer.endList(frame);
} else {
- getOperator().unparse(writer, this, leftPrec, rightPrec);
+ writer.getDialect().unparseCall(writer, this, leftPrec, rightPrec);
}
}
http://git-wip-us.apache.org/repos/asf/calcite/blob/606240d4/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
index 53ba8a9..c5af61a 100644
--- a/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
+++ b/core/src/test/java/org/apache/calcite/rel/rel2sql/RelToSqlConverterTest.java
@@ -26,9 +26,12 @@ import org.apache.calcite.rel.RelNode;
import org.apache.calcite.rel.rules.UnionMergeRule;
import org.apache.calcite.runtime.FlatLists;
import org.apache.calcite.schema.SchemaPlus;
+import org.apache.calcite.sql.SqlCall;
import org.apache.calcite.sql.SqlDialect;
import org.apache.calcite.sql.SqlDialect.Context;
import org.apache.calcite.sql.SqlNode;
+import org.apache.calcite.sql.SqlSelect;
+import org.apache.calcite.sql.SqlWriter;
import org.apache.calcite.sql.dialect.CalciteSqlDialect;
import org.apache.calcite.sql.dialect.HiveSqlDialect;
import org.apache.calcite.sql.dialect.JethroDataSqlDialect;
@@ -2514,6 +2517,27 @@ public class RelToSqlConverterTest {
sql(query).ok(expected);
}
+ @Test public void testUnparseSelectMustUseDialect() {
+ final String query = "select * from \"product\"";
+ final String expected = "SELECT *\n"
+ + "FROM foodmart.product";
+
+ final boolean[] callsUnparseCallOnSqlSelect = {false};
+ final SqlDialect dialect = new SqlDialect(SqlDialect.EMPTY_CONTEXT) {
+ @Override public void unparseCall(SqlWriter writer, SqlCall call,
+ int leftPrec, int rightPrec) {
+ if (call instanceof SqlSelect) {
+ callsUnparseCallOnSqlSelect[0] = true;
+ }
+ super.unparseCall(writer, call, leftPrec, rightPrec);
+ }
+ };
+ sql(query).dialect(dialect).ok(expected);
+
+ assertThat("Dialect must be able to customize unparseCall() for SqlSelect",
+ callsUnparseCallOnSqlSelect[0], is(true));
+ }
+
/** Fluid interface to run tests. */
private static class Sql {
private CalciteAssert.SchemaSpec schemaSpec;