You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@cayenne.apache.org by Andrus Adamchik <an...@objectstyle.org> on 2009/08/13 15:18:35 UTC

Oracle tests failing - due to DbEntity qualifier changes ?

Olga just noticed that a bunch of Oracle (and other DB) tests started  
failing since 3.0M6. Here is an Oracle list:

Failed tests:

   
testDbEntityQualifier 
(org.apache.cayenne.access.trans.SelectTranslatorTest)
testDelete(org.apache.cayenne.access.DataContextCharPKTest)
   testUpdate(org.apache.cayenne.access.DataContextCharPKTest)

Tests in error:
   testSerializable(org.apache.cayenne.access.MiscTypesTest)
   testEmptyClob(org.apache.cayenne.access.DataContextClobTest)
   test5ByteClob(org.apache.cayenne.access.DataContextClobTest)
   test5KByteClob(org.apache.cayenne.access.DataContextClobTest)
   test1MBClob(org.apache.cayenne.access.DataContextClobTest)
   testNullClob(org.apache.cayenne.access.DataContextClobTest)
    
testFetchLimit_DistinctResultIterator 
(org.apache.cayenne.access.jdbc.SelectActionTest)
   testEmptyBlob(org.apache.cayenne.access.DataContextBlobTest)
   test5ByteBlob(org.apache.cayenne.access.DataContextBlobTest)
   test5KByteBlob(org.apache.cayenne.access.DataContextBlobTest)
   test1MBBlob(org.apache.cayenne.access.DataContextBlobTest)
   testNullBlob(org.apache.cayenne.access.DataContextBlobTest)

The first few things that she checked were related to OracleAdapter  
using RTRIM function for CHAR columns too handle padding with spaces  
of the CHAR values (e.g. SelectTranslatorTest, DataContextCharPKTest).  
The LOB tests all fail with this error:


INFO: SELECT pk_clob_test.nextval FROM DUAL
Aug 13, 2009 3:59:18 PM org.apache.cayenne.access.QueryLogger  
logQueryStart
INFO: --- will run 1 query.
Aug 13, 2009 3:59:18 PM org.apache.cayenne.access.QueryLogger  
logQueryError
INFO: *** error.
java.lang.ClassCastException:  
org.apache.cayenne.dba.oracle.OracleLOBBatchAction cannot be cast to  
org.apache.cayenne.access.jdbc.BatchAction
     at  
org 
.apache 
.cayenne 
.access 
.DataDomainActionBuilder.batchAction(DataDomainActionBuilder.java:49)
     at  
org 
.apache 
.cayenne 
.access 
.DataDomainInsertQuery.createSQLAction(DataDomainInsertQuery.java:43)
     at  
org 
.apache.cayenne.dba.oracle.OracleAdapter.getAction(OracleAdapter.java: 
337)
     at  
org 
.apache 
.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java: 
86)
     at  
org.apache.cayenne.access.DataNode.performQueries(DataNode.java:274)
     at  
org 
.apache 
.cayenne 
.access.DataDomainFlushAction.runQueries(DataDomainFlushAction.java:226)
     at  
org 
.apache 
.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java: 
144)
     at  
org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
     at org.apache.cayenne.access.DataDomain 
$2.transform(DataDomain.java:791)
     at  
org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java: 
850)
     at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
     at  
org.apache.cayenne.access.DataContext.flushToParent(DataContext.java: 
1104)
     at  
org.apache.cayenne.access.DataContext.commitChanges(DataContext.java: 
1043)
     at  
org 
.apache 
.cayenne 
.access.DataContextClobTest.runWithClobSize(DataContextClobTest.java: 
125)
     at  
org 
.apache 
.cayenne 
.access.DataContextClobTest.testEmptyClob(DataContextClobTest.java:54)

Andrey, I know you probably don't have Oracle instance to test, but  
maybe you can think of something offhand that may have affected these  
tests.

Thanks,
Andrus



Re: Oracle tests failing - due to DbEntity qualifier changes ?

Posted by Andrus Adamchik <an...@objectstyle.org>.
Hi Andrey,

That was it. Your fix works. Olga just ran the tests against the new  
trunk + her local changes (one that fixes checks in  
'testDbEntityQualifier' and some others unrelated to your recent  
work), and she reported 100% success on Oracle. She will upload a  
patch with her stuff via Jira.

Andrus

On Aug 13, 2009, at 4:54 PM, Andrey Razumovsky wrote:

