Index: ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java =================================================================== --- ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (revision 1162685) +++ ql/src/java/org/apache/hadoop/hive/ql/exec/DDLTask.java (working copy) @@ -34,10 +34,10 @@ import java.util.Collections; import java.util.Comparator; import java.util.Date; +import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.HashMap; import java.util.Set; import java.util.SortedSet; import java.util.TreeSet; @@ -143,6 +143,7 @@ import org.apache.hadoop.hive.shims.HadoopShims; import org.apache.hadoop.hive.shims.ShimLoader; import org.apache.hadoop.io.IOUtils; +import org.apache.hadoop.mapred.SequenceFileInputFormat; import org.apache.hadoop.util.ToolRunner; /** @@ -830,7 +831,7 @@ Index idx = db.getIndex(dbName, baseTableName, indexName); switch(alterIndex.getOp()) { - case ADDPROPS: + case ADDPROPS: idx.getParameters().putAll(alterIndex.getProps()); break; case UPDATETIMESTAMP: @@ -2815,12 +2816,20 @@ alterTbl.getSerdeName()); } } else { - tbl.getTTable().getSd().setInputFormat(alterTbl.getInputFormat()); - tbl.getTTable().getSd().setOutputFormat(alterTbl.getOutputFormat()); + tbl.setInputFormatClass(alterTbl.getInputFormat()); + tbl.setOutputFormatClass(alterTbl.getOutputFormat()); if (alterTbl.getSerdeName() != null) { tbl.setSerializationLib(alterTbl.getSerdeName()); } } + + // setting the compression value based on the input file format. + if (tbl.getInputFormatClass().isInstance(new SequenceFileInputFormat())) { + tbl.getTTable().getSd().setCompressed(true); + } else { + // previously the format could have been sequence. + tbl.getTTable().getSd().setCompressed(false); + } } else if (alterTbl.getOp() == AlterTableDesc.AlterTableTypes.ALTERPROTECTMODE) { boolean protectModeEnable = alterTbl.isProtectModeEnable(); AlterTableDesc.ProtectModeType protectMode = alterTbl.getProtectModeType(); @@ -3256,6 +3265,11 @@ tbl.getTTable().getSd().setOutputFormat( tbl.getOutputFormatClass().getName()); + //setting the compression value based on the input file format. + if (tbl.getInputFormatClass().isInstance(new SequenceFileInputFormat())) { + tbl.getTTable().getSd().setCompressed(true); + } + if (crtTbl.isExternal()) { tbl.setProperty("EXTERNAL", "TRUE"); tbl.setTableType(TableType.EXTERNAL_TABLE); @@ -3359,6 +3373,12 @@ tbl.getInputFormatClass().getName()); tbl.getTTable().getSd().setOutputFormat( tbl.getOutputFormatClass().getName()); + + //setting the compression value based on the input file format. + if (tbl.getInputFormatClass().isInstance(new SequenceFileInputFormat())) { + tbl.getTTable().getSd().setCompressed(true); + } + } else { tbl=oldtbl; Index: ql/src/test/queries/clientpositive/create_table_with_compression.q =================================================================== --- ql/src/test/queries/clientpositive/create_table_with_compression.q (revision 0) +++ ql/src/test/queries/clientpositive/create_table_with_compression.q (revision 0) @@ -0,0 +1,27 @@ +CREATE TABLE compression_table_name ( key string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS SEQUENCEFILE; + +DESCRIBE EXTENDED compression_table_name; + +DROP TABLE compression_table_name; + + +CREATE TABLE compression_table_name ( key string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS SEQUENCEFILE; + +CREATE TABLE compression_table_name_like LIKE compression_table_name; + +DESCRIBE EXTENDED compression_table_name_like; + +DROP TABLE compression_table_name_like; + + +CREATE TABLE alter_file_format_table_name ( key string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'; + +ALTER TABLE alter_file_format_table_name SET FILEFORMAT SEQUENCEFILE; + +DESCRIBE EXTENDED alter_file_format_table_name; + +ALTER TABLE alter_file_format_table_name SET FILEFORMAT TEXTFILE; + +DESCRIBE EXTENDED alter_file_format_table_name; + +DROP TABLE alter_file_format_table_name; \ No newline at end of file Index: ql/src/test/results/clientpositive/create_table_with_compression.q.out =================================================================== --- ql/src/test/results/clientpositive/create_table_with_compression.q.out (revision 0) +++ ql/src/test/results/clientpositive/create_table_with_compression.q.out (revision 0) @@ -0,0 +1,105 @@ +PREHOOK: query: CREATE TABLE table_test_output_format(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE table_test_output_format(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.IgnoreKeyTextOutputFormat' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table_test_output_format +PREHOOK: query: FROM src +INSERT OVERWRITE TABLE table_test_output_format SELECT src.key, src.value LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@table_test_output_format +POSTHOOK: query: FROM src +INSERT OVERWRITE TABLE table_test_output_format SELECT src.key, src.value LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@table_test_output_format +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: describe table_test_output_format +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe table_test_output_format +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int +value string +PREHOOK: query: CREATE TABLE table_test_output_format_sequencefile(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileOutputFormat' +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE table_test_output_format_sequencefile(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileOutputFormat' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table_test_output_format_sequencefile +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: FROM src +INSERT OVERWRITE TABLE table_test_output_format_sequencefile SELECT src.key, src.value LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@table_test_output_format_sequencefile +POSTHOOK: query: FROM src +INSERT OVERWRITE TABLE table_test_output_format_sequencefile SELECT src.key, src.value LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@table_test_output_format_sequencefile +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: describe table_test_output_format_sequencefile +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe table_test_output_format_sequencefile +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int +value string +PREHOOK: query: CREATE TABLE table_test_output_format_hivesequencefile(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat' +PREHOOK: type: CREATETABLE +POSTHOOK: query: CREATE TABLE table_test_output_format_hivesequencefile(key INT, value STRING) STORED AS + INPUTFORMAT 'org.apache.hadoop.mapred.SequenceFileInputFormat' + OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat' +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: default@table_test_output_format_hivesequencefile +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: FROM src +INSERT OVERWRITE TABLE table_test_output_format_hivesequencefile SELECT src.key, src.value LIMIT 10 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@table_test_output_format_hivesequencefile +POSTHOOK: query: FROM src +INSERT OVERWRITE TABLE table_test_output_format_hivesequencefile SELECT src.key, src.value LIMIT 10 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@table_test_output_format_hivesequencefile +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_hivesequencefile.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_hivesequencefile.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +PREHOOK: query: describe table_test_output_format_hivesequencefile +PREHOOK: type: DESCTABLE +POSTHOOK: query: describe table_test_output_format_hivesequencefile +POSTHOOK: type: DESCTABLE +POSTHOOK: Lineage: table_test_output_format.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_hivesequencefile.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_hivesequencefile.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.key EXPRESSION [(src)src.FieldSchema(name:key, type:string, comment:default), ] +POSTHOOK: Lineage: table_test_output_format_sequencefile.value SIMPLE [(src)src.FieldSchema(name:value, type:string, comment:default), ] +key int +value string