diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java index 218b2df3e6bf4d8094d01cf0c78934324a04f1b1..ec74d858acccf9264ac749b6c6d3a11297117bd9 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/FunctionRegistry.java @@ -784,6 +784,13 @@ public static PrimitiveCategory getPrimitiveCommonCategory(TypeInfo a, TypeInfo return PrimitiveCategory.STRING; } + if (pgA == PrimitiveGrouping.DATE_GROUP && pgB == PrimitiveGrouping.STRING_GROUP) { + return pcA; + } + if (pgB == PrimitiveGrouping.DATE_GROUP && pgA == PrimitiveGrouping.STRING_GROUP) { + return pcB; + } + Integer ai = numericTypes.get(pcA); Integer bi = numericTypes.get(pcB); if (ai == null || bi == null) { diff --git a/ql/src/test/queries/clientpositive/selectindate.q b/ql/src/test/queries/clientpositive/selectindate.q new file mode 100644 index 0000000000000000000000000000000000000000..7fbd92c01f30be567149e0e6d367eaeff56902f1 --- /dev/null +++ b/ql/src/test/queries/clientpositive/selectindate.q @@ -0,0 +1,5 @@ +drop table if exists datetest; +create table datetest(dValue date, iValue int); +insert into datetest values('2000-03-22', 1); +SELECT * FROM datetest WHERE dValue IN ('2000-03-22','2001-03-22'); +drop table datetest; diff --git a/ql/src/test/results/clientpositive/selectindate.q.out b/ql/src/test/results/clientpositive/selectindate.q.out new file mode 100644 index 0000000000000000000000000000000000000000..7736a294c73d1b983f3647745ee662ebdd920740 --- /dev/null +++ b/ql/src/test/results/clientpositive/selectindate.q.out @@ -0,0 +1,39 @@ +PREHOOK: query: drop table if exists datetest +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table if exists datetest +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table datetest(dValue date, iValue int) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@datetest +POSTHOOK: query: create table datetest(dValue date, iValue int) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@datetest +PREHOOK: query: insert into datetest values('2000-03-22', 1) +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@datetest +POSTHOOK: query: insert into datetest values('2000-03-22', 1) +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@datetest +POSTHOOK: Lineage: datetest.dvalue EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +POSTHOOK: Lineage: datetest.ivalue EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col2, type:string, comment:), ] +PREHOOK: query: SELECT * FROM datetest WHERE dValue IN ('2000-03-22','2001-03-22') +PREHOOK: type: QUERY +PREHOOK: Input: default@datetest +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM datetest WHERE dValue IN ('2000-03-22','2001-03-22') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@datetest +#### A masked pattern was here #### +2000-03-22 1 +PREHOOK: query: drop table datetest +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@datetest +PREHOOK: Output: default@datetest +POSTHOOK: query: drop table datetest +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@datetest +POSTHOOK: Output: default@datetest