diff --git ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java index 02ebe14..d17d042 100644 --- ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java +++ ql/src/java/org/apache/hadoop/hive/ql/exec/vector/VectorizationContext.java @@ -39,6 +39,7 @@ 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.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 @@ private VectorExpression getVectorExpression(GenericUDFBridge udf, 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 @@ private VectorExpression getSubstrExpression( return expr; } - private VectorExpression getLikeExpression(List 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 childExpr, boolean isLike) throws HiveException { ExprNodeDesc leftExpr = childExpr.get(0); ExprNodeDesc rightExpr = childExpr.get(1); @@ -827,15 +840,25 @@ private VectorExpression getLikeExpression(List childExpr) throws 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) { diff --git ql/src/test/queries/clientpositive/vectorization_short_regress.q ql/src/test/queries/clientpositive/vectorization_short_regress.q index adb2672..2567a7e 100644 --- ql/src/test/queries/clientpositive/vectorization_short_regress.q +++ ql/src/test/queries/clientpositive/vectorization_short_regress.q @@ -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 diff --git ql/src/test/results/clientpositive/vectorization_short_regress.q.out ql/src/test/results/clientpositive/vectorization_short_regress.q.out index a398b0e..68a05b2 100644 --- ql/src/test/results/clientpositive/vectorization_short_regress.q.out +++ ql/src/test/results/clientpositive/vectorization_short_regress.q.out @@ -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 csmallint)) 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_TABLE_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 csmallint)) 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_TABLE_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_COL 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_COL 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))) (- (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 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 (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))))) (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_OR_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.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_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))) (- (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 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 (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))))) (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_OR_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.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_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 may result in a loss of precision. 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_SELEXPR (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_SELEXPR (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