This is an automated email from the ASF dual-hosted git repository.

mahesh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hive.git


The following commit(s) were added to refs/heads/master by this push:
     new 71985c2  HIVE-21678 : CTAS creating a Full ACID partitioned table 
fails because of no writeId. (Ashutosh Bapat reviewed by Mahesh Kumar Behera, 
Sankar Hariappan)
71985c2 is described below

commit 71985c23b9c01a764d88274f21f9ce014e5e1a7e
Author: Ashutosh Bapat <aba...@cloudera.com>
AuthorDate: Wed May 8 14:34:01 2019 +0530

    HIVE-21678 : CTAS creating a Full ACID partitioned table fails because of 
no writeId. (Ashutosh Bapat reviewed by Mahesh Kumar Behera, Sankar Hariappan)
    
    Signed-off-by: Mahesh Kumar Behera <mah...@apache.org>
---
 .../hadoop/hive/ql/parse/ReplicationTestUtils.java |  4 +--
 .../hadoop/hive/ql/parse/SemanticAnalyzer.java     |  8 +++--
 ql/src/test/queries/clientpositive/ctas.q          | 18 +++++-----
 ql/src/test/results/clientpositive/ctas.q.out      | 40 ++++++++++++++++++++++
 ql/src/test/results/clientpositive/llap/ctas.q.out | 40 ++++++++++++++++++++++
 .../test/results/clientpositive/spark/ctas.q.out   | 40 ++++++++++++++++++++++
 6 files changed, 137 insertions(+), 13 deletions(-)

