[JBoss JIRA] (TEIID-3977) Add support for EnableDependentJoins for Impala data sources
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-3977?page=com.atlassian.jira.plugin... ]
Work on TEIID-3977 started by Steven Hawkins.
---------------------------------------------
> Add support for EnableDependentJoins for Impala data sources
> -------------------------------------------------------------
>
> Key: TEIID-3977
> URL: https://issues.jboss.org/browse/TEIID-3977
> Project: Teiid
> Issue Type: Feature Request
> Components: JDBC Connector
> Affects Versions: 8.7, 8.12
> Reporter: Anu Saji
> Assignee: Steven Hawkins
> Fix For: 10.2
>
>
> Hi,
> Request to Add support for EnableDependentJoins for Impala data sources. Current docs only suggest [0] [1] Table 13.8
> [0]
> For sources that support temporary tables (DB2, Derby, H2, HSQL 2.0+, MySQL 5.0+, Oracle, PostgreSQL, SQLServer, Sybase) allow dependent join pushdown.
> [1]
> https://access.redhat.com/documentation/en-US/Red_Hat_JBoss_Data_Virtuali...
> Thanks
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years
[JBoss JIRA] (TEIID-5274) Odata4 translator can't handle conditions on columns which use conversions
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-5274?page=com.atlassian.jira.plugin... ]
Steven Hawkins resolved TEIID-5274.
-----------------------------------
Fix Version/s: 10.0.4
10.2
10.1.2
Resolution: Done
The issue is that the convert function metadata has only a single signature returning an object type and the logic is erroneously looking at that. Corrected by only looking for the native type.
> Odata4 translator can't handle conditions on columns which use conversions
> --------------------------------------------------------------------------
>
> Key: TEIID-5274
> URL: https://issues.jboss.org/browse/TEIID-5274
> Project: Teiid
> Issue Type: Bug
> Components: OData
> Affects Versions: 8.12.11.6_4
> Reporter: Jan Martiska
> Assignee: Steven Hawkins
> Fix For: 10.0.4, 10.2, 10.1.2
>
>
> Failing query examples, given that {{BQT1.SmallA}} is a view backed by the OData4 translator:
> - {{SELECT bigintegervalue FROM BQT1.SmallA WHERE CONVERT(bigintegervalue, INTEGER) = 1}}
> -- This yields:
> {noformat}
> ExampleExceptionFormatter: exception message was: TEIID30504 Remote org.teiid.core.TeiidProcessingException: TEIID30504 odata4: The value type class java.lang.Integer is not supported.
> {noformat}
> - {{SELECT stringkey FROM BQT1.SmallA WHERE CONVERT(stringkey, CHAR) = '1'}}
> -- This yields:
> {noformat}
> ExampleExceptionFormatter: exception message was: TEIID30504 Remote org.teiid.core.TeiidProcessingException: TEIID30504 odata4: The value type class java.lang.Character is not supported.
> {noformat}
> Similarly if the conversion is in the DDL:
> {noformat}
> CREATE VIEW Simple (
> charvalue char
> ) AS SELECT CONVERT(A.stringkey, CHAR)
> FROM sourceModel.SmallA AS A;
> {noformat}
> Then a query like this {{SELECT Simple.CharValue FROM BQT1.Simple WHERE CharValue = '1'}} will fail with the same error.
> Full stack trace:
> {noformat}
> 07:00:13,946 WARN [org.teiid.CONNECTOR] (Worker1_QueryProcessorQueue36) Connector worker process failed for atomic-request=ZJj8bD/Hl58m.14.2.4: org.teiid.translator.TranslatorException: The value type class java.lang.Character is not supported.
> at org.teiid.translator.odata4.ODataFilterVisitor.visit(ODataFilterVisitor.java:311) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.language.Literal.acceptVisitor(Literal.java:48) [teiid-api-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.language.visitor.AbstractLanguageVisitor.visitNode(AbstractLanguageVisitor.java:51) [teiid-api-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataFilterVisitor.append(ODataFilterVisitor.java:325) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataFilterVisitor.appendRightComparison(ODataFilterVisitor.java:126) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataFilterVisitor.visit(ODataFilterVisitor.java:107) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.language.Comparison.acceptVisitor(Comparison.java:110) [teiid-api-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.language.visitor.AbstractLanguageVisitor.visitNode(AbstractLanguageVisitor.java:51) [teiid-api-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataFilterVisitor.append(ODataFilterVisitor.java:325) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataFilterVisitor.appendFilter(ODataFilterVisitor.java:72) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataQuery.processFilter(ODataQuery.java:130) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataSelectQuery.buildURL(ODataSelectQuery.java:65) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataSQLVisitor.buildURL(ODataSQLVisitor.java:85) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataQueryExecution.execute(ODataQueryExecution.java:68) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:361)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.8.0_151]
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [rt.jar:1.8.0_151]
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [rt.jar:1.8.0_151]
> at java.lang.reflect.Method.invoke(Method.java:498) [rt.jar:1.8.0_151]
> at org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:211)
> at com.sun.proxy.$Proxy91.execute(Unknown Source)
> at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:306)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:112)
> at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:108)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266) [rt.jar:1.8.0_151]
> at org.teiid.dqp.internal.process.FutureWork.run(FutureWork.java:65)
> at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119)
> at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210)
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_151]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_151]
> at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_151]
> Caused by: org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException: The value type class java.lang.Character is not supported.
> at org.apache.olingo.commons.core.edm.primitivetype.EdmBinary.internalValueToString(EdmBinary.java:203) [odata-commons-core-4.4.0-teiid-1.jar:]
> at org.apache.olingo.commons.core.edm.primitivetype.AbstractPrimitiveType.valueToString(AbstractPrimitiveType.java:86) [odata-commons-core-4.4.0-teiid-1.jar:]
> at org.teiid.olingo.common.ODataTypeManager.convertToODataURIValue(ODataTypeManager.java:357) [teiid-olingo-common-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> at org.teiid.translator.odata4.ODataFilterVisitor.visit(ODataFilterVisitor.java:309) [translator-odata4-8.12.11.6_4-redhat-64-12.jar:8.12.11.6_4-redhat-64-12]
> ... 31 more
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
8 years
[JBoss JIRA] (TEIID-5272) Improve error message when using LATERAL reference in RIGHT or FULL joins
by Steven Hawkins (JIRA)
[ https://issues.jboss.org/browse/TEIID-5272?page=com.atlassian.jira.plugin... ]
Steven Hawkins commented on TEIID-5272:
---------------------------------------
Yes the change only addressed usage with an explicit lateral join, and not with the implicit lateral join with a table valued function. I'll update that thanks.
> 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)
8 years