diff --git a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g index 1d8c3e0..81efadc 100644 --- a/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g +++ b/ql/src/java/org/apache/hadoop/hive/ql/parse/IdentifiersParser.g @@ -76,14 +76,14 @@ rollupOldSyntax @init { gParent.pushMsg("rollup old syntax", state); } @after { gParent.popMsg(state); } : - expressionsNotInParenthese + expr=expressionsNotInParenthesis[false] ((rollup=KW_WITH KW_ROLLUP) | (cube=KW_WITH KW_CUBE)) ? (sets=KW_GROUPING KW_SETS LPAREN groupingSetExpression ( COMMA groupingSetExpression)* RPAREN ) ? - -> {rollup != null}? ^(TOK_ROLLUP_GROUPBY expressionsNotInParenthese) - -> {cube != null}? ^(TOK_CUBE_GROUPBY expressionsNotInParenthese) - -> {sets != null}? ^(TOK_GROUPING_SETS expressionsNotInParenthese groupingSetExpression+) - -> ^(TOK_GROUPBY expressionsNotInParenthese) + -> {rollup != null}? ^(TOK_ROLLUP_GROUPBY {$expr.tree}) + -> {cube != null}? ^(TOK_CUBE_GROUPBY {$expr.tree}) + -> {sets != null}? ^(TOK_GROUPING_SETS {$expr.tree} groupingSetExpression+) + -> ^(TOK_GROUPBY {$expr.tree}) ; @@ -127,29 +127,39 @@ havingCondition expression ; -expressionsInParenthese +expressionsInParenthesis[boolean isStruct] : - LPAREN! expressionsNotInParenthese RPAREN! + LPAREN! expressionsNotInParenthesis[isStruct] RPAREN! ; -expressionsNotInParenthese +expressionsNotInParenthesis[boolean isStruct] : - expression (COMMA expression)* -> expression+ + first=expression more=expressionPart[$expression.tree, isStruct]? + -> {more==null}? + {$first.tree} + -> {$more.tree} + ; + +expressionPart[CommonTree t, boolean isStruct] + : + (COMMA expression)+ + -> {isStruct}? ^(TOK_FUNCTION Identifier["struct"] {$t} expression+) + -> {$t} expression+ ; expressions : - (expressionsInParenthese) => expressionsInParenthese + (expressionsInParenthesis[false]) => expressionsInParenthesis[false] | - expressionsNotInParenthese + expressionsNotInParenthesis[false] ; -columnRefOrderInParenthese +columnRefOrderInParenthesis : LPAREN columnRefOrder (COMMA columnRefOrder)* RPAREN -> columnRefOrder+ ; -columnRefOrderNotInParenthese +columnRefOrderNotInParenthesis : columnRefOrder (COMMA columnRefOrder)* -> columnRefOrder+ ; @@ -189,9 +199,9 @@ sortByClause : KW_SORT KW_BY ( - (LPAREN) => columnRefOrderInParenthese -> ^(TOK_SORTBY columnRefOrderInParenthese) + (LPAREN) => columnRefOrderInParenthesis -> ^(TOK_SORTBY columnRefOrderInParenthesis) | - columnRefOrderNotInParenthese -> ^(TOK_SORTBY columnRefOrderNotInParenthese) + columnRefOrderNotInParenthesis -> ^(TOK_SORTBY columnRefOrderNotInParenthesis) ) ; @@ -303,7 +313,9 @@ timeQualifiers constant @init { gParent.pushMsg("constant", state); } @after { gParent.popMsg(state); } - : Number + : + (intervalLiteral) => intervalLiteral + | Number | dateLiteral | timestampLiteral | StringLiteral @@ -349,13 +361,27 @@ timestampLiteral KW_CURRENT_TIMESTAMP -> ^(TOK_FUNCTION KW_CURRENT_TIMESTAMP) ; +intervalValue + : + StringLiteral | Number + ; + +intervalLiteral + : + value=intervalValue qualifiers=intervalQualifiers + -> ^(TOK_FUNCTION Identifier["internal_interval"] NumberLiteral[Integer.toString(((CommonTree)qualifiers.getTree()).token.getType())] $value) + ; + intervalExpression : - KW_INTERVAL? k1=(StringLiteral|Number) q1=intervalQualifiers -> - ^(TOK_FUNCTION Identifier["internal_interval"] NumberLiteral[Integer.toString(((CommonTree)q1.getTree()).token.getType())] $k1) + LPAREN value=intervalValue RPAREN qualifiers=intervalQualifiers + -> ^(TOK_FUNCTION Identifier["internal_interval"] NumberLiteral[Integer.toString(((CommonTree)qualifiers.getTree()).token.getType())] $value) + | + KW_INTERVAL value=intervalValue qualifiers=intervalQualifiers + -> ^(TOK_FUNCTION Identifier["internal_interval"] NumberLiteral[Integer.toString(((CommonTree)qualifiers.getTree()).token.getType())] $value) | - KW_INTERVAL? LPAREN k2=expression RPAREN q2=intervalQualifiers -> - ^(TOK_FUNCTION Identifier["internal_interval"] NumberLiteral[Integer.toString(((CommonTree)q2.getTree()).token.getType())] $k2) + KW_INTERVAL LPAREN expr=expression RPAREN qualifiers=intervalQualifiers + -> ^(TOK_FUNCTION Identifier["internal_interval"] NumberLiteral[Integer.toString(((CommonTree)qualifiers.getTree()).token.getType())] $expr) ; intervalQualifiers @@ -379,8 +405,8 @@ expression atomExpression : - (intervalExpression)=>intervalExpression - | (constant) => constant + constant + | (intervalExpression) => intervalExpression | castExpression | extractExpression | floorExpression @@ -390,7 +416,7 @@ atomExpression -> ^(TOK_SUBQUERY_EXPR TOK_SUBQUERY_OP subQueryExpression) | (function) => function | tableOrColumn - | LPAREN! expression RPAREN! + | expressionsInParenthesis[true] ; precedenceFieldExpression @@ -490,69 +516,79 @@ precedenceBitwiseOrExpression ; -// Equal operators supporting NOT prefix -precedenceEqualNegatableOperator +precedenceRegexpOperator : KW_LIKE | KW_RLIKE | KW_REGEXP ; -precedenceEqualOperator +precedenceSimilarOperator : - precedenceEqualNegatableOperator | EQUAL | EQUAL_NS | NOTEQUAL | LESSTHANOREQUALTO | LESSTHAN | GREATERTHANOREQUALTO | GREATERTHAN + precedenceRegexpOperator | LESSTHANOREQUALTO | LESSTHAN | GREATERTHANOREQUALTO | GREATERTHAN ; -subQueryExpression - : +subQueryExpression + : LPAREN! selectStatement RPAREN! ; -precedenceEqualExpression +precedenceSimilarExpression : - (precedenceEqualExpressionSingle) => precedenceEqualExpressionSingle + precedenceSimilarExpressionMain | - precedenceEqualExpressionMutiple + KW_EXISTS subQueryExpression -> ^(TOK_SUBQUERY_EXPR ^(TOK_SUBQUERY_OP KW_EXISTS) subQueryExpression) ; - -precedenceEqualExpressionSingle + +precedenceSimilarExpressionMain : - (left=precedenceBitwiseOrExpression -> $left) - ( - (KW_NOT precedenceEqualNegatableOperator notExpr=precedenceBitwiseOrExpression) - -> ^(KW_NOT ^(precedenceEqualNegatableOperator $precedenceEqualExpressionSingle $notExpr)) - | (precedenceEqualOperator equalExpr=precedenceBitwiseOrExpression) - -> ^(precedenceEqualOperator $precedenceEqualExpressionSingle $equalExpr) - | (KW_NOT KW_IN LPAREN KW_SELECT)=> (KW_NOT KW_IN subQueryExpression) - -> ^(KW_NOT ^(TOK_SUBQUERY_EXPR ^(TOK_SUBQUERY_OP KW_IN) subQueryExpression $precedenceEqualExpressionSingle)) - | (KW_NOT KW_IN expressionsInParenthese) - -> ^(KW_NOT ^(TOK_FUNCTION KW_IN $precedenceEqualExpressionSingle expressionsInParenthese)) - | (KW_IN LPAREN KW_SELECT)=> (KW_IN subQueryExpression) - -> ^(TOK_SUBQUERY_EXPR ^(TOK_SUBQUERY_OP KW_IN) subQueryExpression $precedenceEqualExpressionSingle) - | (KW_IN expressionsInParenthese) - -> ^(TOK_FUNCTION KW_IN $precedenceEqualExpressionSingle expressionsInParenthese) - | ( KW_NOT KW_BETWEEN (min=precedenceBitwiseOrExpression) KW_AND (max=precedenceBitwiseOrExpression) ) - -> ^(TOK_FUNCTION Identifier["between"] KW_TRUE $precedenceEqualExpressionSingle $min $max) - | ( KW_BETWEEN (min=precedenceBitwiseOrExpression) KW_AND (max=precedenceBitwiseOrExpression) ) - -> ^(TOK_FUNCTION Identifier["between"] KW_FALSE $precedenceEqualExpressionSingle $min $max) - )* - | KW_EXISTS subQueryExpression -> ^(TOK_SUBQUERY_EXPR ^(TOK_SUBQUERY_OP KW_EXISTS) subQueryExpression) + a=precedenceBitwiseOrExpression part=precedenceSimilarExpressionPart[$precedenceBitwiseOrExpression.tree]? + -> {part == null}? {$a.tree} + -> {$part.tree} + ; + +precedenceSimilarExpressionPart[CommonTree t] + : + (precedenceSimilarOperator equalExpr=precedenceBitwiseOrExpression) + -> ^(precedenceSimilarOperator {$t} $equalExpr) + | + precedenceSimilarExpressionAtom[$t] + | + (KW_NOT^ precedenceSimilarExpressionPartNot[$t]) ; +precedenceSimilarExpressionAtom[CommonTree t] + : + KW_IN! precedenceSimilarExpressionIn[$t] + | + KW_BETWEEN (min=precedenceBitwiseOrExpression) KW_AND (max=precedenceBitwiseOrExpression) + -> ^(TOK_FUNCTION Identifier["between"] KW_FALSE {$t} $min $max) + ; -//we transform the (col0, col1) in ((v00,v01),(v10,v11)) into struct(col0, col1) in (struct(v00,v01),struct(v10,v11)) -precedenceEqualExpressionMutiple +precedenceSimilarExpressionIn[CommonTree t] : - (LPAREN precedenceBitwiseOrExpression (COMMA precedenceBitwiseOrExpression)+ RPAREN -> ^(TOK_FUNCTION Identifier["struct"] precedenceBitwiseOrExpression+)) - ( (KW_IN LPAREN expressionsToStruct (COMMA expressionsToStruct)* RPAREN) - -> ^(TOK_FUNCTION KW_IN $precedenceEqualExpressionMutiple expressionsToStruct*) - | (KW_NOT KW_IN LPAREN expressionsToStruct (COMMA expressionsToStruct)* RPAREN) - -> ^(KW_NOT ^(TOK_FUNCTION KW_IN $precedenceEqualExpressionMutiple expressionsToStruct*))) + (subQueryExpression) => subQueryExpression -> ^(TOK_SUBQUERY_EXPR ^(TOK_SUBQUERY_OP KW_IN) subQueryExpression {$t}) + | + expr=expressionsInParenthesis[false] + -> ^(TOK_FUNCTION Identifier["in"] {$t} {$expr.tree}) ; -expressionsToStruct +precedenceSimilarExpressionPartNot[CommonTree t] : - LPAREN expression (COMMA expression)* RPAREN -> ^(TOK_FUNCTION Identifier["struct"] expression+) + precedenceRegexpOperator notExpr=precedenceBitwiseOrExpression + -> ^(precedenceRegexpOperator {$t} $notExpr) + | + precedenceSimilarExpressionAtom[$t] ; +precedenceEqualOperator + : + EQUAL | EQUAL_NS | NOTEQUAL + ; + +precedenceEqualExpression + : + precedenceSimilarExpression (precedenceEqualOperator^ precedenceSimilarExpression)* + ; + precedenceNotOperator : KW_NOT diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestParseDriverIntervals.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestParseDriverIntervals.java index e5db412..98ad12a 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestParseDriverIntervals.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestParseDriverIntervals.java @@ -40,7 +40,7 @@ ret.add(new Object[] { "select 1 days" }); ret.add(new Object[] { "select (1) days" }); ret.add(new Object[] { "select (1) day" }); - ret.add(new Object[] { "select (1+1) days" }); + ret.add(new Object[] { "select interval (1+1) days" }); ret.add(new Object[] { "select interval 1 days" }); ret.add(new Object[] { "select interval '1' days" }); ret.add(new Object[] { "select interval (x) days" }); diff --git a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBSubQuery.java b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBSubQuery.java index 311a34d..2674835 100644 --- a/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBSubQuery.java +++ b/ql/src/test/org/apache/hadoop/hive/ql/parse/TestQBSubQuery.java @@ -72,7 +72,7 @@ public void testExtractSubQueries() throws Exception { Assert.assertEquals(1,sqs.size()); ASTNode sq = sqs.get(0); - Assert.assertEquals("(tok_subquery_expr (tok_subquery_op in) (tok_query (tok_from (tok_tabref (tok_tabname src) s1)) (tok_insert (tok_destination (tok_dir tok_tmp_file)) (tok_select (tok_selexpr (tok_table_or_col key))) (tok_where (and (> (. (tok_table_or_col s1) key) '9') (> (. (tok_table_or_col s1) value) '9'))))) (. (tok_table_or_col src) key))" + Assert.assertEquals("(tok_subquery_expr (tok_subquery_op kw_in) (tok_query (tok_from (tok_tabref (tok_tabname src) s1)) (tok_insert (tok_destination (tok_dir tok_tmp_file)) (tok_select (tok_selexpr (tok_table_or_col key))) (tok_where (and (> (. (tok_table_or_col s1) key) '9') (> (. (tok_table_or_col s1) value) '9'))))) (. (tok_table_or_col src) key))" ,sq.toStringTree()); } diff --git a/ql/src/test/queries/clientnegative/udf_in_2.q b/ql/src/test/queries/clientnegative/udf_in_2.q new file mode 100644 index 0000000..2288054 --- /dev/null +++ b/ql/src/test/queries/clientnegative/udf_in_2.q @@ -0,0 +1,2 @@ +select 1=1 in (true, false); + diff --git a/ql/src/test/queries/clientpositive/interval_alt.q b/ql/src/test/queries/clientpositive/interval_alt.q index a4fbe9f..824e5d3 100644 --- a/ql/src/test/queries/clientpositive/interval_alt.q +++ b/ql/src/test/queries/clientpositive/interval_alt.q @@ -1,3 +1,8 @@ +select 1+1 in (1,2,3,4); +select (1+1) in (1,2,3,4); +select true=false in (true,false); +select false=false in (true,false); +select interval '5-5' year to month; select (1) second, @@ -22,15 +27,15 @@ insert into t values (1),(2); -- expressions/columnref explain select - date '2012-01-01' + (-dt*dt) day, + date '2012-01-01' + interval (-dt*dt) day, date '2012-01-01' - interval (-dt*dt) day, date '2012-01-01' + 1 day + '2' days, - date '2012-01-01' + (dt || '-1') year to month + date '2012-01-01' + interval (dt || '-1') year to month from t; select - date '2012-01-01' + (-dt*dt) day, - date '2012-01-01' - interval (-dt*dt) day, - date '2012-01-01' + 1 day + '2' days, - date '2012-01-01' + (dt || '-1') year to month - from t; + date '2012-01-01' + interval (-dt*dt) day, + date '2012-01-01' - interval (-dt*dt) day, + date '2012-01-01' + 1 day + '2' days, + date '2012-01-01' + interval (dt || '-1') year to month + from t; diff --git a/ql/src/test/queries/clientpositive/parenthese.q b/ql/src/test/queries/clientpositive/parenthese.q new file mode 100644 index 0000000..60a2b5b --- /dev/null +++ b/ql/src/test/queries/clientpositive/parenthese.q @@ -0,0 +1,80 @@ +drop table airports; +create table airports (airport string); + +SELECT * FROM airports +WHERE (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((`airports`.`airport` = "Thigpen" + OR `airports`.`airport` = "Astoria Regional") + OR `airports`.`airport` = "Warsaw Municipal") + OR `airports`.`airport` = "John F Kennedy Memorial") + OR `airports`.`airport` = "Hall-Miller Municipal") + OR `airports`.`airport` = "Atqasuk") + OR `airports`.`airport` = "William B Hartsfield-Atlanta Intl") + OR `airports`.`airport` = "Artesia Municipal") + OR `airports`.`airport` = "Outagamie County Regional") + OR `airports`.`airport` = "Watertown Municipal") + OR `airports`.`airport` = "Augusta State") + OR `airports`.`airport` = "Aurora Municipal") + OR `airports`.`airport` = "Alakanuk") + OR `airports`.`airport` = "Austin Municipal") + OR `airports`.`airport` = "Auburn Municipal") + OR `airports`.`airport` = "Auburn-Opelik") + OR `airports`.`airport` = "Austin-Bergstrom International") + OR `airports`.`airport` = "Wausau Municipal") + OR `airports`.`airport` = "Mecklenburg-Brunswick Regional") + OR `airports`.`airport` = "Alva Regional") + OR `airports`.`airport` = "Asheville Regional") + OR `airports`.`airport` = "Avon Park Municipal") + OR `airports`.`airport` = "Wilkes-Barre/Scranton Intl") + OR `airports`.`airport` = "Marana Northwest Regional") + OR `airports`.`airport` = "Catalina") + OR `airports`.`airport` = "Washington Municipal") + OR `airports`.`airport` = "Wainwright") + OR `airports`.`airport` = "West Memphis Municipal") + OR `airports`.`airport` = "Arlington Municipal") + OR `airports`.`airport` = "Algona Municipal") + OR `airports`.`airport` = "Chandler") + OR `airports`.`airport` = "Altus Municipal") + OR `airports`.`airport` = "Neil Armstrong") + OR `airports`.`airport` = "Angel Fire") + OR `airports`.`airport` = "Waycross-Ware County") + OR `airports`.`airport` = "Colorado City Municipal") + OR `airports`.`airport` = "Hazelhurst") + OR `airports`.`airport` = "Kalamazoo County") + OR `airports`.`airport` = "Granville") + OR `airports`.`airport` = "Silver Springs") + OR `airports`.`airport` = "Whitford") + OR `airports`.`airport` = "Biddeford Municipal") + OR `airports`.`airport` = "Sugarloaf Regional") + OR `airports`.`airport` = "Barnes Municipal") + OR `airports`.`airport` = "Columbus Municipal") + OR `airports`.`airport` = "Battle Mountain") + OR `airports`.`airport` = "Huron County Memorial") + OR `airports`.`airport` = "New Braunfels Municipal") + OR `airports`.`airport` = "Benson Municipal") + OR `airports`.`airport` = "Curtis") + OR `airports`.`airport` = "Marlboro County") + OR `airports`.`airport` = "Broken Bow Municipal") + OR `airports`.`airport` = "Virginia Tech") + OR `airports`.`airport` = "Bryce Canyon") + OR `airports`.`airport` = "Black River Falls Area") + OR `airports`.`airport` = "Boca Raton") + OR `airports`.`airport` = "Birchwood") + OR `airports`.`airport` = "Baudette International") + OR `airports`.`airport` = "Blanding Muni") + OR `airports`.`airport` = "Bradley International") + OR `airports`.`airport` = "Morrilton Municipal") + OR `airports`.`airport` = "Igor I Sikorsky Memorial") + OR `airports`.`airport` = "Broadus") + OR `airports`.`airport` = "Laurence G Hanscom") + OR `airports`.`airport` = "Southwest Michigan Regional") + OR `airports`.`airport` = "Bethel") + OR `airports`.`airport` = "Bradford Reg") + OR `airports`.`airport` = "Scotts Bluff County") + OR `airports`.`airport` = "Boeing Field/King County Intl") + OR `airports`.`airport` = "Buffalo Municipal") + OR `airports`.`airport` = "Meadows") + OR `airports`.`airport` = "Mobile Downtown") + OR `airports`.`airport` = "Virgil I Grissom Municipal") + OR `airports`.`airport` = "Silver Bay Municipal"); + + diff --git a/ql/src/test/queries/clientpositive/udf_in.q b/ql/src/test/queries/clientpositive/udf_in.q index a7ce3c6..f54d963 100644 --- a/ql/src/test/queries/clientpositive/udf_in.q +++ b/ql/src/test/queries/clientpositive/udf_in.q @@ -5,11 +5,11 @@ SELECT 1 IN (1, 2, 3), array(1,2,3) IN (array(1,2,3)), "bee" IN("aee", "bee", "cee", 1), "dee" IN("aee", "bee", "cee"), - 1 = 1 IN(true, false), + (1 = 1) IN(true, false), true IN (true, false) = true, 1 IN (1, 2, 3) OR false IN(false), NULL IN (1, 2, 3), 4 IN (1, 2, 3, NULL), (1+3) IN (5, 6, (1+2) + 1) FROM src tablesample (1 rows); -SELECT key FROM src WHERE key IN ("238", 86); \ No newline at end of file +SELECT key FROM src WHERE key IN ("238", 86); diff --git a/ql/src/test/queries/clientpositive/udf_notop.q b/ql/src/test/queries/clientpositive/udf_notop.q index dceab7e..5cf918c 100644 --- a/ql/src/test/queries/clientpositive/udf_notop.q +++ b/ql/src/test/queries/clientpositive/udf_notop.q @@ -2,7 +2,7 @@ set hive.fetch.task.conversion=more; SELECT 1 NOT IN (1, 2, 3), 4 NOT IN (1, 2, 3), - 1 = 2 NOT IN (true, false), + (1 = 2) NOT IN (true, false), "abc" NOT LIKE "a%", "abc" NOT LIKE "b%", "abc" NOT RLIKE "^ab", diff --git a/ql/src/test/results/clientnegative/char_pad_convert_fail2.q.out b/ql/src/test/results/clientnegative/char_pad_convert_fail2.q.out index 2d08fb3..2780b7c 100644 --- a/ql/src/test/results/clientnegative/char_pad_convert_fail2.q.out +++ b/ql/src/test/results/clientnegative/char_pad_convert_fail2.q.out @@ -40,4 +40,4 @@ POSTHOOK: query: load data local inpath '../../data/files/over1k' into table ove POSTHOOK: type: LOAD #### A masked pattern was here #### POSTHOOK: Output: default@over1k -FAILED: ParseException line 7:7 cannot recognize input near 'lpad' '(' '{' in expression specification +FAILED: ParseException line 7:11 cannot recognize input near 'lpad' '(' '{' in expression specification diff --git a/ql/src/test/results/clientnegative/invalid_select_expression.q.out b/ql/src/test/results/clientnegative/invalid_select_expression.q.out index 3650ca7..63a682a 100644 --- a/ql/src/test/results/clientnegative/invalid_select_expression.q.out +++ b/ql/src/test/results/clientnegative/invalid_select_expression.q.out @@ -1 +1 @@ -FAILED: ParseException line 1:26 cannot recognize input near 'foo' '>' '.' in expression specification +FAILED: ParseException line 1:32 cannot recognize input near '.' 'foo' '' in expression specification diff --git a/ql/src/test/results/clientnegative/ptf_negative_DistributeByOrderBy.q.out b/ql/src/test/results/clientnegative/ptf_negative_DistributeByOrderBy.q.out index a0f3fe2..e8e8580 100644 --- a/ql/src/test/results/clientnegative/ptf_negative_DistributeByOrderBy.q.out +++ b/ql/src/test/results/clientnegative/ptf_negative_DistributeByOrderBy.q.out @@ -1 +1 @@ -FAILED: ParseException line 3:0 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification +FAILED: ParseException line 3:3 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification diff --git a/ql/src/test/results/clientnegative/ptf_negative_PartitionBySortBy.q.out b/ql/src/test/results/clientnegative/ptf_negative_PartitionBySortBy.q.out index a0f3fe2..e8e8580 100644 --- a/ql/src/test/results/clientnegative/ptf_negative_PartitionBySortBy.q.out +++ b/ql/src/test/results/clientnegative/ptf_negative_PartitionBySortBy.q.out @@ -1 +1 @@ -FAILED: ParseException line 3:0 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification +FAILED: ParseException line 3:3 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification diff --git a/ql/src/test/results/clientnegative/ptf_window_boundaries.q.out b/ql/src/test/results/clientnegative/ptf_window_boundaries.q.out index 3808f2c..c9c1c6d 100644 --- a/ql/src/test/results/clientnegative/ptf_window_boundaries.q.out +++ b/ql/src/test/results/clientnegative/ptf_window_boundaries.q.out @@ -1 +1 @@ -FAILED: ParseException line 2:4 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification +FAILED: ParseException line 2:7 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification diff --git a/ql/src/test/results/clientnegative/ptf_window_boundaries2.q.out b/ql/src/test/results/clientnegative/ptf_window_boundaries2.q.out index 3808f2c..c9c1c6d 100644 --- a/ql/src/test/results/clientnegative/ptf_window_boundaries2.q.out +++ b/ql/src/test/results/clientnegative/ptf_window_boundaries2.q.out @@ -1 +1 @@ -FAILED: ParseException line 2:4 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification +FAILED: ParseException line 2:7 cannot recognize input near 'sum' '(' 'p_retailprice' in expression specification diff --git a/ql/src/test/results/clientnegative/subquery_missing_from.q.out b/ql/src/test/results/clientnegative/subquery_missing_from.q.out index eaf7735..b09a8e3 100644 --- a/ql/src/test/results/clientnegative/subquery_missing_from.q.out +++ b/ql/src/test/results/clientnegative/subquery_missing_from.q.out @@ -1,3 +1,3 @@ FAILED: SemanticException Line 0:-1 Invalid SubQuery expression 'key' in definition of SubQuery sq_1 [ src.key in (select key) -] used as sq_1 at Line 1:32: From clause is missing in SubQuery. +] used as sq_1 at Line 0:-1: From clause is missing in SubQuery. diff --git a/ql/src/test/results/clientnegative/subquery_subquery_chain.q.out b/ql/src/test/results/clientnegative/subquery_subquery_chain.q.out index e661e1b..e08b86c 100644 --- a/ql/src/test/results/clientnegative/subquery_subquery_chain.q.out +++ b/ql/src/test/results/clientnegative/subquery_subquery_chain.q.out @@ -1 +1 @@ -FAILED: SemanticException [Error 10249]: org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException: Line 5:14 Unsupported SubQuery Expression 'key': IN/NOT IN subqueries are not allowed in LHS +FAILED: ParseException line 5:39 missing EOF at 'in' near ')' diff --git a/ql/src/test/results/clientnegative/subquery_with_or_cond.q.out b/ql/src/test/results/clientnegative/subquery_with_or_cond.q.out index 4a9cc45..9e41a41 100644 --- a/ql/src/test/results/clientnegative/subquery_with_or_cond.q.out +++ b/ql/src/test/results/clientnegative/subquery_with_or_cond.q.out @@ -1 +1 @@ -FAILED: SemanticException [Error 10249]: org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException: Line 4:14 Unsupported SubQuery Expression 'key': Only SubQuery expressions that are top level conjuncts are allowed +FAILED: SemanticException org.apache.hadoop.hive.ql.optimizer.calcite.CalciteSubquerySemanticException: Line 0:-1 Unsupported SubQuery Expression 'key': Only SubQuery expressions that are top level conjuncts are allowed diff --git a/ql/src/test/results/clientnegative/udf_in.q.out b/ql/src/test/results/clientnegative/udf_in.q.out index 773230b..c032ee4 100644 --- a/ql/src/test/results/clientnegative/udf_in.q.out +++ b/ql/src/test/results/clientnegative/udf_in.q.out @@ -1 +1 @@ -FAILED: SemanticException [Error 10014]: Line 1:9 Wrong arguments '3': The arguments for IN should be the same type! Types are: {int IN (array)} +FAILED: SemanticException Line 0:-1 Wrong arguments '3': The arguments for IN should be the same type! Types are: {int IN (array)} diff --git a/ql/src/test/results/clientnegative/udf_in_2.q.out b/ql/src/test/results/clientnegative/udf_in_2.q.out new file mode 100644 index 0000000..83883e3 --- /dev/null +++ b/ql/src/test/results/clientnegative/udf_in_2.q.out @@ -0,0 +1 @@ +FAILED: SemanticException Line 0:-1 Wrong arguments 'false': The arguments for IN should be the same type! Types are: {int IN (boolean, boolean)} diff --git a/ql/src/test/results/clientpositive/interval_alt.q.out b/ql/src/test/results/clientpositive/interval_alt.q.out index 04d5874..9884ec3 100644 --- a/ql/src/test/results/clientpositive/interval_alt.q.out +++ b/ql/src/test/results/clientpositive/interval_alt.q.out @@ -1,3 +1,48 @@ +PREHOOK: query: select 1+1 in (1,2,3,4) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select 1+1 in (1,2,3,4) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +true +PREHOOK: query: select (1+1) in (1,2,3,4) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select (1+1) in (1,2,3,4) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +true +PREHOOK: query: select true=false in (true,false) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select true=false in (true,false) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +true +PREHOOK: query: select false=false in (true,false) +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select false=false in (true,false) +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +false +PREHOOK: query: select interval '5-5' year to month +PREHOOK: type: QUERY +PREHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +POSTHOOK: query: select interval '5-5' year to month +POSTHOOK: type: QUERY +POSTHOOK: Input: _dummy_database@_dummy_table +#### A masked pattern was here #### +5-5 PREHOOK: query: select (1) second, 2 seconds, @@ -66,18 +111,18 @@ POSTHOOK: Output: default@t POSTHOOK: Lineage: t.dt EXPRESSION [(values__tmp__table__1)values__tmp__table__1.FieldSchema(name:tmp_values_col1, type:string, comment:), ] PREHOOK: query: explain select - date '2012-01-01' + (-dt*dt) day, + date '2012-01-01' + interval (-dt*dt) day, date '2012-01-01' - interval (-dt*dt) day, date '2012-01-01' + 1 day + '2' days, - date '2012-01-01' + (dt || '-1') year to month + date '2012-01-01' + interval (dt || '-1') year to month from t PREHOOK: type: QUERY POSTHOOK: query: explain select - date '2012-01-01' + (-dt*dt) day, + date '2012-01-01' + interval (-dt*dt) day, date '2012-01-01' - interval (-dt*dt) day, date '2012-01-01' + 1 day + '2' days, - date '2012-01-01' + (dt || '-1') year to month + date '2012-01-01' + interval (dt || '-1') year to month from t POSTHOOK: type: QUERY STAGE DEPENDENCIES: @@ -110,20 +155,20 @@ STAGE PLANS: ListSink PREHOOK: query: select - date '2012-01-01' + (-dt*dt) day, - date '2012-01-01' - interval (-dt*dt) day, - date '2012-01-01' + 1 day + '2' days, - date '2012-01-01' + (dt || '-1') year to month - from t + date '2012-01-01' + interval (-dt*dt) day, + date '2012-01-01' - interval (-dt*dt) day, + date '2012-01-01' + 1 day + '2' days, + date '2012-01-01' + interval (dt || '-1') year to month + from t PREHOOK: type: QUERY PREHOOK: Input: default@t #### A masked pattern was here #### POSTHOOK: query: select - date '2012-01-01' + (-dt*dt) day, - date '2012-01-01' - interval (-dt*dt) day, - date '2012-01-01' + 1 day + '2' days, - date '2012-01-01' + (dt || '-1') year to month - from t + date '2012-01-01' + interval (-dt*dt) day, + date '2012-01-01' - interval (-dt*dt) day, + date '2012-01-01' + 1 day + '2' days, + date '2012-01-01' + interval (dt || '-1') year to month + from t POSTHOOK: type: QUERY POSTHOOK: Input: default@t #### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/llap/vector_between_in.q.out b/ql/src/test/results/clientpositive/llap/vector_between_in.q.out index 8a4383e..4bbb170 100644 --- a/ql/src/test/results/clientpositive/llap/vector_between_in.q.out +++ b/ql/src/test/results/clientpositive/llap/vector_between_in.q.out @@ -553,8 +553,8 @@ STAGE PLANS: Filter Vectorization: className: VectorFilterOperator native: true - predicateExpression: FilterLongColumnNotBetween(col 3, left -610, right 608) -> boolean - predicate: cdate NOT BETWEEN 1968-05-01 AND 1971-09-01 (type: boolean) + predicateExpression: SelectColumnIsFalse(col 4)(children: VectorUDFAdaptor(cdate BETWEEN 1968-05-01 AND 1971-09-01) -> 4:boolean) -> boolean + predicate: (not cdate BETWEEN 1968-05-01 AND 1971-09-01) (type: boolean) Statistics: Num rows: 10923 Data size: 2193503 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: cdate (type: date) @@ -581,7 +581,7 @@ STAGE PLANS: groupByVectorOutput: true inputFileFormats: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat allNative: false - usesVectorUDFAdaptor: false + usesVectorUDFAdaptor: true vectorized: true Reducer 2 Execution mode: vectorized, llap @@ -747,8 +747,8 @@ STAGE PLANS: Filter Vectorization: className: VectorFilterOperator native: true - predicateExpression: FilterDecimalColumnNotBetween(col 1, left -2000, right 4390.1351351351) -> boolean - predicate: cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 (type: boolean) + predicateExpression: SelectColumnIsFalse(col 4)(children: VectorUDFAdaptor(cdecimal1 BETWEEN -2000 AND 4390.1351351351) -> 4:boolean) -> boolean + predicate: (not cdecimal1 BETWEEN -2000 AND 4390.1351351351) (type: boolean) Statistics: Num rows: 10923 Data size: 2193503 Basic stats: COMPLETE Column stats: NONE Select Operator Select Vectorization: @@ -784,7 +784,7 @@ STAGE PLANS: groupByVectorOutput: true inputFileFormats: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat allNative: false - usesVectorUDFAdaptor: false + usesVectorUDFAdaptor: true vectorized: true Reducer 2 Execution mode: vectorized, llap @@ -1516,21 +1516,21 @@ STAGE PLANS: native: true projectedOutputColumns: [0, 1, 2, 3] Select Operator - expressions: cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 (type: boolean) + expressions: (not cdecimal1 BETWEEN -2000 AND 4390.1351351351) (type: boolean) outputColumnNames: _col0 Select Vectorization: className: VectorSelectOperator native: true - projectedOutputColumns: [4] - selectExpressions: VectorUDFAdaptor(cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351) -> 4:boolean + projectedOutputColumns: [5] + selectExpressions: NotCol(col 4)(children: VectorUDFAdaptor(cdecimal1 BETWEEN -2000 AND 4390.1351351351) -> 4:boolean) -> 5:boolean Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) Group By Vectorization: - aggregators: VectorUDAFCount(ConstantVectorExpression(val 1) -> 5:long) -> bigint + aggregators: VectorUDAFCount(ConstantVectorExpression(val 1) -> 4:long) -> bigint className: VectorGroupByOperator vectorOutput: true - keyExpressions: col 4 + keyExpressions: col 5 native: false projectedOutputColumns: [0] keys: _col0 (type: boolean) diff --git a/ql/src/test/results/clientpositive/parenthese.q.out b/ql/src/test/results/clientpositive/parenthese.q.out new file mode 100644 index 0000000..e7eae5a --- /dev/null +++ b/ql/src/test/results/clientpositive/parenthese.q.out @@ -0,0 +1,168 @@ +PREHOOK: query: drop table airports +PREHOOK: type: DROPTABLE +POSTHOOK: query: drop table airports +POSTHOOK: type: DROPTABLE +PREHOOK: query: create table airports (airport string) +PREHOOK: type: CREATETABLE +PREHOOK: Output: database:default +PREHOOK: Output: default@airports +POSTHOOK: query: create table airports (airport string) +POSTHOOK: type: CREATETABLE +POSTHOOK: Output: database:default +POSTHOOK: Output: default@airports +PREHOOK: query: SELECT * FROM airports +WHERE (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((`airports`.`airport` = "Thigpen" + OR `airports`.`airport` = "Astoria Regional") + OR `airports`.`airport` = "Warsaw Municipal") + OR `airports`.`airport` = "John F Kennedy Memorial") + OR `airports`.`airport` = "Hall-Miller Municipal") + OR `airports`.`airport` = "Atqasuk") + OR `airports`.`airport` = "William B Hartsfield-Atlanta Intl") + OR `airports`.`airport` = "Artesia Municipal") + OR `airports`.`airport` = "Outagamie County Regional") + OR `airports`.`airport` = "Watertown Municipal") + OR `airports`.`airport` = "Augusta State") + OR `airports`.`airport` = "Aurora Municipal") + OR `airports`.`airport` = "Alakanuk") + OR `airports`.`airport` = "Austin Municipal") + OR `airports`.`airport` = "Auburn Municipal") + OR `airports`.`airport` = "Auburn-Opelik") + OR `airports`.`airport` = "Austin-Bergstrom International") + OR `airports`.`airport` = "Wausau Municipal") + OR `airports`.`airport` = "Mecklenburg-Brunswick Regional") + OR `airports`.`airport` = "Alva Regional") + OR `airports`.`airport` = "Asheville Regional") + OR `airports`.`airport` = "Avon Park Municipal") + OR `airports`.`airport` = "Wilkes-Barre/Scranton Intl") + OR `airports`.`airport` = "Marana Northwest Regional") + OR `airports`.`airport` = "Catalina") + OR `airports`.`airport` = "Washington Municipal") + OR `airports`.`airport` = "Wainwright") + OR `airports`.`airport` = "West Memphis Municipal") + OR `airports`.`airport` = "Arlington Municipal") + OR `airports`.`airport` = "Algona Municipal") + OR `airports`.`airport` = "Chandler") + OR `airports`.`airport` = "Altus Municipal") + OR `airports`.`airport` = "Neil Armstrong") + OR `airports`.`airport` = "Angel Fire") + OR `airports`.`airport` = "Waycross-Ware County") + OR `airports`.`airport` = "Colorado City Municipal") + OR `airports`.`airport` = "Hazelhurst") + OR `airports`.`airport` = "Kalamazoo County") + OR `airports`.`airport` = "Granville") + OR `airports`.`airport` = "Silver Springs") + OR `airports`.`airport` = "Whitford") + OR `airports`.`airport` = "Biddeford Municipal") + OR `airports`.`airport` = "Sugarloaf Regional") + OR `airports`.`airport` = "Barnes Municipal") + OR `airports`.`airport` = "Columbus Municipal") + OR `airports`.`airport` = "Battle Mountain") + OR `airports`.`airport` = "Huron County Memorial") + OR `airports`.`airport` = "New Braunfels Municipal") + OR `airports`.`airport` = "Benson Municipal") + OR `airports`.`airport` = "Curtis") + OR `airports`.`airport` = "Marlboro County") + OR `airports`.`airport` = "Broken Bow Municipal") + OR `airports`.`airport` = "Virginia Tech") + OR `airports`.`airport` = "Bryce Canyon") + OR `airports`.`airport` = "Black River Falls Area") + OR `airports`.`airport` = "Boca Raton") + OR `airports`.`airport` = "Birchwood") + OR `airports`.`airport` = "Baudette International") + OR `airports`.`airport` = "Blanding Muni") + OR `airports`.`airport` = "Bradley International") + OR `airports`.`airport` = "Morrilton Municipal") + OR `airports`.`airport` = "Igor I Sikorsky Memorial") + OR `airports`.`airport` = "Broadus") + OR `airports`.`airport` = "Laurence G Hanscom") + OR `airports`.`airport` = "Southwest Michigan Regional") + OR `airports`.`airport` = "Bethel") + OR `airports`.`airport` = "Bradford Reg") + OR `airports`.`airport` = "Scotts Bluff County") + OR `airports`.`airport` = "Boeing Field/King County Intl") + OR `airports`.`airport` = "Buffalo Municipal") + OR `airports`.`airport` = "Meadows") + OR `airports`.`airport` = "Mobile Downtown") + OR `airports`.`airport` = "Virgil I Grissom Municipal") + OR `airports`.`airport` = "Silver Bay Municipal") +PREHOOK: type: QUERY +PREHOOK: Input: default@airports +#### A masked pattern was here #### +POSTHOOK: query: SELECT * FROM airports +WHERE (((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((((`airports`.`airport` = "Thigpen" + OR `airports`.`airport` = "Astoria Regional") + OR `airports`.`airport` = "Warsaw Municipal") + OR `airports`.`airport` = "John F Kennedy Memorial") + OR `airports`.`airport` = "Hall-Miller Municipal") + OR `airports`.`airport` = "Atqasuk") + OR `airports`.`airport` = "William B Hartsfield-Atlanta Intl") + OR `airports`.`airport` = "Artesia Municipal") + OR `airports`.`airport` = "Outagamie County Regional") + OR `airports`.`airport` = "Watertown Municipal") + OR `airports`.`airport` = "Augusta State") + OR `airports`.`airport` = "Aurora Municipal") + OR `airports`.`airport` = "Alakanuk") + OR `airports`.`airport` = "Austin Municipal") + OR `airports`.`airport` = "Auburn Municipal") + OR `airports`.`airport` = "Auburn-Opelik") + OR `airports`.`airport` = "Austin-Bergstrom International") + OR `airports`.`airport` = "Wausau Municipal") + OR `airports`.`airport` = "Mecklenburg-Brunswick Regional") + OR `airports`.`airport` = "Alva Regional") + OR `airports`.`airport` = "Asheville Regional") + OR `airports`.`airport` = "Avon Park Municipal") + OR `airports`.`airport` = "Wilkes-Barre/Scranton Intl") + OR `airports`.`airport` = "Marana Northwest Regional") + OR `airports`.`airport` = "Catalina") + OR `airports`.`airport` = "Washington Municipal") + OR `airports`.`airport` = "Wainwright") + OR `airports`.`airport` = "West Memphis Municipal") + OR `airports`.`airport` = "Arlington Municipal") + OR `airports`.`airport` = "Algona Municipal") + OR `airports`.`airport` = "Chandler") + OR `airports`.`airport` = "Altus Municipal") + OR `airports`.`airport` = "Neil Armstrong") + OR `airports`.`airport` = "Angel Fire") + OR `airports`.`airport` = "Waycross-Ware County") + OR `airports`.`airport` = "Colorado City Municipal") + OR `airports`.`airport` = "Hazelhurst") + OR `airports`.`airport` = "Kalamazoo County") + OR `airports`.`airport` = "Granville") + OR `airports`.`airport` = "Silver Springs") + OR `airports`.`airport` = "Whitford") + OR `airports`.`airport` = "Biddeford Municipal") + OR `airports`.`airport` = "Sugarloaf Regional") + OR `airports`.`airport` = "Barnes Municipal") + OR `airports`.`airport` = "Columbus Municipal") + OR `airports`.`airport` = "Battle Mountain") + OR `airports`.`airport` = "Huron County Memorial") + OR `airports`.`airport` = "New Braunfels Municipal") + OR `airports`.`airport` = "Benson Municipal") + OR `airports`.`airport` = "Curtis") + OR `airports`.`airport` = "Marlboro County") + OR `airports`.`airport` = "Broken Bow Municipal") + OR `airports`.`airport` = "Virginia Tech") + OR `airports`.`airport` = "Bryce Canyon") + OR `airports`.`airport` = "Black River Falls Area") + OR `airports`.`airport` = "Boca Raton") + OR `airports`.`airport` = "Birchwood") + OR `airports`.`airport` = "Baudette International") + OR `airports`.`airport` = "Blanding Muni") + OR `airports`.`airport` = "Bradley International") + OR `airports`.`airport` = "Morrilton Municipal") + OR `airports`.`airport` = "Igor I Sikorsky Memorial") + OR `airports`.`airport` = "Broadus") + OR `airports`.`airport` = "Laurence G Hanscom") + OR `airports`.`airport` = "Southwest Michigan Regional") + OR `airports`.`airport` = "Bethel") + OR `airports`.`airport` = "Bradford Reg") + OR `airports`.`airport` = "Scotts Bluff County") + OR `airports`.`airport` = "Boeing Field/King County Intl") + OR `airports`.`airport` = "Buffalo Municipal") + OR `airports`.`airport` = "Meadows") + OR `airports`.`airport` = "Mobile Downtown") + OR `airports`.`airport` = "Virgil I Grissom Municipal") + OR `airports`.`airport` = "Silver Bay Municipal") +POSTHOOK: type: QUERY +POSTHOOK: Input: default@airports +#### A masked pattern was here #### diff --git a/ql/src/test/results/clientpositive/perf/query14.q.out b/ql/src/test/results/clientpositive/perf/query14.q.out index 21cabbc..0734e11 100644 --- a/ql/src/test/results/clientpositive/perf/query14.q.out +++ b/ql/src/test/results/clientpositive/perf/query14.q.out @@ -1,9 +1,9 @@ -Warning: Shuffle Join MERGEJOIN[916][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 114' is a cross product -Warning: Shuffle Join MERGEJOIN[917][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 115' is a cross product Warning: Shuffle Join MERGEJOIN[912][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 5' is a cross product Warning: Shuffle Join MERGEJOIN[913][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 6' is a cross product Warning: Shuffle Join MERGEJOIN[914][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 61' is a cross product Warning: Shuffle Join MERGEJOIN[915][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 62' is a cross product +Warning: Shuffle Join MERGEJOIN[916][tables = [$hdt$_1, $hdt$_2]] in Stage 'Reducer 114' is a cross product +Warning: Shuffle Join MERGEJOIN[917][tables = [$hdt$_1, $hdt$_2, $hdt$_0]] in Stage 'Reducer 115' is a cross product PREHOOK: query: explain with cross_items as (select i_item_sk ss_item_sk diff --git a/ql/src/test/results/clientpositive/spark/vector_between_in.q.out b/ql/src/test/results/clientpositive/spark/vector_between_in.q.out index 4de2eb6..82d96ea 100644 --- a/ql/src/test/results/clientpositive/spark/vector_between_in.q.out +++ b/ql/src/test/results/clientpositive/spark/vector_between_in.q.out @@ -542,8 +542,8 @@ STAGE PLANS: Filter Vectorization: className: VectorFilterOperator native: true - predicateExpression: FilterLongColumnNotBetween(col 3, left -610, right 608) -> boolean - predicate: cdate NOT BETWEEN 1968-05-01 AND 1971-09-01 (type: boolean) + predicateExpression: SelectColumnIsFalse(col 4)(children: VectorUDFAdaptor(cdate BETWEEN 1968-05-01 AND 1971-09-01) -> 4:boolean) -> boolean + predicate: (not cdate BETWEEN 1968-05-01 AND 1971-09-01) (type: boolean) Statistics: Num rows: 10923 Data size: 2193503 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: cdate (type: date) @@ -569,7 +569,7 @@ STAGE PLANS: groupByVectorOutput: true inputFileFormats: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat allNative: false - usesVectorUDFAdaptor: false + usesVectorUDFAdaptor: true vectorized: true Reducer 2 Execution mode: vectorized @@ -732,8 +732,8 @@ STAGE PLANS: Filter Vectorization: className: VectorFilterOperator native: true - predicateExpression: FilterDecimalColumnNotBetween(col 1, left -2000, right 4390.1351351351) -> boolean - predicate: cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 (type: boolean) + predicateExpression: SelectColumnIsFalse(col 4)(children: VectorUDFAdaptor(cdecimal1 BETWEEN -2000 AND 4390.1351351351) -> 4:boolean) -> boolean + predicate: (not cdecimal1 BETWEEN -2000 AND 4390.1351351351) (type: boolean) Statistics: Num rows: 10923 Data size: 2193503 Basic stats: COMPLETE Column stats: NONE Select Operator Select Vectorization: @@ -768,7 +768,7 @@ STAGE PLANS: groupByVectorOutput: true inputFileFormats: org.apache.hadoop.hive.ql.io.orc.OrcInputFormat allNative: false - usesVectorUDFAdaptor: false + usesVectorUDFAdaptor: true vectorized: true Reducer 2 Execution mode: vectorized @@ -1496,21 +1496,21 @@ STAGE PLANS: native: true projectedOutputColumns: [0, 1, 2, 3] Select Operator - expressions: cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351 (type: boolean) + expressions: (not cdecimal1 BETWEEN -2000 AND 4390.1351351351) (type: boolean) outputColumnNames: _col0 Select Vectorization: className: VectorSelectOperator native: true - projectedOutputColumns: [4] - selectExpressions: VectorUDFAdaptor(cdecimal1 NOT BETWEEN -2000 AND 4390.1351351351) -> 4:boolean + projectedOutputColumns: [5] + selectExpressions: NotCol(col 4)(children: VectorUDFAdaptor(cdecimal1 BETWEEN -2000 AND 4390.1351351351) -> 4:boolean) -> 5:boolean Statistics: Num rows: 12288 Data size: 2467616 Basic stats: COMPLETE Column stats: NONE Group By Operator aggregations: count(1) Group By Vectorization: - aggregators: VectorUDAFCount(ConstantVectorExpression(val 1) -> 5:long) -> bigint + aggregators: VectorUDAFCount(ConstantVectorExpression(val 1) -> 4:long) -> bigint className: VectorGroupByOperator vectorOutput: true - keyExpressions: col 4 + keyExpressions: col 5 native: false projectedOutputColumns: [0] keys: _col0 (type: boolean) diff --git a/ql/src/test/results/clientpositive/udf_between.q.out b/ql/src/test/results/clientpositive/udf_between.q.out index 5b01554..2bb7264 100644 --- a/ql/src/test/results/clientpositive/udf_between.q.out +++ b/ql/src/test/results/clientpositive/udf_between.q.out @@ -81,7 +81,7 @@ STAGE PLANS: alias: src Statistics: Num rows: 500 Data size: 5312 Basic stats: COMPLETE Column stats: NONE Filter Operator - predicate: (UDFToDouble(key) + 100.0) NOT BETWEEN 100 AND 200 (type: boolean) + predicate: (not (UDFToDouble(key) + 100.0) BETWEEN 100 AND 200) (type: boolean) Statistics: Num rows: 445 Data size: 4727 Basic stats: COMPLETE Column stats: NONE Select Operator expressions: key (type: string), value (type: string) diff --git a/ql/src/test/results/clientpositive/udf_in.q.out b/ql/src/test/results/clientpositive/udf_in.q.out index da07f61..85ee951 100644 --- a/ql/src/test/results/clientpositive/udf_in.q.out +++ b/ql/src/test/results/clientpositive/udf_in.q.out @@ -3,7 +3,7 @@ PREHOOK: query: SELECT 1 IN (1, 2, 3), array(1,2,3) IN (array(1,2,3)), "bee" IN("aee", "bee", "cee", 1), "dee" IN("aee", "bee", "cee"), - 1 = 1 IN(true, false), + (1 = 1) IN(true, false), true IN (true, false) = true, 1 IN (1, 2, 3) OR false IN(false), NULL IN (1, 2, 3), @@ -17,7 +17,7 @@ POSTHOOK: query: SELECT 1 IN (1, 2, 3), array(1,2,3) IN (array(1,2,3)), "bee" IN("aee", "bee", "cee", 1), "dee" IN("aee", "bee", "cee"), - 1 = 1 IN(true, false), + (1 = 1) IN(true, false), true IN (true, false) = true, 1 IN (1, 2, 3) OR false IN(false), NULL IN (1, 2, 3), diff --git a/ql/src/test/results/clientpositive/udf_notop.q.out b/ql/src/test/results/clientpositive/udf_notop.q.out index 25483c7..e8b57e5 100644 --- a/ql/src/test/results/clientpositive/udf_notop.q.out +++ b/ql/src/test/results/clientpositive/udf_notop.q.out @@ -1,6 +1,6 @@ PREHOOK: query: SELECT 1 NOT IN (1, 2, 3), 4 NOT IN (1, 2, 3), - 1 = 2 NOT IN (true, false), + (1 = 2) NOT IN (true, false), "abc" NOT LIKE "a%", "abc" NOT LIKE "b%", "abc" NOT RLIKE "^ab", @@ -13,7 +13,7 @@ PREHOOK: Input: default@src #### A masked pattern was here #### POSTHOOK: query: SELECT 1 NOT IN (1, 2, 3), 4 NOT IN (1, 2, 3), - 1 = 2 NOT IN (true, false), + (1 = 2) NOT IN (true, false), "abc" NOT LIKE "a%", "abc" NOT LIKE "b%", "abc" NOT RLIKE "^ab",