From dev-return-8227-apmail-openjpa-dev-archive=openjpa.apache.org@openjpa.apache.org Thu May 22 22:24:18 2008 Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 58065 invoked from network); 22 May 2008 22:24:17 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 22 May 2008 22:24:17 -0000 Received: (qmail 70130 invoked by uid 500); 22 May 2008 22:24:19 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 69967 invoked by uid 500); 22 May 2008 22:24:18 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 69951 invoked by uid 99); 22 May 2008 22:24:18 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 May 2008 15:24:18 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 22 May 2008 22:23:39 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id B7A05234C11C for ; Thu, 22 May 2008 15:23:55 -0700 (PDT) Message-ID: <1277263593.1211495035751.JavaMail.jira@brutus> Date: Thu, 22 May 2008 15:23:55 -0700 (PDT) From: "Sandeep Shrivastava (JIRA)" To: dev@openjpa.apache.org Subject: [jira] Created: (OPENJPA-608) Select Union queries generated to fetch data from all subclasses fails if there is a CLOB field defined in a descending class on Oracle and Sybase MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-Virus-Checked: Checked by ClamAV on apache.org Select Union queries generated to fetch data from all subclasses fails if there is a CLOB field defined in a descending class on Oracle and Sybase -------------------------------------------------------------------------------------------------------------------------------------------------- Key: OPENJPA-608 URL: https://issues.apache.org/jira/browse/OPENJPA-608 Project: OpenJPA Issue Type: Bug Components: jdbc Affects Versions: 1.1.0 Environment: $ java org.apache.openjpa.conf.OpenJPAVersion OpenJPA 1.1.0 version id: openjpa-1.1.0-r422266:656510 Apache svn revision: 422266:656510 os.name: Windows XP os.version: 5.1 os.arch: x86 java.version: 1.6.0_05 java.vendor: BEA Systems, Inc. Reporter: Sandeep Shrivastava Consiider the following entity classes with the given fields. public class PlaceholderTypesA { private int intA; } public class PlaceholderTypesB extends PlaceholderTypesA { private boolean booleanB; private byte byteB; private char charB; private float floatB; private int intB; private String stringB; private String clobB; private Object blobB; } The following code: org.apache.openjpa.kernel.Extent extent = broker.newExtent(PlaceholderTypesA.class, true); List list = extent.list(); generates a SELECT UNION query like: SELECT 0, t0.ID, t0.TYP, t0.VERSN, t0.INTA, NULL, 0, 0, 0, '', 0.0, 0, '' FROM PLACEHOLDERTYPESA t0 UNION ALL SELECT 1, t0.ID, '', t0.VERSN, t0.INTA, t0.BLOBB, t0.BOOLEANB, t0.BYTEB, t0.CHARB, t0.CLOBB, t0.FLOATB, t0.INTB, t0.STRINGB FROM PLACEHOLDERTYPESB t0 Notice that the placeholder value for the CLOBB field is an empty string '' This fails on both Oracle and Sybase as the jdbc drivers for these databases do not do any implicit conversion but instead throw an exception. testlogic] java.sql.SQLSyntaxErrorException: ORA-01790: expression must have same datatype as corresponding expression [testlogic] at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91) [testlogic] at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:112) [testlogic] at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:173) [testlogic] at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) [testlogic] at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) [testlogic] at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1030) [testlogic] at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:194) [testlogic] at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:785) [testlogic] at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:860) [testlogic] at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1186) [testlogic] at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3381) [testlogic] at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3425) [testlogic] at oracle.jdbc.driver.OraclePreparedStatementWrapper.executeQuery(OraclePreparedStatementWrapper.java:1490) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:264) [testlogic] at org.apache.openjpa.lib.jdbc.JDBCEventConnectionDecorator$EventPreparedStatement.executeQuery(JDBCEventConnectionDecorator.java:237) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262) [testlogic] at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1407) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252) [testlogic] at kodo.jdbc.sql.TrueUnion.execute(TrueUnion.java:193) [testlogic] at kodo.jdbc.sql.TrueUnion.execute(TrueUnion.java:170) [testlogic] at org.apache.openjpa.jdbc.sql.LogicalUnion.execute(LogicalUnion.java:208) [testlogic] at org.apache.openjpa.jdbc.kernel.SelectResultObjectProvider.open(SelectResultObjectProvider.java:94) [testlogic] at org.apache.openjpa.lib.rop.ResultObjectProviderIterator.hasNext(ResultObjectProviderIterator.java:69) [testlogic] at org.apache.commons.collections.iterators.IteratorChain.updateCurrentIterator(IteratorChain.java:233) [testlogic] at org.apache.commons.collections.iterators.IteratorChain.hasNext(IteratorChain.java:247) [testlogic] at org.apache.openjpa.kernel.ExtentImpl$CloseableIteratorChain.hasNext(ExtentImpl.java:238) [testlogic] at org.apache.commons.collections.iterators.FilterIterator.setNextObject(FilterIterator.java:182) [testlogic] at org.apache.commons.collections.iterators.FilterIterator.hasNext(FilterIterator.java:93) [testlogic] at org.apache.openjpa.kernel.ExtentImpl$FilterDeletedIterator.hasNext(ExtentImpl.java:288) [testlogic] at org.apache.openjpa.kernel.ExtentImpl.list(ExtentImpl.java:102) [testlogic] at kodo.test.KodoTestCase.deleteAll(KodoTestCase.java:441) [testlogic] at kodo.test.KodoTestCase.deleteAll(KodoTestCase.java:397) [testlogic] at kodo.jdbc.meta.tableperclass.TestUnionPlaceholderTypes.testUnion(TestUnionPlaceholderTypes.java:28) [testlogic] at sun.reflect.GeneratedMethodAccessor206.invoke(Unknown Source) On sybase, [testlogic] 16535 WARN [jdo.jdbcR2.suite.testjdbcstandalone (Main Thread_19)] openjpa.MetaData - OpenJPA cannot map field 'kodo.jdbc.meta.tableperclass.PlaceholderTypesB.blobB' efficiently. It is of an unsupported type. The field value will be serialized to a BLOB by default. [testlogic] com.sybase.jdbc3.jdbc.SybSQLException: Implicit conversion from datatype 'TEXT' to 'VARCHAR' is not allowed. Use the CONVERT function to run this query. [testlogic] at com.sybase.jdbc3.tds.Tds.a(Unknown Source) [testlogic] at com.sybase.jdbc3.tds.Tds.nextResult(Unknown Source) [testlogic] at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(Unknown Source) [testlogic] at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) [testlogic] at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source) [testlogic] at com.sybase.jdbc3.jdbc.SybStatement.queryLoop(Unknown Source) [testlogic] at com.sybase.jdbc3.jdbc.SybStatement.executeQuery(Unknown Source) [testlogic] at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(Unknown Source) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:264) [testlogic] at com.solarmetric.jdbc.PoolConnection$PoolPreparedStatement.executeQuery(PoolConnection.java:260) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262) [testlogic] at org.apache.openjpa.lib.jdbc.JDBCEventConnectionDecorator$EventPreparedStatement.executeQuery(JDBCEventConnectionDecorator.java:237) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262) [testlogic] at org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1407) [testlogic] at org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252) [testlogic] at kodo.jdbc.sql.TrueUnion.execute(TrueUnion.java:193) [testlogic] at kodo.jdbc.sql.TrueUnion.execute(TrueUnion.java:170) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.