> Hi Andrus,
>
> Most likely this is my fault. I added cast to BatchAction in
> DataDomainActionBuilder class and this causes the exception.
> I'll try to remember the reason I did it. It'll be hard, it was  
> before my
> vacation, after all..
>
> The biggest problem was that BatchQuery is heavy class, not an  
> interface.
> And, to extend its functionality, I needed delegate mechanizms.
> Likely would not want OracleLOBBatchAction to extend BatchAction, so  
> let me
> try to review the design to see if the class cast can be avoided.
>
> I'm not sure about testDbEntityQualifier though. Could you bring me  
> stack
> trace.
> If I commit, could you retest on Oracle?
>
> Thanks,
> Andrey
>
> 2009/8/13 Andrus Adamchik <an...@objectstyle.org>
>
>> Olga just noticed that a bunch of Oracle (and other DB) tests started
>> failing since 3.0M6. Here is an Oracle list:
>>
>> Failed tests:
>>
>>
>> testDbEntityQualifier 
>> (org.apache.cayenne.access.trans.SelectTranslatorTest)
>> testDelete(org.apache.cayenne.access.DataContextCharPKTest)
>> testUpdate(org.apache.cayenne.access.DataContextCharPKTest)
>>
>> Tests in error:
>> testSerializable(org.apache.cayenne.access.MiscTypesTest)
>> testEmptyClob(org.apache.cayenne.access.DataContextClobTest)
>> test5ByteClob(org.apache.cayenne.access.DataContextClobTest)
>> test5KByteClob(org.apache.cayenne.access.DataContextClobTest)
>> test1MBClob(org.apache.cayenne.access.DataContextClobTest)
>> testNullClob(org.apache.cayenne.access.DataContextClobTest)
>>
>> testFetchLimit_DistinctResultIterator 
>> (org.apache.cayenne.access.jdbc.SelectActionTest)
>> testEmptyBlob(org.apache.cayenne.access.DataContextBlobTest)
>> test5ByteBlob(org.apache.cayenne.access.DataContextBlobTest)
>> test5KByteBlob(org.apache.cayenne.access.DataContextBlobTest)
>> test1MBBlob(org.apache.cayenne.access.DataContextBlobTest)
>> testNullBlob(org.apache.cayenne.access.DataContextBlobTest)
>>
>> The first few things that she checked were related to OracleAdapter  
>> using
>> RTRIM function for CHAR columns too handle padding with spaces of  
>> the CHAR
>> values (e.g. SelectTranslatorTest, DataContextCharPKTest). The LOB  
>> tests all
>> fail with this error:
>>
>>
>> INFO: SELECT pk_clob_test.nextval FROM DUAL
>> Aug 13, 2009 3:59:18 PM org.apache.cayenne.access.QueryLogger  
>> logQueryStart
>> INFO: --- will run 1 query.
>> Aug 13, 2009 3:59:18 PM org.apache.cayenne.access.QueryLogger  
>> logQueryError
>> INFO: *** error.
>> java.lang.ClassCastException:
>> org.apache.cayenne.dba.oracle.OracleLOBBatchAction cannot be cast to
>> org.apache.cayenne.access.jdbc.BatchAction
>>   at
>> org 
>> .apache 
>> .cayenne 
>> .access 
>> .DataDomainActionBuilder.batchAction(DataDomainActionBuilder.java:49)
>>   at
>> org 
>> .apache 
>> .cayenne 
>> .access 
>> .DataDomainInsertQuery.createSQLAction(DataDomainInsertQuery.java:43)
>>   at
>> org 
>> .apache 
>> .cayenne.dba.oracle.OracleAdapter.getAction(OracleAdapter.java:337)
>>   at
>> org 
>> .apache 
>> .cayenne 
>> .access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:86)
>>   at  
>> org.apache.cayenne.access.DataNode.performQueries(DataNode.java:274)
>>   at
>> org 
>> .apache 
>> .cayenne 
>> .access.DataDomainFlushAction.runQueries(DataDomainFlushAction.java: 
>> 226)
>>   at
>> org 
>> .apache 
>> .cayenne 
>> .access.DataDomainFlushAction.flush(DataDomainFlushAction.java:144)
>>   at  
>> org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
>>   at org.apache.cayenne.access.DataDomain 
>> $2.transform(DataDomain.java:791)
>>   at
>> org 
>> .apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java: 
>> 850)
>>   at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
>>   at
>> org 
>> .apache.cayenne.access.DataContext.flushToParent(DataContext.java: 
>> 1104)
>>   at
>> org 
>> .apache.cayenne.access.DataContext.commitChanges(DataContext.java: 
>> 1043)
>>   at
>> org 
>> .apache 
>> .cayenne 
>> .access 
>> .DataContextClobTest.runWithClobSize(DataContextClobTest.java:125)
>>   at
>> org 
>> .apache 
>> .cayenne 
>> .access.DataContextClobTest.testEmptyClob(DataContextClobTest.java: 
>> 54)
>>
>> Andrey, I know you probably don't have Oracle instance to test, but  
>> maybe
>> you can think of something offhand that may have affected these  
>> tests.
>>
>> Thanks,
>> Andrus
>>
>>
>>


