You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hive.apache.org by ha...@apache.org on 2013/10/08 17:44:16 UTC

svn commit: r1530314 - in /hive/trunk/ql/src: java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java test/queries/clientpositive/vectorization_short_regress.q test/results/clientpositive/vectorization_short_regress.q.out

Author: hashutosh
Date: Tue Oct  8 15:44:16 2013
New Revision: 1530314

URL: http://svn.apache.org/r1530314
Log:
HIVE-4945 : Make RLIKE/REGEXP run end-to-end by updating VectorizationContext (Teddy Choi via Ashutosh Chauhan)

Modified:
    hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
    hive/trunk/ql/src/test/queries/clientpositive/vectorization_short_regress.q
    hive/trunk/ql/src/test/results/clientpositive/vectorization_short_regress.q.out

Modified: hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java?rev=1530314&r1=1530313&r2=1530314&view=diff
==============================================================================
--- hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java (original)
+++ hive/trunk/ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java Tue Oct  8 15:44:16 2013
@@ -39,6 +39,7 @@ import org.apache.hadoop.hive.ql.exec.ve
 import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterExprAndExpr;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterExprOrExpr;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterStringColLikeStringScalar;
+import org.apache.hadoop.hive.ql.exec.vector.expressions.FilterStringColRegExpStringScalar;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.IdentityExpression;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.SelectColumnIsNotNull;
 import org.apache.hadoop.hive.ql.exec.vector.expressions.SelectColumnIsNull;
@@ -95,6 +96,7 @@ import org.apache.hadoop.hive.ql.udf.UDF
 import org.apache.hadoop.hive.ql.udf.UDFOPNegative;
 import org.apache.hadoop.hive.ql.udf.UDFOPPlus;
 import org.apache.hadoop.hive.ql.udf.UDFOPPositive;
+import org.apache.hadoop.hive.ql.udf.UDFRegExp;
 import org.apache.hadoop.hive.ql.udf.UDFRTrim;
 import org.apache.hadoop.hive.ql.udf.UDFSecond;
 import org.apache.hadoop.hive.ql.udf.UDFSubstr;
