You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jdo-dev@db.apache.org by Michael Bouschen <mb...@spree.de> on 2011/01/08 19:32:59 UTC

Query test failure with newer derby version (was Re: Minutes: JDO TCK Conference Call Friday, Jan 7, 9 am Pacific Time)

Hi Craig,

[...]
>>
>> (2) query test:
>>
>> The failing test is in jdoql.conf: class 
>> org.apache.jdo.tck.query.jdoql.ParenthesesMarkOperatorPrecedence 
>> method runTestParenthesesMarkOperatorPrecedence08.
>> The test runs a JDOQL query with PCPoint as candidate class and "(x 
>> == 2) == true" as filter. It results in an exception thrown by the 
>> derby SQL compiler:
>>
>> java.sql.SQLException: Comparisons between 'BOOLEAN' and 'INTEGER' 
>> are not supported. Types must be comparable. String types must also 
>> have matching collation. If collation does not match, a possible 
>> solution is to cast operands to force them to the default collation 
>> (e.g. SELECT tablename FROM sys.systables WHERE CAST(tablename AS 
>> VARCHAR(128)) = 'T1')
>>
>> The derby versions 10.6.1.0 and 10.7.1.1 run into this exception. But 
>> it does NOT happen with derby version 10.4.2.0, which we are using in 
>> the maven1 environment.
>
> Good catch. Would you have time to file a JIRA with Derby?

First I want to take a look at the generated SQL before filing a JIRA. 
I'll keep you posted.

Regards Michael

[...]

-- 
*Michael Bouschen*
*Prokurist*

akquinet tech@spree GmbH
Bülowstr. 66, D-10783 Berlin

Fon:   +49 30 235 520-33
Fax:   +49 30 217 520-12
Email: michael.bouschen@akquinet.de
Url: www.akquinet.de <http://www.akquinet.de>

akquinet tech@spree GmbH, Berlin
Geschäftsführung: Martin Weber, Prof. Dr. Christian Roth
Amtsgericht Berlin-Charlottenburg HRB 86780 B
USt.-Id. Nr.: DE 225 964 680

Re: Query test failure with newer derby version (was Re: Minutes: JDO TCK Conference Call Friday, Jan 7, 9 am Pacific Time)

Posted by Michael Bouschen <mb...@spree.de>.
Hi,

this is the JDOQL query:
   SELECT FROM org.apache.jdo.tck.pc.mylib.PCPoint EXCLUDE SUBCLASSES
   WHERE (x == 2) == true
and here is the generated SQL:
   SELECT 'org.apache.jdo.tck.pc.mylib.PCPoint' AS 
NUCLEUS_TYPE,A0.ID,A0.X,A0.Y
   FROM APPLICATIONIDENTITY0.PCPOINT A0
   WHERE A0.X = 2 = 1

So the question is: what does SQL define when comparing an integer and a 
boolean?
The expression "A0.X = 2" evaluates to a boolean which is then compared 
to the integer 1.

Regards Michael

> Hi Craig,
>
> [...]
>>>
>>> (2) query test:
>>>
>>> The failing test is in jdoql.conf: class 
>>> org.apache.jdo.tck.query.jdoql.ParenthesesMarkOperatorPrecedence 
>>> method runTestParenthesesMarkOperatorPrecedence08.
>>> The test runs a JDOQL query with PCPoint as candidate class and "(x 
>>> == 2) == true" as filter. It results in an exception thrown by the 
>>> derby SQL compiler:
>>>
>>> java.sql.SQLException: Comparisons between 'BOOLEAN' and 'INTEGER' 
>>> are not supported. Types must be comparable. String types must also 
>>> have matching collation. If collation does not match, a possible 
>>> solution is to cast operands to force them to the default collation 
>>> (e.g. SELECT tablename FROM sys.systables WHERE CAST(tablename AS 
>>> VARCHAR(128)) = 'T1')
>>>
>>> The derby versions 10.6.1.0 and 10.7.1.1 run into this exception. 
>>> But it does NOT happen with derby version 10.4.2.0, which we are 
>>> using in the maven1 environment.
>>
>> Good catch. Would you have time to file a JIRA with Derby?
>
> First I want to take a look at the generated SQL before filing a JIRA. 
> I'll keep you posted.
>
> Regards Michael
>
> [...]
>


-- 
*Michael Bouschen*
*Prokurist*

akquinet tech@spree GmbH
Bülowstr. 66, D-10783 Berlin

Fon:   +49 30 235 520-33
Fax:   +49 30 217 520-12
Email: michael.bouschen@akquinet.de
Url: www.akquinet.de <http://www.akquinet.de>

akquinet tech@spree GmbH, Berlin
Geschäftsführung: Martin Weber, Prof. Dr. Christian Roth
Amtsgericht Berlin-Charlottenburg HRB 86780 B
USt.-Id. Nr.: DE 225 964 680