]
Steven Hawkins commented on TEIID-5345:
---------------------------------------
Looks like this does not occur on master. I'll see if it has been directly fixed or
if there was some intervening planning change.
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'