@@ -513,7 +515,9 @@ public class VectorizationContext {
         cl.equals(UDFSecond.class)) {
       return getTimestampFieldExpression(cl.getSimpleName(), childExpr);
     } else if (cl.equals(UDFLike.class)) {
-      return getLikeExpression(childExpr);
+      return getLikeExpression(childExpr, true);
+    } else if (cl.equals(UDFRegExp.class)) {
+      return getLikeExpression(childExpr, false);
     } else if (cl.equals(UDFLength.class)) {
       return getUnaryStringExpression("StringLength", "Long", childExpr);
     } else if (cl.equals(UDFSubstr.class)) {
@@ -813,7 +817,16 @@ public class VectorizationContext {
     return expr;
   }
 
-  private VectorExpression getLikeExpression(List<ExprNodeDesc> childExpr) throws HiveException {
+  /**
+   * Returns a vector expression for a LIKE or REGEXP expression
+   * @param childExpr A list of child expressions
+   * @param isLike {@code true}: the expression is LIKE.
+   *               {@code false}: the expression is REGEXP.
+   * @return A {@link FilterStringColLikeStringScalar} or
+   *         a {@link FilterStringColRegExpStringScalar}
+   * @throws HiveException
+   */
+  private VectorExpression getLikeExpression(List<ExprNodeDesc> childExpr, boolean isLike) throws HiveException {
     ExprNodeDesc leftExpr = childExpr.get(0);
     ExprNodeDesc rightExpr = childExpr.get(1);
 
@@ -827,15 +840,25 @@ public class VectorizationContext {
       ExprNodeColumnDesc leftColDesc = (ExprNodeColumnDesc) leftExpr;
       constDesc = (ExprNodeConstantDesc) rightExpr;
       inputCol = getInputColumnIndex(leftColDesc.getColumn());
-      expr = (VectorExpression) new FilterStringColLikeStringScalar(inputCol,
-          new Text((byte[]) getScalarValue(constDesc)));
+      if (isLike) {
+        expr = (VectorExpression) new FilterStringColLikeStringScalar(inputCol,
+            new Text((byte[]) getScalarValue(constDesc)));
+      } else {
+        expr = (VectorExpression) new FilterStringColRegExpStringScalar(inputCol,
+            new Text((byte[]) getScalarValue(constDesc)));
+      }
     } else if ((leftExpr instanceof ExprNodeGenericFuncDesc) &&
                (rightExpr instanceof ExprNodeConstantDesc)) {
       v1 = getVectorExpression(leftExpr);
       inputCol = v1.getOutputColumn();
       constDesc = (ExprNodeConstantDesc) rightExpr;
-      expr = (VectorExpression) new FilterStringColLikeStringScalar(inputCol,
-          new Text((byte[]) getScalarValue(constDesc)));
+      if (isLike) {
+        expr = (VectorExpression) new FilterStringColLikeStringScalar(inputCol,
+            new Text((byte[]) getScalarValue(constDesc)));
+      } else {
+        expr = (VectorExpression) new FilterStringColRegExpStringScalar(inputCol,
+            new Text((byte[]) getScalarValue(constDesc)));
+      }
     }
     // TODO add logic to handle cases where left input is an expression.
     if (expr == null) {

Modified: hive/trunk/ql/src/test/queries/clientpositive/vectorization_short_regress.q
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/queries/clientpositive/vectorization_short_regress.q?rev=1530314&r1=1530313&r2=1530314&view=diff
==============================================================================
--- hive/trunk/ql/src/test/queries/clientpositive/vectorization_short_regress.q (original)
+++ hive/trunk/ql/src/test/queries/clientpositive/vectorization_short_regress.q Tue Oct  8 15:44:16 2013
@@ -104,7 +104,7 @@ WHERE  ((762 = cbigint)
 -- TargetTypeClasses: Long, Bool, Double, String, Timestamp
 -- Functions: Max, VarP, StDevP, Avg, Min, StDev, Var
 -- ArithmeticOps: Divide, Multiply, Remainder, Subtract
--- FilterOps: LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Like
+-- FilterOps: LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Like, RLike
 -- GroupBy: NoGroupByProjectAggs
 EXPLAIN SELECT MAX(cint),
        (MAX(cint) / -3728),
@@ -135,7 +135,7 @@ WHERE  (((cbigint <= 197)
         OR ((cdouble >= -26.28)
             AND (csmallint > cdouble))
         OR ((ctinyint > cfloat)
-            AND (cstring1 LIKE '%ss%'))
+            AND (cstring1 RLIKE '.*ss.*'))
            OR ((cfloat > 79.553)
                AND (cstring2 LIKE '10%')));
 SELECT MAX(cint),
@@ -167,7 +167,7 @@ WHERE  (((cbigint <= 197)
         OR ((cdouble >= -26.28)
             AND (csmallint > cdouble))
         OR ((ctinyint > cfloat)
-            AND (cstring1 LIKE '%ss%'))
+            AND (cstring1 RLIKE '.*ss.*'))
            OR ((cfloat > 79.553)
                AND (cstring2 LIKE '10%')));
 
@@ -290,7 +290,7 @@ WHERE  (((ctimestamp2 <= ctimestamp1)
 -- TargetTypeClasses: Timestamp, String, Long, Double, Bool
 -- Functions: Max, Avg, Min, Var, StDev, Count, StDevP, Sum
 -- ArithmeticOps: Multiply, Subtract, Add, Divide
--- FilterOps: Like, NotEqual, LessThan, GreaterThanOrEqual, GreaterThan
+-- FilterOps: Like, NotEqual, LessThan, GreaterThanOrEqual, GreaterThan, RLike
 -- GroupBy: NoGroupByProjectColumns
 EXPLAIN SELECT cint,
        cdouble,
@@ -316,7 +316,7 @@ EXPLAIN SELECT cint,
        (-(ctinyint)),
        (79.553 / ctinyint)
 FROM   alltypesorc
-WHERE  (((cstring1 LIKE 'a%')
+WHERE  (((cstring1 RLIKE 'a.*')
          AND (cstring2 LIKE '%ss%'))
         OR ((1 != cboolean2)
             AND ((csmallint < 79.553)
@@ -349,7 +349,7 @@ SELECT cint,
        (-(ctinyint)),
        (79.553 / ctinyint)
 FROM   alltypesorc
-WHERE  (((cstring1 LIKE 'a%')
+WHERE  (((cstring1 RLIKE 'a.*')
          AND (cstring2 LIKE '%ss%'))
         OR ((1 != cboolean2)
             AND ((csmallint < 79.553)
@@ -664,7 +664,7 @@ ORDER BY cdouble;
 -- TargetTypeClasses: Bool, Timestamp, String, Double, Long
 -- Functions: StDevP, Avg, Count, Min, Var, VarP, Sum
 -- ArithmeticOps: Multiply, Subtract, Add, Divide, Remainder
--- FilterOps: NotEqual, LessThan, Like, Equal
+-- FilterOps: NotEqual, LessThan, Like, Equal, RLike
 -- GroupBy: GroupBy
 EXPLAIN SELECT   ctimestamp1,
          cstring1,
@@ -709,7 +709,7 @@ FROM     alltypesorc
 WHERE    (((ctimestamp1 != 0))
           AND ((((-257 != ctinyint)
                  AND (cboolean2 IS NOT NULL))
-                AND ((cstring1 LIKE '%ss')
+                AND ((cstring1 RLIKE '.*ss')
                      AND (-10669 < ctimestamp1)))
                OR (ctimestamp2 = -10669)
                OR ((ctimestamp1 < 0)
@@ -761,7 +761,7 @@ FROM     alltypesorc
 WHERE    (((ctimestamp1 != 0))
           AND ((((-257 != ctinyint)
                  AND (cboolean2 IS NOT NULL))
-                AND ((cstring1 LIKE '%ss')
+                AND ((cstring1 RLIKE '.*ss')
                      AND (-10669 < ctimestamp1)))
                OR (ctimestamp2 = -10669)
                OR ((ctimestamp1 < 0)
@@ -774,7 +774,7 @@ GROUP BY ctimestamp1, cstring1;
 -- TargetTypeClasses: Double, Long, String, Timestamp, Bool
 -- Functions: Max, Sum, Var, Avg, Min, VarP, StDev, StDevP
 -- ArithmeticOps: Divide, Subtract, Remainder, Add, Multiply
--- FilterOps: GreaterThan, LessThanOrEqual, Equal, LessThan, GreaterThanOrEqual, NotEqual, Like
+-- FilterOps: GreaterThan, LessThanOrEqual, Equal, LessThan, GreaterThanOrEqual, NotEqual, Like, RLike
 -- GroupBy: GroupBy
 EXPLAIN SELECT   cboolean1,
          MAX(cfloat),
@@ -810,7 +810,7 @@ WHERE    (((cboolean1 IS NOT NULL))
                OR ((cint >= -257)
                    AND ((cstring1 IS NOT NULL)
                         AND (cboolean1 >= 1)))
-               OR (cstring2 LIKE 'b')
+               OR (cstring2 RLIKE 'b')
                   OR ((csmallint >= ctinyint)
                       AND (ctimestamp2 IS NULL))))
 GROUP BY cboolean1
@@ -849,7 +849,7 @@ WHERE    (((cboolean1 IS NOT NULL))
                OR ((cint >= -257)
                    AND ((cstring1 IS NOT NULL)
                         AND (cboolean1 >= 1)))
-               OR (cstring2 LIKE 'b')
+               OR (cstring2 RLIKE 'b')
                   OR ((csmallint >= ctinyint)
                       AND (ctimestamp2 IS NULL))))
 GROUP BY cboolean1

Modified: hive/trunk/ql/src/test/results/clientpositive/vectorization_short_regress.q.out
URL: http://svn.apache.org/viewvc/hive/trunk/ql/src/test/results/clientpositive/vectorization_short_regress.q.out?rev=1530314&r1=1530313&r2=1530314&view=diff
==============================================================================
--- hive/trunk/ql/src/test/results/clientpositive/vectorization_short_regress.q.out (original)
+++ hive/trunk/ql/src/test/results/clientpositive/vectorization_short_regress.q.out Tue Oct  8 15:44:16 2013
@@ -363,7 +363,7 @@ POSTHOOK: Input: default@alltypesorc
 PREHOOK: query: -- TargetTypeClasses: Long, Bool, Double, String, Timestamp
 -- Functions: Max, VarP, StDevP, Avg, Min, StDev, Var
 -- ArithmeticOps: Divide, Multiply, Remainder, Subtract
--- FilterOps: LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Like
+-- FilterOps: LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Like, RLike
 -- GroupBy: NoGroupByProjectAggs
 EXPLAIN SELECT MAX(cint),
        (MAX(cint) / -3728),
@@ -394,14 +394,14 @@ WHERE  (((cbigint <= 197)
         OR ((cdouble >= -26.28)
             AND (csmallint > cdouble))
         OR ((ctinyint > cfloat)
-            AND (cstring1 LIKE '%ss%'))
+            AND (cstring1 RLIKE '.*ss.*'))
            OR ((cfloat > 79.553)
                AND (cstring2 LIKE '10%')))
 PREHOOK: type: QUERY
 POSTHOOK: query: -- TargetTypeClasses: Long, Bool, Double, String, Timestamp
 -- Functions: Max, VarP, StDevP, Avg, Min, StDev, Var
 -- ArithmeticOps: Divide, Multiply, Remainder, Subtract
--- FilterOps: LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Like
+-- FilterOps: LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Like, RLike
 -- GroupBy: NoGroupByProjectAggs
 EXPLAIN SELECT MAX(cint),
        (MAX(cint) / -3728),
@@ -432,12 +432,12 @@ WHERE  (((cbigint <= 197)
         OR ((cdouble >= -26.28)
             AND (csmallint > cdouble))
         OR ((ctinyint > cfloat)
-            AND (cstring1 LIKE '%ss%'))
+            AND (cstring1 RLIKE '.*ss.*'))
            OR ((cfloat > 79.553)
                AND (cstring2 LIKE '10%')))
 POSTHOOK: type: QUERY
 ABSTRACT SYNTAX TREE:
-  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (/ (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))) (TOK_SELEXPR (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))) (TOK_SELEXPR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (% (- 563) (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (/ (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint)) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cdouble))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmalli
 nt)) 10.175)) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (% (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint)) 10.175))) (TOK_SELEXPR (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cdouble)))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cdouble))) (TOK_SELEXPR (% (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cdouble)) (- 26.28))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_SAMP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (/ (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (% (- (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))) (% (- 563) (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))))) (TOK_SELEXPR (- (/ (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)) (TOK_FUNCTION AVG (TOK_TABLE_OR_COL ctinyint)))) (TOK_SELEXPR (- (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)))) (TOK_WHERE (OR (OR (OR (AND (<= (TOK_TAB
 LE_OR_COL cbigint) 197) (< (TOK_TABLE_OR_COL cint) (TOK_TABLE_OR_COL cbigint))) (AND (>= (TOK_TABLE_OR_COL cdouble) (- 26.28)) (> (TOK_TABLE_OR_COL csmallint) (TOK_TABLE_OR_COL cdouble)))) (AND (> (TOK_TABLE_OR_COL ctinyint) (TOK_TABLE_OR_COL cfloat)) (LIKE (TOK_TABLE_OR_COL cstring1) '%ss%'))) (AND (> (TOK_TABLE_OR_COL cfloat) 79.553) (LIKE (TOK_TABLE_OR_COL cstring2) '10%'))))))
+  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (/ (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))) (TOK_SELEXPR (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))) (TOK_SELEXPR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (% (- 563) (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (/ (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint)) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cdouble))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmalli
 nt)) 10.175)) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (% (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint)) 10.175))) (TOK_SELEXPR (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cdouble)))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cdouble))) (TOK_SELEXPR (% (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cdouble)) (- 26.28))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_SAMP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (/ (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (% (- (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))) (% (- 563) (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728))))) (TOK_SELEXPR (- (/ (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)) (TOK_FUNCTION AVG (TOK_TABLE_OR_COL ctinyint)))) (TOK_SELEXPR (- (* (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cint)) (- 3728)))) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)))) (TOK_WHERE (OR (OR (OR (AND (<= (TOK_TAB
 LE_OR_COL cbigint) 197) (< (TOK_TABLE_OR_COL cint) (TOK_TABLE_OR_COL cbigint))) (AND (>= (TOK_TABLE_OR_COL cdouble) (- 26.28)) (> (TOK_TABLE_OR_COL csmallint) (TOK_TABLE_OR_COL cdouble)))) (AND (> (TOK_TABLE_OR_COL ctinyint) (TOK_TABLE_OR_COL cfloat)) (RLIKE (TOK_TABLE_OR_COL cstring1) '.*ss.*'))) (AND (> (TOK_TABLE_OR_COL cfloat) 79.553) (LIKE (TOK_TABLE_OR_COL cstring2) '10%'))))))
 
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -452,7 +452,7 @@ STAGE PLANS:
             alias: alltypesorc
             Filter Operator
               predicate:
