You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by mm...@apache.org on 2016/05/03 01:59:33 UTC

[22/40] hive git commit: HIVE-12878: Support Vectorization for TEXTFILE and other formats (Matt McCline, reviewed by Sergey Shelukhin)

http://git-wip-us.apache.org/repos/asf/hive/blob/d5285d8e/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out
----------------------------------------------------------------------
diff --git a/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out
new file mode 100644
index 0000000..7a1ccfe
--- /dev/null
+++ b/ql/src/test/results/clientpositive/schema_evol_text_vec_mapwork_part_all_complex.q.out
@@ -0,0 +1,730 @@
+PREHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- SORT_QUERY_RESULTS
+--
+-- FILE VARIATION: TEXTFILE, Non-Vectorized, MapWork, Partitioned --> all complex conversions
+-- NOTE: the use of hive.vectorized.use.vector.serde.deserialize above which enables doing
+--  vectorized reading of TEXTFILE format files using the vector SERDE methods.
+--
+------------------------------------------------------------------------------------------
+--
+-- SUBSECTION: ALTER TABLE CHANGE COLUMNS for Various --> Various: STRUCT<BOOLEAN, TINYINT, SMALLINT, INT, LONG, FLOAT, DOUBLE, DECIMAL(38,18), CHAR, VARCHAR, TIMESTAMP, DATE, BINARY> --> STRUCT<STRING...
+--
+CREATE TABLE part_change_various_various_struct1(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: CREATE TABLE struct1_a_txt(insert_num int, s1 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_a.txt' overwrite into table struct1_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_a_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_a_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_a_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_a_txt)struct1_a_txt.FieldSchema(name:s1, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct1_a_txt.insert_num	struct1_a_txt.s1	struct1_a_txt.b
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":-29.0764,"c7":4.70614135E8,"c8":470614135,"c9":"dynamic reptile          ","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":n)\u06af}	original
+2	1	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":-3651.672,"c7":46114.284799488,"c8":46114.284799488,"c9":"  baffling               ","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":n)\u06af}	original
+3	1	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}	original
+4	1	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}	original
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_change_various_various_struct1 replace columns (insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: CREATE TABLE struct1_b_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_b.txt' overwrite into table struct1_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_b_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_b_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=2) select * from struct1_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_b_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=2
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).b SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).insert_num SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=2).s1 SIMPLE [(struct1_b_txt)struct1_b_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_b_txt.insert_num	struct1_b_txt.s1	struct1_b_txt.b
+PREHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: CREATE TABLE struct1_c_txt(insert_num int, s1 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>, b STRING)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct1_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct1_c.txt' overwrite into table struct1_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct1_c_txt
+PREHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct1_c_txt
+PREHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: query: insert into table part_change_various_various_struct1 partition(part=1) select * from struct1_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct1_c_txt
+POSTHOOK: Output: default@part_change_various_various_struct1@part=1
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).b SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).insert_num SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_change_various_various_struct1 PARTITION(part=1).s1 SIMPLE [(struct1_c_txt)struct1_c_txt.FieldSchema(name:s1, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct1_c_txt.insert_num	struct1_c_txt.s1	struct1_c_txt.b
+PREHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_change_various_various_struct1
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), s1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), b (type: string)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), _col3 (type: string)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>), VALUE._col2 (type: string)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 6 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Input: default@part_change_various_various_struct1@part=1
+PREHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,s1,b from part_change_various_various_struct1 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=1
+POSTHOOK: Input: default@part_change_various_various_struct1@part=2
+#### A masked pattern was here ####
+insert_num	part	s1	b
+1	1	{"c1":"TRUE","c2":null,"c3":null,"c4":"3244222","c5":"-99999999999","c6":"-29.0764","c7":"4.70614135E8","c8":"470614135","c9":"dynamic reptile","c10":"dynamic reptile  ","c11":"0004-09-22 18:26:29.519542222","c12":"2007-02-09","c13":"n)\u06af"}	original
+2	1	{"c1":null,"c2":"100","c3":null,"c4":"14","c5":"-23866739993","c6":"-3651.672","c7":"46114.284799488","c8":"46114.284799488","c9":"  baffling","c10":"  baffling    ","c11":"2007-02-09 05:17:29.368756876","c12":"0004-09-22","c13":"n)\u06af"}	original
+3	1	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}	original
+4	1	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}	original
+5	2	{"c1":"true","c2":"400","c3":"44388","c4":"-100","c5":"953967041.","c6":"62.079153","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":"timestamp","c12":"date","c13":"binary"}	new
+6	1	{"c1":"FALSE","c2":"-67","c3":"833","c4":"63993","c5":"1255178165","c6":"905071.0","c7":"-4314.7918","c8":"-1240033819","c9":"trial","c10":"trial","c11":null,"c12":"2016-03-07","c13":"n)\u06af"}	new
+PREHOOK: query: drop table part_change_various_various_struct1
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_change_various_various_struct1
+PREHOOK: Output: default@part_change_various_various_struct1
+POSTHOOK: query: drop table part_change_various_various_struct1
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_change_various_various_struct1
+POSTHOOK: Output: default@part_change_various_various_struct1
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: STRUCT
+--
+CREATE TABLE part_add_various_various_struct2(insert_num int, b STRING) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+PREHOOK: type: QUERY
+PREHOOK: Input: default@values__tmp__table__1
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1)
+    values(1, 'original'),
+          (2, 'original')
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@values__tmp__table__1
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ]
+_col0	_col1
+PREHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+#### A masked pattern was here ####
+insert_num	part	b
+1	1	original
+2	1	original
+PREHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_ADDCOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade ADD COLUMN ...
+alter table part_add_various_various_struct2 ADD columns (s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_ADDCOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: CREATE TABLE struct2_a_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_a.txt' overwrite into table struct2_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_a_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_a_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_a_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_a_txt)struct2_a_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_a_txt.insert_num	struct2_a_txt.b	struct2_a_txt.s2
+PREHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: CREATE TABLE struct2_b_txt(insert_num int, b STRING, s2 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_b.txt' overwrite into table struct2_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_b_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_b_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_b_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_b_txt)struct2_b_txt.FieldSchema(name:s2, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct2_b_txt.insert_num	struct2_b_txt.b	struct2_b_txt.s2
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":false,"c2":72,"c3":null,"c4":-93222,"c5":30,"c6":-66475.56,"c7":-66475.561431,"c8":0.561431,"c9":"1                        ","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":n)\u06af}
+6	2	new	{"c1":null,"c2":-90,"c3":null,"c4":3289094,"c5":46114,"c6":9250341.0,"c7":9250340.75,"c8":9250340.75,"c9":"junkyard                 ","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":n)\u06af}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_various_various_struct2 REPLACE columns (insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: CREATE TABLE struct2_c_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_c.txt' overwrite into table struct2_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_c_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_c_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=2) select * from struct2_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_c_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=2
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).b SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).insert_num SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=2).s2 SIMPLE [(struct2_c_txt)struct2_c_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_c_txt.insert_num	struct2_c_txt.b	struct2_c_txt.s2
+PREHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: CREATE TABLE struct2_d_txt(insert_num int, b STRING, s2 STRUCT<c1:STRING, c2:STRING, c3:STRING, c4:STRING, c5:STRING, c6:STRING, c7:STRING, c8:STRING, c9:STRING, c10:STRING, c11:STRING, c12:STRING, c13:STRING>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct2_d_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct2_d.txt' overwrite into table struct2_d_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct2_d_txt
+PREHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct2_d_txt
+PREHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: query: insert into table part_add_various_various_struct2 partition(part=1) select * from struct2_d_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct2_d_txt
+POSTHOOK: Output: default@part_add_various_various_struct2@part=1
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).b SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).insert_num SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_various_various_struct2 PARTITION(part=1).s2 SIMPLE [(struct2_d_txt)struct2_d_txt.FieldSchema(name:s2, type:struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>, comment:null), ]
+struct2_d_txt.insert_num	struct2_d_txt.b	struct2_d_txt.s2
+PREHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_various_various_struct2
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:string,c2:string,c3:string,c4:string,c5:string,c6:string,c7:string,c8:string,c9:string,c10:string,c11:string,c12:string,c13:string>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 8 Data size: 907 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Input: default@part_add_various_various_struct2@part=1
+PREHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s2 from part_add_various_various_struct2 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Input: default@part_add_various_various_struct2@part=1
+POSTHOOK: Input: default@part_add_various_various_struct2@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s2
+1	1	original	NULL
+2	1	original	NULL
+3	1	new	NULL
+4	1	new	NULL
+5	2	new	{"c1":"FALSE","c2":"72","c3":null,"c4":"-93222","c5":"30","c6":"-66475.56","c7":"-66475.561431","c8":"0.561431","c9":"1","c10":"1","c11":"6229-06-28 02:54:28.970117179","c12":"5966-07-09","c13":"n)\u06af"}
+6	2	new	{"c1":null,"c2":"-90","c3":null,"c4":"3289094","c5":"46114","c6":"9250341.0","c7":"9250340.75","c8":"9250340.75","c9":"junkyard","c10":"junkyard","c11":"2002-05-10 05:29:48.990818073","c12":"1815-05-06","c13":"n)\u06af"}
+7	2	new	{"c1":"TRUE","c2":null,"c3":null,"c4":"-100","c5":"953967041","c6":"62.07915","c7":"718.78","c8":"1","c9":"verdict","c10":"verdict","c11":null,"c12":null,"c13":"n)\u06af"}
+8	1	new	NULL
+PREHOOK: query: drop table part_add_various_various_struct2
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_various_various_struct2
+PREHOOK: Output: default@part_add_various_various_struct2
+POSTHOOK: query: drop table part_add_various_various_struct2
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_various_various_struct2
+POSTHOOK: Output: default@part_add_various_various_struct2
+PREHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: --
+-- SUBSECTION: ALTER TABLE ADD COLUMNS for Various --> Various: ADD COLUMNS to STRUCT type as LAST column of 3 columns
+--
+CREATE TABLE part_add_to_various_various_struct4(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>) PARTITIONED BY(part INT)
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: CREATE TABLE struct4_a_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_a_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_a.txt' overwrite into table struct4_a_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_a_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_a_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_a_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_a_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_a_txt)struct4_a_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint>, comment:null), ]
+struct4_a_txt.insert_num	struct4_a_txt.b	struct4_a_txt.s3
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993}
+PREHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+PREHOOK: type: ALTERTABLE_REPLACECOLS
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: -- Table-Non-Cascade CHANGE COLUMNS ...
+alter table part_add_to_various_various_struct4 replace columns (insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+POSTHOOK: type: ALTERTABLE_REPLACECOLS
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4
+PREHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: CREATE TABLE struct4_b_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_b_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_b.txt' overwrite into table struct4_b_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_b_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_b_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=2) select * from struct4_b_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_b_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=2
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).b SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).insert_num SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=2).s3 SIMPLE [(struct4_b_txt)struct4_b_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_b_txt.insert_num	struct4_b_txt.b	struct4_b_txt.s3
+PREHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+PREHOOK: type: CREATETABLE
+PREHOOK: Output: database:default
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: CREATE TABLE struct4_c_txt(insert_num int, b STRING, s3 STRUCT<c1:BOOLEAN, c2:TINYINT, c3:SMALLINT, c4:INT, c5:BIGINT, c6:FLOAT, c7:DOUBLE, c8:DECIMAL(38,18), c9:CHAR(25), c10:VARCHAR(25), c11:TIMESTAMP, c12:DATE, c13:BINARY>)
+row format delimited fields terminated by '|'
+collection items terminated by ','
+map keys terminated by ':' stored as textfile
+POSTHOOK: type: CREATETABLE
+POSTHOOK: Output: database:default
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+PREHOOK: type: LOAD
+#### A masked pattern was here ####
+PREHOOK: Output: default@struct4_c_txt
+POSTHOOK: query: load data local inpath '../../data/files/struct4_c.txt' overwrite into table struct4_c_txt
+POSTHOOK: type: LOAD
+#### A masked pattern was here ####
+POSTHOOK: Output: default@struct4_c_txt
+PREHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+PREHOOK: type: QUERY
+PREHOOK: Input: default@struct4_c_txt
+PREHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: query: insert into table part_add_to_various_various_struct4 partition(part=1) select * from struct4_c_txt
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@struct4_c_txt
+POSTHOOK: Output: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).b SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:b, type:string, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).insert_num SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:insert_num, type:int, comment:null), ]
+POSTHOOK: Lineage: part_add_to_various_various_struct4 PARTITION(part=1).s3 SIMPLE [(struct4_c_txt)struct4_c_txt.FieldSchema(name:s3, type:struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>, comment:null), ]
+struct4_c_txt.insert_num	struct4_c_txt.b	struct4_c_txt.s3
+PREHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+POSTHOOK: query: explain
+select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+Explain
+STAGE DEPENDENCIES:
+  Stage-1 is a root stage
+  Stage-0 depends on stages: Stage-1
+
+STAGE PLANS:
+  Stage: Stage-1
+    Map Reduce
+      Map Operator Tree:
+          TableScan
+            alias: part_add_to_various_various_struct4
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            Select Operator
+              expressions: insert_num (type: int), part (type: int), b (type: string), s3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+              outputColumnNames: _col0, _col1, _col2, _col3
+              Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+              Reduce Output Operator
+                key expressions: _col0 (type: int)
+                sort order: +
+                Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+                value expressions: _col1 (type: int), _col2 (type: string), _col3 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+      Reduce Operator Tree:
+        Select Operator
+          expressions: KEY.reducesinkkey0 (type: int), VALUE._col0 (type: int), VALUE._col1 (type: string), VALUE._col2 (type: struct<c1:boolean,c2:tinyint,c3:smallint,c4:int,c5:bigint,c6:float,c7:double,c8:decimal(38,18),c9:char(25),c10:varchar(25),c11:timestamp,c12:date,c13:binary>)
+          outputColumnNames: _col0, _col1, _col2, _col3
+          Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+          File Output Operator
+            compressed: false
+            Statistics: Num rows: 4 Data size: 337 Basic stats: COMPLETE Column stats: NONE
+            table:
+                input format: org.apache.hadoop.mapred.SequenceFileInputFormat
+                output format: org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat
+                serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe
+
+  Stage: Stage-0
+    Fetch Operator
+      limit: -1
+      Processor Tree:
+        ListSink
+
+PREHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+PREHOOK: type: QUERY
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=1
+PREHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+POSTHOOK: query: select insert_num,part,b,s3 from part_add_to_various_various_struct4 order by insert_num
+POSTHOOK: type: QUERY
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=1
+POSTHOOK: Input: default@part_add_to_various_various_struct4@part=2
+#### A masked pattern was here ####
+insert_num	part	b	s3
+1	1	original	{"c1":true,"c2":null,"c3":null,"c4":3244222,"c5":-99999999999,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+2	1	original	{"c1":null,"c2":100,"c3":null,"c4":14,"c5":-23866739993,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+3	2	new	{"c1":true,"c2":null,"c3":null,"c4":-100,"c5":953967041,"c6":62.07915,"c7":718.78,"c8":1,"c9":"verdict                  ","c10":"verdict","c11":null,"c12":null,"c13":n)\u06af}
+4	1	new	{"c1":false,"c2":-67,"c3":833,"c4":63993,"c5":1255178165,"c6":null,"c7":null,"c8":null,"c9":null,"c10":null,"c11":null,"c12":null,"c13":null}
+PREHOOK: query: drop table part_add_to_various_various_struct4
+PREHOOK: type: DROPTABLE
+PREHOOK: Input: default@part_add_to_various_various_struct4
+PREHOOK: Output: default@part_add_to_various_various_struct4
+POSTHOOK: query: drop table part_add_to_various_various_struct4
+POSTHOOK: type: DROPTABLE
+POSTHOOK: Input: default@part_add_to_various_various_struct4
+POSTHOOK: Output: default@part_add_to_various_various_struct4