[
https://issues.jboss.org/browse/TEIID-1912?page=com.atlassian.jira.plugin...
]
Steven Hawkins commented on TEIID-1912:
---------------------------------------
Every db will have different limitations wrt number or prepared statement parameters, in
predicate size, etc. The default for max in size of 1000 actually comes from Oracle.
Issuing and inner merge join query produces IOException against
PostgreSQL database
-----------------------------------------------------------------------------------
Key: TEIID-1912
URL:
https://issues.jboss.org/browse/TEIID-1912
Project: Teiid
Issue Type: Bug
Components: JDBC Connector
Affects Versions: 7.7
Environment: Teiid 7.7.0 (built with latest today) in JBoss AS 5.1 against Oracle
10 and PostgreSQL 9.4 databases
Reporter: Van Halbert
Priority: Minor
Fix For: 7.7
Attachments: oracle11-ds.xml, postgres-8.4-tpcr01-ds.xml, TPC.vdb
Running the following inner merge query:
SELECT ORDERS.O_ORDERKEY, ORDERS.O_ORDERDATE, ORDERS.O_CLERK, CUSTOMER.C_CUSTKEY,
CUSTOMER.C_NAME, CUSTOMER.C_ACCTBAL
FROM TPCR01_PostgreSQLVirt.ORDERS, TPCR01_OracleVirt.CUSTOMER WHERE (CUSTOMER.C_CUSTKEY =
ORDERS.O_CUSTKEY)
AND (ORDERS.O_ORDERDATE < '1992-02-06 00:00:00') AND (CUSTOMER.C_ACCTBAL >
5100)
produces exception:
1 [PSQLException]An I/O error occured while sending to the backend.
2 [IOException]Tried to send an out-of-range integer as a 2-byte value: 50000
at org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:90)
at org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:272)
at
org.teiid.dqp.internal.process.DataTierTupleSource.getResults(DataTierTupleSource.java:342)
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:138)
at
org.teiid.dqp.internal.process.DataTierTupleSource$1.call(DataTierTupleSource.java:135)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at org.teiid.dqp.internal.process.DQPCore$FutureWork.run(DQPCore.java:118)
at org.teiid.dqp.internal.process.DQPWorkContext.runInContext(DQPWorkContext.java:232)
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$RunnableWrapper.run(ThreadReuseExecutor.java:118)
at
org.teiid.dqp.internal.process.ThreadReuseExecutor$3.run(ThreadReuseExecutor.java:288)
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:680)
From googling the exception, I found the suggestion (i've yet to find where Postgres
specifically states the max allowable) to split the parameters into 30,000 chunks. So I
changed the PostgreSQLExecutionFactory by adding the following the CTOR:
setMaxDependentInPredicates(30);
and this allowed the query to finish. Not to say this is the final solution, but
it's an option that worked.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see:
http://www.atlassian.com/software/jira