You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@impala.apache.org by sa...@apache.org on 2017/04/21 00:40:49 UTC

[6/6] incubator-impala git commit: IMPALA-5217: KuduTableSink checks null constraints incorrectly

IMPALA-5217: KuduTableSink checks null constraints incorrectly

KuduTableSink uses the referenced_columns map to translate between the
index into the output exprs 'j' and the index into columns in the Kudu
table 'col', but we incorrectly use 'j' when calling into the Kudu table
schema to check the nullability of columns.

Testing:
- Added e2e tests to kudu_insert.test

Change-Id: I8ed458278f135288a821570939de8ee294183df2
Reviewed-on: http://gerrit.cloudera.org:8080/6670
Reviewed-by: Thomas Tauber-Marshall <tm...@cloudera.com>
Tested-by: Impala Public 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/baba8960
Tree: http://git-wip-us.apache.org/repos/asf/incubator-impala/tree/baba8960
Diff: http://git-wip-us.apache.org/repos/asf/incubator-impala/diff/baba8960

Branch: refs/heads/master
Commit: baba8960b3cdb167f4eaa300559813c5cea2786d
Parents: 2a34076
Author: Thomas Tauber-Marshall <tm...@cloudera.com>
Authored: Tue Apr 18 11:29:51 2017 -0700
Committer: Impala Public Jenkins <im...@gerrit.cloudera.org>
Committed: Thu Apr 20 23:27:59 2017 +0000

----------------------------------------------------------------------
 be/src/exec/kudu-table-sink.cc                  |  2 +-
 .../queries/QueryTest/kudu_insert.test          | 28 ++++++++++++++++++++
 2 files changed, 29 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/baba8960/be/src/exec/kudu-table-sink.cc
----------------------------------------------------------------------
diff --git a/be/src/exec/kudu-table-sink.cc b/be/src/exec/kudu-table-sink.cc
index 699f00a..9b0085c 100644
--- a/be/src/exec/kudu-table-sink.cc
+++ b/be/src/exec/kudu-table-sink.cc
@@ -234,7 +234,7 @@ Status KuduTableSink::Send(RuntimeState* state, RowBatch* batch) {
 
       void* value = output_expr_ctxs_[j]->GetValue(current_row);
       if (value == NULL) {
-        if (table_schema.Column(j).is_nullable()) {
+        if (table_schema.Column(col).is_nullable()) {
           KUDU_RETURN_IF_ERROR(write->mutable_row()->SetNull(col),
               "Could not add Kudu WriteOp.");
           continue;

http://git-wip-us.apache.org/repos/asf/incubator-impala/blob/baba8960/testdata/workloads/functional-query/queries/QueryTest/kudu_insert.test
----------------------------------------------------------------------
diff --git a/testdata/workloads/functional-query/queries/QueryTest/kudu_insert.test b/testdata/workloads/functional-query/queries/QueryTest/kudu_insert.test
index a61e226..f2b12b1 100644
--- a/testdata/workloads/functional-query/queries/QueryTest/kudu_insert.test
+++ b/testdata/workloads/functional-query/queries/QueryTest/kudu_insert.test
@@ -402,3 +402,31 @@ A, B, C, D, E, F, G, H, I, J
 ---- TYPES
 INT,INT,INT,INT,INT,INT,STRING,BOOLEAN,INT,INT
 ====
+---- QUERY
+# IMPALA-5217: Try to insert NULL to a 'NOT NULL' col with a target col list that leaves
+# out some cols.
+insert into tbl_with_defaults (a, c, f) values (0, null, 1)
+---- RUNTIME_PROFILE
+NumModifiedRows: 0
+NumRowErrors: 1
+====
+---- QUERY
+# IMPALA-5217: Insert NULL into a nullable col when a non-nullable col has been left out
+# of the target col list.
+insert into tbl_with_defaults (a, b, d, f) values (0, 0, null, 0)
+---- RUNTIME_PROFILE
+NumModifiedRows: 1
+NumRowErrors: 0
+---- LABELS
+A, B, C, D, E, F, G, H, I, J
+---- DML_RESULTS: tbl_with_defaults
+0,0,100,NULL,NULL,0,'test',true,NULL,10000
+1,10,100,1000,NULL,1,'test',true,NULL,10000
+2,10,100,1000,NULL,2,'test',true,NULL,10000
+3,10,100,1000,NULL,3,'test',true,NULL,10000
+4,10,100,1000,NULL,4,'test',true,NULL,10000
+5,5,5,5,5,5,'row',false,NULL,10000
+6,6,6,6,6,6,'another row',false,6,6
+---- TYPES
+INT,INT,INT,INT,INT,INT,STRING,BOOLEAN,INT,INT
+====