]
dalex dalex commented on TEIID-5005:
------------------------------------
[~shawkins] great! thx a lot for the quick fix.
Boolean expression is incorrectly rewritten in WHERE condition and
causes errors on PG
--------------------------------------------------------------------------------------
Key: TEIID-5005
URL:
https://issues.jboss.org/browse/TEIID-5005
Project: Teiid
Issue Type: Bug
Components: Query Engine
Affects Versions: 9.3.1
Environment: teiid-9.3.1 on WildFly Full 10.0.0.Final (WildFly Core
2.0.10.Final)
Reporter: dalex dalex
Assignee: Steven Hawkins
Priority: Blocker
Fix For: 10.0, 9.2.5, 9.3.2
when running the following query on PG:
{code:sql}
select * from test_pg.test_bool_exps where ((b=true) and (a=1)) = true ;;
{code}
teiid returns the following error:
{code}
2017-07-25 13:19:10,211 WARN [org.teiid.CONNECTOR] (Worker5_QueryProcessorQueue329)
o4ihy1GzEdYV Connector worker process failed for atomic-request=o4ihy1GzEdYV.89.0.71:
org.teiid.t
ranslator.jdbc.JDBCExecutionException: 0 TEIID11008:TEIID11004 Error executing
statement(s): [Prepared Values: [] SQL: SELECT g_0."a" AS c_0, g_0."b"
AS c_1 FROM "public"."test_bool_
exps" AS g_0 WHERE g_0."b" = TRUE AND g_0."a" = 1 = TRUE LIMIT
100]
at
org.teiid.translator.jdbc.JDBCQueryExecution.execute(JDBCQueryExecution.java:131)
at
org.teiid.dqp.internal.datamgr.ConnectorWorkItem.execute(ConnectorWorkItem.java:365)
at sun.reflect.GeneratedMethodAccessor89.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.teiid.dqp.internal.datamgr.ConnectorManager$1.invoke(ConnectorManager.java:220)
at com.sun.proxy.$Proxy28.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)
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:1142)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
{code}
though the same query on MySQL, MSSQL and Oracle works correctly.