Details
-
Bug
-
Resolution: Done
-
Major
-
7.1.1
-
None
Description
I'm testing Prepared Statements and have a query that executes through SQuirreL as a non-prepared statement and fails with an assertion error when I run it through a Java application. Here's the SQL:
SELECT PART_NAME FROM PARTS WHERE PARTS.PART_ID IN
(SELECT SUPPLIER_PARTS.PART_ID FROM SUPPLIER_PARTS WHERE (SUPPLIER_PARTS.SUPPLIER_ID = 'S100')
AND (LEFT(SUPPLIER_PARTS.SUPPLIER_ID, 1) != LEFT(PARTS.PART_COLOR, 1)))
stmt = conn.prepareStatement("SELECT PART_NAME FROM PARTS WHERE PARTS.PART_ID IN "
+ "(SELECT SUPPLIER_PARTS.PART_ID FROM SUPPLIER_PARTS WHERE (SUPPLIER_PARTS.SUPPLIER_ID = ?) "
+ "AND (LEFT(SUPPLIER_PARTS.SUPPLIER_ID, 1) != LEFT(PARTS.PART_COLOR, 1))) ");
2011-01-03 14:30:22,515 ERROR [org.teiid.CONNECTOR] (Worker33_QueryProcessorQueue1000) Connector worker process failed for atomic-request=mQaVUbKNtiIi.20.2.219
java.lang.AssertionError
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:459)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:311)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:266)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:319)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:268)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:207)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:149)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:399)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:282)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:207)
at org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:130)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:213)
at org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:281)
at org.teiid.dqp.internal.process.DataTierTupleSource.access$000(DataTierTupleSource.java:71)
at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:123)
at org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:120)
at org.teiid.dqp.internal.process.DQPCore$FutureWork.run(DQPCore.java:108)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:188)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:116)
at org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:290)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
2011-01-03 14:30:22,524 WARN [org.teiid.PROCESSOR] (Worker34_QueryProcessorQueue1001) Processing exception 'null' for request mQaVUbKNtiIi.20. Exception type org.teiid.core.TeiidProcessingException thrown from org.teiid.dqp.internal.datamgr.LanguageBridgeFactory.translate(LanguageBridgeFactory.java:459). Enable more detailed logging to see the entire stacktrace.
[Steve indicated this is the result of skipping the final rewrite of pushed subqueries.]