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

Krisztian Kasa resolved HIVE-26493.
-----------------------------------
    Fix Version/s: 4.2.0
       Resolution: Fixed

Merged to master. Thanks [~Dayakar] for the fix!

> Hive throws error when querying a view that was created successfully
> --------------------------------------------------------------------
>
>                 Key: HIVE-26493
>                 URL: https://issues.apache.org/jira/browse/HIVE-26493
>             Project: Hive
>          Issue Type: Bug
>            Reporter: László Végh
>            Assignee: Dayakar M
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 4.2.0
>
>
> Steps to reproduce:
> 1. Create table tbl_x
> {noformat}
> create table tbl_x (a int, b string); {noformat}
> 2. Insert data in the table
> {noformat}
> insert into tbl_x values (1, 'Prince'); insert into tbl_x values (2, 'John'); 
> {noformat}
> 3. view data in table :
> {noformat}
> select * from tbl_x;
> +----------+----------+ 
> |tbl_x.a   |tbl_x.b   | 
> +----------+----------+ 
> |1         |Prince    | 
> |2         | John     |{noformat}
> 4. Create view:
> {noformat}
> create view vw_x (b) as (select a from tbl_x);{noformat}
> 5. Try to read data from view:
> {noformat}
> Error while compiling statement: FAILED: SemanticException line 1:67 cannot 
> recognize input near ')' 'vw_x' '<EOF>' in subquery source in definition of V 
> IEW vw_x [ SELECT `a` AS `b` FROM ((select `tbl_x`.`a` from 
> `default`.`tbl_x`)) `vw_x` ] used as vw_x at Line 1:14 
> (state=42000,code=40000) {noformat}
> Exception stacktrace:
> {noformat}
> org.apache.hadoop.hive.ql.parse.SemanticException line 1:67 cannot recognize 
> input near ')' 'vw_x' '<EOF>' in subquery source in definition of V IEW vw_x 
> [ SELECT `a` AS `b` FROM ((select `tbl_x`.`a` from `default`.`tbl_x`)) `vw_x` 
> ] used as vw_x at Line 1:14 
>     at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.replaceViewReferenceWithDefinition(SemanticAnalyzer.java:2909)
>     at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:2438)
>     at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.getMetaData(SemanticAnalyzer.java:2328)
>     at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeAndResolveChildTree(SemanticAnalyzer.java:13052)
>     at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.genResolvedParseTree(SemanticAnalyzer.java:13029)
>     at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.analyzeInternal(SemanticAnalyzer.java:13159)
>     at 
> org.apache.hadoop.hive.ql.parse.CalcitePlanner.analyzeInternal(CalcitePlanner.java:481)
>     at 
> org.apache.hadoop.hive.ql.parse.BaseSemanticAnalyzer.analyze(BaseSemanticAnalyzer.java:360)
>     at org.apache.hadoop.hive.ql.Compiler.analyze(Compiler.java:224)
>     at org.apache.hadoop.hive.ql.Compiler.compile(Compiler.java:109)
>     at org.apache.hadoop.hive.ql.Driver.compile(Driver.java:498)
>     at org.apache.hadoop.hive.ql.Driver.compileInternal(Driver.java:450)
>     at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:414)
>     at org.apache.hadoop.hive.ql.Driver.compileAndRespond(Driver.java:408)
>     at 
> org.apache.hadoop.hive.ql.reexec.ReExecDriver.compileAndRespond(ReExecDriver.java:126)
>     at 
> org.apache.hadoop.hive.ql.reexec.ReExecDriver.run(ReExecDriver.java:234)
>     at 
> org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:259)
>     at org.apache.hadoop.hive.cli.CliDriver.processCmd1(CliDriver.java:203)
>     at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:129)
>     at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:427)
>     at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:358)
>     at 
> org.apache.hadoop.hive.ql.QTestUtil.executeClientInternal(QTestUtil.java:746)
>     at org.apache.hadoop.hive.ql.QTestUtil.executeClient(QTestUtil.java:716)
>     at 
> org.apache.hadoop.hive.cli.control.CoreCliDriver.runTest(CoreCliDriver.java:115)
>     at 
> org.apache.hadoop.hive.cli.control.CliAdapter.runTest(CliAdapter.java:139)
>     at 
> org.apache.hadoop.hive.cli.TestMiniLlapLocalCliDriver.testCliDriver(TestMiniLlapLocalCliDriver.java:62)
>     at 
> java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
>     at java.base/java.lang.reflect.Method.invoke(Method.java:580)
>     at 
> org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
>     at 
> org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
>     at 
> org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
>     at 
> org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
>     at 
> org.apache.hadoop.hive.cli.control.CliAdapter$2$1.evaluate(CliAdapter.java:118)
>     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
>     at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
>     at 
> org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
>     at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>     at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>     at org.junit.runners.Suite.runChild(Suite.java:128)
>     at org.junit.runners.Suite.runChild(Suite.java:27)
>     at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
>     at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
>     at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
>     at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
>     at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
>     at 
> org.apache.hadoop.hive.cli.control.CliAdapter$1$1.evaluate(CliAdapter.java:89)
>     at org.junit.rules.RunRules.evaluate(RunRules.java:20)
>     at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
>     at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:316)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:240)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:214)
>     at 
> org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:155)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:385)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:162)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
>     at 
> org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
> Caused by: org.apache.hadoop.hive.ql.parse.ParseException: line 1:66 cannot 
> recognize input near ')' 'vw_x' '<EOF>' in subquery source
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:125)
>     at org.apache.hadoop.hive.ql.parse.ParseUtils.parse(ParseUtils.java:101)
>     at 
> org.apache.hadoop.hive.ql.parse.SemanticAnalyzer.replaceViewReferenceWithDefinition(SemanticAnalyzer.java:2879)
>     ... 62 more
> Caused by: NoViableAltException(431@[])
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_IdentifiersParser.identifier(HiveParser_IdentifiersParser.java:15227)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.identifier(HiveParser.java:43054)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.subQuerySource(HiveParser_FromClauseParser.java:5422)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:1932)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2186)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.atomjoinSource(HiveParser_FromClauseParser.java:2121)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.joinSource(HiveParser_FromClauseParser.java:2186)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromSource(HiveParser_FromClauseParser.java:1761)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser_FromClauseParser.fromClause(HiveParser_FromClauseParser.java:1604)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.fromClause(HiveParser.java:43312)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.atomSelectStatement(HiveParser.java:36792)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.selectStatement(HiveParser.java:37085)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.regularBody(HiveParser.java:36678)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpressionBody(HiveParser.java:35940)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.queryStatementExpression(HiveParser.java:35828)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.execStatement(HiveParser.java:2776)
>     at 
> org.apache.hadoop.hive.ql.parse.HiveParser.statement(HiveParser.java:1655)
>     at org.apache.hadoop.hive.ql.parse.ParseDriver.parse(ParseDriver.java:123)
>     ... 64 more
> {noformat}
> 6. Drop the view
> {noformat}
> drop view vw_x; {noformat}
> 7. Create the view again with the below definition:
> {noformat}
> create view vw_x (b) as select a from tbl_x; {noformat}
> 8. Try to read the data from view:
> {noformat}
> select * from vw_x;
> +---------+ 
> | vw_x.b  | 
> +---------+ 
> | 1       | 
> | 2       | 
> +---------+ {noformat}



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

Reply via email to