diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java index d823f03..30cf74a 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/TypeCheckProcFactory.java @@ -1030,7 +1030,7 @@ protected ExprNodeDesc getXpathOrFuncExprNodeDesc(ASTNode expr, // we'll try again to convert it to double // however, if we already tried this, or the column is NUMBER type and // the operator is EQUAL, return false due to the type mismatch - if (triedDouble || + if (triedDouble && (genericUDF instanceof GenericUDFOPEqual && !columnType.equals(serdeConstants.STRING_TYPE_NAME))) { return new ExprNodeConstantDesc(false); diff --git a/ql/src/test/queries/clientpositive/cast_tinyint_to_double.q b/ql/src/test/queries/clientpositive/cast_tinyint_to_double.q new file mode 100644 index 0000000..59c5e89 --- /dev/null +++ b/ql/src/test/queries/clientpositive/cast_tinyint_to_double.q @@ -0,0 +1,7 @@ +drop table t; +CREATE TABLE t(c tinyint); +insert overwrite table t select 10 from src limit 1; + +select * from t where c = 10.0; + +select * from t where c = -10.0; \ No newline at end of file diff --git a/ql/src/test/results/clientpositive/cast_tinyint_to_double.q.out b/ql/src/test/results/clientpositive/cast_tinyint_to_double.q.out new file mode 100644 index 0000000..c29df65 --- /dev/null +++ b/ql/src/test/results/clientpositive/cast_tinyint_to_double.q.out @@ -0,0 +1,38 @@ +PREHOOK: query: drop table t +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table t +POSTHOOK: type: DROPTABLE +PREHOOK: query: CREATE TABLE t(c tinyint) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@t +POSTHOOK: query: CREATE TABLE t(c tinyint) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@t +PREHOOK: query: insert overwrite table t select 10 from src limit 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@src +PREHOOK: Output: default@t +POSTHOOK: query: insert overwrite table t select 10 from src limit 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@src +POSTHOOK: Output: default@t +POSTHOOK: Lineage: t.c EXPRESSION [] +PREHOOK: query: select * from t where c = 10.0 +PREHOOK: type: QUERY +PREHOOK: Input: default@t +#### A masked pattern was here #### +POSTHOOK: query: select * from t where c = 10.0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t +#### A masked pattern was here #### +10 +PREHOOK: query: select * from t where c = -10.0 +PREHOOK: type: QUERY +PREHOOK: Input: default@t +#### A masked pattern was here #### +POSTHOOK: query: select * from t where c = -10.0 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@t +#### A masked pattern was here ####