LucidDB / luciddb

DEFUNCT: See README
https://github.com/LucidDB/luciddb
Apache License 2.0
53 stars 24 forks source link

[FRG-339] Non-call boolean expressions in where clauses cause ClassCastException in MedJdbcPushDownRule #533

Closed dynamobi-build closed 12 years ago

dynamobi-build commented 12 years ago

[reporter="stephan", created="Tue, 2 Sep 2008 11:59:15 -0500 (GMT-05:00)"] Non-call boolean expressions in where clauses cause ClassCastException in MedJdbcPushDownRule.


For example, assuming a foreign JDBC table FT_EMPS, with the same columns as SALES.EMPS, the following causes the exception:


    select * from FT_EMPS where slacker


The queries


    select * from FT_EMPS where slacker = true
    select * from FT_EMPS where slacker is true


work as expected however.


MedJdbcPushDownRule incorrectly assumes that the root of the RexNode filter expression is a RexCall. I've left a review comment referencing this bug at the appropriate location.

dynamobi-build commented 12 years ago

[author="jvs", created="Tue, 2 Sep 2008 13:02:32 -0500 (GMT-05:00)"] Lazy fix is to give up on pushdown in this case.


If we want to go ahead with the pushdown, note that the correct rewrite for preserving three-valued logic is


where slacker = true


(result is maybe if slacker is null).

dynamobi-build commented 12 years ago

[author="schoi", created="Tue, 30 Sep 2008 00:43:30 -0500 (GMT-05:00)"] Lazy fix in 11635. Leaving this open for rewrite. Note also, filter is not pushed down for where "slacker = true" or "slacker is true". See test in luciddb/test/sql/sqlserver-specific/pushdown.sql.tmpl.


dynamobi-build commented 12 years ago

[author="jvs", created="Thu, 10 Jun 2010 19:47:47 -0500 (GMT-05:00)"] Pushdown implemented on //open/dev in eigenchange 13692.