In Jaybird I have a test (org.firebirdsql.jdbc.TestBooleanSupport) for 
the Firebird 3 boolean support that is now broken with 3.0.1 (for 
testSelect_ConditionOnly_null, testSelect_ConditionOnly_true and 
testSelect_ConditionOnly_false.

The test uses the table:
CREATE TABLE withboolean ( id INTEGER, bool BOOLEAN )

and prepares a statement:
SELECT id, bool FROM withboolean WHERE ?

this now fails with the error:
Dynamic SQL Error; SQL error code = -104; Invalid usage of boolean 
expression [SQLState:22000, ISC error code:335545023]

This worked fine in earlier 3.0 versions, at least since the 11th of 
August 2013 when I created these tests.

Is this a regression or an intentional change?

A boolean parameter like this is allowed according to the SQL standard:

<where clause> ::=
   WHERE <search condition>

<search condition> ::=
   <boolean value expression>

<boolean value expression> ::=
   <boolean term>
   | ...

<boolean term> ::=
   <boolean factor>
   | ...

<boolean factor> ::=
   [ NOT ] <boolean test>

<boolean test> ::=
   <boolean primary> [ IS [ NOT ] <truth value> ]

<boolean primary> ::=
   ...
   | <boolean predicand>

<boolean predicand> ::=
   ...
   | <nonparenthesized value expression primary>

<nonparenthesized value expression primary> ::=
   <unsigned value specification>
   | ...

<unsigned value specification> ::=
   ...
   | <general value specification>

<general value specification> ::=
   ...
   | <dynamic parameter specification>
   | ...

<dynamic parameter specification> ::=
   <question mark>

-- 
Mark Rotteveel

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most 
engaging tech sites, SlashDot.org! http://sdm.link/slashdot
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to