[teiid-issues] [JBoss JIRA] (TEIID-5272) Improve error message when using LATERAL reference in RIGHT or FULL joins

dalex dalex (JIRA) issues at jboss.org
Fri Mar 9 08:37:00 EST 2018


    [ https://issues.jboss.org/browse/TEIID-5272?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13543990#comment-13543990 ] 

dalex dalex commented on TEIID-5272:
------------------------------------

[~shawkins] I applied changes from the issue for 10.1.0 Teiid version. If I run such queries:
{code:sql}
select * from views.v x1 right join texttable(x1.a||'' columns a string) x2 on x1.a=x2.a ;;

select * from views.v x1 right join arraytable(array[x1.a] columns a string) x2 on x1.a=x2.a ;;

select * from views.v x1 right join OBJECTTABLE(language 'teiid_script' 'par1' PASSING x1.a AS par1 COLUMNS a string 'par1') x2 on x1.a=x2.a ;;

select * from views.v x1 right join xmltable('/a' PASSING xmlparse(document '<a id="' || x1.a || '"/>') COLUMNS a integer PATH '@id') x2 on x1.a=x2.a ;;

--FULL JOIN
select * from views.v x1 full join texttable(x1.a||'' columns a string) x2 on x1.a=x2.a ;;

select * from views.v x1 full join arraytable(array[x1.a] columns a string) x2 on x1.a=x2.a ;;

select * from views.v x1 full join OBJECTTABLE(language 'javascript' 'par1' PASSING x1.a AS par1 COLUMNS a string 'par1') x2 on x1.a=x2.a ;;

select * from views.v x1 full join xmltable('/a' PASSING xmlparse(document '<a id="' || x1.a || '"/>') COLUMNS a integer PATH '@id') x2 on x1.a=x2.a ;;
{code}
I get the same error as before:
{code:noformat}
Error: Remote org.teiid.api.exception.query.QueryResolverException: TEIID31119 Symbol x1.a is specified with an unknown group context
{code}

> Improve error message when using LATERAL reference in RIGHT or FULL joins
> -------------------------------------------------------------------------
>
>                 Key: TEIID-5272
>                 URL: https://issues.jboss.org/browse/TEIID-5272
>             Project: Teiid
>          Issue Type: Quality Risk
>          Components: Query Engine
>    Affects Versions: 10.1
>         Environment: teiid-10.1.0 on WildFly Full 11.0.0.Final (WildFly Core 3.0.8.Final)
>            Reporter: dalex dalex
>            Assignee: Steven Hawkins
>             Fix For: 10.2
>
>
> All table functions cause errors in queries containing RIGHT or FULL JOINs. For example, such query:
> {code:sql}
> select * from views.v x1 right join table(select x1.b a) x2 on x1.a=x2.a ;;
> {code}
> causes such error:
> {code:noformat}
> 2018-03-05 10:25:02,356 WARN  [org.teiid.PROCESSOR] (Worker3_QueryProcessorQueue31) /oCxMs2/Zs22 TEIID30020 Processing exception for request /oCxMs2/Zs22.26 'TEIID31119 Symbol x1.b i
> s specified with an unknown group context'. Originally QueryResolverException ResolverVisitor.java:102.: org.teiid.api.exception.query.QueryResolverException: TEIID31119 Symbol x1.b
> is specified with an unknown group context
>         at org.teiid.query.resolver.util.ResolverVisitor.handleUnresolvedElement(ResolverVisitor.java:102)
>         at org.teiid.query.resolver.util.ResolverVisitor.internalResolveElementSymbol(ResolverVisitor.java:199)
>         at org.teiid.query.resolver.util.ResolverVisitor.resolveElementSymbol(ResolverVisitor.java:135)
>         at org.teiid.query.resolver.util.ResolverVisitor.visit(ResolverVisitor.java:90)
>         at org.teiid.query.sql.symbol.ElementSymbol.acceptVisitor(ElementSymbol.java:223)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitVisitor(AbstractNavigator.java:50)
>         at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.postVisitVisitor(PreOrPostOrderNavigator.java:57)
>         at org.teiid.query.resolver.command.SimpleQueryResolver$QueryResolverVisitor.postVisitVisitor(SimpleQueryResolver.java:219)
>         at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:167)
>         at org.teiid.query.sql.symbol.ElementSymbol.acceptVisitor(ElementSymbol.java:223)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:59)
>         at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:75)
>         at org.teiid.query.sql.symbol.AliasSymbol.acceptVisitor(AliasSymbol.java:86)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:59)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNodes(AbstractNavigator.java:72)
>         at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:338)
>         at org.teiid.query.sql.lang.Select.acceptVisitor(Select.java:164)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:59)
>         at org.teiid.query.resolver.command.SimpleQueryResolver$QueryResolverVisitor.visit(SimpleQueryResolver.java:237)
>         at org.teiid.query.resolver.command.SimpleQueryResolver.resolveCommand(SimpleQueryResolver.java:66)
>         at org.teiid.query.resolver.QueryResolver.resolveCommand(QueryResolver.java:282)
>         at org.teiid.query.resolver.command.SimpleQueryResolver$QueryResolverVisitor.resolveSubQuery(SimpleQueryResolver.java:283)
>         at org.teiid.query.resolver.command.SimpleQueryResolver$QueryResolverVisitor.visit(SimpleQueryResolver.java:463)
>         at org.teiid.query.sql.lang.SubqueryFromClause.acceptVisitor(SubqueryFromClause.java:123)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:59)
>         at org.teiid.query.resolver.command.SimpleQueryResolver$QueryResolverVisitor.visit(SimpleQueryResolver.java:593)
>         at org.teiid.query.sql.lang.JoinPredicate.acceptVisitor(JoinPredicate.java:175)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:59)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNodes(AbstractNavigator.java:72)
>         at org.teiid.query.sql.navigator.PreOrPostOrderNavigator.visit(PreOrPostOrderNavigator.java:183)
>         at org.teiid.query.resolver.command.SimpleQueryResolver$QueryResolverVisitor.visit(SimpleQueryResolver.java:619)
>         at org.teiid.query.sql.lang.From.acceptVisitor(From.java:142)
>         at org.teiid.query.sql.navigator.AbstractNavigator.visitNode(AbstractNavigator.java:59)
>         at org.teiid.query.resolver.command.SimpleQueryResolver$QueryResolverVisitor.visit(SimpleQueryResolver.java:233)
>         at org.teiid.query.resolver.command.SimpleQueryResolver.resolveCommand(SimpleQueryResolver.java:66)
>         at org.teiid.query.resolver.QueryResolver.resolveCommand(QueryResolver.java:282)
>         at org.teiid.query.resolver.QueryResolver.resolveCommand(QueryResolver.java:128)
>         at org.teiid.dqp.internal.process.Request.resolveCommand(Request.java:282)
>         at org.teiid.dqp.internal.process.Request.generatePlan(Request.java:418)
>         at org.teiid.dqp.internal.process.Request.processRequest(Request.java:486)
>         at org.teiid.dqp.internal.process.RequestWorkItem.processNew(RequestWorkItem.java:660)
>         at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:339)
>         at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:47)
>         at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:276)
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:280)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:115)
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:206)
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at java.lang.Thread.run(Thread.java:745)
> {code}
> The behavior is expected. Lateral is expected to work left to right - thus only with inner/left joins. The error message should be improved. On pgsql it is "The combining JOIN type must be INNER or LEFT for a LATERAL reference".



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the teiid-issues mailing list