diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java index 3e13589..6d58885 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/VectorUDFDateString.java @@ -23,11 +23,15 @@ import org.apache.hadoop.hive.ql.exec.vector.VectorGroupByOperator; import org.apache.hadoop.io.Text; -import java.sql.Date; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.text.ParseException; public class VectorUDFDateString extends StringUnaryUDF { private static final long serialVersionUID = 1L; + private transient static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); + private static final Log LOG = LogFactory.getLog( VectorUDFDateString.class.getName()); @@ -41,13 +45,10 @@ public Text evaluate(Text s) { return null; } try { - Date date = Date.valueOf(s.toString()); - t.set(date.toString()); + Date date = formatter.parse(s.toString()); + t.set(formatter.format(date)); return t; - } catch (IllegalArgumentException e) { - if (LOG.isDebugEnabled()) { - LOG.info("VectorUDFDateString passed bad string for Date.valueOf '" + s.toString() + "'"); - } + } catch (ParseException e) { return null; } } diff --git ql/src/test/queries/clientpositive/vectorized_date_funcs.q ql/src/test/queries/clientpositive/vectorized_date_funcs.q index b7aa3c2..6392fc9 100644 --- ql/src/test/queries/clientpositive/vectorized_date_funcs.q +++ ql/src/test/queries/clientpositive/vectorized_date_funcs.q @@ -120,3 +120,6 @@ SELECT datediff(fl_date, date_sub(fl_date, 2)), datediff(date_add(fl_date, 2), date_sub(fl_date, 2)) FROM date_udf_flight_orc LIMIT 10; + +-- Test extracting the date part of expression that includes time +SELECT to_date('2009-07-30 04:17:52') FROM date_udf_flight_orc LIMIT 1; \ No newline at end of file diff --git ql/src/test/results/clientpositive/vectorized_date_funcs.q.out ql/src/test/results/clientpositive/vectorized_date_funcs.q.out index 2297a05..c2800a5 100644 --- ql/src/test/results/clientpositive/vectorized_date_funcs.q.out +++ ql/src/test/results/clientpositive/vectorized_date_funcs.q.out @@ -959,3 +959,14 @@ POSTHOOK: Input: default@date_udf_flight_orc 2010-10-20 2010-10-22 2010-10-18 -2 2 4 2010-10-21 2010-10-23 2010-10-19 -2 2 4 2010-10-21 2010-10-23 2010-10-19 -2 2 4 +PREHOOK: query: -- Test extracting the date part of expression that includes time +SELECT to_date('2009-07-30 04:17:52') FROM date_udf_flight_orc LIMIT 1 +PREHOOK: type: QUERY +PREHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +POSTHOOK: query: -- Test extracting the date part of expression that includes time +SELECT to_date('2009-07-30 04:17:52') FROM date_udf_flight_orc LIMIT 1 +POSTHOOK: type: QUERY +POSTHOOK: Input: default@date_udf_flight_orc +#### A masked pattern was here #### +2009-07-30