diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java index 3878bba4d3..2262c022ec 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/orc/OrcInputFormat.java @@ -2310,7 +2310,7 @@ private static boolean isStripeSatisfyPredicate( } PredicateLeaf leaf = predLeaves.get(pred); try { - truthValues[pred] = RecordReaderImpl.evaluatePredicate(stats, leaf, null); + truthValues[pred] = RecordReaderImpl.evaluatePredicate(stats, leaf, null, true); } catch (NoDynamicValuesException dve) { LOG.debug("Dynamic values are not available here {}", dve.getMessage()); boolean hasNulls = stats.hasNull() || leaf.getOperator() != Operator.NULL_SAFE_EQUALS; diff --git a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java index 27fe828b75..bfabdce736 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/io/sarg/ConvertAstToSearchArg.java @@ -204,6 +204,9 @@ private static Object boxLiteral(ExprNodeConstantDesc constantDesc, } return fl.doubleValue(); case TIMESTAMP: + if (lit instanceof org.apache.hadoop.hive.common.type.Timestamp) { + return ((org.apache.hadoop.hive.common.type.Timestamp) lit).toSqlTimestamp(); + } return Timestamp.valueOf(lit.toString()); case DATE: return Date.valueOf(lit.toString()); diff --git a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/FixedBucketPruningOptimizer.java b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/FixedBucketPruningOptimizer.java index 35053e3ca6..3a40b319a4 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/optimizer/FixedBucketPruningOptimizer.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/optimizer/FixedBucketPruningOptimizer.java @@ -251,7 +251,8 @@ private Object convertLiteral(Object o) { if (o instanceof java.sql.Date) { return Date.valueOf(o.toString()); } else if (o instanceof java.sql.Timestamp) { - return Timestamp.valueOf(o.toString()); + java.sql.Timestamp sqlTimestamp = (java.sql.Timestamp)o; + return Timestamp.ofEpochMilli(sqlTimestamp.getTime(), sqlTimestamp.getNanos()); } return o; } diff --git a/ql/src/test/queries/clientpositive/change_allowincompatible_vectorization_false_date.q b/ql/src/test/queries/clientpositive/change_allowincompatible_vectorization_false_date.q index e750c59ded..fb4e9e802d 100644 --- a/ql/src/test/queries/clientpositive/change_allowincompatible_vectorization_false_date.q +++ b/ql/src/test/queries/clientpositive/change_allowincompatible_vectorization_false_date.q @@ -27,3 +27,5 @@ insert into table change_allowincompatible_vectorization_false_date partition (s select ts from change_allowincompatible_vectorization_false_date where ts='2038-03-22 07:26:48.0' and s='aaa'; +set hive.vectorized.execution.enabled=true:when ; +select ts from change_allowincompatible_vectorization_false_date where ts='2038-03-22 07:26:48.0' and s='aaa'; diff --git a/ql/src/test/results/clientpositive/llap/change_allowincompatible_vectorization_false_date.q.out b/ql/src/test/results/clientpositive/llap/change_allowincompatible_vectorization_false_date.q.out index 4661a03571..f3716b1e8c 100644 --- a/ql/src/test/results/clientpositive/llap/change_allowincompatible_vectorization_false_date.q.out +++ b/ql/src/test/results/clientpositive/llap/change_allowincompatible_vectorization_false_date.q.out @@ -84,3 +84,14 @@ POSTHOOK: Input: default@change_allowincompatible_vectorization_false_date POSTHOOK: Input: default@change_allowincompatible_vectorization_false_date@s=aaa #### A masked pattern was here #### 2038-03-22 07:26:48 +PREHOOK: query: select ts from change_allowincompatible_vectorization_false_date where ts='2038-03-22 07:26:48.0' and s='aaa' +PREHOOK: type: QUERY +PREHOOK: Input: default@change_allowincompatible_vectorization_false_date +PREHOOK: Input: default@change_allowincompatible_vectorization_false_date@s=aaa +#### A masked pattern was here #### +POSTHOOK: query: select ts from change_allowincompatible_vectorization_false_date where ts='2038-03-22 07:26:48.0' and s='aaa' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@change_allowincompatible_vectorization_false_date +POSTHOOK: Input: default@change_allowincompatible_vectorization_false_date@s=aaa +#### A masked pattern was here #### +2038-03-22 07:26:48