[
https://issues.apache.org/jira/browse/DERBY-6785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14254749#comment-14254749
]
Rick Hillegas commented on DERBY-6785:
--------------------------------------
Hi Mike,
I don't see a problem with adding serialVersionUID to TypeDescriptorImpl. The
class is a Formatable, so Derby uses the Formatable machinery when
(de)serializing this metadata, and serialVersionUID should be ignored. But that
alone won't fix the problem. The first thing that
TypeDescriptorImpl.writeExternal() does is to serialize another Formatable (a
BaseTypeIdImpl). BaseTypeIdImpl doesn't have a serialVersionUID either.
I don't understand what the goal is, though. We can and should reserve the
right to change the serialized format of these internal classes. Adding
serialVersionUIDs won't guarantee protection from cross-release serialization
problems.
Thanks,
-Rick
> Latest JDBC driver from 10.11.1.1 gives exception when trying to connect to
> 10.10.2.0
> -------------------------------------------------------------------------------------
>
> Key: DERBY-6785
> URL: https://issues.apache.org/jira/browse/DERBY-6785
> Project: Derby
> Issue Type: Bug
> Components: JDBC
> Affects Versions: 10.10.2.0
> Environment: Win 7, Win 8, Mac OSX and Ubuntu 14.04
> Reporter: tariq rahiman
> Fix For: 10.11.1.3
>
> Attachments: DERBY-6785.sql, Screen Shot 2014-12-18 at 5.13.15
> PM.png, Screen Shot 2014-12-18 at 5.13.58 PM.png, derby.log, log.zip
>
>
> I have downloaded 10.11.1.1 and 10.10.2.0 from Apache Derby download and
> installed them in 2 separate machines.
> I have a GUI client that connects to the toursdb database of both versions
> using a JDBC connection that makes uses of derby.jar, derbyclient.jar and
> derbynet.jar
> I use the latest JDBC drivers from 10.11.1.1 to connect to both the database
> versions. The drivers I make use of are derby.jar, derbyclient.jar and
> derbynet.jar
> Connection to 10.10.2.0 is successful, but when I try to Alter/Drop Tables
> and Views, Create an Index or try to retrieve column information of tables, i
> get the below exception:
> The classpath settings for the two environments are identical and If i
> replace the derby.jar, derbyclient.jar and derbynet.jar of the latest release
> with the 10.10.2.0 ones, it works fine with 10.10.2.0.
> So my question is backward compatibility of the latest Apache Derby JDBC
> drivers. Can I use 10.11.1.1 jars to connect to 10.10.2.0 ?
> Exception:
> java.sql.SQLException: Error marshalling or unmarshalling a user defined
> type: org.apache.derby.catalog.types.TypeDescriptorImpl; local class
> incompatible: stream classdesc serialVersionUID = -5485274209578709396, local
> class serialVersionUID = -3812847726962874375
> at
> org.apache.derby.client.am.SQLExceptionFactory.getSQLException(Unknown Source)
> at org.apache.derby.client.am.SqlException.getSQLException(Unknown
> Source)
> at org.apache.derby.client.am.ClientResultSet.getString(Unknown Source)
> at \\...\\ .\\हिñçêČάй語简�?한\\.cꋦᚹ⣞ꊼ 8.a(Unknown Source)
> at com.common.ui.tree.eꏷꃒꆶᡰ.a(Unknown Source)
> at com.common.ui.tree.eꏷꃒꆶᡰ.wR(Unknown Source)
> at com.common.ui.tree.eꏷꃒꆶᡰ$1.process(Unknown Source)
> at com.common.ui.util.BackgroundThread.run(Unknown Source)
> Caused by: ERROR XN020: Error marshalling or unmarshalling a user defined
> type: org.apache.derby.catalog.types.TypeDescriptorImpl; local class
> incompatible: stream classdesc serialVersionUID = -5485274209578709396, local
> class serialVersionUID = -3812847726962874375
> at org.apache.derby.client.am.Cursor.get_UDT(Unknown Source)
> at org.apache.derby.client.am.Cursor.getString(Unknown Source)
> ... 6 more
> Caused by: java.io.InvalidClassException:
> org.apache.derby.catalog.types.TypeDescriptorImpl; local class incompatible:
> stream classdesc serialVersionUID = -5485274209578709396, local class
> serialVersionUID = -3812847726962874375
> at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617)
> at
> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622)
> at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
> at
> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
> ... 8 more
> Let me know if you need any more information
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)