You are viewing a plain text version of this content. The canonical link for it is here.
Posted to derby-dev@db.apache.org by "Kathey Marsden (JIRA)" <ji...@apache.org> on 2007/11/14 23:38:43 UTC

[jira] Updated: (DERBY-3032) java.lang.ClassCastException returning null from a case statement in subquery

     [ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Kathey Marsden updated DERBY-3032:
----------------------------------

    Component/s: SQL

> java.lang.ClassCastException returning null from a case statement  in subquery
> ------------------------------------------------------------------------------
>
>                 Key: DERBY-3032
>                 URL: https://issues.apache.org/jira/browse/DERBY-3032
>             Project: Derby
>          Issue Type: Bug
>          Components: SQL
>    Affects Versions: 10.3.1.5
>            Reporter: Kathey Marsden
>            Assignee: Kathey Marsden
>             Fix For: 10.3.1.5, 10.4.0.0
>
>         Attachments: derby-3032_diff.txt, derby-3032_stat.txt
>
>
> The following query returning NULL date from a case statement in a subquery causees a ClassCastException in 10.3.
> The query works fine in 10.2
> ij> create table t (d date, vc varchar(30));
> 0 rows inserted/updated/deleted
> ij> insert into t values(CURRENT_DATE, 'hello');
> 1 row inserted/updated/deleted
> ij> SELECT d from t where d = (SELECT CASE WHEN 1 = 1 THEN CURRENT_DATE ELSE NULL END from t);
> D
> ----------
> 2007-08-28
> 1 row selected
> ij> SELECT d from t where d = (SELECT CASE WHEN 1 = 0 THEN CURRENT_DATE  ELSE NULL END from t);
> D
> ----------
> ERROR 38000: The exception 'java.lang.ClassCastException: org.apache.derby.iapi.types.SQLChar incompatible with org.apac
> he.derby.iapi.types.DateTimeDataValue' was thrown while evaluating an expression.
> java.sql.SQLException: The exception 'java.lang.ClassCastException: org.apache.derby.iapi.types.SQLChar incompatible wit
> h org.apache.derby.iapi.types.DateTimeDataValue' was thrown while evaluating an expression.
>        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
>        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:88)
>        at org.apache.derby.impl.jdbc.Util.seeNextException(Util.java:224)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:398)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
>        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1572)
>        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4323)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:464)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:368)
>        at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:382)
>        at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:338)
>        at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:241)
>        at org.apache.derby.tools.JDBCDisplayUtil.DisplayResults(JDBCDisplayUtil.java:229)
>        at org.apache.derby.impl.tools.ij.utilMain.displayResult(utilMain.java:449)
>        at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:523)
>        at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:364)
>        at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:262)
>        at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
>        at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
>        at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:56)
>        at org.apache.derby.tools.ij.main(ij.java:71)
> Caused by: java.sql.SQLException: Java exception: 'org.apache.derby.iapi.types.SQLChar incompatible with org.apache.derb
> y.iapi.types.DateTimeDataValue: java.lang.ClassCastException'.
>        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
>        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:88)
>        at org.apache.derby.impl.jdbc.Util.javaException(Util.java:245)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
>        ... 19 more
> Caused by: java.lang.ClassCastException: org.apache.derby.iapi.types.SQLChar incompatible with org.apache.derby.iapi.typ
> es.DateTimeDataValue
>        at org.apache.derby.exe.ac12564092x0114xaec2x9627x0000002183d82.g0(Unknown Source)
>        at org.apache.derby.exe.ac12564092x0114xaec2x9627x0000002183d82.e1(Unknown Source)
>        at org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:141)
>        at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(ProjectRestrictResultSet.java:267)
>        at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(BasicNoPutResultSetImpl.java:468)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:424)
>        ... 13 more
> ERROR XJ001: Java exception: 'org.apache.derby.iapi.types.SQLChar incompatible with org.apache.derby.iapi.types.DateTime
> DataValue: java.lang.ClassCastException'.
> java.sql.SQLException: Java exception: 'org.apache.derby.iapi.types.SQLChar incompatible with org.apache.derby.iapi.type
> s.DateTimeDataValue: java.lang.ClassCastException'.
>        at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:45)
>        at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Util.java:88)
>        at org.apache.derby.impl.jdbc.Util.javaException(Util.java:245)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:403)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(TransactionResourceImpl.java:398)
>        at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(TransactionResourceImpl.java:346)
>        at org.apache.derby.impl.jdbc.EmbedConnection.handleException(EmbedConnection.java:1572)
>        at org.apache.derby.impl.jdbc.ConnectionChild.handleException(ConnectionChild.java:81)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.closeOnTransactionError(EmbedResultSet.java:4323)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:464)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.next(EmbedResultSet.java:368)
>        at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:382)
>        at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:338)
>        at org.apache.derby.tools.JDBCDisplayUtil.indent_DisplayResults(JDBCDisplayUtil.java:241)
>        at org.apache.derby.tools.JDBCDisplayUtil.DisplayResults(JDBCDisplayUtil.java:229)
>        at org.apache.derby.impl.tools.ij.utilMain.displayResult(utilMain.java:449)
>        at org.apache.derby.impl.tools.ij.utilMain.doCatch(utilMain.java:523)
>        at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:364)
>        at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:262)
>        at org.apache.derby.impl.tools.ij.Main.go(Main.java:215)
>        at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:181)
>        at org.apache.derby.impl.tools.ij.Main14.main(Main14.java:56)
>        at org.apache.derby.tools.ij.main(ij.java:71)
> Caused by: java.lang.ClassCastException: org.apache.derby.iapi.types.SQLChar incompatible with org.apache.derby.iapi.typ
> es.DateTimeDataValue
>        at org.apache.derby.exe.ac12564092x0114xaec2x9627x0000002183d82.g0(Unknown Source)
>        at org.apache.derby.exe.ac12564092x0114xaec2x9627x0000002183d82.e1(Unknown Source)
>        at org.apache.derby.impl.services.reflect.DirectCall.invoke(ReflectGeneratedClass.java:141)
>        at org.apache.derby.impl.sql.execute.ProjectRestrictResultSet.getNextRowCore(ProjectRestrictResultSet.java:267)
>        at org.apache.derby.impl.sql.execute.BasicNoPutResultSetImpl.getNextRow(BasicNoPutResultSetImpl.java:468)
>        at org.apache.derby.impl.jdbc.EmbedResultSet.movePosition(EmbedResultSet.java:424)
>        ... 13 more

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.