[jira] [Updated] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-09-15 Thread Nicolas Richard (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Richard updated HIVE-27649:
---
Status: Patch Available  (was: In Progress)

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Assignee: Nicolas Richard
>Priority: Major
>  Labels: pull-request-available
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
> {code}
> Note that this behavior also happens if the subquery contains a SORT BY, 
> CLUSTER BY, DISTRIBUTE BY or LIMIT clause.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Work started] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-28 Thread Nicolas Richard (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Work on HIVE-27649 started by Nicolas Richard.
--
> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Assignee: Nicolas Richard
>Priority: Major
>  Labels: pull-request-available
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
> {code}
> Note that this behavior also happens if the subquery contains a SORT BY, 
> CLUSTER BY, DISTRIBUTE BY or LIMIT clause.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Comment Edited] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-25 Thread Nicolas Richard (Jira)


[ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17758705#comment-17758705
 ] 

Nicolas Richard edited comment on HIVE-27649 at 8/25/23 5:06 PM:
-

Proposed fix: [https://github.com/apache/hive/pull/4628]


was (Author: JIRAUSER298135):
Proposed fix: [https://github.com/apache/hive/pull/4628] (still in Draft)

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Assignee: Nicolas Richard
>Priority: Major
>  Labels: pull-request-available
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
> {code}
> Note that this behavior also happens if the subquery contains a SORT BY, 
> CLUSTER BY, DISTRIBUTE BY or LIMIT clause.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Assigned] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-25 Thread Nicolas Richard (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Richard reassigned HIVE-27649:
--

Assignee: Nicolas Richard

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Assignee: Nicolas Richard
>Priority: Major
>  Labels: pull-request-available
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
> {code}
> Note that this behavior also happens if the subquery contains a SORT BY, 
> CLUSTER BY, DISTRIBUTE BY or LIMIT clause.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Comment Edited] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-24 Thread Nicolas Richard (Jira)


[ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17758701#comment-17758701
 ] 

Nicolas Richard edited comment on HIVE-27649 at 8/24/23 7:08 PM:
-

I did some investigation to figure out what was going on. In 
https://issues.apache.org/jira/browse/HIVE-21980, the grammar [changed a 
bit|https://github.com/apache/hive/commit/0f39030c3d33b11ae9c14ac81e047b44e8695371]
 from:
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (subQuerySource) => subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN!
;{code}
to
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (LPAREN (KW_WITH|KW_SELECT|KW_MAP|KW_REDUCE|KW_FROM)) => subQuerySource 
(lateralView^)*
    |  (LPAREN LPAREN atomSelectStatement RPAREN setOperator ) => 
subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN! 
;{code}
When the query is parsed, we end up in the subQuerySource rule because 
atomSelectStatement, by definition, cannot contain SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT clauses. An exception is thrown because subQuerySource 
requires an identifier which is not present nor needed in this particular 
scenario.

 

I tested it locally and changing _atomSelectStatement_ to _selectStatement_ 
solves the issue. However, I still need to validate that it does not have 
side-effects by running the whole test suite.


was (Author: JIRAUSER298135):
I did some investigation to figure out what was going on. In 
https://issues.apache.org/jira/browse/HIVE-21980, the grammar [changed a 
bit|https://github.com/apache/hive/commit/0f39030c3d33b11ae9c14ac81e047b44e8695371]
 from:
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :
    tableSource (lateralView^)*
    |
    virtualTableSource (lateralView^)*
    |
    (subQuerySource) => subQuerySource (lateralView^)*
    |
    partitionedTableFunction (lateralView^)*
    |
    LPAREN! joinSource RPAREN!
;{code}
to
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (LPAREN (KW_WITH|KW_SELECT|KW_MAP|KW_REDUCE|KW_FROM)) => subQuerySource 
(lateralView^)*
    |  (LPAREN LPAREN atomSelectStatement RPAREN setOperator ) => 
subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN! 
;{code}
When the query is parsed, we end up in the subQuerySource rule because 
atomSelectStatement, by definition, cannot contain SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT clauses. An exception is thrown because subQuerySource 
requires an identifier which is not present nor needed in this particular 
scenario.

 

I tested it locally and changing _atomSelectStatement_ to _selectStatement_ 
solves the issue. However, I still need to validate that it does not have 
side-effects by running the whole test suite.

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Priority: Major
>  Labels: pull-request-available
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>    

[jira] [Comment Edited] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-24 Thread Nicolas Richard (Jira)


[ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17758701#comment-17758701
 ] 

Nicolas Richard edited comment on HIVE-27649 at 8/24/23 6:57 PM:
-

I did some investigation to figure out what was going on. In 
https://issues.apache.org/jira/browse/HIVE-21980, the grammar [changed a 
bit|https://github.com/apache/hive/commit/0f39030c3d33b11ae9c14ac81e047b44e8695371]
 from:
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :
    tableSource (lateralView^)*
    |
    virtualTableSource (lateralView^)*
    |
    (subQuerySource) => subQuerySource (lateralView^)*
    |
    partitionedTableFunction (lateralView^)*
    |
    LPAREN! joinSource RPAREN!
;{code}
to
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (LPAREN (KW_WITH|KW_SELECT|KW_MAP|KW_REDUCE|KW_FROM)) => subQuerySource 
(lateralView^)*
    |  (LPAREN LPAREN atomSelectStatement RPAREN setOperator ) => 
subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN! 
;{code}
When the query is parsed, we end up in the subQuerySource rule because 
atomSelectStatement, by definition, cannot contain SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT clauses. An exception is thrown because subQuerySource 
requires an identifier which is not present nor needed in this particular 
scenario.

 

I tested it locally and changing _atomSelectStatement_ to _selectStatement_ 
solves the issue. However, I still need to validate that it does not have 
side-effects by running the whole test suite.


was (Author: JIRAUSER298135):
I did some investigation to figure out what was going on. In 
https://issues.apache.org/jira/browse/HIVE-21980, the grammar [changed a 
bit|https://github.com/apache/hive/commit/0f39030c3d33b11ae9c14ac81e047b44e8695371]
 from:
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :
    tableSource (lateralView^)*
    |
    virtualTableSource (lateralView^)*
    |
    (subQuerySource) => subQuerySource (lateralView^)*
    |
    partitionedTableFunction (lateralView^)*
    |
    LPAREN! joinSource RPAREN!
;{code}
to
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (LPAREN (KW_WITH|KW_SELECT|KW_MAP|KW_REDUCE|KW_FROM)) => subQuerySource 
(lateralView^)*
    |  (LPAREN LPAREN atomSelectStatement RPAREN setOperator ) => 
subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN! 
;{code}
When the query is parsed, we end up in the subQuerySource rule because 
atomSelectStatement, by definition, cannot contain SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT clauses. An exception is thrown because subQuerySource 
requires an identifier which is not present nor needed in this particular 
scenario.

 

I tested it locally and changing _atomSelectStatement_ to _selectStatement_ 
solves the issue. However, I still need to validate that it does not have 
side-effects by running the whole test suite.

 

 

 

 

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Priority: Major
>  Labels: pull-request-available
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromCl

[jira] [Commented] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-24 Thread Nicolas Richard (Jira)


[ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17758705#comment-17758705
 ] 

Nicolas Richard commented on HIVE-27649:


Proposed fix: [https://github.com/apache/hive/pull/4628] (still in Draft)

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Priority: Major
>  Labels: pull-request-available
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
> {code}
> Note that this behavior also happens if the subquery contains a SORT BY, 
> CLUSTER BY, DISTRIBUTE BY or LIMIT clause.
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Comment Edited] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-24 Thread Nicolas Richard (Jira)


[ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17758701#comment-17758701
 ] 

Nicolas Richard edited comment on HIVE-27649 at 8/24/23 6:55 PM:
-

I did some investigation to figure out what was going on. In 
https://issues.apache.org/jira/browse/HIVE-21980, the grammar [changed a 
bit|https://github.com/apache/hive/commit/0f39030c3d33b11ae9c14ac81e047b44e8695371]
 from:
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :
    tableSource (lateralView^)*
    |
    virtualTableSource (lateralView^)*
    |
    (subQuerySource) => subQuerySource (lateralView^)*
    |
    partitionedTableFunction (lateralView^)*
    |
    LPAREN! joinSource RPAREN!
;{code}
to
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (LPAREN (KW_WITH|KW_SELECT|KW_MAP|KW_REDUCE|KW_FROM)) => subQuerySource 
(lateralView^)*
    |  (LPAREN LPAREN atomSelectStatement RPAREN setOperator ) => 
subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN! 
;{code}
When the query is parsed, we end up in the subQuerySource rule because 
atomSelectStatement, by definition, cannot contain SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT clauses. An exception is thrown because subQuerySource 
requires an identifier which is not present nor needed in this particular 
scenario.

 

I tested it locally and changing _atomSelectStatement_ to _selectStatement_ 
solves the issue. However, I still need to validate that it does not have 
side-effects by running the whole test suite.

 

 

 

 


was (Author: JIRAUSER298135):
I did some investigation to figure out what was going on. In 
https://issues.apache.org/jira/browse/HIVE-21980, the grammar [changed a 
bit|https://github.com/apache/hive/commit/0f39030c3d33b11ae9c14ac81e047b44e8695371]
 from:

 
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :
    tableSource (lateralView^)*
    |
    virtualTableSource (lateralView^)*
    |
    (subQuerySource) => subQuerySource (lateralView^)*
    |
    partitionedTableFunction (lateralView^)*
    |
    LPAREN! joinSource RPAREN!
;{code}
to

 
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (LPAREN (KW_WITH|KW_SELECT|KW_MAP|KW_REDUCE|KW_FROM)) => subQuerySource 
(lateralView^)*
    |  (LPAREN LPAREN atomSelectStatement RPAREN setOperator ) => 
subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN! 
;{code}
 

 

When the query is parsed, we end up in the subQuerySource rule because 
atomSelectStatement, by definition, cannot contain SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT clauses. An exception is thrown because subQuerySource 
requires an identifier which is not present nor needed in this particular 
scenario.

 

I tested it locally and changing _atomSelectStatement_ to _selectStatement_ 
solves the issue. However, I still need to validate that it does not have 
side-effects by running the whole test suite.

 

 

 

 

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Priority: Major
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)