-                  expr: (((((cbigint <= 197) and (cint < cbigint)) or ((cdouble >= (- 26.28)) and (csmallint > cdouble))) or ((ctinyint > cfloat) and (cstring1 like '%ss%'))) or ((cfloat > 79.553) and (cstring2 like '10%')))
+                  expr: (((((cbigint <= 197) and (cint < cbigint)) or ((cdouble >= (- 26.28)) and (csmallint > cdouble))) or ((ctinyint > cfloat) and (cstring1 rlike '.*ss.*'))) or ((cfloat > 79.553) and (cstring2 like '10%')))
                   type: boolean
               Vectorized execution: true
               Select Operator
@@ -612,7 +612,7 @@ WHERE  (((cbigint <= 197)
         OR ((cdouble >= -26.28)
             AND (csmallint > cdouble))
         OR ((ctinyint > cfloat)
-            AND (cstring1 LIKE '%ss%'))
+            AND (cstring1 RLIKE '.*ss.*'))
            OR ((cfloat > 79.553)
                AND (cstring2 LIKE '10%')))
 PREHOOK: type: QUERY
@@ -647,7 +647,7 @@ WHERE  (((cbigint <= 197)
         OR ((cdouble >= -26.28)
             AND (csmallint > cdouble))
         OR ((ctinyint > cfloat)
-            AND (cstring1 LIKE '%ss%'))
+            AND (cstring1 RLIKE '.*ss.*'))
            OR ((cfloat > 79.553)
                AND (cstring2 LIKE '10%')))
 POSTHOOK: type: QUERY
