You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by mj...@apache.org on 2016/09/02 20:13:45 UTC

[5/5] incubator-impala git commit: IMPALA-4056: Fix toSql() of DistributeParam

IMPALA-4056: Fix toSql() of DistributeParam

This commit fixes two issues in toSql() of DistributeParam:
1. string literals were not quoted
2. range partition split rows were not printed.
Besides, this commit fixes a small issue in run-hive-server.sh

Change-Id: I984a63a24f02670347b0e1efceb864d265d1f931
Reviewed-on: http://gerrit.cloudera.org:8080/4195
Reviewed-by: Matthew Jacobs <mj...@cloudera.com>
Reviewed-by: Alex Behm <al...@cloudera.com>
Tested-by: Internal Jenkins


Project: http://git-wip-us.apache.org/repos/asf/incubator-impala/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-impala/commit/052d3cc8
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/052d3cc8
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/052d3cc8

Branch: refs/heads/master
Commit: 052d3cc8dd893f2225accacde3c917aac0c1cfcd
Parents: ab9e54b
Author: Yuanhao Luo <lu...@software.ict.ac.cn>
Authored: Thu Sep 1 22:17:55 2016 +0800
Committer: Internal Jenkins <cl...@gerrit.cloudera.org>
Committed: Fri Sep 2 20:11:27 2016 +0000

----------------------------------------------------------------------
 .../cloudera/impala/analysis/DistributeParam.java    | 14 +++++++-------
 .../com/cloudera/impala/analysis/AnalyzeDDLTest.java | 15 ++++++++++++++-
 testdata/bin/run-hive-server.sh                      |  2 +-
 .../queries/QueryTest/kudu_partition_ddl.test        | 13 -------------
 4 files changed, 22 insertions(+), 22 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/052d3cc8/fe/src/main/java/com/cloudera/impala/analysis/DistributeParam.java
----------------------------------------------------------------------
diff --git a/fe/src/main/java/com/cloudera/impala/analysis/DistributeParam.java b/fe/src/main/java/com/cloudera/impala/analysis/DistributeParam.java
index 7c57593..e718d6b 100644
--- a/fe/src/main/java/com/cloudera/impala/analysis/DistributeParam.java
+++ b/fe/src/main/java/com/cloudera/impala/analysis/DistributeParam.java
@@ -153,12 +153,12 @@ public class DistributeParam implements ParseNode {
   @Override
   public String toSql() {
     if (num_buckets_ == NO_BUCKETS) {
-      StringBuilder builder = new StringBuilder();
+      List<String> splitRowStrings = Lists.newArrayList();
       for (ArrayList<LiteralExpr> splitRow : splitRows_) {
-        splitRowToString(splitRow);
+        splitRowStrings.add(splitRowToString(splitRow));
       }
       return String.format("RANGE(%s) INTO RANGES(%s)", Joiner.on(", ").join(columns_),
-          builder.toString());
+          Joiner.on(", ").join(splitRowStrings));
     } else {
       return String.format("HASH(%s) INTO %d BUCKETS", Joiner.on(", ").join(columns_),
           num_buckets_);
@@ -167,13 +167,13 @@ public class DistributeParam implements ParseNode {
 
   private String splitRowToString(ArrayList<LiteralExpr> splitRow) {
     StringBuilder builder = new StringBuilder();
-    builder.append("[");
+    builder.append("(");
     List<String> rangeElementStrings = Lists.newArrayList();
     for (LiteralExpr rangeElement : splitRow) {
-      rangeElementStrings.add(rangeElement.getStringValue());
+      rangeElementStrings.add(rangeElement.toSql());
     }
-    builder.append(Joiner.on(",").join(rangeElementStrings));
-    builder.append("]");
+    builder.append(Joiner.on(", ").join(rangeElementStrings));
+    builder.append(")");
     return builder.toString();
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/052d3cc8/fe/src/test/java/com/cloudera/impala/analysis/AnalyzeDDLTest.java
----------------------------------------------------------------------
diff --git a/fe/src/test/java/com/cloudera/impala/analysis/AnalyzeDDLTest.java b/fe/src/test/java/com/cloudera/impala/analysis/AnalyzeDDLTest.java
index 6e57ccb..f998e91 100644
--- a/fe/src/test/java/com/cloudera/impala/analysis/AnalyzeDDLTest.java
+++ b/fe/src/test/java/com/cloudera/impala/analysis/AnalyzeDDLTest.java
@@ -1811,7 +1811,20 @@ public class AnalyzeDDLTest extends FrontendTestBase {
         "'storage_handler'='com.cloudera.kudu.hive.KuduStorageHandler', " +
         "'kudu.table_name'='tab'," +
         "'kudu.master_addresses' = '127.0.0.1:8080', " +
-        "'kudu.key_columns' = 'a,b,c')");
+        "'kudu.key_columns' = 'a,b,c'" +
+        ")");
+
+    // Each split row size should equals to the number of range columns.
+    AnalysisError("create table tab (a int, b int, c int, d int) " +
+        "distribute by range(a) split rows ((1,'extra_val'),(2),(3)) " +
+        "tblproperties (" +
+        "'storage_handler'='com.cloudera.kudu.hive.KuduStorageHandler', " +
+        "'kudu.table_name'='tab'," +
+        "'kudu.master_addresses' = '127.0.0.1:8080', " +
+        "'kudu.key_columns' = 'a,b,c'" +
+        ")",
+        "SPLIT ROWS has different size than number of projected key columns: 1. " +
+        "Split row: (1, 'extra_val')");
 
     // No float split keys
     AnalysisError("create table tab (a int, b int, c int, d int) " +

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/052d3cc8/testdata/bin/run-hive-server.sh
----------------------------------------------------------------------
diff --git a/testdata/bin/run-hive-server.sh b/testdata/bin/run-hive-server.sh
index 39b2ffd..530b804 100755
--- a/testdata/bin/run-hive-server.sh
+++ b/testdata/bin/run-hive-server.sh
@@ -51,7 +51,7 @@ do
       ;;
     -help|-h|*)
       echo "run-hive-server.sh : Starts the hive server and the metastore."
-      echo "[-metastore_only] : Only starts the hive metastore."
+      echo "[-only_metastore] : Only starts the hive metastore."
       exit 1;
       ;;
     esac

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/052d3cc8/testdata/workloads/functional-query/queries/QueryTest/kudu_partition_ddl.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-query/queries/QueryTest/kudu_partition_ddl.test b/testdata/workloads/functional-query/queries/QueryTest/kudu_partition_ddl.test
index 9651979..e5b2a95 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/kudu_partition_ddl.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/kudu_partition_ddl.test
@@ -38,19 +38,6 @@ TBLPROPERTIES(
 Expected int32 literal for column 'id' got 'abc'
 ====
 ---- QUERY
--- Test error handling for split rows with two many components
-create table simple_hash ( id int, name string, valf float, vali bigint)
-DISTRIBUTE BY RANGE(col_does_not_exist, id) SPLIT ROWS ((1, 'abc'))
-TBLPROPERTIES(
-'storage_handler' = 'com.cloudera.kudu.hive.KuduStorageHandler',
-'kudu.table_name' = 'simple_hash',
-'kudu.master_addresses' = '127.0.0.1',
-'kudu.key_columns' = 'id, name'
- )
----- CATCH
-Unknown column: col_does_not_exist
-====
----- QUERY
 -- Test error handling for distribute clauses
 create table simple_hash ( id int, name string, valf float, vali bigint)
 DISTRIBUTE BY RANGE(col_does_not_exist) SPLIT ROWS ((1))