You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@calcite.apache.org by jh...@apache.org on 2017/11/08 17:52:56 UTC
[2/3] calcite git commit: [CALCITE-2037] Modify parser template to
allow sub-projects to override SqlStmt syntax (Roman Kulyk)
[CALCITE-2037] Modify parser template to allow sub-projects to override SqlStmt syntax (Roman Kulyk)
Move additional (custom) statements on the top of the SqlStmt() method in Parser.jj.
Add test to "parserextensiontesting" parser (Julian Hyde).
Close apache/calcite#561
Project: http://git-wip-us.apache.org/repos/asf/calcite/repo
Commit: http://git-wip-us.apache.org/repos/asf/calcite/commit/5a0403cf
Tree: http://git-wip-us.apache.org/repos/asf/calcite/tree/5a0403cf
Diff: http://git-wip-us.apache.org/repos/asf/calcite/diff/5a0403cf
Branch: refs/heads/master
Commit: 5a0403cf7a31aa80d4de179f75b8154a7b0c7a58
Parents: fe3529d
Author: Roman Kulyk <ro...@gmail.com>
Authored: Tue Nov 7 14:48:08 2017 +0000
Committer: Julian Hyde <jh...@apache.org>
Committed: Wed Nov 8 08:41:33 2017 -0800
----------------------------------------------------------------------
core/src/main/codegen/templates/Parser.jj | 11 +++++------
core/src/test/codegen/config.fmpp | 1 +
core/src/test/codegen/includes/parserImpls.ftl | 9 +++++++++
.../parserextensiontesting/ExtensionSqlParserTest.java | 9 +++++++++
4 files changed, 24 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/calcite/blob/5a0403cf/core/src/main/codegen/templates/Parser.jj
----------------------------------------------------------------------
diff --git a/core/src/main/codegen/templates/Parser.jj b/core/src/main/codegen/templates/Parser.jj
index 0aef85b..a4f7119 100644
--- a/core/src/main/codegen/templates/Parser.jj
+++ b/core/src/main/codegen/templates/Parser.jj
@@ -890,6 +890,11 @@ SqlNode SqlStmt() :
}
{
(
+<#-- Add methods to parse additional statements here -->
+<#list parser.statementParserMethods as method>
+ stmt = ${method}
+ |
+</#list>
stmt = SqlSetOption(Span.of(), null)
|
stmt = SqlAlter()
@@ -913,12 +918,6 @@ SqlNode SqlStmt() :
stmt = SqlMerge()
|
stmt = SqlProcedureCall()
-
-<#-- Add methods to parse additional statements here -->
-<#list parser.statementParserMethods as method>
- |
- stmt = ${method}
-</#list>
)
{
return stmt;
http://git-wip-us.apache.org/repos/asf/calcite/blob/5a0403cf/core/src/test/codegen/config.fmpp
----------------------------------------------------------------------
diff --git a/core/src/test/codegen/config.fmpp b/core/src/test/codegen/config.fmpp
index bd168b1..2f747e2 100644
--- a/core/src/test/codegen/config.fmpp
+++ b/core/src/test/codegen/config.fmpp
@@ -38,6 +38,7 @@ data: {
# List of methods for parsing custom SQL statements.
statementParserMethods: [
+ "SqlDescribeSpacePower()"
]
# List of methods for parsing custom literals.
http://git-wip-us.apache.org/repos/asf/calcite/blob/5a0403cf/core/src/test/codegen/includes/parserImpls.ftl
----------------------------------------------------------------------
diff --git a/core/src/test/codegen/includes/parserImpls.ftl b/core/src/test/codegen/includes/parserImpls.ftl
index cea63a4..754f876 100644
--- a/core/src/test/codegen/includes/parserImpls.ftl
+++ b/core/src/test/codegen/includes/parserImpls.ftl
@@ -47,4 +47,13 @@ SqlCreate SqlCreateTable(Span s, boolean replace) :
}
}
+SqlNode SqlDescribeSpacePower() :
+{
+}
+{
+ <DESCRIBE> <SPACE> <POWER> {
+ return null;
+ }
+}
+
// End parserImpls.ftl
http://git-wip-us.apache.org/repos/asf/calcite/blob/5a0403cf/core/src/test/java/org/apache/calcite/sql/parser/parserextensiontesting/ExtensionSqlParserTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/calcite/sql/parser/parserextensiontesting/ExtensionSqlParserTest.java b/core/src/test/java/org/apache/calcite/sql/parser/parserextensiontesting/ExtensionSqlParserTest.java
index 1b58a4c..825d072 100644
--- a/core/src/test/java/org/apache/calcite/sql/parser/parserextensiontesting/ExtensionSqlParserTest.java
+++ b/core/src/test/java/org/apache/calcite/sql/parser/parserextensiontesting/ExtensionSqlParserTest.java
@@ -16,10 +16,12 @@
*/
package org.apache.calcite.sql.parser.parserextensiontesting;
+import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.parser.SqlParseException;
import org.apache.calcite.sql.parser.SqlParserImplFactory;
import org.apache.calcite.sql.parser.SqlParserTest;
+import org.hamcrest.core.IsNull;
import org.junit.Test;
/**
@@ -49,6 +51,13 @@ public class ExtensionSqlParserTest extends SqlParserTest {
sql("CREATE TABLE foo.baz(i INTEGER, j VARCHAR(10) NOT NULL)")
.ok("CREATE TABLE `FOO`.`BAZ` (`I` INTEGER, `J` VARCHAR(10) NOT NULL)");
}
+
+ @Test public void testExtendedSqlStmt() {
+ sql("DESCRIBE SPACE POWER")
+ .node(new IsNull<SqlNode>());
+ sql("DESCRIBE SEA ^POWER^")
+ .fails("(?s)Encountered \"POWER\" at line 1, column 14..*");
+ }
}
// End ExtensionSqlParserTest.java