@@ -1161,7 +1161,7 @@ POSTHOOK: Input: default@alltypesorc
 PREHOOK: query: -- TargetTypeClasses: Timestamp, String, Long, Double, Bool
 -- Functions: Max, Avg, Min, Var, StDev, Count, StDevP, Sum
 -- ArithmeticOps: Multiply, Subtract, Add, Divide
--- FilterOps: Like, NotEqual, LessThan, GreaterThanOrEqual, GreaterThan
+-- FilterOps: Like, NotEqual, LessThan, GreaterThanOrEqual, GreaterThan, RLike
 -- GroupBy: NoGroupByProjectColumns
 EXPLAIN SELECT cint,
        cdouble,
@@ -1187,7 +1187,7 @@ EXPLAIN SELECT cint,
        (-(ctinyint)),
        (79.553 / ctinyint)
 FROM   alltypesorc
-WHERE  (((cstring1 LIKE 'a%')
+WHERE  (((cstring1 RLIKE 'a.*')
          AND (cstring2 LIKE '%ss%'))
         OR ((1 != cboolean2)
             AND ((csmallint < 79.553)
@@ -1200,7 +1200,7 @@ PREHOOK: type: QUERY
 POSTHOOK: query: -- TargetTypeClasses: Timestamp, String, Long, Double, Bool
 -- Functions: Max, Avg, Min, Var, StDev, Count, StDevP, Sum
 -- ArithmeticOps: Multiply, Subtract, Add, Divide
--- FilterOps: Like, NotEqual, LessThan, GreaterThanOrEqual, GreaterThan
+-- FilterOps: Like, NotEqual, LessThan, GreaterThanOrEqual, GreaterThan, RLike
 -- GroupBy: NoGroupByProjectColumns
 EXPLAIN SELECT cint,
        cdouble,
@@ -1226,7 +1226,7 @@ EXPLAIN SELECT cint,
        (-(ctinyint)),
        (79.553 / ctinyint)
 FROM   alltypesorc
-WHERE  (((cstring1 LIKE 'a%')
+WHERE  (((cstring1 RLIKE 'a.*')
          AND (cstring2 LIKE '%ss%'))
         OR ((1 != cboolean2)
             AND ((csmallint < 79.553)
@@ -1237,7 +1237,7 @@ WHERE  (((cstring1 LIKE 'a%')
                AND (ctinyint > cbigint)))
 POSTHOOK: type: QUERY
 ABSTRACT SYNTAX TREE:
-  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL cint)) (TOK_SELEXPR (TOK_TABLE_OR_COL cdouble)) (TOK_SELEXPR (TOK_TABLE_OR_COL ctimestamp2)) (TOK_SELEXPR (TOK_TABLE_OR_COL cstring1)) (TOK_SELEXPR (TOK_TABLE_OR_COL cboolean2)) (TOK_SELEXPR (TOK_TABLE_OR_COL ctinyint)) (TOK_SELEXPR (TOK_TABLE_OR_COL cfloat)) (TOK_SELEXPR (TOK_TABLE_OR_COL ctimestamp1)) (TOK_SELEXPR (TOK_TABLE_OR_COL csmallint)) (TOK_SELEXPR (TOK_TABLE_OR_COL cbigint)) (TOK_SELEXPR (* (- 3728) (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (- (- 863.257) (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL csmallint) (- (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (+ (- (TOK_TABLE_OR_COL csmallint) (- (TOK_TABLE_OR_COL csmallint))) (- (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (/ (TOK_TABLE_OR_COL cint) (TOK_TABLE_OR_C
 OL cint))) (TOK_SELEXPR (- (- (- 863.257) (TOK_TABLE_OR_COL cint)) (- 26.28))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (* (TOK_TABLE_OR_COL cdouble) (- 89010))) (TOK_SELEXPR (/ (TOK_TABLE_OR_COL ctinyint) 988888)) (TOK_SELEXPR (- (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (/ 79.553 (TOK_TABLE_OR_COL ctinyint)))) (TOK_WHERE (OR (OR (OR (AND (LIKE (TOK_TABLE_OR_COL cstring1) 'a%') (LIKE (TOK_TABLE_OR_COL cstring2) '%ss%')) (AND (!= 1 (TOK_TABLE_OR_COL cboolean2)) (AND (< (TOK_TABLE_OR_COL csmallint) 79.553) (!= (- 257) (TOK_TABLE_OR_COL ctinyint))))) (AND (> (TOK_TABLE_OR_COL cdouble) (TOK_TABLE_OR_COL ctinyint)) (>= (TOK_TABLE_OR_COL cfloat) (TOK_TABLE_OR_COL cint)))) (AND (< (TOK_TABLE_OR_COL cint) (TOK_TABLE_OR_COL cbigint)) (> (TOK_TABLE_OR_COL ctinyint) (TOK_TABLE_OR_COL cbigint)))))))
+  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL cint)) (TOK_SELEXPR (TOK_TABLE_OR_COL cdouble)) (TOK_SELEXPR (TOK_TABLE_OR_COL ctimestamp2)) (TOK_SELEXPR (TOK_TABLE_OR_COL cstring1)) (TOK_SELEXPR (TOK_TABLE_OR_COL cboolean2)) (TOK_SELEXPR (TOK_TABLE_OR_COL ctinyint)) (TOK_SELEXPR (TOK_TABLE_OR_COL cfloat)) (TOK_SELEXPR (TOK_TABLE_OR_COL ctimestamp1)) (TOK_SELEXPR (TOK_TABLE_OR_COL csmallint)) (TOK_SELEXPR (TOK_TABLE_OR_COL cbigint)) (TOK_SELEXPR (* (- 3728) (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (- (- 863.257) (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL csmallint) (- (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (+ (- (TOK_TABLE_OR_COL csmallint) (- (TOK_TABLE_OR_COL csmallint))) (- (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (/ (TOK_TABLE_OR_COL cint) (TOK_TABLE_OR_C
 OL cint))) (TOK_SELEXPR (- (- (- 863.257) (TOK_TABLE_OR_COL cint)) (- 26.28))) (TOK_SELEXPR (- (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (* (TOK_TABLE_OR_COL cdouble) (- 89010))) (TOK_SELEXPR (/ (TOK_TABLE_OR_COL ctinyint) 988888)) (TOK_SELEXPR (- (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (/ 79.553 (TOK_TABLE_OR_COL ctinyint)))) (TOK_WHERE (OR (OR (OR (AND (RLIKE (TOK_TABLE_OR_COL cstring1) 'a.*') (LIKE (TOK_TABLE_OR_COL cstring2) '%ss%')) (AND (!= 1 (TOK_TABLE_OR_COL cboolean2)) (AND (< (TOK_TABLE_OR_COL csmallint) 79.553) (!= (- 257) (TOK_TABLE_OR_COL ctinyint))))) (AND (> (TOK_TABLE_OR_COL cdouble) (TOK_TABLE_OR_COL ctinyint)) (>= (TOK_TABLE_OR_COL cfloat) (TOK_TABLE_OR_COL cint)))) (AND (< (TOK_TABLE_OR_COL cint) (TOK_TABLE_OR_COL cbigint)) (> (TOK_TABLE_OR_COL ctinyint) (TOK_TABLE_OR_COL cbigint)))))))
 
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -1252,7 +1252,7 @@ STAGE PLANS:
             alias: alltypesorc
             Filter Operator
               predicate:
-                  expr: (((((cstring1 like 'a%') and (cstring2 like '%ss%')) or ((1 <> cboolean2) and ((csmallint < 79.553) and ((- 257) <> ctinyint)))) or ((cdouble > ctinyint) and (cfloat >= cint))) or ((cint < cbigint) and (ctinyint > cbigint)))
+                  expr: (((((cstring1 rlike 'a.*') and (cstring2 like '%ss%')) or ((1 <> cboolean2) and ((csmallint < 79.553) and ((- 257) <> ctinyint)))) or ((cdouble > ctinyint) and (cfloat >= cint))) or ((cint < cbigint) and (ctinyint > cbigint)))
                   type: boolean
               Vectorized execution: true
               Select Operator
@@ -1343,7 +1343,7 @@ PREHOOK: query: SELECT cint,
        (-(ctinyint)),
        (79.553 / ctinyint)
 FROM   alltypesorc
-WHERE  (((cstring1 LIKE 'a%')
+WHERE  (((cstring1 RLIKE 'a.*')
          AND (cstring2 LIKE '%ss%'))
         OR ((1 != cboolean2)
             AND ((csmallint < 79.553)
@@ -1379,7 +1379,7 @@ POSTHOOK: query: SELECT cint,
        (-(ctinyint)),
        (79.553 / ctinyint)
 FROM   alltypesorc
-WHERE  (((cstring1 LIKE 'a%')
+WHERE  (((cstring1 RLIKE 'a.*')
          AND (cstring2 LIKE '%ss%'))
         OR ((1 != cboolean2)
             AND ((csmallint < 79.553)
@@ -8252,7 +8252,7 @@ POSTHOOK: Input: default@alltypesorc
 PREHOOK: query: -- TargetTypeClasses: Bool, Timestamp, String, Double, Long
 -- Functions: StDevP, Avg, Count, Min, Var, VarP, Sum
 -- ArithmeticOps: Multiply, Subtract, Add, Divide, Remainder
--- FilterOps: NotEqual, LessThan, Like, Equal
+-- FilterOps: NotEqual, LessThan, Like, Equal, RLike
 -- GroupBy: GroupBy
 EXPLAIN SELECT   ctimestamp1,
          cstring1,
@@ -8297,7 +8297,7 @@ FROM     alltypesorc
 WHERE    (((ctimestamp1 != 0))
           AND ((((-257 != ctinyint)
                  AND (cboolean2 IS NOT NULL))
-                AND ((cstring1 LIKE '%ss')
+                AND ((cstring1 RLIKE '.*ss')
                      AND (-10669 < ctimestamp1)))
                OR (ctimestamp2 = -10669)
                OR ((ctimestamp1 < 0)
@@ -8310,7 +8310,7 @@ PREHOOK: type: QUERY
 POSTHOOK: query: -- TargetTypeClasses: Bool, Timestamp, String, Double, Long
 -- Functions: StDevP, Avg, Count, Min, Var, VarP, Sum
 -- ArithmeticOps: Multiply, Subtract, Add, Divide, Remainder
--- FilterOps: NotEqual, LessThan, Like, Equal
+-- FilterOps: NotEqual, LessThan, Like, Equal, RLike
 -- GroupBy: GroupBy
 EXPLAIN SELECT   ctimestamp1,
          cstring1,
@@ -8355,7 +8355,7 @@ FROM     alltypesorc
 WHERE    (((ctimestamp1 != 0))
           AND ((((-257 != ctinyint)
                  AND (cboolean2 IS NOT NULL))
-                AND ((cstring1 LIKE '%ss')
+                AND ((cstring1 RLIKE '.*ss')
                      AND (-10669 < ctimestamp1)))
                OR (ctimestamp2 = -10669)
                OR ((ctimestamp1 < 0)
@@ -8366,7 +8366,7 @@ WHERE    (((ctimestamp1 != 0))
 GROUP BY ctimestamp1, cstring1
 POSTHOOK: type: QUERY
 ABSTRACT SYNTAX TREE:
-  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL ctimestamp1)) (TOK_SELEXPR (TOK_TABLE_OR_COL cstring1)) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (* (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)) 10.175)) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTIONSTAR COUNT)) (TOK_SELEXPR (- (TOK_FUNCTIONSTAR COUNT))) (TOK_SELEXPR (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (T
 OK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (TOK_SELEXPR (- (* (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)) 10.175))) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT))))) (TOK_SELEXPR (- (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))))) (TOK_SELEXPR (/ (- (TOK_FUNCTIONSTAR COUNT)) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (/ 10.175 (TOK_FUNCTION AVG (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (- (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (T
 OK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT))))) (TOK_SELEXPR (- (- (* (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)) 10.175)))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (* (- (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) 10.175)) (TOK_SELEXPR (% 10.175 (/ 10.175 (TOK_FUNCTION AVG (TOK_TABLE_OR_COL csmallint))))) (TOK_SELEXPR (- (TOK_FUNCTION MIN (TOK_TABLE_OR_COL ctinyint)))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_O
 R_COL cdouble))) (TOK_SELEXPR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))))) (TOK_SELEXPR (% (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (/ (- 26.28) (- (TOK_FUNCTION MIN (TOK_TABLE_OR_COL ctinyint))))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (/ (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (- (- (TOK_FUNCTIONSTAR COUNT)))) (TOK_SELEXPR (TOK_FUNCTIONSTAR COUNT)) (TOK_SELEXPR (% (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.2
 8) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (- 26.28)))) (TOK_WHERE (AND (!= (TOK_TABLE_OR_COL ctimestamp1) 0) (OR (OR (OR (OR (AND (AND (!= (- 257) (TOK_TABLE_OR_COL ctinyint)) (TOK_FUNCTION TOK_ISNOTNULL (TOK_TABLE_OR_COL cboolean2))) (AND (LIKE (TOK_TABLE_OR_COL cstring1) '%ss') (< (- 10669) (TOK_TABLE_OR_COL ctimestamp1)))) (= (TOK_TABLE_OR_COL ctimestamp2) (- 10669))) (AND (< (TOK_TABLE_OR_COL ctimestamp1) 0) (LIKE (TOK_TABLE_OR_COL cstring2) '%b%'))) (= (TOK_TABLE_OR_COL cdouble) (TOK_TABLE_OR_COL cint))) (AND (TOK_FUNCTION TOK_ISNULL (TOK_TABLE_OR_COL cboolean1)) (< (TOK_TABLE_OR_COL cfloat) (TOK_TABLE_OR_COL cint)))))) (TOK_GROUPBY (TOK_TABLE_OR_COL ctimestamp1) (TOK_TABLE_OR_COL cstring1))))
+  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL ctimestamp1)) (TOK_SELEXPR (TOK_TABLE_OR_COL cstring1)) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (* (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)) 10.175)) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTIONSTAR COUNT)) (TOK_SELEXPR (- (TOK_FUNCTIONSTAR COUNT))) (TOK_SELEXPR (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (T
 OK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (TOK_SELEXPR (- (* (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)) 10.175))) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT))))) (TOK_SELEXPR (- (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))))) (TOK_SELEXPR (/ (- (TOK_FUNCTIONSTAR COUNT)) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (/ 10.175 (TOK_FUNCTION AVG (TOK_TABLE_OR_COL csmallint)))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (- (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (T
 OK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT))))) (TOK_SELEXPR (- (- (* (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)) 10.175)))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (* (- (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) 10.175)) (TOK_SELEXPR (% 10.175 (/ 10.175 (TOK_FUNCTION AVG (TOK_TABLE_OR_COL csmallint))))) (TOK_SELEXPR (- (TOK_FUNCTION MIN (TOK_TABLE_OR_COL ctinyint)))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_O
 R_COL cdouble))) (TOK_SELEXPR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))))) (TOK_SELEXPR (% (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (/ (- 26.28) (- (TOK_FUNCTION MIN (TOK_TABLE_OR_COL ctinyint))))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (/ (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.28) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (- (- (TOK_FUNCTIONSTAR COUNT)))) (TOK_SELEXPR (TOK_FUNCTIONSTAR COUNT)) (TOK_SELEXPR (% (+ (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL csmallint)) (* (* (- (- 26.2
 8) (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint))) (- (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL cint)))) (- (TOK_FUNCTIONSTAR COUNT)))) (- 26.28)))) (TOK_WHERE (AND (!= (TOK_TABLE_OR_COL ctimestamp1) 0) (OR (OR (OR (OR (AND (AND (!= (- 257) (TOK_TABLE_OR_COL ctinyint)) (TOK_FUNCTION TOK_ISNOTNULL (TOK_TABLE_OR_COL cboolean2))) (AND (RLIKE (TOK_TABLE_OR_COL cstring1) '.*ss') (< (- 10669) (TOK_TABLE_OR_COL ctimestamp1)))) (= (TOK_TABLE_OR_COL ctimestamp2) (- 10669))) (AND (< (TOK_TABLE_OR_COL ctimestamp1) 0) (LIKE (TOK_TABLE_OR_COL cstring2) '%b%'))) (= (TOK_TABLE_OR_COL cdouble) (TOK_TABLE_OR_COL cint))) (AND (TOK_FUNCTION TOK_ISNULL (TOK_TABLE_OR_COL cboolean1)) (< (TOK_TABLE_OR_COL cfloat) (TOK_TABLE_OR_COL cint)))))) (TOK_GROUPBY (TOK_TABLE_OR_COL ctimestamp1) (TOK_TABLE_OR_COL cstring1))))
 
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -8381,7 +8381,7 @@ STAGE PLANS:
             alias: alltypesorc
             Filter Operator
               predicate:
-                  expr: ((ctimestamp1 <> 0) and ((((((((- 257) <> ctinyint) and cboolean2 is not null) and ((cstring1 like '%ss') and ((- 10669) < ctimestamp1))) or (ctimestamp2 = (- 10669))) or ((ctimestamp1 < 0) and (cstring2 like '%b%'))) or (cdouble = cint)) or (cboolean1 is null and (cfloat < cint))))
+                  expr: ((ctimestamp1 <> 0) and ((((((((- 257) <> ctinyint) and cboolean2 is not null) and ((cstring1 rlike '.*ss') and ((- 10669) < ctimestamp1))) or (ctimestamp2 = (- 10669))) or ((ctimestamp1 < 0) and (cstring2 like '%b%'))) or (cdouble = cint)) or (cboolean1 is null and (cfloat < cint))))
                   type: boolean
               Vectorized execution: true
               Select Operator
@@ -8627,7 +8627,7 @@ FROM     alltypesorc
 WHERE    (((ctimestamp1 != 0))
           AND ((((-257 != ctinyint)
                  AND (cboolean2 IS NOT NULL))
-                AND ((cstring1 LIKE '%ss')
+                AND ((cstring1 RLIKE '.*ss')
                      AND (-10669 < ctimestamp1)))
                OR (ctimestamp2 = -10669)
                OR ((ctimestamp1 < 0)
@@ -8682,7 +8682,7 @@ FROM     alltypesorc
 WHERE    (((ctimestamp1 != 0))
           AND ((((-257 != ctinyint)
                  AND (cboolean2 IS NOT NULL))
-                AND ((cstring1 LIKE '%ss')
+                AND ((cstring1 RLIKE '.*ss')
                      AND (-10669 < ctimestamp1)))
                OR (ctimestamp2 = -10669)
                OR ((ctimestamp1 < 0)
@@ -8936,7 +8936,7 @@ WARNING: Comparing a bigint and a double
 PREHOOK: query: -- TargetTypeClasses: Double, Long, String, Timestamp, Bool
 -- Functions: Max, Sum, Var, Avg, Min, VarP, StDev, StDevP
 -- ArithmeticOps: Divide, Subtract, Remainder, Add, Multiply
--- FilterOps: GreaterThan, LessThanOrEqual, Equal, LessThan, GreaterThanOrEqual, NotEqual, Like
+-- FilterOps: GreaterThan, LessThanOrEqual, Equal, LessThan, GreaterThanOrEqual, NotEqual, Like, RLike
 -- GroupBy: GroupBy
 EXPLAIN SELECT   cboolean1,
          MAX(cfloat),
@@ -8972,7 +8972,7 @@ WHERE    (((cboolean1 IS NOT NULL))
                OR ((cint >= -257)
                    AND ((cstring1 IS NOT NULL)
                         AND (cboolean1 >= 1)))
-               OR (cstring2 LIKE 'b')
+               OR (cstring2 RLIKE 'b')
                   OR ((csmallint >= ctinyint)
                       AND (ctimestamp2 IS NULL))))
 GROUP BY cboolean1
@@ -8981,7 +8981,7 @@ PREHOOK: type: QUERY
 POSTHOOK: query: -- TargetTypeClasses: Double, Long, String, Timestamp, Bool
 -- Functions: Max, Sum, Var, Avg, Min, VarP, StDev, StDevP
 -- ArithmeticOps: Divide, Subtract, Remainder, Add, Multiply
--- FilterOps: GreaterThan, LessThanOrEqual, Equal, LessThan, GreaterThanOrEqual, NotEqual, Like
+-- FilterOps: GreaterThan, LessThanOrEqual, Equal, LessThan, GreaterThanOrEqual, NotEqual, Like, RLike
 -- GroupBy: GroupBy
 EXPLAIN SELECT   cboolean1,
          MAX(cfloat),
@@ -9017,14 +9017,14 @@ WHERE    (((cboolean1 IS NOT NULL))
                OR ((cint >= -257)
                    AND ((cstring1 IS NOT NULL)
                         AND (cboolean1 >= 1)))
-               OR (cstring2 LIKE 'b')
+               OR (cstring2 RLIKE 'b')
                   OR ((csmallint >= ctinyint)
                       AND (ctimestamp2 IS NULL))))
 GROUP BY cboolean1
 ORDER BY cboolean1
 POSTHOOK: type: QUERY
 ABSTRACT SYNTAX TREE:
-  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL cboolean1)) (TOK_SELEXPR (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (/ (- 26.28) (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cbigint)) 10.175)) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (% (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)) (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (+ 10.175 (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat))))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cdouble))) (TOK_SELEXPR (+ (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cbigint)) 10.175) (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint))) (TOK_SELEX
 PR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (+ 10.175 (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))))) (TOK_SELEXPR (/ 79.553 (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint)))) (TOK_SELEXPR (% (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)) (/ 79.553 (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint))))) (TOK_SELEXPR (- (+ 10.175 (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))))) (TOK_SELEXPR (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_SAMP (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (* (- 1.389) (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint)))) (TOK_SELEXPR (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint)) (* (- 1.389) (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint))))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint)) (* (- 1.389) (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint)))))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR 
 (- (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (* (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint)) (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint))))) (TOK_WHERE (AND (TOK_FUNCTION TOK_ISNOTNULL (TOK_TABLE_OR_COL cboolean1)) (OR (OR (OR (AND (< (TOK_TABLE_OR_COL cdouble) (TOK_TABLE_OR_COL csmallint)) (AND (= (TOK_TABLE_OR_COL cboolean2) (TOK_TABLE_OR_COL cboolean1)) (<= (TOK_TABLE_OR_COL cbigint) (- 863.257)))) (AND (>= (TOK_TABLE_OR_COL cint) (- 257)) (AND (TOK_FUNCTION TOK_ISNOTNULL (TOK_TABLE_OR_COL cstring1)) (>= (TOK_TABLE_OR_COL cboolean1) 1)))) (LIKE (TOK_TABLE_OR_COL cstring2) 'b')) (AND (>= (TOK_TABLE_OR_COL csmallint) (TOK_TABLE_OR_COL ctinyint)) (TOK_FUNCTION TOK_ISNULL (TOK_TABLE_OR_COL ctimestamp2)))))) (TOK_GROUPBY (TOK_TABLE_OR_COL cboolean1)) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL cboolean1)))))
