Repository: hive
Updated Branches:
  refs/heads/master bd6d91f11 -> 1e6a18250


HIVE-18750: Exchange partition should be disabled on ACID/Insert-only tables 
with per table write ID (Sankar Hariappan, reviewed by Eugene Koifman)


Project: http://git-wip-us.apache.org/repos/asf/hive/repo
Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/1e6a1825
Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/1e6a1825
Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/1e6a1825

Branch: refs/heads/master
Commit: 1e6a18250a9f7f601dff9c292a961007de0ec358
Parents: bd6d91f
Author: Sankar Hariappan <sank...@apache.org>
Authored: Thu Mar 1 10:52:52 2018 +0530
Committer: Sankar Hariappan <sank...@apache.org>
Committed: Thu Mar 1 10:52:52 2018 +0530

----------------------------------------------------------------------
 .../org/apache/hadoop/hive/ql/ErrorMsg.java     |   2 +
 .../hive/ql/parse/DDLSemanticAnalyzer.java      |  12 +
 ...exchange_partition_neg_with_fullacid_table.q |  14 +
 .../exchange_partition_neg_with_mm_table.q      |  19 +
 .../clientpositive/mm_exchangepartition.q       |  68 ----
 ...ange_partition_neg_with_fullacid_table.q.out |  45 +++
 .../exchange_partition_neg_with_mm_table.q.out  |  69 ++++
 .../clientpositive/mm_exchangepartition.q.out   | 382 -------------------
 8 files changed, 161 insertions(+), 450 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