Re: Oracle tests failing - due to DbEntity qualifier changes ?

Posted by Andrey Razumovsky <ra...@gmail.com>.
Hi Andrus,

Most likely this is my fault. I added cast to BatchAction in
DataDomainActionBuilder class and this causes the exception.
I'll try to remember the reason I did it. It'll be hard, it was before my
vacation, after all..

The biggest problem was that BatchQuery is heavy class, not an interface.
And, to extend its functionality, I needed delegate mechanizms.
Likely would not want OracleLOBBatchAction to extend BatchAction, so let me
try to review the design to see if the class cast can be avoided.

I'm not sure about testDbEntityQualifier though. Could you bring me stack
trace.
If I commit, could you retest on Oracle?

Thanks,
Andrey

2009/8/13 Andrus Adamchik <an...@objectstyle.org>

> Olga just noticed that a bunch of Oracle (and other DB) tests started
> failing since 3.0M6. Here is an Oracle list:
>
> Failed tests:
>
>
>  testDbEntityQualifier(org.apache.cayenne.access.trans.SelectTranslatorTest)
> testDelete(org.apache.cayenne.access.DataContextCharPKTest)
>  testUpdate(org.apache.cayenne.access.DataContextCharPKTest)
>
> Tests in error:
>  testSerializable(org.apache.cayenne.access.MiscTypesTest)
>  testEmptyClob(org.apache.cayenne.access.DataContextClobTest)
>  test5ByteClob(org.apache.cayenne.access.DataContextClobTest)
>  test5KByteClob(org.apache.cayenne.access.DataContextClobTest)
>  test1MBClob(org.apache.cayenne.access.DataContextClobTest)
>  testNullClob(org.apache.cayenne.access.DataContextClobTest)
>
>  testFetchLimit_DistinctResultIterator(org.apache.cayenne.access.jdbc.SelectActionTest)
>  testEmptyBlob(org.apache.cayenne.access.DataContextBlobTest)
>  test5ByteBlob(org.apache.cayenne.access.DataContextBlobTest)
>  test5KByteBlob(org.apache.cayenne.access.DataContextBlobTest)
>  test1MBBlob(org.apache.cayenne.access.DataContextBlobTest)
>  testNullBlob(org.apache.cayenne.access.DataContextBlobTest)
>
> The first few things that she checked were related to OracleAdapter using
> RTRIM function for CHAR columns too handle padding with spaces of the CHAR
> values (e.g. SelectTranslatorTest, DataContextCharPKTest). The LOB tests all
> fail with this error:
>
>
> INFO: SELECT pk_clob_test.nextval FROM DUAL
> Aug 13, 2009 3:59:18 PM org.apache.cayenne.access.QueryLogger logQueryStart
> INFO: --- will run 1 query.
> Aug 13, 2009 3:59:18 PM org.apache.cayenne.access.QueryLogger logQueryError
> INFO: *** error.
> java.lang.ClassCastException:
> org.apache.cayenne.dba.oracle.OracleLOBBatchAction cannot be cast to
> org.apache.cayenne.access.jdbc.BatchAction
>    at
> org.apache.cayenne.access.DataDomainActionBuilder.batchAction(DataDomainActionBuilder.java:49)
>    at
> org.apache.cayenne.access.DataDomainInsertQuery.createSQLAction(DataDomainInsertQuery.java:43)
>    at
> org.apache.cayenne.dba.oracle.OracleAdapter.getAction(OracleAdapter.java:337)
>    at
> org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:86)
>    at org.apache.cayenne.access.DataNode.performQueries(DataNode.java:274)
>    at
> org.apache.cayenne.access.DataDomainFlushAction.runQueries(DataDomainFlushAction.java:226)
>    at
> org.apache.cayenne.access.DataDomainFlushAction.flush(DataDomainFlushAction.java:144)
>    at org.apache.cayenne.access.DataDomain.onSyncFlush(DataDomain.java:824)
>    at org.apache.cayenne.access.DataDomain$2.transform(DataDomain.java:791)
>    at
> org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850)
>    at org.apache.cayenne.access.DataDomain.onSync(DataDomain.java:788)
>    at
> org.apache.cayenne.access.DataContext.flushToParent(DataContext.java:1104)
>    at
> org.apache.cayenne.access.DataContext.commitChanges(DataContext.java:1043)
>    at
> org.apache.cayenne.access.DataContextClobTest.runWithClobSize(DataContextClobTest.java:125)
>    at
> org.apache.cayenne.access.DataContextClobTest.testEmptyClob(DataContextClobTest.java:54)
>
> Andrey, I know you probably don't have Oracle instance to test, but maybe
> you can think of something offhand that may have affected these tests.
>
> Thanks,
> Andrus
>
>
>