[teiid-issues] [JBoss JIRA] (TEIID-5345) ClassCastException if criteria column is derived from case statement

Steven Hawkins (JIRA) issues at jboss.org
Fri May 18 14:09:00 EDT 2018


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

Steven Hawkins commented on TEIID-5345:
---------------------------------------

This can still be reproduced on master with a small example:

select pm1.g2.e1 from pm1.g2 inner join /*+ makedep */ (select 1 as x, 'a' as y, e1 from pm1.g1 union all select 2, 'b', e1 from pm2.g1) v on y = pm1.g2.e1 and x = pm1.g2.e2

> ClassCastException if criteria column is derived from case statement
> --------------------------------------------------------------------
>
>                 Key: TEIID-5345
>                 URL: https://issues.jboss.org/browse/TEIID-5345
>             Project: Teiid
>          Issue Type: Bug
>          Components: Query Engine
>    Affects Versions: 8.12.12.6_4
>            Reporter: Debbie Steigner
>            Assignee: Steven Hawkins
>
> Select without criteria returns - select * from table, If adding criteria on col_CD it fails with ClassCastException[1].  I assume it's because on some sources the col_CD is derived by a case statement[2].  
> [1]
> ERROR [org.teiid.PROCESSOR] (Worker133_QueryProcessorQueue5109) TEIID30019 Unexpected exception for request Zplru34y5LCX.5: java.lang.ClassCastException: org.teiid.query.sql.symbol.Constant cannot be cast to org.teiid.query.sql.symbol.Array
>         at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor$1.visit(CriteriaCapabilityValidatorVisitor.java:894) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.sql.lang.DependentSetCriteria.acceptVisitor(DependentSetCriteria.java:161) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:957) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.rules.CriteriaCapabilityValidatorVisitor.canPushLanguageObject(CriteriaCapabilityValidatorVisitor.java:861) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.rules.RuleRaiseAccess.canRaiseOverSelect(RuleRaiseAccess.java:512) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.rules.RulePushSelectCriteria.examinePath(RulePushSelectCriteria.java:442) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.rules.RulePushSelectCriteria.pushTowardOriginatingNode(RulePushSelectCriteria.java:353) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.rules.RulePushSelectCriteria.execute(RulePushSelectCriteria.java:116) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.RelationalPlanner.executeRules(RelationalPlanner.java:932) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.relational.RelationalPlanner.optimize(RelationalPlanner.java:228) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.query.optimizer.QueryOptimizer.optimizePlan(QueryOptimizer.java:159) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.Request.generatePlan(Request.java:448) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.Request.processRequest(Request.java:476) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.RequestWorkItem.processNew(RequestWorkItem.java:642) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.RequestWorkItem.process(RequestWorkItem.java:337) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.AbstractWorkItem.run(AbstractWorkItem.java:51) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.RequestWorkItem.run(RequestWorkItem.java:274) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:284) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:119) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:210) [teiid-engine-8.12.12.6_4-redhat-64-2.jar:8.12.12.6_4-redhat-64-2]
>         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [rt.jar:1.8.0_171]
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [rt.jar:1.8.0_171]
>         at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_171]
> [2]
> SELECT_CRITERIA=CASE WHEN (LENGTH(Prov_Code) < 2) AND (LENGTH(City_Code) < 2) THEN CONCAT(LPAD(Prov_Code, 2, '0'), LPAD(City_Code, 2, '0')) WHEN (LENGTH(Prov_Code) < 2) AND (LENGTH(City_Code) >= 2) THEN CONCAT(LPAD(Prov_Code, 2, '0'), City_Code) WHEN (LENGTH(Prov_Code) >= 2) AND (LENGTH(City_Code) < 2) THEN CONCAT(Prov_Code, LPAD(City_Code, 2, '0')) ELSE CONCAT(Prov_Code, City_Code) END = '66131'



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


More information about the teiid-issues mailing list