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

Reply via email to