Index: ql/src/test/results/clientpositive/create_like_view.q.out =================================================================== --- ql/src/test/results/clientpositive/create_like_view.q.out (revision 0) +++ ql/src/test/results/clientpositive/create_like_view.q.out (revision 0) @@ -0,0 +1,332 @@ +PREHOOK: query: DROP TABLE IF EXISTS table1 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS table1 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS table2 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS table2 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP TABLE IF EXISTS table3 +PREHOOK: type: DROPTABLE +POSTHOOK: query: DROP TABLE IF EXISTS table3 +POSTHOOK: type: DROPTABLE +PREHOOK: query: DROP VIEW IF EXISTS view1 +PREHOOK: type: DROPVIEW +POSTHOOK: query: DROP VIEW IF EXISTS view1 +POSTHOOK: type: DROPVIEW +PREHOOK: query: CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table1 +PREHOOK: query: DESCRIBE table1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE table1 +POSTHOOK: type: DESCTABLE +a string +b string +PREHOOK: query: DESCRIBE FORMATTED table1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE FORMATTED table1 +POSTHOOK: type: DESCTABLE +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: charleschen +CreateTime: Thu Jul 14 11:52:11 PDT 2011 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: pfile:/Users/charleschen/hive-trunk9/build/ql/test/data/warehouse/table1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1310669531 + +# 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 VIEW view1 AS SELECT * FROM table1 +PREHOOK: type: CREATEVIEW +PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-11_412_4099154900861137121/-mr-10000 +POSTHOOK: query: CREATE VIEW view1 AS SELECT * FROM table1 +POSTHOOK: type: CREATEVIEW +POSTHOOK: Output: default@view1 +POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-11_412_4099154900861137121/-mr-10000 +PREHOOK: query: CREATE TABLE table2 LIKE view1 +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE table2 LIKE view1 +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table2 +PREHOOK: query: DESCRIBE table2 +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE table2 +POSTHOOK: type: DESCTABLE +a string +b string +PREHOOK: query: DESCRIBE FORMATTED table2 +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE FORMATTED table2 +POSTHOOK: type: DESCTABLE +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: charleschen +CreateTime: Thu Jul 14 11:52:11 PDT 2011 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: pfile:/Users/charleschen/hive-trunk9/build/ql/test/data/warehouse/table2 +Table Type: MANAGED_TABLE +Table Parameters: + EXTERNAL FALSE + transient_lastDdlTime 1310669531 + +# 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 IF NOT EXISTS table2 LIKE view1 +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE IF NOT EXISTS table2 LIKE view1 +POSTHOOK: type: CREATETABLE +PREHOOK: query: CREATE EXTERNAL TABLE IF NOT EXISTS table2 LIKE view1 +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE EXTERNAL TABLE IF NOT EXISTS table2 LIKE view1 +POSTHOOK: type: CREATETABLE +PREHOOK: query: CREATE EXTERNAL TABLE IF NOT EXISTS table3 LIKE view1 +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE EXTERNAL TABLE IF NOT EXISTS table3 LIKE view1 +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table3 +PREHOOK: query: DESCRIBE table3 +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE table3 +POSTHOOK: type: DESCTABLE +a string +b string +PREHOOK: query: DESCRIBE FORMATTED table3 +PREHOOK: type: DESCTABLE +POSTHOOK: query: DESCRIBE FORMATTED table3 +POSTHOOK: type: DESCTABLE +# col_name data_type comment + +a string None +b string None + +# Detailed Table Information +Database: default +Owner: charleschen +CreateTime: Thu Jul 14 11:52:11 PDT 2011 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: pfile:/Users/charleschen/hive-trunk9/build/ql/test/data/warehouse/table3 +Table Type: EXTERNAL_TABLE +Table Parameters: + EXTERNAL TRUE + transient_lastDdlTime 1310669531 + +# 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: INSERT OVERWRITE TABLE table1 SELECT key, value FROM src WHERE key = 86 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@table1 +POSTHOOK: query: INSERT OVERWRITE TABLE table1 SELECT key, value FROM src WHERE key = 86 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@table1 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: INSERT OVERWRITE TABLE table2 SELECT key, value FROM src WHERE key = 100 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@table2 +POSTHOOK: query: INSERT OVERWRITE TABLE table2 SELECT key, value FROM src WHERE key = 100 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@table2 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: SELECT * FROM table1 order by a, b +PREHOOK: type: QUERY +PREHOOK: Input: default@table1 +PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-24_499_2760455529003617497/-mr-10000 +POSTHOOK: query: SELECT * FROM table1 order by a, b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@table1 +POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-24_499_2760455529003617497/-mr-10000 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +86 val_86 +PREHOOK: query: SELECT * FROM table2 order by a, b +PREHOOK: type: QUERY +PREHOOK: Input: default@table2 +PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-28_733_1368118710416575658/-mr-10000 +POSTHOOK: query: SELECT * FROM table2 order by a, b +POSTHOOK: type: QUERY +POSTHOOK: Input: default@table2 +POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-28_733_1368118710416575658/-mr-10000 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +100 val_100 +100 val_100 +PREHOOK: query: DROP TABLE table1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@table1 +PREHOOK: Output: default@table1 +POSTHOOK: query: DROP TABLE table1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@table1 +POSTHOOK: Output: default@table1 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: DROP TABLE table2 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@table2 +PREHOOK: Output: default@table2 +POSTHOOK: query: DROP TABLE table2 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@table2 +POSTHOOK: Output: default@table2 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: DROP VIEW view1 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@view1 +PREHOOK: Output: default@view1 +POSTHOOK: query: DROP VIEW view1 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@view1 +POSTHOOK: Output: default@view1 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: -- check partitions +create view view1 partitioned on (ds, hr) as select * from srcpart +PREHOOK: type: CREATEVIEW +PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-35_156_8313906235618436971/-mr-10000 +POSTHOOK: query: -- check partitions +create view view1 partitioned on (ds, hr) as select * from srcpart +POSTHOOK: type: CREATEVIEW +POSTHOOK: Output: default@view1 +POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_11-52-35_156_8313906235618436971/-mr-10000 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: create table table1 like view1 +PREHOOK: type: CREATETABLE +POSTHOOK: query: create table table1 like view1 +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table1 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: describe formatted table1 +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe formatted table1 +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +# col_name data_type comment + +key string None +value string None + +# Partition Information +# col_name data_type comment + +ds string None +hr string None + +# Detailed Table Information +Database: default +Owner: charleschen +CreateTime: Thu Jul 14 11:52:35 PDT 2011 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: pfile:/Users/charleschen/hive-trunk9/build/ql/test/data/warehouse/table1 +Table Type: MANAGED_TABLE +Table Parameters: + EXTERNAL FALSE + transient_lastDdlTime 1310669555 + +# 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: DROP TABLE table1 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@table1 +PREHOOK: Output: default@table1 +POSTHOOK: query: DROP TABLE table1 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@table1 +POSTHOOK: Output: default@table1 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: DROP VIEW view1 +PREHOOK: type: DROPVIEW +PREHOOK: Input: default@view1 +PREHOOK: Output: default@view1 +POSTHOOK: query: DROP VIEW view1 +POSTHOOK: type: DROPVIEW +POSTHOOK: Input: default@view1 +POSTHOOK: Output: default@view1 +POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table2.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] Index: ql/src/test/results/clientpositive/create_like.q.out =================================================================== --- ql/src/test/results/clientpositive/create_like.q.out (revision 1146883) +++ ql/src/test/results/clientpositive/create_like.q.out (working copy) @@ -3,39 +3,74 @@ POSTHOOK: query: CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE POSTHOOK: type: CREATETABLE POSTHOOK: Output: default@table1 -PREHOOK: query: DESCRIBE table1 +PREHOOK: query: DESCRIBE FORMATTED table1 PREHOOK: type: DESCTABLE -POSTHOOK: query: DESCRIBE table1 +POSTHOOK: query: DESCRIBE FORMATTED table1 POSTHOOK: type: DESCTABLE -a string -b string -PREHOOK: query: DESCRIBE EXTENDED table1 -PREHOOK: type: DESCTABLE -POSTHOOK: query: DESCRIBE EXTENDED table1 -POSTHOOK: type: DESCTABLE -a string -b string +# col_name data_type comment -Detailed Table Information Table(tableName:table1, dbName:default, owner:thiruvel, createTime:1286798759, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:pfile:/home/thiruvel/projects/hive/hive.unsecure/build/ql/test/data/warehouse/table1, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}), partitionKeys:[], parameters:{transient_lastDdlTime=1286798759}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) +a string None +b string None + +# Detailed Table Information +Database: default +Owner: charleschen +CreateTime: Thu Jul 14 14:23:27 PDT 2011 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: pfile:/Users/charleschen/hive-trunk2/build/ql/test/data/warehouse/table1 +Table Type: MANAGED_TABLE +Table Parameters: + transient_lastDdlTime 1310678607 + +# 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 table2 LIKE table1 PREHOOK: type: CREATETABLE POSTHOOK: query: CREATE TABLE table2 LIKE table1 POSTHOOK: type: CREATETABLE POSTHOOK: Output: default@table2 -PREHOOK: query: DESCRIBE table2 +PREHOOK: query: DESCRIBE FORMATTED table2 PREHOOK: type: DESCTABLE -POSTHOOK: query: DESCRIBE table2 +POSTHOOK: query: DESCRIBE FORMATTED table2 POSTHOOK: type: DESCTABLE -a string -b string -PREHOOK: query: DESCRIBE EXTENDED table2 -PREHOOK: type: DESCTABLE -POSTHOOK: query: DESCRIBE EXTENDED table2 -POSTHOOK: type: DESCTABLE -a string -b string +# col_name data_type comment -Detailed Table Information Table(tableName:table2, dbName:default, owner:thiruvel, createTime:1286798760, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:pfile:/home/thiruvel/projects/hive/hive.unsecure/build/ql/test/data/warehouse/table2, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}), partitionKeys:[], parameters:{EXTERNAL=FALSE, transient_lastDdlTime=1286798760}, viewOriginalText:null, viewExpandedText:null, tableType:MANAGED_TABLE) +a string None +b string None + +# Detailed Table Information +Database: default +Owner: charleschen +CreateTime: Thu Jul 14 14:23:27 PDT 2011 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: pfile:/Users/charleschen/hive-trunk2/build/ql/test/data/warehouse/table2 +Table Type: MANAGED_TABLE +Table Parameters: + EXTERNAL FALSE + transient_lastDdlTime 1310678607 + +# 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 IF NOT EXISTS table2 LIKE table1 PREHOOK: type: CREATETABLE POSTHOOK: query: CREATE TABLE IF NOT EXISTS table2 LIKE table1 @@ -49,20 +84,38 @@ POSTHOOK: query: CREATE EXTERNAL TABLE IF NOT EXISTS table3 LIKE table1 POSTHOOK: type: CREATETABLE POSTHOOK: Output: default@table3 -PREHOOK: query: DESCRIBE table3 +PREHOOK: query: DESCRIBE FORMATTED table3 PREHOOK: type: DESCTABLE -POSTHOOK: query: DESCRIBE table3 +POSTHOOK: query: DESCRIBE FORMATTED table3 POSTHOOK: type: DESCTABLE -a string -b string -PREHOOK: query: DESCRIBE EXTENDED table3 -PREHOOK: type: DESCTABLE -POSTHOOK: query: DESCRIBE EXTENDED table3 -POSTHOOK: type: DESCTABLE -a string -b string +# col_name data_type comment -Detailed Table Information Table(tableName:table3, dbName:default, owner:thiruvel, createTime:1286798760, lastAccessTime:0, retention:0, sd:StorageDescriptor(cols:[FieldSchema(name:a, type:string, comment:null), FieldSchema(name:b, type:string, comment:null)], location:pfile:/home/thiruvel/projects/hive/hive.unsecure/build/ql/test/data/warehouse/table3, inputFormat:org.apache.hadoop.mapred.TextInputFormat, outputFormat:org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat, compressed:false, numBuckets:-1, serdeInfo:SerDeInfo(name:null, serializationLib:org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe, parameters:{serialization.format=1}), bucketCols:[], sortCols:[], parameters:{}), partitionKeys:[], parameters:{EXTERNAL=TRUE, transient_lastDdlTime=1286798760}, viewOriginalText:null, viewExpandedText:null, tableType:EXTERNAL_TABLE) +a string None +b string None + +# Detailed Table Information +Database: default +Owner: charleschen +CreateTime: Thu Jul 14 14:23:27 PDT 2011 +LastAccessTime: UNKNOWN +Protect Mode: None +Retention: 0 +Location: pfile:/Users/charleschen/hive-trunk2/build/ql/test/data/warehouse/table3 +Table Type: EXTERNAL_TABLE +Table Parameters: + EXTERNAL TRUE + transient_lastDdlTime 1310678607 + +# 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: INSERT OVERWRITE TABLE table1 SELECT key, value FROM src WHERE key = 86 PREHOOK: type: QUERY PREHOOK: Input: default@src @@ -88,11 +141,11 @@ PREHOOK: query: SELECT * FROM table1 PREHOOK: type: QUERY PREHOOK: Input: default@table1 -PREHOOK: Output: file:/tmp/thiruvel/hive_2010-10-11_05-06-07_038_1626206004888639/-mr-10000 +PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_14-23-39_113_7519422973449606944/-mr-10000 POSTHOOK: query: SELECT * FROM table1 POSTHOOK: type: QUERY POSTHOOK: Input: default@table1 -POSTHOOK: Output: file:/tmp/thiruvel/hive_2010-10-11_05-06-07_038_1626206004888639/-mr-10000 +POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_14-23-39_113_7519422973449606944/-mr-10000 POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] @@ -101,11 +154,11 @@ PREHOOK: query: SELECT * FROM table2 PREHOOK: type: QUERY PREHOOK: Input: default@table2 -PREHOOK: Output: file:/tmp/thiruvel/hive_2010-10-11_05-06-07_139_9055053700650128611/-mr-10000 +PREHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_14-23-39_329_4097675063872879591/-mr-10000 POSTHOOK: query: SELECT * FROM table2 POSTHOOK: type: QUERY POSTHOOK: Input: default@table2 -POSTHOOK: Output: file:/tmp/thiruvel/hive_2010-10-11_05-06-07_139_9055053700650128611/-mr-10000 +POSTHOOK: Output: file:/var/folders/fe/fefl-ow3ElaEd1ns0G7jB0uewEQ/-Tmp-/charleschen/hive_2011-07-14_14-23-39_329_4097675063872879591/-mr-10000 POSTHOOK: Lineage: table1.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] POSTHOOK: Lineage: table1.b SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] POSTHOOK: Lineage: table2.a SIMPLE [(src)src.FieldSchema(name:key, type:string, comment:default), ] Index: ql/src/test/queries/clientpositive/create_like.q =================================================================== --- ql/src/test/queries/clientpositive/create_like.q (revision 1146883) +++ ql/src/test/queries/clientpositive/create_like.q (working copy) @@ -3,20 +3,17 @@ CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE; -DESCRIBE table1; -DESCRIBE EXTENDED table1; +DESCRIBE FORMATTED table1; CREATE TABLE table2 LIKE table1; -DESCRIBE table2; -DESCRIBE EXTENDED table2; +DESCRIBE FORMATTED table2; CREATE TABLE IF NOT EXISTS table2 LIKE table1; CREATE EXTERNAL TABLE IF NOT EXISTS table2 LIKE table1; CREATE EXTERNAL TABLE IF NOT EXISTS table3 LIKE table1; -DESCRIBE table3; -DESCRIBE EXTENDED table3; +DESCRIBE FORMATTED table3; INSERT OVERWRITE TABLE table1 SELECT key, value FROM src WHERE key = 86; INSERT OVERWRITE TABLE table2 SELECT key, value FROM src WHERE key = 100; @@ -24,6 +21,3 @@ SELECT * FROM table1; SELECT * FROM table2; - - - Index: ql/src/test/queries/clientpositive/create_like_view.q =================================================================== --- ql/src/test/queries/clientpositive/create_like_view.q (revision 0) +++ ql/src/test/queries/clientpositive/create_like_view.q (revision 0) @@ -0,0 +1,39 @@ +DROP TABLE IF EXISTS table1; +DROP TABLE IF EXISTS table2; +DROP TABLE IF EXISTS table3; +DROP VIEW IF EXISTS view1; + +CREATE TABLE table1 (a STRING, b STRING) STORED AS TEXTFILE; +DESCRIBE table1; +DESCRIBE FORMATTED table1; + +CREATE VIEW view1 AS SELECT * FROM table1; + +CREATE TABLE table2 LIKE view1; +DESCRIBE table2; +DESCRIBE FORMATTED table2; + +CREATE TABLE IF NOT EXISTS table2 LIKE view1; + +CREATE EXTERNAL TABLE IF NOT EXISTS table2 LIKE view1; + +CREATE EXTERNAL TABLE IF NOT EXISTS table3 LIKE view1; +DESCRIBE table3; +DESCRIBE FORMATTED table3; + +INSERT OVERWRITE TABLE table1 SELECT key, value FROM src WHERE key = 86; +INSERT OVERWRITE TABLE table2 SELECT key, value FROM src WHERE key = 100; + +SELECT * FROM table1 order by a, b; +SELECT * FROM table2 order by a, b; + +DROP TABLE table1; +DROP TABLE table2; +DROP VIEW view1; + +-- check partitions +create view view1 partitioned on (ds, hr) as select * from srcpart; +create table table1 like view1; +describe formatted table1; +DROP TABLE table1; +DROP VIEW view1; \ No newline at end of file Index: ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (revision 1146883) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (working copy) @@ -3223,31 +3223,81 @@ */ private int createTableLike(Hive db, CreateTableLikeDesc crtTbl) throws HiveException { // Get the existing table - Table tbl = db.getTable(crtTbl.getLikeTableName()); + Table oldtbl = db.getTable(crtTbl.getLikeTableName()); + Table tbl; + if (oldtbl.getTableType() == TableType.VIRTUAL_VIEW) { + String targetTableName = crtTbl.getTableName(); + tbl=db.newTable(targetTableName); - // find out database name and table name of target table - String targetTableName = crtTbl.getTableName(); - Table newTable = db.newTable(targetTableName); + tbl.setTableType(TableType.MANAGED_TABLE); - tbl.setDbName(newTable.getDbName()); - tbl.setTableName(newTable.getTableName()); + if (crtTbl.isExternal()) { + tbl.setProperty("EXTERNAL", "TRUE"); + tbl.setTableType(TableType.EXTERNAL_TABLE); + } - if (crtTbl.isExternal()) { - tbl.setProperty("EXTERNAL", "TRUE"); + tbl.setFields(oldtbl.getCols()); + tbl.setPartCols(oldtbl.getPartCols()); + + if (crtTbl.getDefaultSerName() == null) { + LOG.info("Default to LazySimpleSerDe for table " + crtTbl.getTableName()); + tbl.setSerializationLib(org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe.class.getName()); + } else { + // let's validate that the serde exists + validateSerDe(crtTbl.getDefaultSerName()); + tbl.setSerializationLib(crtTbl.getDefaultSerName()); + } + + if (crtTbl.getDefaultSerdeProps() != null) { + Iterator> iter = crtTbl.getDefaultSerdeProps().entrySet() + .iterator(); + while (iter.hasNext()) { + Entry m = iter.next(); + tbl.setSerdeParam(m.getKey(), m.getValue()); + } + } + + tbl.setInputFormatClass(crtTbl.getDefaultInputFormat()); + tbl.setOutputFormatClass(crtTbl.getDefaultOutputFormat()); + + tbl.getTTable().getSd().setInputFormat( + tbl.getInputFormatClass().getName()); + tbl.getTTable().getSd().setOutputFormat( + tbl.getOutputFormatClass().getName()); } else { - tbl.setProperty("EXTERNAL", "FALSE"); + tbl=oldtbl; + + // find out database name and table name of target table + String targetTableName = crtTbl.getTableName(); + Table newTable = db.newTable(targetTableName); + + tbl.setDbName(newTable.getDbName()); + tbl.setTableName(newTable.getTableName()); + + if (crtTbl.getLocation() != null) { + tbl.setDataLocation(new Path(crtTbl.getLocation()).toUri()); + } else { + tbl.unsetDataLocation(); + } + + // we should reset table specific parameters including (stats, lastDDLTime etc.) + Map params = tbl.getParameters(); + params.clear(); + + if (crtTbl.isExternal()) { + tbl.setProperty("EXTERNAL", "TRUE"); + tbl.setTableType(TableType.EXTERNAL_TABLE); + } else { + tbl.getParameters().remove("EXTERNAL"); + } } - if (crtTbl.getLocation() != null) { - tbl.setDataLocation(new Path(crtTbl.getLocation()).toUri()); - } else { - tbl.unsetDataLocation(); + // reset owner and creation time + int rc = setGenericTableAttributes(tbl); + if (rc != 0) { + return rc; } - // we should reset table specific parameters including (stats, lastDDLTime etc.) - Map params = tbl.getParameters(); - params.clear(); - // create the table db.createTable(tbl, crtTbl.getIfNotExists()); work.getOutputs().add(new WriteEntity(tbl)); Index: ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableLikeDesc.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableLikeDesc.java (revision 1146883) +++ ql/src/java/org/apache/hadoop/hive/ql/plan/CreateTableLikeDesc.java (working copy) @@ -19,6 +19,7 @@ package org.apache.hadoop.hive.ql.plan; import java.io.Serializable; +import java.util.Map; /** * CreateTableLikeDesc. @@ -29,6 +30,10 @@ private static final long serialVersionUID = 1L; String tableName; boolean isExternal; + String defaultInputFormat; + String defaultOutputFormat; + String defaultSerName; + Map defaultSerdeProps; String location; boolean ifNotExists; String likeTableName; @@ -37,9 +42,15 @@ } public CreateTableLikeDesc(String tableName, boolean isExternal, - String location, boolean ifNotExists, String likeTableName) { + String defaultInputFormat, String defaultOutputFormat, String location, + String defaultSerName, Map defaultSerdeProps, boolean ifNotExists, + String likeTableName) { this.tableName = tableName; this.isExternal = isExternal; + this.defaultInputFormat=defaultInputFormat; + this.defaultOutputFormat=defaultOutputFormat; + this.defaultSerName=defaultSerName; + this.defaultSerdeProps=defaultSerdeProps; this.location = location; this.ifNotExists = ifNotExists; this.likeTableName = likeTableName; @@ -63,6 +74,24 @@ this.tableName = tableName; } + @Explain(displayName = "default input format") + public String getDefaultInputFormat() { + return defaultInputFormat; + } + + public void setInputFormat(String inputFormat) { + this.defaultInputFormat = inputFormat; + } + + @Explain(displayName = "default output format") + public String getDefaultOutputFormat() { + return defaultOutputFormat; + } + + public void setOutputFormat(String outputFormat) { + this.defaultOutputFormat = outputFormat; + } + @Explain(displayName = "location") public String getLocation() { return location; @@ -81,6 +110,38 @@ this.isExternal = isExternal; } + /** + * @return the default serDeName + */ + @Explain(displayName = "default serde name") + public String getDefaultSerName() { + return defaultSerName; + } + + /** + * @param serName + * the serName to set + */ + public void setDefaultSerName(String serName) { + this.defaultSerName = serName; + } + + /** + * @return the default serDe properties + */ + @Explain(displayName = "serde properties") + public Map getDefaultSerdeProps() { + return defaultSerdeProps; + } + + /** + * @param serdeProps + * the default serde properties to set + */ + public void setDefaultSerdeProps(Map serdeProps) { + this.defaultSerdeProps = serdeProps; + } + @Explain(displayName = "like") public String getLikeTableName() { return likeTableName; Index: ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (revision 1146883) +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java (working copy) @@ -7735,8 +7735,9 @@ break; case CTLT: // create table like - CreateTableLikeDesc crtTblLikeDesc = new CreateTableLikeDesc(tableName, - isExt, location, ifNotExists, likeTableName); + CreateTableLikeDesc crtTblLikeDesc = new CreateTableLikeDesc(tableName, isExt, + storageFormat.inputFormat, storageFormat.outputFormat, location, + shared.serde, shared.serdeProps, ifNotExists, likeTableName); SessionState.get().setCommandType(HiveOperation.CREATETABLE); rootTasks.add(TaskFactory.get(new DDLWork(getInputs(), getOutputs(), crtTblLikeDesc), conf));