----------------------------------------------------------------------
diff --git a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java 
b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
index 6087e02..d3546d4 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/ErrorMsg.java
@@ -324,6 +324,8 @@ public enum ErrorMsg {
             " A subpartition value is specified without specifying the parent 
partition's value"),
   TABLES_INCOMPATIBLE_SCHEMAS(10235, "Tables have incompatible schemas and 
their partitions " +
             " cannot be exchanged."),
+  EXCHANGE_PARTITION_NOT_ALLOWED_WITH_TRANSACTIONAL_TABLES(10236, "Exchange 
partition is not allowed with "
+          + "transactional tables. Alternatively, shall use load data or 
insert overwrite to move partitions."),
 
   TRUNCATE_COLUMN_NOT_RC(10237, "Only RCFileFormat supports column 
truncation."),
   TRUNCATE_COLUMN_ARCHIVED(10238, "Column truncation cannot be performed on 
archived partitions."),

http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
----------------------------------------------------------------------
diff --git 
a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java 
b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
index e926b63..e393424 100644
--- a/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
+++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java
@@ -818,6 +818,18 @@ public class DDLSemanticAnalyzer extends 
BaseSemanticAnalyzer {
     if (!sameColumns || !samePartitions) {
       throw new 
SemanticException(ErrorMsg.TABLES_INCOMPATIBLE_SCHEMAS.getMsg());
     }
+
+    // Exchange partition is not allowed with transactional tables.
+    // If only source is transactional table, then target will see deleted 
rows too as no snapshot
+    // isolation applicable for non-acid tables.
+    // If only target is transactional table, then data would be visible to 
all ongoing transactions
+    // affecting the snapshot isolation.
+    // If both source and targets are transactional tables, then target 
partition may have delta/base
+    // files with write IDs may not be valid. It may affect snapshot isolation 
for on-going txns as well.
+    if (AcidUtils.isTransactionalTable(sourceTable) || 
AcidUtils.isTransactionalTable(destTable)) {
+      throw new 
SemanticException(ErrorMsg.EXCHANGE_PARTITION_NOT_ALLOWED_WITH_TRANSACTIONAL_TABLES.getMsg());
+    }
+
     // check if source partition exists
     getPartitions(sourceTable, partSpecs, true);
 

http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/test/queries/clientnegative/exchange_partition_neg_with_fullacid_table.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/exchange_partition_neg_with_fullacid_table.q
 
b/ql/src/test/queries/clientnegative/exchange_partition_neg_with_fullacid_table.q
new file mode 100644
index 0000000..e94492d
--- /dev/null
+++ 
b/ql/src/test/queries/clientnegative/exchange_partition_neg_with_fullacid_table.q
@@ -0,0 +1,14 @@
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+DROP TABLE IF EXISTS t1;
+DROP TABLE IF EXISTS t2;
+
+CREATE TABLE t1 (a int) PARTITIONED BY (d1 int) STORED AS ORC TBLPROPERTIES 
("transactional"="true");
+CREATE TABLE t2 (a int) PARTITIONED BY (d1 int) STORED AS ORC TBLPROPERTIES 
("transactional"="true");
+set hive.mapred.mode=nonstrict;
+
+INSERT INTO TABLE t1 PARTITION (d1 = 1) SELECT key FROM src where key = 100 
limit 1;
+SELECT * FROM t1;
+
+ALTER TABLE t2 EXCHANGE PARTITION (d1 = 1) WITH TABLE t1;

http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/test/queries/clientnegative/exchange_partition_neg_with_mm_table.q
----------------------------------------------------------------------
diff --git 
a/ql/src/test/queries/clientnegative/exchange_partition_neg_with_mm_table.q 
b/ql/src/test/queries/clientnegative/exchange_partition_neg_with_mm_table.q
new file mode 100644
index 0000000..94e830b
--- /dev/null
+++ b/ql/src/test/queries/clientnegative/exchange_partition_neg_with_mm_table.q
@@ -0,0 +1,19 @@
+set hive.support.concurrency=true;
+set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
+
+drop database if exists ex1 cascade;
+drop database if exists ex2 cascade;
+
+create database ex1;
+create database ex2;
+
+CREATE TABLE ex1.exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING) 
TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only");
+CREATE TABLE ex2.exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING) 
TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only");
+SHOW PARTITIONS ex1.exchange_part_test1;
+SHOW PARTITIONS ex2.exchange_part_test2;
+
+ALTER TABLE ex2.exchange_part_test2 ADD PARTITION (ds='2013-04-05');
+SHOW PARTITIONS ex1.exchange_part_test1;
+SHOW PARTITIONS ex2.exchange_part_test2;
+
+ALTER TABLE ex1.exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH 
TABLE ex2.exchange_part_test2;

http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/test/queries/clientpositive/mm_exchangepartition.q
----------------------------------------------------------------------
diff --git a/ql/src/test/queries/clientpositive/mm_exchangepartition.q 
b/ql/src/test/queries/clientpositive/mm_exchangepartition.q
deleted file mode 100644
index 0c04136..0000000
--- a/ql/src/test/queries/clientpositive/mm_exchangepartition.q
+++ /dev/null
@@ -1,68 +0,0 @@
-set hive.support.concurrency=true;
-set hive.txn.manager=org.apache.hadoop.hive.ql.lockmgr.DbTxnManager;
-
-drop database if exists ex1;
-drop database if exists ex2;
-
-create database ex1;
-create database ex2;
-
-CREATE TABLE ex1.exchange_part_test1 (f1 string) PARTITIONED BY (ds STRING) 
TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only");
-CREATE TABLE ex2.exchange_part_test2 (f1 string) PARTITIONED BY (ds STRING) 
TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only");
-SHOW PARTITIONS ex1.exchange_part_test1;
-SHOW PARTITIONS ex2.exchange_part_test2;
-
-ALTER TABLE ex2.exchange_part_test2 ADD PARTITION (ds='2013-04-05');
-SHOW PARTITIONS ex1.exchange_part_test1;
-SHOW PARTITIONS ex2.exchange_part_test2;
-
-ALTER TABLE ex1.exchange_part_test1 EXCHANGE PARTITION (ds='2013-04-05') WITH 
TABLE ex2.exchange_part_test2;
-SHOW PARTITIONS ex1.exchange_part_test1;
-SHOW PARTITIONS ex2.exchange_part_test2;
-
-
-DROP TABLE IF EXISTS t1;
-DROP TABLE IF EXISTS t2;
-DROP TABLE IF EXISTS t3;
-DROP TABLE IF EXISTS t4;
-DROP TABLE IF EXISTS t5;
-DROP TABLE IF EXISTS t6;
-
-CREATE TABLE t1 (a int) PARTITIONED BY (d1 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only");
-CREATE TABLE t2 (a int) PARTITIONED BY (d1 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only");
-CREATE TABLE t3 (a int) PARTITIONED BY (d1 int, d2 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only");
-CREATE TABLE t4 (a int) PARTITIONED BY (d1 int, d2 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only");
-CREATE TABLE t5 (a int) PARTITIONED BY (d1 int, d2 int, d3 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only");
-CREATE TABLE t6 (a int) PARTITIONED BY (d1 int, d2 int, d3 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only");
-set hive.mapred.mode=nonstrict;
-
-INSERT INTO TABLE t1 PARTITION (d1 = 1) SELECT key FROM src where key = 100 
limit 1;
-INSERT INTO TABLE t3 PARTITION (d1 = 1, d2 = 1) SELECT key FROM src where key 
= 100 limit 1;
-INSERT INTO TABLE t5 PARTITION (d1 = 1, d2 = 1, d3=1) SELECT key FROM src 
where key = 100 limit 1;
-
-SELECT * FROM t1;
-
-SELECT * FROM t3;
-
-SELECT * FROM t5;
-
-ALTER TABLE t2 EXCHANGE PARTITION (d1 = 1) WITH TABLE t1;
-SELECT * FROM t1;
-SELECT * FROM t2;
-
-ALTER TABLE t4 EXCHANGE PARTITION (d1 = 1, d2 = 1) WITH TABLE t3;
-SELECT * FROM t3;
-SELECT * FROM t4;
-
-ALTER TABLE t6 EXCHANGE PARTITION (d1 = 1, d2 = 1, d3 = 1) WITH TABLE t5;
-SELECT * FROM t5;
-SELECT * FROM t6;
-
-DROP DATABASE ex1 CASCADE;
-DROP DATABASE ex2 CASCADE;
-DROP TABLE t1;
-DROP TABLE t2;
-DROP TABLE t3;
-DROP TABLE t4;
-DROP TABLE t5;
-DROP TABLE t6;

http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/test/results/clientnegative/exchange_partition_neg_with_fullacid_table.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/exchange_partition_neg_with_fullacid_table.q.out
 
b/ql/src/test/results/clientnegative/exchange_partition_neg_with_fullacid_table.q.out
new file mode 100644
index 0000000..9a7f345
--- /dev/null
+++ 
b/ql/src/test/results/clientnegative/exchange_partition_neg_with_fullacid_table.q.out
@@ -0,0 +1,45 @@
+PREHOOK: query: DROP TABLE IF EXISTS t1
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS t1
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: DROP TABLE IF EXISTS t2
+PREHOOK: type: DROPTABLE
+POSTHOOK: query: DROP TABLE IF EXISTS t2
+POSTHOOK: type: DROPTABLE
+PREHOOK: query: CREATE TABLE t1 (a int) PARTITIONED BY (d1 int) STORED AS ORC 
TBLPROPERTIES ("transactional"="true")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t1
+POSTHOOK: query: CREATE TABLE t1 (a int) PARTITIONED BY (d1 int) STORED AS ORC 
TBLPROPERTIES ("transactional"="true")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t1
+PREHOOK: query: CREATE TABLE t2 (a int) PARTITIONED BY (d1 int) STORED AS ORC 
TBLPROPERTIES ("transactional"="true")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@t2
+POSTHOOK: query: CREATE TABLE t2 (a int) PARTITIONED BY (d1 int) STORED AS ORC 
TBLPROPERTIES ("transactional"="true")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@t2
+PREHOOK: query: INSERT INTO TABLE t1 PARTITION (d1 = 1) SELECT key FROM src 
where key = 100 limit 1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@src
+PREHOOK: Output: default@t1@d1=1
+POSTHOOK: query: INSERT INTO TABLE t1 PARTITION (d1 = 1) SELECT key FROM src 
where key = 100 limit 1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@src
+POSTHOOK: Output: default@t1@d1=1
+POSTHOOK: Lineage: t1 PARTITION(d1=1).a EXPRESSION 
[(src)src.FieldSchema(name:key, type:string, comment:default), ]
+PREHOOK: query: SELECT * FROM t1
+PREHOOK: type: QUERY
+PREHOOK: Input: default@t1
+PREHOOK: Input: default@t1@d1=1
+#### A masked pattern was here ####
+POSTHOOK: query: SELECT * FROM t1
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@t1
+POSTHOOK: Input: default@t1@d1=1
+#### A masked pattern was here ####
+100    1
+FAILED: SemanticException [Error 10236]: Exchange partition is not allowed 
with transactional tables. Alternatively, shall use load data or insert 
overwrite to move partitions.

http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/test/results/clientnegative/exchange_partition_neg_with_mm_table.q.out
----------------------------------------------------------------------
diff --git 
a/ql/src/test/results/clientnegative/exchange_partition_neg_with_mm_table.q.out 
b/ql/src/test/results/clientnegative/exchange_partition_neg_with_mm_table.q.out
new file mode 100644
index 0000000..7908b0e
--- /dev/null
+++ 
b/ql/src/test/results/clientnegative/exchange_partition_neg_with_mm_table.q.out
@@ -0,0 +1,69 @@
+PREHOOK: query: drop database if exists ex1 cascade
+PREHOOK: type: DROPDATABASE
+POSTHOOK: query: drop database if exists ex1 cascade
+POSTHOOK: type: DROPDATABASE
+PREHOOK: query: drop database if exists ex2 cascade
+PREHOOK: type: DROPDATABASE
+POSTHOOK: query: drop database if exists ex2 cascade
+POSTHOOK: type: DROPDATABASE
+PREHOOK: query: create database ex1
+PREHOOK: type: CREATEDATABASE
+PREHOOK: Output: database:ex1
+POSTHOOK: query: create database ex1
+POSTHOOK: type: CREATEDATABASE
+POSTHOOK: Output: database:ex1
+PREHOOK: query: create database ex2
+PREHOOK: type: CREATEDATABASE
+PREHOOK: Output: database:ex2
+POSTHOOK: query: create database ex2
+POSTHOOK: type: CREATEDATABASE
+POSTHOOK: Output: database:ex2
+PREHOOK: query: CREATE TABLE ex1.exchange_part_test1 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:ex1
+PREHOOK: Output: ex1@exchange_part_test1
+POSTHOOK: query: CREATE TABLE ex1.exchange_part_test1 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:ex1
+POSTHOOK: Output: ex1@exchange_part_test1
+PREHOOK: query: CREATE TABLE ex2.exchange_part_test2 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:ex2
+PREHOOK: Output: ex2@exchange_part_test2
+POSTHOOK: query: CREATE TABLE ex2.exchange_part_test2 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:ex2
+POSTHOOK: Output: ex2@exchange_part_test2
+PREHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: ex1@exchange_part_test1
+POSTHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: ex1@exchange_part_test1
+PREHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: ex2@exchange_part_test2
+POSTHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: ex2@exchange_part_test2
+PREHOOK: query: ALTER TABLE ex2.exchange_part_test2 ADD PARTITION 
(ds='2013-04-05')
+PREHOOK: type: ALTERTABLE_ADDPARTS
+PREHOOK: Output: ex2@exchange_part_test2
+POSTHOOK: query: ALTER TABLE ex2.exchange_part_test2 ADD PARTITION 
(ds='2013-04-05')
+POSTHOOK: type: ALTERTABLE_ADDPARTS
+POSTHOOK: Output: ex2@exchange_part_test2
+POSTHOOK: Output: ex2@exchange_part_test2@ds=2013-04-05
+PREHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: ex1@exchange_part_test1
+POSTHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: ex1@exchange_part_test1
+PREHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
+PREHOOK: type: SHOWPARTITIONS
+PREHOOK: Input: ex2@exchange_part_test2
+POSTHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
+POSTHOOK: type: SHOWPARTITIONS
+POSTHOOK: Input: ex2@exchange_part_test2
+ds=2013-04-05
+FAILED: SemanticException [Error 10236]: Exchange partition is not allowed 
with transactional tables. Alternatively, shall use load data or insert 
overwrite to move partitions.

http://git-wip-us.apache.org/repos/asf/hive/blob/1e6a1825/ql/src/test/results/clientpositive/mm_exchangepartition.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/mm_exchangepartition.q.out 
b/ql/src/test/results/clientpositive/mm_exchangepartition.q.out
deleted file mode 100644
index 3ba6c21..0000000
--- a/ql/src/test/results/clientpositive/mm_exchangepartition.q.out
+++ /dev/null
@@ -1,382 +0,0 @@
-PREHOOK: query: drop database if exists ex1
-PREHOOK: type: DROPDATABASE
-POSTHOOK: query: drop database if exists ex1
-POSTHOOK: type: DROPDATABASE
-PREHOOK: query: drop database if exists ex2
-PREHOOK: type: DROPDATABASE
-POSTHOOK: query: drop database if exists ex2
-POSTHOOK: type: DROPDATABASE
-PREHOOK: query: create database ex1
-PREHOOK: type: CREATEDATABASE
-PREHOOK: Output: database:ex1
-POSTHOOK: query: create database ex1
-POSTHOOK: type: CREATEDATABASE
-POSTHOOK: Output: database:ex1
-PREHOOK: query: create database ex2
-PREHOOK: type: CREATEDATABASE
-PREHOOK: Output: database:ex2
-POSTHOOK: query: create database ex2
-POSTHOOK: type: CREATEDATABASE
-POSTHOOK: Output: database:ex2
-PREHOOK: query: CREATE TABLE ex1.exchange_part_test1 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:ex1
-PREHOOK: Output: ex1@exchange_part_test1
-POSTHOOK: query: CREATE TABLE ex1.exchange_part_test1 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:ex1
-POSTHOOK: Output: ex1@exchange_part_test1
-PREHOOK: query: CREATE TABLE ex2.exchange_part_test2 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:ex2
-PREHOOK: Output: ex2@exchange_part_test2
-POSTHOOK: query: CREATE TABLE ex2.exchange_part_test2 (f1 string) PARTITIONED 
BY (ds STRING) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:ex2
-POSTHOOK: Output: ex2@exchange_part_test2
-PREHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
-PREHOOK: type: SHOWPARTITIONS
-PREHOOK: Input: ex1@exchange_part_test1
-POSTHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
-POSTHOOK: type: SHOWPARTITIONS
-POSTHOOK: Input: ex1@exchange_part_test1
-PREHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
-PREHOOK: type: SHOWPARTITIONS
-PREHOOK: Input: ex2@exchange_part_test2
-POSTHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
-POSTHOOK: type: SHOWPARTITIONS
-POSTHOOK: Input: ex2@exchange_part_test2
-PREHOOK: query: ALTER TABLE ex2.exchange_part_test2 ADD PARTITION 
(ds='2013-04-05')
-PREHOOK: type: ALTERTABLE_ADDPARTS
-PREHOOK: Output: ex2@exchange_part_test2
-POSTHOOK: query: ALTER TABLE ex2.exchange_part_test2 ADD PARTITION 
(ds='2013-04-05')
-POSTHOOK: type: ALTERTABLE_ADDPARTS
-POSTHOOK: Output: ex2@exchange_part_test2
-POSTHOOK: Output: ex2@exchange_part_test2@ds=2013-04-05
-PREHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
-PREHOOK: type: SHOWPARTITIONS
-PREHOOK: Input: ex1@exchange_part_test1
-POSTHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
-POSTHOOK: type: SHOWPARTITIONS
-POSTHOOK: Input: ex1@exchange_part_test1
-PREHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
-PREHOOK: type: SHOWPARTITIONS
-PREHOOK: Input: ex2@exchange_part_test2
-POSTHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
-POSTHOOK: type: SHOWPARTITIONS
-POSTHOOK: Input: ex2@exchange_part_test2
-ds=2013-04-05
-PREHOOK: query: ALTER TABLE ex1.exchange_part_test1 EXCHANGE PARTITION 
(ds='2013-04-05') WITH TABLE ex2.exchange_part_test2
-PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-PREHOOK: Input: ex2@exchange_part_test2
-PREHOOK: Output: ex1@exchange_part_test1
-POSTHOOK: query: ALTER TABLE ex1.exchange_part_test1 EXCHANGE PARTITION 
(ds='2013-04-05') WITH TABLE ex2.exchange_part_test2
-POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-POSTHOOK: Input: ex2@exchange_part_test2
-POSTHOOK: Input: ex2@exchange_part_test2@ds=2013-04-05
-POSTHOOK: Output: ex1@exchange_part_test1
-POSTHOOK: Output: ex1@exchange_part_test1@ds=2013-04-05
-POSTHOOK: Output: ex2@exchange_part_test2@ds=2013-04-05
-PREHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
-PREHOOK: type: SHOWPARTITIONS
-PREHOOK: Input: ex1@exchange_part_test1
-POSTHOOK: query: SHOW PARTITIONS ex1.exchange_part_test1
-POSTHOOK: type: SHOWPARTITIONS
-POSTHOOK: Input: ex1@exchange_part_test1
-ds=2013-04-05
-PREHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
-PREHOOK: type: SHOWPARTITIONS
-PREHOOK: Input: ex2@exchange_part_test2
-POSTHOOK: query: SHOW PARTITIONS ex2.exchange_part_test2
-POSTHOOK: type: SHOWPARTITIONS
-POSTHOOK: Input: ex2@exchange_part_test2
-PREHOOK: query: DROP TABLE IF EXISTS t1
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE IF EXISTS t1
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: DROP TABLE IF EXISTS t2
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE IF EXISTS t2
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: DROP TABLE IF EXISTS t3
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE IF EXISTS t3
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: DROP TABLE IF EXISTS t4
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE IF EXISTS t4
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: DROP TABLE IF EXISTS t5
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE IF EXISTS t5
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: DROP TABLE IF EXISTS t6
-PREHOOK: type: DROPTABLE
-POSTHOOK: query: DROP TABLE IF EXISTS t6
-POSTHOOK: type: DROPTABLE
-PREHOOK: query: CREATE TABLE t1 (a int) PARTITIONED BY (d1 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t1
-POSTHOOK: query: CREATE TABLE t1 (a int) PARTITIONED BY (d1 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t1
-PREHOOK: query: CREATE TABLE t2 (a int) PARTITIONED BY (d1 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t2
-POSTHOOK: query: CREATE TABLE t2 (a int) PARTITIONED BY (d1 int) TBLPROPERTIES 
("transactional"="true", "transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t2
-PREHOOK: query: CREATE TABLE t3 (a int) PARTITIONED BY (d1 int, d2 int) 
TBLPROPERTIES ("transactional"="true", "transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t3
-POSTHOOK: query: CREATE TABLE t3 (a int) PARTITIONED BY (d1 int, d2 int) 
TBLPROPERTIES ("transactional"="true", "transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t3
-PREHOOK: query: CREATE TABLE t4 (a int) PARTITIONED BY (d1 int, d2 int) 
TBLPROPERTIES ("transactional"="true", "transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t4
-POSTHOOK: query: CREATE TABLE t4 (a int) PARTITIONED BY (d1 int, d2 int) 
TBLPROPERTIES ("transactional"="true", "transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t4
-PREHOOK: query: CREATE TABLE t5 (a int) PARTITIONED BY (d1 int, d2 int, d3 
int) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t5
-POSTHOOK: query: CREATE TABLE t5 (a int) PARTITIONED BY (d1 int, d2 int, d3 
int) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t5
-PREHOOK: query: CREATE TABLE t6 (a int) PARTITIONED BY (d1 int, d2 int, d3 
int) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-PREHOOK: type: CREATETABLE
-PREHOOK: Output: database:default
-PREHOOK: Output: default@t6
-POSTHOOK: query: CREATE TABLE t6 (a int) PARTITIONED BY (d1 int, d2 int, d3 
int) TBLPROPERTIES ("transactional"="true", 
"transactional_properties"="insert_only")
-POSTHOOK: type: CREATETABLE
-POSTHOOK: Output: database:default
-POSTHOOK: Output: default@t6
-PREHOOK: query: INSERT INTO TABLE t1 PARTITION (d1 = 1) SELECT key FROM src 
where key = 100 limit 1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@src
-PREHOOK: Output: default@t1@d1=1
-POSTHOOK: query: INSERT INTO TABLE t1 PARTITION (d1 = 1) SELECT key FROM src 
where key = 100 limit 1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@src
-POSTHOOK: Output: default@t1@d1=1
-POSTHOOK: Lineage: t1 PARTITION(d1=1).a EXPRESSION 
[(src)src.FieldSchema(name:key, type:string, comment:default), ]
-PREHOOK: query: INSERT INTO TABLE t3 PARTITION (d1 = 1, d2 = 1) SELECT key 
FROM src where key = 100 limit 1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@src
-PREHOOK: Output: default@t3@d1=1/d2=1
-POSTHOOK: query: INSERT INTO TABLE t3 PARTITION (d1 = 1, d2 = 1) SELECT key 
FROM src where key = 100 limit 1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@src
-POSTHOOK: Output: default@t3@d1=1/d2=1
-POSTHOOK: Lineage: t3 PARTITION(d1=1,d2=1).a EXPRESSION 
[(src)src.FieldSchema(name:key, type:string, comment:default), ]
-PREHOOK: query: INSERT INTO TABLE t5 PARTITION (d1 = 1, d2 = 1, d3=1) SELECT 
key FROM src where key = 100 limit 1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@src
-PREHOOK: Output: default@t5@d1=1/d2=1/d3=1
-POSTHOOK: query: INSERT INTO TABLE t5 PARTITION (d1 = 1, d2 = 1, d3=1) SELECT 
key FROM src where key = 100 limit 1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@src
-POSTHOOK: Output: default@t5@d1=1/d2=1/d3=1
-POSTHOOK: Lineage: t5 PARTITION(d1=1,d2=1,d3=1).a EXPRESSION 
[(src)src.FieldSchema(name:key, type:string, comment:default), ]
-PREHOOK: query: SELECT * FROM t1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t1
-PREHOOK: Input: default@t1@d1=1
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t1
-POSTHOOK: Input: default@t1@d1=1
-#### A masked pattern was here ####
-100    1
-PREHOOK: query: SELECT * FROM t3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t3
-PREHOOK: Input: default@t3@d1=1/d2=1
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t3
-POSTHOOK: Input: default@t3@d1=1/d2=1
-#### A masked pattern was here ####
-100    1       1
-PREHOOK: query: SELECT * FROM t5
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t5
-PREHOOK: Input: default@t5@d1=1/d2=1/d3=1
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t5
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t5
-POSTHOOK: Input: default@t5@d1=1/d2=1/d3=1
-#### A masked pattern was here ####
-100    1       1       1
-PREHOOK: query: ALTER TABLE t2 EXCHANGE PARTITION (d1 = 1) WITH TABLE t1
-PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-PREHOOK: Input: default@t1
-PREHOOK: Output: default@t2
-POSTHOOK: query: ALTER TABLE t2 EXCHANGE PARTITION (d1 = 1) WITH TABLE t1
-POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-POSTHOOK: Input: default@t1
-POSTHOOK: Input: default@t1@d1=1
-POSTHOOK: Output: default@t1@d1=1
-POSTHOOK: Output: default@t2
-POSTHOOK: Output: default@t2@d1=1
-PREHOOK: query: SELECT * FROM t1
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t1
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t1
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t1
-#### A masked pattern was here ####
-PREHOOK: query: SELECT * FROM t2
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t2
-PREHOOK: Input: default@t2@d1=1
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t2
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t2
-POSTHOOK: Input: default@t2@d1=1
-#### A masked pattern was here ####
-100    1
-PREHOOK: query: ALTER TABLE t4 EXCHANGE PARTITION (d1 = 1, d2 = 1) WITH TABLE 
t3
-PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-PREHOOK: Input: default@t3
-PREHOOK: Output: default@t4
-POSTHOOK: query: ALTER TABLE t4 EXCHANGE PARTITION (d1 = 1, d2 = 1) WITH TABLE 
t3
-POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-POSTHOOK: Input: default@t3
-POSTHOOK: Input: default@t3@d1=1/d2=1
-POSTHOOK: Output: default@t3@d1=1/d2=1
-POSTHOOK: Output: default@t4
-POSTHOOK: Output: default@t4@d1=1/d2=1
-PREHOOK: query: SELECT * FROM t3
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t3
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t3
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t3
-#### A masked pattern was here ####
-PREHOOK: query: SELECT * FROM t4
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t4
-PREHOOK: Input: default@t4@d1=1/d2=1
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t4
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t4
-POSTHOOK: Input: default@t4@d1=1/d2=1
-#### A masked pattern was here ####
-100    1       1
-PREHOOK: query: ALTER TABLE t6 EXCHANGE PARTITION (d1 = 1, d2 = 1, d3 = 1) 
WITH TABLE t5
-PREHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-PREHOOK: Input: default@t5
-PREHOOK: Output: default@t6
-POSTHOOK: query: ALTER TABLE t6 EXCHANGE PARTITION (d1 = 1, d2 = 1, d3 = 1) 
WITH TABLE t5
-POSTHOOK: type: ALTERTABLE_EXCHANGEPARTITION
-POSTHOOK: Input: default@t5
-POSTHOOK: Input: default@t5@d1=1/d2=1/d3=1
-POSTHOOK: Output: default@t5@d1=1/d2=1/d3=1
-POSTHOOK: Output: default@t6
-POSTHOOK: Output: default@t6@d1=1/d2=1/d3=1
-PREHOOK: query: SELECT * FROM t5
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t5
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t5
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t5
-#### A masked pattern was here ####
-PREHOOK: query: SELECT * FROM t6
-PREHOOK: type: QUERY
-PREHOOK: Input: default@t6
-PREHOOK: Input: default@t6@d1=1/d2=1/d3=1
-#### A masked pattern was here ####
-POSTHOOK: query: SELECT * FROM t6
-POSTHOOK: type: QUERY
-POSTHOOK: Input: default@t6
-POSTHOOK: Input: default@t6@d1=1/d2=1/d3=1
-#### A masked pattern was here ####
-100    1       1       1
-PREHOOK: query: DROP DATABASE ex1 CASCADE
-PREHOOK: type: DROPDATABASE
-PREHOOK: Input: database:ex1
-PREHOOK: Output: database:ex1
-PREHOOK: Output: ex1@exchange_part_test1
-POSTHOOK: query: DROP DATABASE ex1 CASCADE
-POSTHOOK: type: DROPDATABASE
-POSTHOOK: Input: database:ex1
-POSTHOOK: Output: database:ex1
-POSTHOOK: Output: ex1@exchange_part_test1
-PREHOOK: query: DROP DATABASE ex2 CASCADE
-PREHOOK: type: DROPDATABASE
-PREHOOK: Input: database:ex2
-PREHOOK: Output: database:ex2
-PREHOOK: Output: ex2@exchange_part_test2
-POSTHOOK: query: DROP DATABASE ex2 CASCADE
-POSTHOOK: type: DROPDATABASE
-POSTHOOK: Input: database:ex2
-POSTHOOK: Output: database:ex2
-POSTHOOK: Output: ex2@exchange_part_test2
-PREHOOK: query: DROP TABLE t1
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@t1
-PREHOOK: Output: default@t1
-POSTHOOK: query: DROP TABLE t1
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@t1
-POSTHOOK: Output: default@t1
-PREHOOK: query: DROP TABLE t2
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@t2
-PREHOOK: Output: default@t2
-POSTHOOK: query: DROP TABLE t2
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@t2
-POSTHOOK: Output: default@t2
-PREHOOK: query: DROP TABLE t3
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@t3
-PREHOOK: Output: default@t3
-POSTHOOK: query: DROP TABLE t3
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@t3
-POSTHOOK: Output: default@t3
-PREHOOK: query: DROP TABLE t4
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@t4
-PREHOOK: Output: default@t4
-POSTHOOK: query: DROP TABLE t4
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@t4
-POSTHOOK: Output: default@t4
-PREHOOK: query: DROP TABLE t5
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@t5
-PREHOOK: Output: default@t5
-POSTHOOK: query: DROP TABLE t5
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@t5
-POSTHOOK: Output: default@t5
-PREHOOK: query: DROP TABLE t6
-PREHOOK: type: DROPTABLE
-PREHOOK: Input: default@t6
-PREHOOK: Output: default@t6
-POSTHOOK: query: DROP TABLE t6
-POSTHOOK: type: DROPTABLE
-POSTHOOK: Input: default@t6
-POSTHOOK: Output: default@t6

Reply via email to