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

Oleksiy Sayankin commented on HIVE-21843:
-----------------------------------------

*ROOT-CAUSE*

Current issue is the regression of Apache 
[HIVE-15938|https://issues.apache.org/jira/browse/HIVE-15938] : {{position 
alias in order by fails for union queries}}

Reverting of [HIVE-15938|https://issues.apache.org/jira/browse/HIVE-15938] from 
Hive fixes the issue. Place that introduces the bug is method 
{{processSetColsNode()}} from class {{ParseUtils}}:

{code}
   /**
     * Replaces a spurious TOK_SETCOLREF added by parser with column names 
referring to the query
     * in e.g. a union. This is to maintain the expectations that some code, 
like order by position
     * alias, might have about not having ALLCOLREF. If it cannot find the 
columns with confidence
     * it will just replace SETCOLREF with ALLCOLREF. Most of the cases where 
that happens are
     * easy to work around in the query (e.g. by adding column aliases in the 
union).
     * @param setCols TOK_SETCOLREF ASTNode.
     * @param searcher AST searcher to reuse.
     */
    private static void processSetColsNode(ASTNode setCols, ASTSearcher 
searcher) {
      searcher.reset();
{code}

which as added in scope of 
[HIVE-15938|https://issues.apache.org/jira/browse/HIVE-15938].

> UNION query with regular expressions works in Hive-2.1 and does not work in 
> Hive-2.3
> ------------------------------------------------------------------------------------
>
>                 Key: HIVE-21843
>                 URL: https://issues.apache.org/jira/browse/HIVE-21843
>             Project: Hive
>          Issue Type: Bug
>            Reporter: Oleksiy Sayankin
>            Assignee: Oleksiy Sayankin
>            Priority: Major
>
> *STEPS TO REPRODUCE:*
> 1. Create a table:
> {code:java}CREATE TABLE t (a1 INT, a2 INT);
> INSERT INTO TABLE t VALUES (1,1),(1,2),(2,1),(2,2);{code}
> 2. SET hive.support.quoted.identifiers to "none":
> {code:java}SET hive.support.quoted.identifiers=none;{code}
> 3. Run the query:
> {code:java}SELECT `(a1)?+.+` FROM t
> UNION
> SELECT `(a2)?+.+` FROM t;{code}
> *ACTUAL RESULT:*
> The query fails with an exception:
> {code:java}2019-05-23T01:36:53,604 ERROR 
> [9aa457a9-1c74-466e-abef-ec2f007117f3 main] ql.Driver: FAILED: 
> SemanticException Line 0:-1 Invalid column reference '`(a1)?+.+`'
> org.apache.hadoop.hive.ql.parse.SemanticException: Line 0:-1 Invalid column 
> reference '`(a1)?+.+`'
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genAllExprNodeDesc(SemanticAnalyzer.java:11734)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:11674)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:11642)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genExprNodeDesc(SemanticAnalyzer.java:11620)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genGroupByPlanMapGroupByOperator(SemanticAnalyzer.java:5225)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genGroupByPlanMapAggrNoSkew(SemanticAnalyzer.java:6330)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genBodyPlan(SemanticAnalyzer.java:9659)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10579)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genPlan(SemanticAnalyzer.java:10457)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genOPTree(SemanticAnalyzer.java:11202)
>       at 
> org.apache.hadoop.hive.ql.parse.CalcitePlanner.genOPTree(CalcitePlanner.java:481)
>       at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:11215)
>       at 
> org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:286)
>       at 
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:258)
>       at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:512)
>       at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:1317)
>       at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1457)
>       at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1237)
>       at org.apache.hadoop.hive.ql.Driver.run(Driver.java:1227)
>       at 
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:239)
>       at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:187)
>       at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:409)
>       at 
> org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:836)
>       at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:774)
>       at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:697)
>       at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:692)
>       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>       at 
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>       at java.lang.reflect.Method.invoke(Method.java:498)
>       at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
>       at org.apache.hadoop.util.RunJar.main(RunJar.java:136){code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to