You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@drill.apache.org by jn...@apache.org on 2015/06/26 01:55:21 UTC
drill git commit: DRILL-3373: Raise parsing error when CTAS has
partition by clause yet partitioning column list is empty.
Repository: drill
Updated Branches:
refs/heads/master 4f9ad493e -> 25977105f
DRILL-3373: Raise parsing error when CTAS has partition by clause yet partitioning column list is empty.
Project: http://git-wip-us.apache.org/repos/asf/drill/repo
Commit: http://git-wip-us.apache.org/repos/asf/drill/commit/25977105
Tree: http://git-wip-us.apache.org/repos/asf/drill/tree/25977105
Diff: http://git-wip-us.apache.org/repos/asf/drill/diff/25977105
Branch: refs/heads/master
Commit: 25977105ffb72b51b362fa592936aeac40906383
Parents: 4f9ad49
Author: Jinfeng Ni <jn...@apache.org>
Authored: Wed Jun 24 16:10:55 2015 -0700
Committer: Jinfeng Ni <jn...@apache.org>
Committed: Thu Jun 25 14:20:38 2015 -0700
----------------------------------------------------------------------
.../src/main/codegen/includes/parserImpls.ftl | 28 ++++++++++++++------
.../org/apache/drill/exec/sql/TestCTAS.java | 14 ++++++++++
2 files changed, 34 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/drill/blob/25977105/exec/java-exec/src/main/codegen/includes/parserImpls.ftl
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/main/codegen/includes/parserImpls.ftl b/exec/java-exec/src/main/codegen/includes/parserImpls.ftl
index eedba99..b1c22f2 100644
--- a/exec/java-exec/src/main/codegen/includes/parserImpls.ftl
+++ b/exec/java-exec/src/main/codegen/includes/parserImpls.ftl
@@ -136,7 +136,23 @@ SqlNode SqlUseSchema():
}
/** Parses an optional field list and makes sure no field is a "*". */
-SqlNodeList ParseFieldList(String relType) :
+SqlNodeList ParseOptionalFieldList(String relType) :
+{
+ SqlNodeList fieldList;
+}
+{
+ fieldList = ParseRequiredFieldList(relType)
+ {
+ return fieldList;
+ }
+ |
+ {
+ return SqlNodeList.EMPTY;
+ }
+}
+
+/** Parses a required field list and makes sure no field is a "*". */
+SqlNodeList ParseRequiredFieldList(String relType) :
{
SqlNodeList fieldList;
}
@@ -152,10 +168,6 @@ SqlNodeList ParseFieldList(String relType) :
}
return fieldList;
}
- |
- {
- return SqlNodeList.EMPTY;
- }
}
/**
@@ -175,7 +187,7 @@ SqlNode SqlCreateOrReplaceView() :
[ <OR> <REPLACE> { replaceView = true; } ]
<VIEW>
viewName = CompoundIdentifier()
- fieldList = ParseFieldList("View")
+ fieldList = ParseOptionalFieldList("View")
<AS>
query = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY)
{
@@ -218,9 +230,9 @@ SqlNode SqlCreateTable() :
<CREATE> { pos = getPos(); }
<TABLE>
tblName = CompoundIdentifier()
- fieldList = ParseFieldList("Table")
+ fieldList = ParseOptionalFieldList("Table")
( <PARTITION> <BY>
- partitionFieldList = ParseFieldList("Partition")
+ partitionFieldList = ParseRequiredFieldList("Partition")
)?
<AS>
query = OrderedQueryOrExpr(ExprContext.ACCEPT_QUERY)
http://git-wip-us.apache.org/repos/asf/drill/blob/25977105/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
----------------------------------------------------------------------
diff --git a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
index c4cc37a..74bf0de 100644
--- a/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
+++ b/exec/java-exec/src/test/java/org/apache/drill/exec/sql/TestCTAS.java
@@ -118,6 +118,20 @@ public class TestCTAS extends BaseTestQuery {
}
}
+ @Test
+ public void ctasPartitionWithEmptyList() throws Exception {
+ final String newTblName = "ctasPartitionWithEmptyList";
+
+ try {
+ final String ctasQuery = String.format("CREATE TABLE %s.%s PARTITION BY AS SELECT * from cp.`region.json`", TEMP_SCHEMA, newTblName);
+
+ errorMsgTestHelper(ctasQuery,
+ String.format("PARSE ERROR: Encountered \"AS\""));
+ } finally {
+ FileUtils.deleteQuietly(new File(getDfsTestTmpSchemaLocation(), newTblName));
+ }
+ }
+
private static void ctasErrorTestHelper(final String ctasSql, final String expErrorMsg) throws Exception {
final String createTableSql = String.format(ctasSql, TEMP_SCHEMA, "testTableName");
errorMsgTestHelper(createTableSql, expErrorMsg);