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/08/29 20:28:30 UTC
[jira] Created: (DERBY-3032) java.lang.ClassCastException returning
null from a case statement in subquery
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
Affects Versions: 10.3.1.4
Reporter: Kathey Marsden
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.
[jira] Updated: (DERBY-3032) java.lang.ClassCastException returning
null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ 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.
[jira] Commented: (DERBY-3032) java.lang.ClassCastException
returning null from a case statement in subquery
Posted by "A B (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12523930 ]
A B commented on DERBY-3032:
----------------------------
> So apparently findtype is not enough as it leaves all the SQL NULL's bound as CHARS.
Good catch, Kathey. Thank you for picking this up and looking into it...
> 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
> Affects Versions: 10.3.1.5
> Reporter: Kathey Marsden
> Assignee: Kathey Marsden
>
> 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.
[jira] Updated: (DERBY-3032) java.lang.ClassCastException returning
null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden updated DERBY-3032:
----------------------------------
Attachment: derby-3032_stat.txt
derby-3032_diff.txt
Attached is an initial patch for this issue. My solution was to have recastNullNodes rebind the expressions whenever a cast is performed. This corrected the ClassCastException and preserved the performance for the DERBY-2986 issue.
While this approach seems to work fine, I somehow have the feeling that the indirect binding through both findType and recastNullNodes is a bit unclear. I added comments to try to make it apparent that that is what is happenning, but wonder if there is better way to reorganize this to make it clearer. Suggestions welcome.
Tests are running now.
> 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
> Affects Versions: 10.3.1.5
> Reporter: Kathey Marsden
> Assignee: Kathey Marsden
> 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.
[jira] Updated: (DERBY-3032) java.lang.ClassCastException returning
null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden updated DERBY-3032:
----------------------------------
Affects Version/s: (was: 10.3.1.4)
10.3.1.5
> 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
> Affects Versions: 10.3.1.5
> Reporter: Kathey Marsden
>
> 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.
[jira] Resolved: (DERBY-3032) java.lang.ClassCastException
returning null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden resolved DERBY-3032.
-----------------------------------
Resolution: Fixed
Fix Version/s: 10.4.0.0
10.3.1.5
fixed in trunk and 10.3 branch
> 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
> 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.
[jira] Assigned: (DERBY-3032) java.lang.ClassCastException
returning null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden reassigned DERBY-3032:
-------------------------------------
Assignee: Kathey Marsden
> 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
> Affects Versions: 10.3.1.5
> Reporter: Kathey Marsden
> Assignee: Kathey Marsden
>
> 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.
[jira] Commented: (DERBY-3032) java.lang.ClassCastException
returning null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12523923 ]
Kathey Marsden commented on DERBY-3032:
---------------------------------------
The change comments for DERBY-2986 say:
/* Following call to "findType()" will indirectly bind the
* expressions in the thenElseList, so no need to call
* "thenElseList.bindExpression(...)" after we do this.
* DERBY-2986.
*/
The javadoc for findtype says:
/**
* This method is a 'prebind.' We need to determine what the types of
* the nodes are going to be before we can set all the SQLParsed NULL's
* to the appropriate type. After we bind, however, we want to ignore
* the SQLParsed NULL's which will be bound to CHAR. Also, we might
* have to delve into the CASE Expression tree.
So apparently findtype is not enough as it leaves all the SQL NULL's bound as CHARS. Still we should be able to avoid the exponential processing, especially for the case where nulls are not involved as in DERBY-2986
> 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
> Affects Versions: 10.3.1.5
> Reporter: Kathey Marsden
> Assignee: Kathey Marsden
>
> 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.
[jira] Closed: (DERBY-3032) java.lang.ClassCastException returning
null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kathey Marsden closed DERBY-3032.
---------------------------------
> 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
> 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.
[jira] Commented: (DERBY-3032) java.lang.ClassCastException
returning null from a case statement in subquery
Posted by "A B (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12524774 ]
A B commented on DERBY-3032:
----------------------------
Thank you for the patch, Kathey. I verified that it solves the reported problem and does not affect the performance as seen in DERBY-2986. I also ran the new test case before and after applying the engine changes, and it behaved as expected (failed without the fix, passed with it).
> I added comments to try to make it apparent that that is what is happenning, but wonder if
> there is better way to reorganize this to make it clearer
I think the comments help (thanks for adding them), but I also agree that some sort of code reorganization might be good here. The code as it is feels a tad awkward. Nonetheless, the patch as posted solves the problem so I'm +1 to commit. If anyone has the time to do some re-org as follow-up work, that'd be great--but I wouldn't let that block the current patch.
Thank you again for picking this one up and resolving it so quickly.
> 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
> Affects Versions: 10.3.1.5
> Reporter: Kathey Marsden
> Assignee: Kathey Marsden
> 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.
[jira] Commented: (DERBY-3032) java.lang.ClassCastException
returning null from a case statement in subquery
Posted by "Kathey Marsden (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/DERBY-3032?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12524236 ]
Kathey Marsden commented on DERBY-3032:
---------------------------------------
Tests ran ok. Please review.
> 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
> Affects Versions: 10.3.1.5
> Reporter: Kathey Marsden
> Assignee: Kathey Marsden
> 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.