diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index cd6f1ee..eeab111 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -2118,6 +2118,7 @@ private void getMetaData(QB qb, ReadEntity parentInput) ASTNode child = (ASTNode) ast.getChild(num); if (child != null) { if (storageFormat.fillStorageFormat(child)) { + directoryDesc.setInputFormat(storageFormat.getInputFormat()); directoryDesc.setOutputFormat(storageFormat.getOutputFormat()); directoryDesc.setSerName(storageFormat.getSerde()); directoryDescIsSet = true; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java index f32eb89..dde20ed 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/plan/PlanUtils.java @@ -148,6 +148,9 @@ public static TableDesc getDefaultTableDesc(CreateTableDesc directoryDesc, if (directoryDesc.getSerdeProps() != null) { properties.putAll(directoryDesc.getSerdeProps()); } + if (directoryDesc.getInputFormat() != null){ + ret.setInputFileFormatClass(JavaUtils.loadClass(directoryDesc.getInputFormat())); + } if (directoryDesc.getOutputFormat() != null){ ret.setOutputFileFormatClass(JavaUtils.loadClass(directoryDesc.getOutputFormat())); } diff --git a/ql/src/test/queries/clientpositive/orc_merge11.q b/ql/src/test/queries/clientpositive/orc_merge11.q index 91f1991..a10cca3 100644 --- a/ql/src/test/queries/clientpositive/orc_merge11.q +++ b/ql/src/test/queries/clientpositive/orc_merge11.q @@ -39,5 +39,9 @@ SET hive.exec.post.hooks=org.apache.hadoop.hive.ql.hooks.PostExecOrcFileDump; select * from orcfile_merge1 limit 1; SET hive.exec.post.hooks=; +SET mapreduce.job.reduces=2; + +INSERT OVERWRITE DIRECTORY 'output' stored as orcfile select * from orc_split_elim; + DROP TABLE orc_split_elim; DROP TABLE orcfile_merge1; diff --git a/ql/src/test/results/clientpositive/orc_merge11.q.out b/ql/src/test/results/clientpositive/orc_merge11.q.out index dabf9ca..a63a018 100644 --- a/ql/src/test/results/clientpositive/orc_merge11.q.out +++ b/ql/src/test/results/clientpositive/orc_merge11.q.out @@ -430,6 +430,10 @@ ________________________________________________________________________________ -- END ORC FILE DUMP -- 2 foo 0.8 1 1969-12-31 16:00:00 +PREHOOK: query: INSERT OVERWRITE DIRECTORY 'output' stored as orcfile select * from orc_split_elim +PREHOOK: type: QUERY +PREHOOK: Input: default@orc_split_elim +PREHOOK: Output: output PREHOOK: query: DROP TABLE orc_split_elim PREHOOK: type: DROPTABLE PREHOOK: Input: default@orc_split_elim