+  (TOK_QUERY (TOK_FROM (TOK_TABREF (TOK_TABNAME alltypesorc))) (TOK_INSERT (TOK_DESTINATION (TOK_DIR TOK_TMP_FILE)) (TOK_SELECT (TOK_SELEXPR (TOK_TABLE_OR_COL cboolean1)) (TOK_SELEXPR (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat))) (TOK_SELEXPR (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (/ (- 26.28) (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cbigint)) 10.175)) (TOK_SELEXPR (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (% (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)) (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))) (TOK_SELEXPR (+ 10.175 (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat))))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cdouble))) (TOK_SELEXPR (+ (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cbigint)) 10.175) (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint))) (TOK_SELEX
 PR (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint))) (TOK_SELEXPR (- (+ 10.175 (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))))) (TOK_SELEXPR (/ 79.553 (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint)))) (TOK_SELEXPR (% (TOK_FUNCTION VAR_SAMP (TOK_TABLE_OR_COL cint)) (/ 79.553 (TOK_FUNCTION VAR_POP (TOK_TABLE_OR_COL cbigint))))) (TOK_SELEXPR (- (+ 10.175 (- (TOK_FUNCTION MAX (TOK_TABLE_OR_COL cfloat)))))) (TOK_SELEXPR (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_SAMP (TOK_TABLE_OR_COL ctinyint))) (TOK_SELEXPR (* (- 1.389) (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint)))) (TOK_SELEXPR (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint)) (* (- 1.389) (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint))))) (TOK_SELEXPR (TOK_FUNCTION STDDEV_POP (TOK_TABLE_OR_COL csmallint))) (TOK_SELEXPR (- (- (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint)) (* (- 1.389) (TOK_FUNCTION MIN (TOK_TABLE_OR_COL cbigint)))))) (TOK_SELEXPR (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint))) (TOK_SELEXPR 
 (- (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint)))) (TOK_SELEXPR (* (TOK_FUNCTION AVG (TOK_TABLE_OR_COL cint)) (TOK_FUNCTION SUM (TOK_TABLE_OR_COL cint))))) (TOK_WHERE (AND (TOK_FUNCTION TOK_ISNOTNULL (TOK_TABLE_OR_COL cboolean1)) (OR (OR (OR (AND (< (TOK_TABLE_OR_COL cdouble) (TOK_TABLE_OR_COL csmallint)) (AND (= (TOK_TABLE_OR_COL cboolean2) (TOK_TABLE_OR_COL cboolean1)) (<= (TOK_TABLE_OR_COL cbigint) (- 863.257)))) (AND (>= (TOK_TABLE_OR_COL cint) (- 257)) (AND (TOK_FUNCTION TOK_ISNOTNULL (TOK_TABLE_OR_COL cstring1)) (>= (TOK_TABLE_OR_COL cboolean1) 1)))) (RLIKE (TOK_TABLE_OR_COL cstring2) 'b')) (AND (>= (TOK_TABLE_OR_COL csmallint) (TOK_TABLE_OR_COL ctinyint)) (TOK_FUNCTION TOK_ISNULL (TOK_TABLE_OR_COL ctimestamp2)))))) (TOK_GROUPBY (TOK_TABLE_OR_COL cboolean1)) (TOK_ORDERBY (TOK_TABSORTCOLNAMEASC (TOK_TABLE_OR_COL cboolean1)))))
 
 STAGE DEPENDENCIES:
   Stage-1 is a root stage
