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 "Knut Anders Hatlen (JIRA)" <ji...@apache.org> on 2010/11/05 20:18:42 UTC

[jira] Created: (DERBY-4888) ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server

ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server
------------------------------------------------------------------------------------------------

                 Key: DERBY-4888
                 URL: https://issues.apache.org/jira/browse/DERBY-4888
             Project: Derby
          Issue Type: Bug
          Components: JDBC, Network Client
    Affects Versions: 10.7.1.0
            Reporter: Knut Anders Hatlen
            Assignee: Knut Anders Hatlen


I noticed that DESCRIBE didn't work when I tried to connect to a 10.6 server with ij/client driver at version 10.7.

ij> describe t;
JAVA ERROR: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
	at org.apache.derby.client.am.DatabaseMetaData.getMetaDataInfoBoolean(DatabaseMetaData.java:2401)
	at org.apache.derby.client.am.DatabaseMetaData.storesLowerCaseIdentifiers(DatabaseMetaData.java:191)
	at org.apache.derby.impl.tools.ij.ij.caIdentifier(ij.java:3040)
	at org.apache.derby.impl.tools.ij.ij.DescTableStatement(ij.java:1624)
	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:1121)
	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:341)
	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:261)
	at org.apache.derby.impl.tools.ij.Main.go(Main.java:229)
	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:184)
	at org.apache.derby.impl.tools.ij.Main.main(Main.java:75)
	at org.apache.derby.tools.ij.main(ij.java:59)
	at org.apache.derby.iapi.tools.run.main(run.java:53)

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


[jira] Commented: (DERBY-4888) ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server

Posted by "Bryan Pendleton (JIRA)" <ji...@apache.org>.
    [ https://issues.apache.org/jira/browse/DERBY-4888?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12928854#action_12928854 ] 

Bryan Pendleton commented on DERBY-4888:
----------------------------------------

Both the test and the fix look clear and straightforward. Thanks for catching this problem!

+1.


> ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server
> ------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4888
>                 URL: https://issues.apache.org/jira/browse/DERBY-4888
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Network Client
>    Affects Versions: 10.7.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: boolean.diff, test.diff
>
>
> I noticed that DESCRIBE didn't work when I tried to connect to a 10.6 server with ij/client driver at version 10.7.
> ij> describe t;
> JAVA ERROR: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> 	at org.apache.derby.client.am.DatabaseMetaData.getMetaDataInfoBoolean(DatabaseMetaData.java:2401)
> 	at org.apache.derby.client.am.DatabaseMetaData.storesLowerCaseIdentifiers(DatabaseMetaData.java:191)
> 	at org.apache.derby.impl.tools.ij.ij.caIdentifier(ij.java:3040)
> 	at org.apache.derby.impl.tools.ij.ij.DescTableStatement(ij.java:1624)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:1121)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:341)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:261)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:229)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:184)
> 	at org.apache.derby.impl.tools.ij.Main.main(Main.java:75)
> 	at org.apache.derby.tools.ij.main(ij.java:59)
> 	at org.apache.derby.iapi.tools.run.main(run.java:53)

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


[jira] Updated: (DERBY-4888) ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server

Posted by "Knut Anders Hatlen (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-4888?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen updated DERBY-4888:
--------------------------------------

    Attachment: test.diff

Attaching a test case that exposes the bug. When running the compatibility test with 10.6.1.0 server and 10.7 client, I get this error:

There was 1 error:
1) testJDBCDriver(org.apache.derbyTesting.functionTests.tests.junitTests.compatibility.JDBCDriverTest)java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
	at org.apache.derby.client.am.DatabaseMetaData.getMetaDataInfoBoolean(DatabaseMetaData.java:2401)
	at org.apache.derby.client.am.DatabaseMetaData.storesLowerCaseIdentifiers(DatabaseMetaData.java:191)
	at org.apache.derbyTesting.functionTests.tests.junitTests.compatibility.JDBCDriverTest.derby_4888_test(JDBCDriverTest.java:383)
	at org.apache.derbyTesting.functionTests.tests.junitTests.compatibility.JDBCDriverTest.testJDBCDriver(JDBCDriverTest.java:257)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at org.apache.derbyTesting.functionTests.tests.junitTests.compatibility.CompatibilitySuite.main(CompatibilitySuite.java:147)

The test case passes with the suggested fix.

> ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server
> ------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4888
>                 URL: https://issues.apache.org/jira/browse/DERBY-4888
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Network Client
>    Affects Versions: 10.7.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: boolean.diff, test.diff
>
>
> I noticed that DESCRIBE didn't work when I tried to connect to a 10.6 server with ij/client driver at version 10.7.
> ij> describe t;
> JAVA ERROR: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> 	at org.apache.derby.client.am.DatabaseMetaData.getMetaDataInfoBoolean(DatabaseMetaData.java:2401)
> 	at org.apache.derby.client.am.DatabaseMetaData.storesLowerCaseIdentifiers(DatabaseMetaData.java:191)
> 	at org.apache.derby.impl.tools.ij.ij.caIdentifier(ij.java:3040)
> 	at org.apache.derby.impl.tools.ij.ij.DescTableStatement(ij.java:1624)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:1121)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:341)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:261)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:229)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:184)
> 	at org.apache.derby.impl.tools.ij.Main.main(Main.java:75)
> 	at org.apache.derby.tools.ij.main(ij.java:59)
> 	at org.apache.derby.iapi.tools.run.main(run.java:53)

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


[jira] Updated: (DERBY-4888) ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server

Posted by "Knut Anders Hatlen (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-4888?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen updated DERBY-4888:
--------------------------------------

    Attachment: boolean.diff

The problem appears to be that the client thinks 10.6 sends boolean meta-data values as java.lang.Boolean objects because of a typo in this method in client.am.DatabaseMetaData:

    final public boolean serverSupportsBooleanValues() {
        return supportsUDTs_;
    }

It should return supportsBooleanValues_ (true for server >= 10.7) instead of supportsUDTs_ (true for server >= 10.6). The attached patch makes the ClassCastException go away for me.

> ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server
> ------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4888
>                 URL: https://issues.apache.org/jira/browse/DERBY-4888
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Network Client
>    Affects Versions: 10.7.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>         Attachments: boolean.diff
>
>
> I noticed that DESCRIBE didn't work when I tried to connect to a 10.6 server with ij/client driver at version 10.7.
> ij> describe t;
> JAVA ERROR: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> 	at org.apache.derby.client.am.DatabaseMetaData.getMetaDataInfoBoolean(DatabaseMetaData.java:2401)
> 	at org.apache.derby.client.am.DatabaseMetaData.storesLowerCaseIdentifiers(DatabaseMetaData.java:191)
> 	at org.apache.derby.impl.tools.ij.ij.caIdentifier(ij.java:3040)
> 	at org.apache.derby.impl.tools.ij.ij.DescTableStatement(ij.java:1624)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:1121)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:341)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:261)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:229)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:184)
> 	at org.apache.derby.impl.tools.ij.Main.main(Main.java:75)
> 	at org.apache.derby.tools.ij.main(ij.java:59)
> 	at org.apache.derby.iapi.tools.run.main(run.java:53)

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


[jira] Closed: (DERBY-4888) ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server

Posted by "Knut Anders Hatlen (JIRA)" <ji...@apache.org>.
     [ https://issues.apache.org/jira/browse/DERBY-4888?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Knut Anders Hatlen closed DERBY-4888.
-------------------------------------

       Resolution: Fixed
    Fix Version/s: 10.7.1.0

Thanks for taking a look at the patch, Bryan!

Committed revision 1031973.

> ClassCastException when calling boolean meta-data functions with 10.7 client against 10.6 server
> ------------------------------------------------------------------------------------------------
>
>                 Key: DERBY-4888
>                 URL: https://issues.apache.org/jira/browse/DERBY-4888
>             Project: Derby
>          Issue Type: Bug
>          Components: JDBC, Network Client
>    Affects Versions: 10.7.1.0
>            Reporter: Knut Anders Hatlen
>            Assignee: Knut Anders Hatlen
>             Fix For: 10.7.1.0
>
>         Attachments: boolean.diff, test.diff
>
>
> I noticed that DESCRIBE didn't work when I tried to connect to a 10.6 server with ij/client driver at version 10.7.
> ij> describe t;
> JAVA ERROR: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Boolean
> 	at org.apache.derby.client.am.DatabaseMetaData.getMetaDataInfoBoolean(DatabaseMetaData.java:2401)
> 	at org.apache.derby.client.am.DatabaseMetaData.storesLowerCaseIdentifiers(DatabaseMetaData.java:191)
> 	at org.apache.derby.impl.tools.ij.ij.caIdentifier(ij.java:3040)
> 	at org.apache.derby.impl.tools.ij.ij.DescTableStatement(ij.java:1624)
> 	at org.apache.derby.impl.tools.ij.ij.ijStatement(ij.java:1121)
> 	at org.apache.derby.impl.tools.ij.utilMain.runScriptGuts(utilMain.java:341)
> 	at org.apache.derby.impl.tools.ij.utilMain.go(utilMain.java:261)
> 	at org.apache.derby.impl.tools.ij.Main.go(Main.java:229)
> 	at org.apache.derby.impl.tools.ij.Main.mainCore(Main.java:184)
> 	at org.apache.derby.impl.tools.ij.Main.main(Main.java:75)
> 	at org.apache.derby.tools.ij.main(ij.java:59)
> 	at org.apache.derby.iapi.tools.run.main(run.java:53)

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