diff --git 
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/ReplicationTestUtils.java
 
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/ReplicationTestUtils.java
index bde6570..4caa884 100644
--- 
a/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/ReplicationTestUtils.java
+++ 
b/itests/hive-unit/src/test/java/org/apache/hadoop/hive/ql/parse/ReplicationTestUtils.java
@@ -136,10 +136,10 @@ public class ReplicationTestUtils {
     String tableNameCTAS = tableName + "_CTAS";
     String tableNameCTASMM = tableName + "_CTASMM";
 
-    /*insertRecords(primary, primaryDbName, primaryDbNameExtra,
+    insertRecords(primary, primaryDbName, primaryDbNameExtra,
             tableName, tableNameCTAS, false, 
OperationType.REPL_TEST_ACID_CTAS);
     selectStmtList.add("select key from " + tableNameCTAS + " order by key");
-    expectedValues.add(new String[]{"1", "2", "3", "4", "5"});*/
+    expectedValues.add(new String[]{"1", "2", "3", "4", "5"});
 
     insertRecords(primary, primaryDbName, primaryDbNameExtra,
             tableNameMM, tableNameCTASMM, true, 
OperationType.REPL_TEST_ACID_CTAS);
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java 
b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
index f436611..a3da075 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java
@@ -7477,8 +7477,7 @@ public class SemanticAnalyzer extends 
BaseSemanticAnalyzer {
         fileSinkColInfos = new ArrayList<>();
         destTableIsTemporary = tblDesc.isTemporary();
         destTableIsMaterialization = tblDesc.isMaterialization();
-        if (AcidUtils.isInsertOnlyTable(tblDesc.getTblProps(), true)) {
-          isMmTable = isMmCtas = true;
+        if (AcidUtils.isTablePropertyTransactional(tblDesc.getTblProps())) {
           try {
             if (ctx.getExplainConfig() != null) {
               writeId = 0L; // For explain plan, txn won't be opened and 
doesn't make sense to allocate write id
@@ -7498,7 +7497,10 @@ public class SemanticAnalyzer extends 
BaseSemanticAnalyzer {
           } catch (LockException ex) {
             throw new SemanticException("Failed to allocate write Id", ex);
           }
-          tblDesc.setInitialMmWriteId(writeId);
+          if (AcidUtils.isInsertOnlyTable(tblDesc.getTblProps(), true)) {
+            isMmTable = isMmCtas = true;
+            tblDesc.setInitialMmWriteId(writeId);
+          }
         }
       } else if (viewDesc != null) {
         fieldSchemas = new ArrayList<>();
diff --git a/ql/src/test/queries/clientpositive/ctas.q 
b/ql/src/test/queries/clientpositive/ctas.q
index c4fdda1..cd0bf5a 100644
--- a/ql/src/test/queries/clientpositive/ctas.q
+++ b/ql/src/test/queries/clientpositive/ctas.q
@@ -61,11 +61,13 @@ create table nzhang_ctas6 (key string, `to` string);
 insert overwrite table nzhang_ctas6 select key, value from src tablesample (10 
rows);
 create table nzhang_ctas7 as select key, `to` from nzhang_ctas6;
 
-
-
-
-
-
-
-
-
+-- ACID CTAS
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+set hive.exec.dynamic.partition.mode=nonstrict;
+set hive.stats.autogather=false;
+
+create table acid_ctas_part partitioned by (k)
+  stored as orc TBLPROPERTIES ('transactional'='true')
+  as select key k, value from src order by k limit 5;
+select k, value from acid_ctas_part;
diff --git a/ql/src/test/results/clientpositive/ctas.q.out 
b/ql/src/test/results/clientpositive/ctas.q.out
index 1074730..d181df0 100644
--- a/ql/src/test/results/clientpositive/ctas.q.out
+++ b/ql/src/test/results/clientpositive/ctas.q.out
@@ -1075,3 +1075,43 @@ POSTHOOK: Output: database:default
 POSTHOOK: Output: default@nzhang_ctas7
 POSTHOOK: Lineage: nzhang_ctas7.key SIMPLE 
[(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:key, type:string, comment:null), ]
 POSTHOOK: Lineage: nzhang_ctas7.to SIMPLE 
[(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:to, type:string, comment:null), ]
+PREHOOK: query: create table acid_ctas_part partitioned by (k)
+  stored as orc TBLPROPERTIES ('transactional'='true')
+  as select key k, value from src order by k limit 5
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@acid_ctas_part
+PREHOOK: Output: default@acid_ctas_part
+POSTHOOK: query: create table acid_ctas_part partitioned by (k)
+  stored as orc TBLPROPERTIES ('transactional'='true')
+  as select key k, value from src order by k limit 5
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@acid_ctas_part
+POSTHOOK: Output: default@acid_ctas_part@k=0
+POSTHOOK: Output: default@acid_ctas_part@k=10
+POSTHOOK: Output: default@acid_ctas_part@k=100
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=0).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=100).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=10).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: select k, value from acid_ctas_part
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_ctas_part
+PREHOOK: Input: default@acid_ctas_part@k=0
+PREHOOK: Input: default@acid_ctas_part@k=10
+PREHOOK: Input: default@acid_ctas_part@k=100
+#### A masked pattern was here ####
+POSTHOOK: query: select k, value from acid_ctas_part
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_ctas_part
+POSTHOOK: Input: default@acid_ctas_part@k=0
+POSTHOOK: Input: default@acid_ctas_part@k=10
+POSTHOOK: Input: default@acid_ctas_part@k=100
+#### A masked pattern was here ####
+0      val_0
+0      val_0
+0      val_0
+10     val_10
+100    val_100
diff --git a/ql/src/test/results/clientpositive/llap/ctas.q.out 
b/ql/src/test/results/clientpositive/llap/ctas.q.out
index 38851b1..bd57695 100644
--- a/ql/src/test/results/clientpositive/llap/ctas.q.out
+++ b/ql/src/test/results/clientpositive/llap/ctas.q.out
@@ -1040,3 +1040,43 @@ POSTHOOK: Output: database:default
 POSTHOOK: Output: default@nzhang_ctas7
 POSTHOOK: Lineage: nzhang_ctas7.key SIMPLE 
[(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:key, type:string, comment:null), ]
 POSTHOOK: Lineage: nzhang_ctas7.to SIMPLE 
[(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:to, type:string, comment:null), ]
+PREHOOK: query: create table acid_ctas_part partitioned by (k)
+  stored as orc TBLPROPERTIES ('transactional'='true')
+  as select key k, value from src order by k limit 5
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@acid_ctas_part
+PREHOOK: Output: default@acid_ctas_part
+POSTHOOK: query: create table acid_ctas_part partitioned by (k)
+  stored as orc TBLPROPERTIES ('transactional'='true')
+  as select key k, value from src order by k limit 5
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@acid_ctas_part
+POSTHOOK: Output: default@acid_ctas_part@k=0
+POSTHOOK: Output: default@acid_ctas_part@k=10
+POSTHOOK: Output: default@acid_ctas_part@k=100
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=0).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=100).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=10).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: select k, value from acid_ctas_part
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_ctas_part
+PREHOOK: Input: default@acid_ctas_part@k=0
+PREHOOK: Input: default@acid_ctas_part@k=10
+PREHOOK: Input: default@acid_ctas_part@k=100
+#### A masked pattern was here ####
+POSTHOOK: query: select k, value from acid_ctas_part
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_ctas_part
+POSTHOOK: Input: default@acid_ctas_part@k=0
+POSTHOOK: Input: default@acid_ctas_part@k=10
+POSTHOOK: Input: default@acid_ctas_part@k=100
+#### A masked pattern was here ####
+0      val_0
+0      val_0
+0      val_0
+10     val_10
+100    val_100
diff --git a/ql/src/test/results/clientpositive/spark/ctas.q.out 
b/ql/src/test/results/clientpositive/spark/ctas.q.out
index b1fa6ec..4a01dd4 100644
--- a/ql/src/test/results/clientpositive/spark/ctas.q.out
+++ b/ql/src/test/results/clientpositive/spark/ctas.q.out
@@ -840,3 +840,43 @@ POSTHOOK: Output: database:default
 POSTHOOK: Output: default@nzhang_ctas7
 POSTHOOK: Lineage: nzhang_ctas7.key SIMPLE 
