[
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)