----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/33171/ -----------------------------------------------------------
(Updated April 27, 2015, 4:58 p.m.) Review request for hive, Ashutosh Chauhan, Szehon Ho, and Xuefu Zhang. Changes ------- Based on Xuefu's and Jimmy's feedback, I made the following changes: 1. Removed the property "hive.partition.check.column.type" which was intended to replace "hive.typecheck.on.insert", and continue using the old one "hive.typecheck.on.insert", but extend its control to other partition operations such as alter/describe instead of only insert. The purpose is to avoid the incompatibility though the old property name is a little confusing. 2. Removed the property "hive.partition.check.old.column.type.in.rename" which was intended to control the type check of the column in old partition spec in alter table partition rename. The purpose is to avoid introducing new property to Hive as much as we can. Bugs: HIVE-10307 https://issues.apache.org/jira/browse/HIVE-10307 Repository: hive-git Description ------- Data types like TinyInt, SmallInt, BigInt or Decimal can be expressed as literals with postfix like Y, S, L, or BD appended to the number. These literals work in most Hive queries, but do not when they are used as partition column value. This patch is to address the issue of number literals used in partition specification. Highlights of the changes: 1. Validate, convert and normalize the partVal in partSpec to match its column type when hive.partition.check.column.type is set to true (default). It not only applies to opertion insert which used to be controlled by "hive.typecheck.on.insert", but also for other partition operations (e.g. alter table .. partition, partition statistics etc). The hive.typecheck.on.insert is now removed. 2. Convert and normalize legacy partition column data by using alter table partition .. rename with hive.partition.check.old.column.type.in.rename set to true. this property only allows the partVal in old PartSpec to skip the type check, conversion in partition rename. Diffs (updated) ----- common/src/java/org/apache/hadoop/hive/conf/HiveConf.java e138800 ql/src/java/org/apache/hadoop/hive/ql/parse/BaseSemanticAnalyzer.java 19234b5 ql/src/java/org/apache/hadoop/hive/ql/parse/ColumnStatsSemanticAnalyzer.java e8066be ql/src/java/org/apache/hadoop/hive/ql/parse/DDLSemanticAnalyzer.java 8302067 ql/src/test/queries/clientpositive/alter_partition_coltype.q 8c9945c ql/src/test/queries/clientpositive/partition_coltype_literals.q PRE-CREATION ql/src/test/results/clientnegative/archive_partspec1.q.out da4817c ql/src/test/results/clientnegative/archive_partspec5.q.out c18de52 ql/src/test/results/clientpositive/partition_coltype_literals.q.out PRE-CREATION ql/src/test/results/clientpositive/partition_timestamp.q.out bc6ab10 ql/src/test/results/clientpositive/partition_timestamp2.q.out 365df69 Diff: https://reviews.apache.org/r/33171/diff/ Testing ------- 1. Manaully tests covering various number literals (Y, S, L, BD) 2. new qfile test (partition_coltype_literals.q) 3. Precommit build Thanks, Chaoyu Tang