[jira] [Commented] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-24 Thread Nicolas Richard (Jira)


[ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17758701#comment-17758701
 ] 

Nicolas Richard commented on HIVE-27649:


I did some investigation to figure out what was going on. In 
https://issues.apache.org/jira/browse/HIVE-21980, the grammar [changed a 
bit|https://github.com/apache/hive/commit/0f39030c3d33b11ae9c14ac81e047b44e8695371]
 from:

 
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :
    tableSource (lateralView^)*
    |
    virtualTableSource (lateralView^)*
    |
    (subQuerySource) => subQuerySource (lateralView^)*
    |
    partitionedTableFunction (lateralView^)*
    |
    LPAREN! joinSource RPAREN!
;{code}
to

 
{code:java}
atomjoinSource
@init { gParent.pushMsg("joinSource", state); }
@after { gParent.popMsg(state); }
    :  tableSource (lateralView^)*
    |  virtualTableSource (lateralView^)*
    |  (LPAREN (KW_WITH|KW_SELECT|KW_MAP|KW_REDUCE|KW_FROM)) => subQuerySource 
(lateralView^)*
    |  (LPAREN LPAREN atomSelectStatement RPAREN setOperator ) => 
subQuerySource (lateralView^)*
    |  partitionedTableFunction (lateralView^)*
    |  LPAREN! joinSource RPAREN! 