[(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:key, type:string, comment:null), ]
 POSTHOOK: Lineage: nzhang_ctas7.to SIMPLE 
[(nzhang_ctas6)nzhang_ctas6.FieldSchema(name:to, type:string, comment:null), ]
+PREHOOK: query: create table acid_ctas_part partitioned by (k)
+  stored as orc TBLPROPERTIES ('transactional'='true')
+  as select key k, value from src order by k limit 5
+PREHOOK: type: CREATETABLE_AS_SELECT
+PREHOOK: Input: default@src
+PREHOOK: Output: database:default
+PREHOOK: Output: default@acid_ctas_part
+PREHOOK: Output: default@acid_ctas_part
+POSTHOOK: query: create table acid_ctas_part partitioned by (k)
+  stored as orc TBLPROPERTIES ('transactional'='true')
+  as select key k, value from src order by k limit 5
+POSTHOOK: type: CREATETABLE_AS_SELECT
+POSTHOOK: Input: default@src
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@acid_ctas_part
+POSTHOOK: Output: default@acid_ctas_part@k=0
+POSTHOOK: Output: default@acid_ctas_part@k=10
+POSTHOOK: Output: default@acid_ctas_part@k=100
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=0).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=100).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+POSTHOOK: Lineage: acid_ctas_part PARTITION(k=10).value SIMPLE 
[(src)src.FieldSchema(name:value, type:string, comment:default), ]
+PREHOOK: query: select k, value from acid_ctas_part
+PREHOOK: type: QUERY
+PREHOOK: Input: default@acid_ctas_part
+PREHOOK: Input: default@acid_ctas_part@k=0
+PREHOOK: Input: default@acid_ctas_part@k=10
+PREHOOK: Input: default@acid_ctas_part@k=100
+#### A masked pattern was here ####
+POSTHOOK: query: select k, value from acid_ctas_part
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@acid_ctas_part
+POSTHOOK: Input: default@acid_ctas_part@k=0
+POSTHOOK: Input: default@acid_ctas_part@k=10
+POSTHOOK: Input: default@acid_ctas_part@k=100
+#### A masked pattern was here ####
+0      val_0
+0      val_0
+0      val_0
+10     val_10
+100    val_100

Reply via email to