diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java index 20d9649..15b0122 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java +++ ql/src/java/org/apache/hadoop/hive/ql/parse/SemanticAnalyzer.java @@ -1628,6 +1628,8 @@ public boolean doPhase1(ASTNode ast, QB qb, Phase1Ctx ctx_1, PlannerContext plan HashMap partition = new HashMap(); for (int i = 0; i < childCount; i++) { String partitionName = partitions.getChild(i).getChild(0).getText(); + // Convert to lowercase for the comparison + partitionName = partitionName.toLowerCase(); Tree pvalue = partitions.getChild(i).getChild(1); if (pvalue == null) { break; diff --git ql/src/test/queries/clientpositive/insert1_overwrite_partitions.q ql/src/test/queries/clientpositive/insert1_overwrite_partitions.q index 31b0658..6fc958c 100644 --- ql/src/test/queries/clientpositive/insert1_overwrite_partitions.q +++ ql/src/test/queries/clientpositive/insert1_overwrite_partitions.q @@ -34,3 +34,19 @@ INSERT OVERWRITE TABLE destinTable SELECT one,two FROM sourceTable WHERE ds='201 drop table destinTable; drop table sourceTable; + +CREATE TABLE sourceTable (one string,two string) PARTITIONED BY (DS string,HR string); + +load data local inpath '../../data/files/kv1.txt' INTO TABLE sourceTable partition(DS='2011-11-11', HR='11'); + +CREATE TABLE destinTable (one string,two string) PARTITIONED BY (DS string,HR string); + +EXPLAIN INSERT OVERWRITE TABLE destinTable PARTITION (DS='2011-11-11', HR='11') if not exists +SELECT one,two FROM sourceTable WHERE DS='2011-11-11' AND HR='11' order by one desc, two desc limit 5; + +INSERT OVERWRITE TABLE destinTable PARTITION (DS='2011-11-11', HR='11') if not exists +SELECT one,two FROM sourceTable WHERE DS='2011-11-11' AND HR='11' order by one desc, two desc limit 5; + +drop table destinTable; + +drop table sourceTable; \ No newline at end of file diff --git ql/src/test/results/clientpositive/insert1_overwrite_partitions.q.out ql/src/test/results/clientpositive/insert1_overwrite_partitions.q.out index 49c1269..152b510 100644 --- ql/src/test/results/clientpositive/insert1_overwrite_partitions.q.out +++ ql/src/test/results/clientpositive/insert1_overwrite_partitions.q.out @@ -250,3 +250,118 @@ POSTHOOK: query: drop table sourceTable POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@sourcetable POSTHOOK: Output: default@sourcetable +PREHOOK: query: CREATE TABLE sourceTable (one string,two string) PARTITIONED BY (DS string,HR string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@sourceTable +POSTHOOK: query: CREATE TABLE sourceTable (one string,two string) PARTITIONED BY (DS string,HR string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@sourceTable +PREHOOK: query: load data local inpath '../../data/files/kv1.txt' INTO TABLE sourceTable partition(DS='2011-11-11', HR='11') +PREHOOK: type: LOAD +#### A masked pattern was here #### +PREHOOK: Output: default@sourcetable +POSTHOOK: query: load data local inpath '../../data/files/kv1.txt' INTO TABLE sourceTable partition(DS='2011-11-11', HR='11') +POSTHOOK: type: LOAD +#### A masked pattern was here #### +POSTHOOK: Output: default@sourcetable +POSTHOOK: Output: default@sourcetable@ds=2011-11-11/hr=11 +PREHOOK: query: CREATE TABLE destinTable (one string,two string) PARTITIONED BY (DS string,HR string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@destinTable +POSTHOOK: query: CREATE TABLE destinTable (one string,two string) PARTITIONED BY (DS string,HR string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@destinTable +PREHOOK: query: EXPLAIN INSERT OVERWRITE TABLE destinTable PARTITION (DS='2011-11-11', HR='11') if not exists +SELECT one,two FROM sourceTable WHERE DS='2011-11-11' AND HR='11' order by one desc, two desc limit 5 +PREHOOK: type: QUERY +POSTHOOK: query: EXPLAIN INSERT OVERWRITE TABLE destinTable PARTITION (DS='2011-11-11', HR='11') if not exists +SELECT one,two FROM sourceTable WHERE DS='2011-11-11' AND HR='11' order by one desc, two desc limit 5 +POSTHOOK: type: QUERY +STAGE DEPENDENCIES: + Stage-1 is a root stage + Stage-0 depends on stages: Stage-1 + Stage-2 depends on stages: Stage-0 + +STAGE PLANS: + Stage: Stage-1 + Map Reduce + Map Operator Tree: + TableScan + alias: sourcetable + Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Select Operator + expressions: one (type: string), two (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Reduce Output Operator + key expressions: _col0 (type: string), _col1 (type: string) + sort order: -- + Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + TopN Hash Memory Usage: 0.1 + Reduce Operator Tree: + Select Operator + expressions: KEY.reducesinkkey0 (type: string), KEY.reducesinkkey1 (type: string) + outputColumnNames: _col0, _col1 + Statistics: Num rows: 29 Data size: 5812 Basic stats: COMPLETE Column stats: NONE + Limit + Number of rows: 5 + Statistics: Num rows: 5 Data size: 1000 Basic stats: COMPLETE Column stats: NONE + File Output Operator + compressed: false + Statistics: Num rows: 5 Data size: 1000 Basic stats: COMPLETE Column stats: NONE + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.destintable + + Stage: Stage-0 + Move Operator + tables: + partition: + ds 2011-11-11 + hr 11 + replace: true + table: + input format: org.apache.hadoop.mapred.TextInputFormat + output format: org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat + serde: org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe + name: default.destintable + + Stage: Stage-2 + Stats-Aggr Operator + +PREHOOK: query: INSERT OVERWRITE TABLE destinTable PARTITION (DS='2011-11-11', HR='11') if not exists +SELECT one,two FROM sourceTable WHERE DS='2011-11-11' AND HR='11' order by one desc, two desc limit 5 +PREHOOK: type: QUERY +PREHOOK: Input: default@sourcetable +PREHOOK: Input: default@sourcetable@ds=2011-11-11/hr=11 +PREHOOK: Output: default@destintable@ds=2011-11-11/hr=11 +POSTHOOK: query: INSERT OVERWRITE TABLE destinTable PARTITION (DS='2011-11-11', HR='11') if not exists +SELECT one,two FROM sourceTable WHERE DS='2011-11-11' AND HR='11' order by one desc, two desc limit 5 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@sourcetable +POSTHOOK: Input: default@sourcetable@ds=2011-11-11/hr=11 +POSTHOOK: Output: default@destintable@ds=2011-11-11/hr=11 +POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11,hr=11).one SIMPLE [(sourcetable)sourcetable.FieldSchema(name:one, type:string, comment:null), ] +POSTHOOK: Lineage: destintable PARTITION(ds=2011-11-11,hr=11).two SIMPLE [(sourcetable)sourcetable.FieldSchema(name:two, type:string, comment:null), ] +PREHOOK: query: drop table destinTable +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@destintable +PREHOOK: Output: default@destintable +POSTHOOK: query: drop table destinTable +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@destintable +POSTHOOK: Output: default@destintable +PREHOOK: query: drop table sourceTable +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@sourcetable +PREHOOK: Output: default@sourcetable +POSTHOOK: query: drop table sourceTable +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@sourcetable +POSTHOOK: Output: default@sourcetable