;{code}
 

 

When the query is parsed, we end up in the subQuerySource rule because 
atomSelectStatement, by definition, cannot contain SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT clauses. An exception is thrown because subQuerySource 
requires an identifier which is not present nor needed in this particular 
scenario.

 

I tested it locally and changing _atomSelectStatement_ to _selectStatement_ 
solves the issue. However, I still need to validate that it does not have 
side-effects by running the whole test suite.

 

 

 

 

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Priority: Major
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDrive

[jira] [Updated] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-24 Thread Nicolas Richard (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Richard updated HIVE-27649:
---
Description: 
Consider the following query:
{code:java}
select key from ((select key from src order by key) union (select key from 
src))subq {code}
Up until 3.1.2, Hive would parse this query without any problems. However, if 
you try it on the latest versions, you'll get the following exception:
{code:java}
org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
input near 'union' '(' 'select' in subquery source
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
With the inner exception stack trace being:
{code:java}
NoViableAltException(367@[])
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
{code}
Note that this behavior also happens if the subquery contains a SORT BY, 
CLUSTER BY, DISTRIBUTE BY or LIMIT clause.

 

  was:
Consider the following query:
{code:java}
select key from ((select key from src order by key) union (select key from 
src))subq {code}
Up until 3.1.2, Hive would parse this query without any problems. However, if 
you try it on the latest versions, you'll get the following exception:
{code:java}
org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
input near 'union' '(' 'select' in subquery source
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
With the inner exception stack trace being:
{code:java}
NoViableAltException(367@[])
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
    at 
org.apache.hadoop.hive.ql.par

[jira] [Updated] (HIVE-27649) Subqueries with a set operator do not support order by statements

2023-08-24 Thread Nicolas Richard (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Richard updated HIVE-27649:
---
Description: 
Consider the following query:
{code:java}
select key from ((select key from src order by key) union (select key from 
src))subq {code}
Up until 3.1.2, Hive would parse this query without any problems. However, if 
you try it on the latest versions, you'll get the following exception:
{code:java}
org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
input near 'union' '(' 'select' in subquery source
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
With the inner exception stack trace being:
{code:java}
NoViableAltException(367@[])
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
{code}
Note that this behavior also happens for ORDER BY, SORT BY, CLUSTER BY, 
DISTRIBUTE BY or LIMIT

 

  was:
Consider the following query:

 
{code:java}
select key from ((select key from src order by key) union (select key from 
src))subq {code}
Up until 3.1.2, Hive would parse this query without any problems. However, if 
you try it on the latest versions, you'll get the following exception:

 
{code:java}
org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
input near 'union' '(' 'select' in subquery source
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
With the inner exception stack trace being:
{code:java}
NoViableAltException(367@[])
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.s

[jira] [Updated] (HIVE-27649) Subqueries with a set operator do not support order by clauses

2023-08-24 Thread Nicolas Richard (Jira)


 [ 
https://issues.apache.org/jira/browse/HIVE-27649?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nicolas Richard updated HIVE-27649:
---
Summary: Subqueries with a set operator do not support order by clauses  
(was: Subqueries with a set operator do not support order by statements)

> Subqueries with a set operator do not support order by clauses
> --
>
> Key: HIVE-27649
> URL: https://issues.apache.org/jira/browse/HIVE-27649
> Project: Hive
>  Issue Type: Bug
>  Components: Parser
>Affects Versions: 3.1.2, 4.0.0
>Reporter: Nicolas Richard
>Priority: Major
>
> Consider the following query:
> {code:java}
> select key from ((select key from src order by key) union (select key from 
> src))subq {code}
> Up until 3.1.2, Hive would parse this query without any problems. However, if 
> you try it on the latest versions, you'll get the following exception:
> {code:java}
> org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
> input near 'union' '(' 'select' in subquery source
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>         at 
> org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
> With the inner exception stack trace being:
> {code:java}
> NoViableAltException(367@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
> {code}
> Note that this behavior also happens for ORDER BY, SORT BY, CLUSTER BY, 
> DISTRIBUTE BY or LIMIT
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Created] (HIVE-27649) Subqueries with a set operator do not support order by statements

2023-08-24 Thread Nicolas Richard (Jira)
Nicolas Richard created HIVE-27649:
--

 Summary: Subqueries with a set operator do not support order by 
statements
 Key: HIVE-27649
 URL: https://issues.apache.org/jira/browse/HIVE-27649
 Project: Hive
  Issue Type: Bug
  Components: Parser
Affects Versions: 3.1.2, 4.0.0
Reporter: Nicolas Richard


Consider the following query:

 
{code:java}
select key from ((select key from src order by key) union (select key from 
src))subq {code}
Up until 3.1.2, Hive would parse this query without any problems. However, if 
you try it on the latest versions, you'll get the following exception:

 
{code:java}
org.apache.hadoop.hive.ql.parse.ParseException: line 1:60 cannot recognize 
input near 'union' '(' 'select' in subquery source
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
        at 
org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) {code}
With the inner exception stack trace being:
{code:java}
NoViableAltException(367@[])
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:14006)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:45086)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5411)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1921)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2110)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2175)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1750)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1593)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:45094)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:38538)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:38831)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:38424)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:37686)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:37574)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2757)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.explainStatement(HiveParser.java:1751)
    at 
org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1614)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
    at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:97) 
{code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)