]
Steven Hawkins commented on TEIID-5005:
---------------------------------------
The fix for TEIID-4877 was too narrow. We need to nest more expression types in parens to
satisfy the pg parser.
Boolean expression is incorrectly rewritten in WHERE condition and
cause 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
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.