@@ -9040,7 +9040,7 @@ STAGE PLANS:
             alias: alltypesorc
             Filter Operator
               predicate:
-                  expr: (cboolean1 is not null and (((((cdouble < csmallint) and ((cboolean2 = cboolean1) and (cbigint <= (- 863.257)))) or ((cint >= (- 257)) and (cstring1 is not null and (cboolean1 >= 1)))) or (cstring2 like 'b')) or ((csmallint >= ctinyint) and ctimestamp2 is null)))
+                  expr: (cboolean1 is not null and (((((cdouble < csmallint) and ((cboolean2 = cboolean1) and (cbigint <= (- 863.257)))) or ((cint >= (- 257)) and (cstring1 is not null and (cboolean1 >= 1)))) or (cstring2 rlike 'b')) or ((csmallint >= ctinyint) and ctimestamp2 is null)))
                   type: boolean
               Vectorized execution: true
               Select Operator
@@ -9306,7 +9306,7 @@ WHERE    (((cboolean1 IS NOT NULL))
                OR ((cint >= -257)
                    AND ((cstring1 IS NOT NULL)
                         AND (cboolean1 >= 1)))
-               OR (cstring2 LIKE 'b')
+               OR (cstring2 RLIKE 'b')
                   OR ((csmallint >= ctinyint)
                       AND (ctimestamp2 IS NULL))))
 GROUP BY cboolean1
@@ -9348,7 +9348,7 @@ WHERE    (((cboolean1 IS NOT NULL))
                OR ((cint >= -257)
                    AND ((cstring1 IS NOT NULL)
                         AND (cboolean1 >= 1)))
-               OR (cstring2 LIKE 'b')
+               OR (cstring2 RLIKE 'b')
                   OR ((csmallint >= ctinyint)
                       AND (ctimestamp2 IS NULL))))
 GROUP BY cboolean1