Repository: hive Updated Branches: refs/heads/branch-1 57ca0b57c -> 56920d2d9
HIVE-14349: Vectorization: LIKE should anchor the regexes (Gopal V, reviewed by Matt McCline) (cherry picked from commit 24b39cdf2902a6d38dd058efa033257a1b66d648) Project: http://git-wip-us.apache.org/repos/asf/hive/repo Commit: http://git-wip-us.apache.org/repos/asf/hive/commit/56920d2d Tree: http://git-wip-us.apache.org/repos/asf/hive/tree/56920d2d Diff: http://git-wip-us.apache.org/repos/asf/hive/diff/56920d2d Branch: refs/heads/branch-1 Commit: 56920d2d90ee66fa4d3b87ffe9b5f06b35cde91e Parents: 57ca0b5 Author: Gopal V <gop...@apache.org> Authored: Wed Jul 27 17:59:20 2016 -0700 Committer: Gopal V <gop...@apache.org> Committed: Thu Jul 28 13:59:50 2016 -0700 ---------------------------------------------------------------------- .../FilterStringColLikeStringScalar.java | 3 +- .../test/queries/clientpositive/vector_udf2.q | 13 +++++ .../results/clientpositive/vector_udf2.q.out | 52 ++++++++++++++++++++ 3 files changed, 67 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hive/blob/56920d2d/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java ---------------------------------------------------------------------- diff --git a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java index c03c34e..a194306 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java +++ b/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/expressions/FilterStringColLikeStringScalar.java @@ -123,7 +123,8 @@ public class FilterStringColLikeStringScalar extends AbstractFilterStringColLike */ private static class ComplexCheckerFactory implements CheckerFactory { public Checker tryCreate(String pattern) { - return new ComplexChecker(UDFLike.likePatternToRegExp(pattern)); + // anchor the pattern to the start:end of the whole string. + return new ComplexChecker("^" + UDFLike.likePatternToRegExp(pattern) + "$"); } } } http://git-wip-us.apache.org/repos/asf/hive/blob/56920d2d/ql/src/test/queries/clientpositive/vector_udf2.q ---------------------------------------------------------------------- diff --git a/ql/src/test/queries/clientpositive/vector_udf2.q b/ql/src/test/queries/clientpositive/vector_udf2.q index e349d14..b926c4f 100644 --- a/ql/src/test/queries/clientpositive/vector_udf2.q +++ b/ql/src/test/queries/clientpositive/vector_udf2.q @@ -27,3 +27,16 @@ select from varchar_udf_2 limit 1; drop table varchar_udf_2; + + +create temporary table HIVE_14349 (a string) stored as orc; + +insert into HIVE_14349 values('XYZa'), ('badXYZa'); + +select * from HIVE_14349 where a LIKE 'XYZ%a%'; + +insert into HIVE_14349 values ('XYZab'), ('XYZabBAD'), ('badXYZab'), ('badXYZabc'); + +select * from HIVE_14349 where a LIKE 'XYZ%a_'; + +drop table HIVE_14349; http://git-wip-us.apache.org/repos/asf/hive/blob/56920d2d/ql/src/test/results/clientpositive/vector_udf2.q.out ---------------------------------------------------------------------- diff --git a/ql/src/test/results/clientpositive/vector_udf2.q.out b/ql/src/test/results/clientpositive/vector_udf2.q.out index 099ab29..6fc7778 100644 --- a/ql/src/test/results/clientpositive/vector_udf2.q.out +++ b/ql/src/test/results/clientpositive/vector_udf2.q.out @@ -108,3 +108,55 @@ POSTHOOK: query: drop table varchar_udf_2 POSTHOOK: type: DROPTABLE POSTHOOK: Input: default@varchar_udf_2 POSTHOOK: Output: default@varchar_udf_2 +PREHOOK: query: create temporary table HIVE_14349 (a string) stored as orc +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@HIVE_14349 +POSTHOOK: query: create temporary table HIVE_14349 (a string) stored as orc +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@HIVE_14349 +PREHOOK: query: insert into HIVE_14349 values('XYZa'), ('badXYZa') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__1 +PREHOOK: Output: default@hive_14349 +POSTHOOK: query: insert into HIVE_14349 values('XYZa'), ('badXYZa') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__1 +POSTHOOK: Output: default@hive_14349 +POSTHOOK: Lineage: hive_14349.a SIMPLE [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from HIVE_14349 where a LIKE 'XYZ%a%' +PREHOOK: type: QUERY +PREHOOK: Input: default@hive_14349 +#### A masked pattern was here #### +POSTHOOK: query: select * from HIVE_14349 where a LIKE 'XYZ%a%' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive_14349 +#### A masked pattern was here #### +XYZa +PREHOOK: query: insert into HIVE_14349 values ('XYZab'), ('XYZabBAD'), ('badXYZab'), ('badXYZabc') +PREHOOK: type: QUERY +PREHOOK: Input: default@values__tmp__table__2 +PREHOOK: Output: default@hive_14349 +POSTHOOK: query: insert into HIVE_14349 values ('XYZab'), ('XYZabBAD'), ('badXYZab'), ('badXYZabc') +POSTHOOK: type: QUERY +POSTHOOK: Input: default@values__tmp__table__2 +POSTHOOK: Output: default@hive_14349 +POSTHOOK: Lineage: hive_14349.a SIMPLE [(values__tmp__table__2)values__tmp__table__2.FieldSchema(name:tmp_values_col1, type:string, comment:), ] +PREHOOK: query: select * from HIVE_14349 where a LIKE 'XYZ%a_' +PREHOOK: type: QUERY +PREHOOK: Input: default@hive_14349 +#### A masked pattern was here #### +POSTHOOK: query: select * from HIVE_14349 where a LIKE 'XYZ%a_' +POSTHOOK: type: QUERY +POSTHOOK: Input: default@hive_14349 +#### A masked pattern was here #### +XYZab +PREHOOK: query: drop table HIVE_14349 +PREHOOK: type: DROPTABLE +PREHOOK: Input: default@hive_14349 +PREHOOK: Output: default@hive_14349 +POSTHOOK: query: drop table HIVE_14349 +POSTHOOK: type: DROPTABLE +POSTHOOK: Input: default@hive_14349 +POSTHOOK: Output: default@hive_14349