PREHOOK: query: create transactional table test11 as select 1
PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: _dummy_database@_dummy_table
PREHOOK: Output: database:default
PREHOOK: Output: default@test11
POSTHOOK: query: create transactional table test11 as select 1
POSTHOOK: type: CREATETABLE_AS_SELECT
POSTHOOK: Input: _dummy_database@_dummy_table
POSTHOOK: Output: database:default
POSTHOOK: Output: default@test11
POSTHOOK: Lineage: test11._c0 SIMPLE []
PREHOOK: query: show create table test11
PREHOOK: type: SHOW_CREATETABLE
PREHOOK: Input: default@test11
POSTHOOK: query: show create table test11
POSTHOOK: type: SHOW_CREATETABLE
POSTHOOK: Input: default@test11
CREATE TABLE `test11`(
  `_c0` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
#### A masked pattern was here ####
TBLPROPERTIES (
  'bucketing_version'='2', 
  'transactional'='true', 
  'transactional_properties'='insert_only', 
#### A masked pattern was here ####
PREHOOK: query: describe formatted test11
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@test11
POSTHOOK: query: describe formatted test11
POSTHOOK: type: DESCTABLE
POSTHOOK: Input: default@test11
# col_name            	data_type           	comment             
_c0                 	int                 	                    
	 	 
# Detailed Table Information	 	 
Database:           	default             	 
#### A masked pattern was here ####
Retention:          	0                   	 
#### A masked pattern was here ####
Table Type:         	MANAGED_TABLE       	 
Table Parameters:	 	 
	COLUMN_STATS_ACCURATE	{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"_c0\":\"true\"}}
	bucketing_version   	2                   
	numFiles            	1                   
	numRows             	1                   
	rawDataSize         	1                   
	totalSize           	2                   
	transactional       	true                
	transactional_properties	insert_only         
#### A masked pattern was here ####
	 	 
# Storage Information	 	 
SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
Compressed:         	No                  	 
Num Buckets:        	-1                  	 
Bucket Columns:     	[]                  	 
Sort Columns:       	[]                  	 
Storage Desc Params:	 	 
	serialization.format	1                   
PREHOOK: query: create transactional table test12 as select * from test11
PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@test11
PREHOOK: Output: database:default
PREHOOK: Output: default@test12
POSTHOOK: query: create transactional table test12 as select * from test11
POSTHOOK: type: CREATETABLE_AS_SELECT
POSTHOOK: Input: default@test11
POSTHOOK: Output: database:default
POSTHOOK: Output: default@test12
POSTHOOK: Lineage: test12._c0 SIMPLE [(test11)test11.FieldSchema(name:_c0, type:int, comment:null), ]
PREHOOK: query: show create table test12
PREHOOK: type: SHOW_CREATETABLE
PREHOOK: Input: default@test12
POSTHOOK: query: show create table test12
POSTHOOK: type: SHOW_CREATETABLE
POSTHOOK: Input: default@test12
CREATE TABLE `test12`(
  `_c0` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
#### A masked pattern was here ####
TBLPROPERTIES (
  'bucketing_version'='2', 
  'transactional'='true', 
  'transactional_properties'='insert_only', 
#### A masked pattern was here ####
PREHOOK: query: describe formatted test12
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@test12
POSTHOOK: query: describe formatted test12
POSTHOOK: type: DESCTABLE
POSTHOOK: Input: default@test12
# col_name            	data_type           	comment             
_c0                 	int                 	                    
	 	 
# Detailed Table Information	 	 
Database:           	default             	 
#### A masked pattern was here ####
Retention:          	0                   	 
#### A masked pattern was here ####
Table Type:         	MANAGED_TABLE       	 
Table Parameters:	 	 
	COLUMN_STATS_ACCURATE	{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"_c0\":\"true\"}}
	bucketing_version   	2                   
	numFiles            	1                   
	numRows             	1                   
	rawDataSize         	1                   
	totalSize           	2                   
	transactional       	true                
	transactional_properties	insert_only         
#### A masked pattern was here ####
	 	 
# Storage Information	 	 
SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
Compressed:         	No                  	 
Num Buckets:        	-1                  	 
Bucket Columns:     	[]                  	 
Sort Columns:       	[]                  	 
Storage Desc Params:	 	 
	serialization.format	1                   
PREHOOK: query: create managed table test21 as select 1
PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: _dummy_database@_dummy_table
PREHOOK: Output: database:default
PREHOOK: Output: default@test21
POSTHOOK: query: create managed table test21 as select 1
POSTHOOK: type: CREATETABLE_AS_SELECT
POSTHOOK: Input: _dummy_database@_dummy_table
POSTHOOK: Output: database:default
POSTHOOK: Output: default@test21
POSTHOOK: Lineage: test21._c0 SIMPLE []
PREHOOK: query: show create table test21
PREHOOK: type: SHOW_CREATETABLE
PREHOOK: Input: default@test21
POSTHOOK: query: show create table test21
POSTHOOK: type: SHOW_CREATETABLE
POSTHOOK: Input: default@test21
CREATE TABLE `test21`(
  `_c0` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
#### A masked pattern was here ####
TBLPROPERTIES (
  'bucketing_version'='2', 
  'transactional'='true', 
  'transactional_properties'='insert_only', 
#### A masked pattern was here ####
PREHOOK: query: describe formatted test21
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@test21
POSTHOOK: query: describe formatted test21
POSTHOOK: type: DESCTABLE
POSTHOOK: Input: default@test21
# col_name            	data_type           	comment             
_c0                 	int                 	                    
	 	 
# Detailed Table Information	 	 
Database:           	default             	 
#### A masked pattern was here ####
Retention:          	0                   	 
#### A masked pattern was here ####
Table Type:         	MANAGED_TABLE       	 
Table Parameters:	 	 
	COLUMN_STATS_ACCURATE	{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"_c0\":\"true\"}}
	bucketing_version   	2                   
	numFiles            	1                   
	numRows             	1                   
	rawDataSize         	1                   
	totalSize           	2                   
	transactional       	true                
	transactional_properties	insert_only         
#### A masked pattern was here ####
	 	 
# Storage Information	 	 
SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
Compressed:         	No                  	 
Num Buckets:        	-1                  	 
Bucket Columns:     	[]                  	 
Sort Columns:       	[]                  	 
Storage Desc Params:	 	 
	serialization.format	1                   
PREHOOK: query: create managed table test22 as select * from test21
PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@test21
PREHOOK: Output: database:default
PREHOOK: Output: default@test22
POSTHOOK: query: create managed table test22 as select * from test21
POSTHOOK: type: CREATETABLE_AS_SELECT
POSTHOOK: Input: default@test21
POSTHOOK: Output: database:default
POSTHOOK: Output: default@test22
POSTHOOK: Lineage: test22._c0 SIMPLE [(test21)test21.FieldSchema(name:_c0, type:int, comment:null), ]
PREHOOK: query: show create table test22
PREHOOK: type: SHOW_CREATETABLE
PREHOOK: Input: default@test22
POSTHOOK: query: show create table test22
POSTHOOK: type: SHOW_CREATETABLE
POSTHOOK: Input: default@test22
CREATE TABLE `test22`(
  `_c0` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
#### A masked pattern was here ####
TBLPROPERTIES (
  'bucketing_version'='2', 
  'transactional'='true', 
  'transactional_properties'='insert_only', 
#### A masked pattern was here ####
PREHOOK: query: describe formatted test22
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@test22
POSTHOOK: query: describe formatted test22
POSTHOOK: type: DESCTABLE
POSTHOOK: Input: default@test22
# col_name            	data_type           	comment             
_c0                 	int                 	                    
	 	 
# Detailed Table Information	 	 
Database:           	default             	 
#### A masked pattern was here ####
Retention:          	0                   	 
#### A masked pattern was here ####
Table Type:         	MANAGED_TABLE       	 
Table Parameters:	 	 
	COLUMN_STATS_ACCURATE	{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"_c0\":\"true\"}}
	bucketing_version   	2                   
	numFiles            	1                   
	numRows             	1                   
	rawDataSize         	1                   
	totalSize           	2                   
	transactional       	true                
	transactional_properties	insert_only         
#### A masked pattern was here ####
	 	 
# Storage Information	 	 
SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
Compressed:         	No                  	 
Num Buckets:        	-1                  	 
Bucket Columns:     	[]                  	 
Sort Columns:       	[]                  	 
Storage Desc Params:	 	 
	serialization.format	1                   
PREHOOK: query: create table test31 as select 1
PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: _dummy_database@_dummy_table
PREHOOK: Output: database:default
PREHOOK: Output: default@test31
POSTHOOK: query: create table test31 as select 1
POSTHOOK: type: CREATETABLE_AS_SELECT
POSTHOOK: Input: _dummy_database@_dummy_table
POSTHOOK: Output: database:default
POSTHOOK: Output: default@test31
POSTHOOK: Lineage: test31._c0 SIMPLE []
PREHOOK: query: show create table test31
PREHOOK: type: SHOW_CREATETABLE
PREHOOK: Input: default@test31
POSTHOOK: query: show create table test31
POSTHOOK: type: SHOW_CREATETABLE
POSTHOOK: Input: default@test31
CREATE TABLE `test31`(
  `_c0` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
#### A masked pattern was here ####
TBLPROPERTIES (
  'bucketing_version'='2', 
#### A masked pattern was here ####
PREHOOK: query: describe formatted test31
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@test31
POSTHOOK: query: describe formatted test31
POSTHOOK: type: DESCTABLE
POSTHOOK: Input: default@test31
# col_name            	data_type           	comment             
_c0                 	int                 	                    
	 	 
# Detailed Table Information	 	 
Database:           	default             	 
#### A masked pattern was here ####
Retention:          	0                   	 
#### A masked pattern was here ####
Table Type:         	MANAGED_TABLE       	 
Table Parameters:	 	 
	COLUMN_STATS_ACCURATE	{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"_c0\":\"true\"}}
	bucketing_version   	2                   
	numFiles            	1                   
	numRows             	1                   
	rawDataSize         	1                   
	totalSize           	2                   
#### A masked pattern was here ####
	 	 
# Storage Information	 	 
SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
Compressed:         	No                  	 
Num Buckets:        	-1                  	 
Bucket Columns:     	[]                  	 
Sort Columns:       	[]                  	 
Storage Desc Params:	 	 
	serialization.format	1                   
PREHOOK: query: create table test32 as select * from test31
PREHOOK: type: CREATETABLE_AS_SELECT
PREHOOK: Input: default@test31
PREHOOK: Output: database:default
PREHOOK: Output: default@test32
POSTHOOK: query: create table test32 as select * from test31
POSTHOOK: type: CREATETABLE_AS_SELECT
POSTHOOK: Input: default@test31
POSTHOOK: Output: database:default
POSTHOOK: Output: default@test32
POSTHOOK: Lineage: test32._c0 SIMPLE [(test31)test31.FieldSchema(name:_c0, type:int, comment:null), ]
PREHOOK: query: show create table test32
PREHOOK: type: SHOW_CREATETABLE
PREHOOK: Input: default@test32
POSTHOOK: query: show create table test32
POSTHOOK: type: SHOW_CREATETABLE
POSTHOOK: Input: default@test32
CREATE TABLE `test32`(
  `_c0` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
#### A masked pattern was here ####
TBLPROPERTIES (
  'bucketing_version'='2', 
#### A masked pattern was here ####
PREHOOK: query: describe formatted test32
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@test32
POSTHOOK: query: describe formatted test32
POSTHOOK: type: DESCTABLE
POSTHOOK: Input: default@test32
# col_name            	data_type           	comment             
_c0                 	int                 	                    
	 	 
# Detailed Table Information	 	 
Database:           	default             	 
#### A masked pattern was here ####
Retention:          	0                   	 
#### A masked pattern was here ####
Table Type:         	MANAGED_TABLE       	 
Table Parameters:	 	 
	COLUMN_STATS_ACCURATE	{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"_c0\":\"true\"}}
	bucketing_version   	2                   
	numFiles            	1                   
	numRows             	1                   
	rawDataSize         	1                   
	totalSize           	2                   
#### A masked pattern was here ####
	 	 
# Storage Information	 	 
SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
Compressed:         	No                  	 
Num Buckets:        	-1                  	 
Bucket Columns:     	[]                  	 
Sort Columns:       	[]                  	 
Storage Desc Params:	 	 
	serialization.format	1                   
PREHOOK: query: create table ` default`.` table41`(i int)
PREHOOK: type: CREATETABLE
PREHOOK: Output:  default@ table41
PREHOOK: Output: database:default
POSTHOOK: query: create table ` default`.` table41`(i int)
POSTHOOK: type: CREATETABLE
POSTHOOK: Output:  default@ table41
POSTHOOK: Output: database:default
PREHOOK: query: show create table ` default`.` table41`
PREHOOK: type: SHOW_CREATETABLE
PREHOOK: Input: default@table41
POSTHOOK: query: show create table ` default`.` table41`
POSTHOOK: type: SHOW_CREATETABLE
POSTHOOK: Input: default@table41
CREATE TABLE `default`.`table41`(
  `i` int)
ROW FORMAT SERDE 
  'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe' 
STORED AS INPUTFORMAT 
  'org.apache.hadoop.mapred.TextInputFormat' 
OUTPUTFORMAT 
  'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
#### A masked pattern was here ####
TBLPROPERTIES (
  'bucketing_version'='2', 
#### A masked pattern was here ####
PREHOOK: query: describe formatted ` default`.` table41`
PREHOOK: type: DESCTABLE
PREHOOK: Input: default@table41
POSTHOOK: query: describe formatted ` default`.` table41`
POSTHOOK: type: DESCTABLE
POSTHOOK: Input: default@table41
# col_name            	data_type           	comment             
i                   	int                 	                    
	 	 
# Detailed Table Information	 	 
Database:           	default             	 
#### A masked pattern was here ####
Retention:          	0                   	 
#### A masked pattern was here ####
Table Type:         	MANAGED_TABLE       	 
Table Parameters:	 	 
	COLUMN_STATS_ACCURATE	{\"BASIC_STATS\":\"true\",\"COLUMN_STATS\":{\"i\":\"true\"}}
	bucketing_version   	2                   
	numFiles            	0                   
	numRows             	0                   
	rawDataSize         	0                   
	totalSize           	0                   
#### A masked pattern was here ####
	 	 
# Storage Information	 	 
SerDe Library:      	org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe	 
InputFormat:        	org.apache.hadoop.mapred.TextInputFormat	 
OutputFormat:       	org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat	 
Compressed:         	No                  	 
Num Buckets:        	-1                  	 
Bucket Columns:     	[]                  	 
Sort Columns:       	[]                  	 
Storage Desc Params:	 	 
	serialization.format	1                   
