Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 30077 invoked from network); 5 Jan 2011 22:59:40 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 5 Jan 2011 22:59:40 -0000 Received: (qmail 59898 invoked by uid 500); 5 Jan 2011 22:59:40 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 59860 invoked by uid 500); 5 Jan 2011 22:59:40 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 59853 invoked by uid 99); 5 Jan 2011 22:59:40 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jan 2011 22:59:40 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 05 Jan 2011 22:59:37 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 6CD622388A2C; Wed, 5 Jan 2011 22:59:16 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1055680 - in /db/derby/code/branches/10.5: ./ java/engine/org/apache/derby/catalog/types/ java/engine/org/apache/derby/impl/sql/ java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/ Date: Wed, 05 Jan 2011 22:59:16 -0000 To: derby-commits@db.apache.org From: kmarsden@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110105225916.6CD622388A2C@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: kmarsden Date: Wed Jan 5 22:59:15 2011 New Revision: 1055680 URL: http://svn.apache.org/viewvc?rev=1055680&view=rev Log: DERBY-4913 10.3 to 10.5 upgrade fails with java.io.StreamCorruptedException: java.lang.ClassCastException: org.apache.derby.catalog.types.OldRoutineType incompatible with org.apache.derby.iapi.types.DataTypeDescriptor Modified: db/derby/code/branches/10.5/ (props changed) db/derby/code/branches/10.5/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/GenericColumnDescriptor.java db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/OldVersions.java db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/PhaseChanger.java db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/UpgradeRun.java db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/_Suite.java Propchange: db/derby/code/branches/10.5/ ------------------------------------------------------------------------------ --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Jan 5 22:59:15 2011 @@ -1,2 +1,2 @@ /db/derby/code/branches/10.6:942027,957000,962738,965351,987678 -/db/derby/code/trunk:757811,764912,769596,769602,769606,769962,772090,772337,772449,772534,774281,777105,779681,782991,785131,785139,785163,785570,785662,788369,788670,788674,788968,789264,790218,791027,792434,793089,793588,794106,794303,794955,795166,795459,796020,796027,796316,796372,797147,798347,798742,800523,803548,803948,805696,808494,808850,809643,810860,812669,816531,816536,819006,822289,823659,824694,827505,829022,829410,830545,831304,831319,832379,833430,835286,881074,881444,882732,884163,885421,885659,887246,888311,892912,897161,898635,901165,901648,901760,902857,903108,905224,908418,908586,909176,910481,910511,911315,911793,915177,915733,916075,916897,917771,918152,918359,921028,927430,928065,929085,934474,936215,938959,940462,940469,942286,942476,942480,942587,946794,948045,948069,951346,951366,952138,952581,954748,955001,955634,956075,956445,956659,958163,959550,962716,965647,967304,980684,986689,986834,999119,1002291,1002682,1002853,1021426,1025795,1040658 +/db/derby/code/trunk:757811,764912,769596,769602,769606,769962,772090,772337,772449,772534,774281,777105,779681,782991,785131,785139,785163,785570,785662,788369,788670,788674,788968,789264,790218,791027,792434,793089,793588,794106,794303,794955,795166,795459,796020,796027,796316,796372,797147,798347,798742,800523,803548,803948,805696,808494,808850,809643,810860,812669,816531,816536,819006,822289,823659,824694,827505,829022,829410,830545,831304,831319,832379,833430,835286,881074,881444,882732,884163,885421,885659,887246,888311,892912,897161,898635,901165,901648,901760,902857,903108,905224,908418,908586,909176,910481,910511,911315,911793,915177,915733,916075,916897,917771,918152,918359,921028,927430,928065,929085,934474,936215,938959,940462,940469,942286,942476,942480,942587,946794,948045,948069,951346,951366,952138,952581,954748,955001,955634,956075,956445,956659,958163,959550,962716,965647,967304,980684,986689,986834,999119,1002291,1002682,1002853,1021426,1025795,1040658,105 3724,1055169 Modified: db/derby/code/branches/10.5/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java?rev=1055680&r1=1055679&r2=1055680&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java (original) +++ db/derby/code/branches/10.5/java/engine/org/apache/derby/catalog/types/RoutineAliasInfo.java Wed Jan 5 22:59:15 2011 @@ -288,7 +288,7 @@ public class RoutineAliasInfo extends Me * @param onDiskType The object read that represents the type. * @return A type descriptor. */ - private static TypeDescriptor getStoredType(Object onDiskType) + public static TypeDescriptor getStoredType(Object onDiskType) { if (onDiskType instanceof OldRoutineType) return ((OldRoutineType) onDiskType).getCatalogType(); Modified: db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/GenericColumnDescriptor.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/GenericColumnDescriptor.java?rev=1055680&r1=1055679&r2=1055680&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/GenericColumnDescriptor.java (original) +++ db/derby/code/branches/10.5/java/engine/org/apache/derby/impl/sql/GenericColumnDescriptor.java Wed Jan 5 22:59:15 2011 @@ -21,6 +21,7 @@ package org.apache.derby.impl.sql; +import org.apache.derby.catalog.types.RoutineAliasInfo; import org.apache.derby.iapi.sql.ResultColumnDescriptor; import org.apache.derby.iapi.types.DataTypeDescriptor; @@ -220,7 +221,7 @@ public final class GenericColumnDescript tableName = (String)fh.get("tableName"); schemaName = (String)fh.get("schemaName"); columnPos = fh.getInt("columnPos"); - type = (DataTypeDescriptor)fh.get("type"); + type = getStoredDataTypeDescriptor(fh.get("type")); isAutoincrement = fh.getBoolean("isAutoincrement"); updatableByCursor = fh.getBoolean("updatableByCursor"); } @@ -248,4 +249,27 @@ public final class GenericColumnDescript return ""; } } + + /** + * When retrieving a DataTypeDescriptor, it might just be a regular + * DataTypeDescriptor or may be an OldRoutineType, as used for Routine + * parameters and return values prior to DERBY-2775. If it is not a regular + * DataTypeDescriptor, it must be an OldRoutineType, so convert it to a + * DataTypeDescriptor DERBY-4913 + * + * @param o + * object as obtained by fh.get("type") in readExternal + * @return DataTypeDescriptor + */ + private DataTypeDescriptor getStoredDataTypeDescriptor(Object o) { + + if (o instanceof DataTypeDescriptor) + return (DataTypeDescriptor) o; + else + // Must be an OldRoutineType, so we will convert it to a + // DataTypeDescriptor for our purposes + return DataTypeDescriptor + .getType(RoutineAliasInfo.getStoredType(o)); + } + } Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/OldVersions.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/OldVersions.java?rev=1055680&r1=1055679&r2=1055680&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/OldVersions.java (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/OldVersions.java Wed Jan 5 22:59:15 2011 @@ -49,6 +49,10 @@ public class OldVersions {10, 4, 2, 0}, // 10.4.2.0 (September 05, 2008 / SVN 693552) }; + //Constant for special upgrade testing with both upgrade and create + // set. We just test this with one version in the interest of time + // DERBY-4913 + public static int[] VERSION_10_3_3_0= new int[] {10,3,3,0}; /** *

* Get an array of versions supported by this platform. Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/PhaseChanger.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/PhaseChanger.java?rev=1055680&r1=1055679&r2=1055680&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/PhaseChanger.java (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/PhaseChanger.java Wed Jan 5 22:59:15 2011 @@ -45,13 +45,17 @@ final class PhaseChanger extends BaseTes private ClassLoader loader; private ClassLoader previousLoader; private boolean trace = false; + private String upgradeAttributes="upgrade=true"; public PhaseChanger(Test test, int phase, - ClassLoader loader, int[] version) { + ClassLoader loader, int[] version, boolean useCreateOnUpgrade) { super(test); this.phase = phase; this.loader = loader; this.version = version; + if (useCreateOnUpgrade) { + upgradeAttributes += ";create=true"; + } } /** @@ -75,6 +79,9 @@ final class PhaseChanger extends BaseTes + "." + ((int[]) UpgradeChange.oldVersion.get())[3]; BaseTestCase.traceit("Test upgrade from: " + versStr + ", phase: " + UpgradeChange.PHASES[phase]); + if (UpgradeChange.PHASES[phase].equals("UPGRADE")) { + BaseTestCase.traceit("Upgrade attributes = " + upgradeAttributes); + } } if (loader != null) { @@ -99,7 +106,7 @@ final class PhaseChanger extends BaseTes case UpgradeChange.PH_HARD_UPGRADE: JDBCDataSource.setBeanProperty(ds, "connectionAttributes", - "upgrade=true"); + upgradeAttributes); break; default: break; Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/UpgradeRun.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/UpgradeRun.java?rev=1055680&r1=1055679&r2=1055680&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/UpgradeRun.java (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/UpgradeRun.java Wed Jan 5 22:59:15 2011 @@ -76,7 +76,7 @@ class UpgradeRun extends UpgradeClassLoa new AdditionalDb("ROLES_10_5", false) }; - public final static Test suite(final int[] version) { + public final static Test suite(final int[] version, boolean useCreateOnUpgrade) { ClassLoader oldLoader = makeClassLoader( version ); @@ -114,7 +114,7 @@ class UpgradeRun extends UpgradeClassLoa + " Upgrade Phase: " + UpgradeChange.PHASES[phase] + " ", phase, version); - Test phaseSet = new PhaseChanger(phaseTests, phase, loader, version); + Test phaseSet = new PhaseChanger(phaseTests, phase, loader, version, useCreateOnUpgrade); phaseSet = handleJavaSE6(phase, version, phaseSet); suite.addTest(phaseSet); } Modified: db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/_Suite.java URL: http://svn.apache.org/viewvc/db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/_Suite.java?rev=1055680&r1=1055679&r2=1055680&view=diff ============================================================================== --- db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/_Suite.java (original) +++ db/derby/code/branches/10.5/java/testing/org/apache/derbyTesting/functionTests/tests/upgradeTests/_Suite.java Wed Jan 5 22:59:15 2011 @@ -20,6 +20,8 @@ limitations under the License. */ package org.apache.derbyTesting.functionTests.tests.upgradeTests; +import java.util.Arrays; + import junit.framework.Test; import junit.framework.TestSuite; @@ -130,9 +132,15 @@ public class _Suite extends BaseTestCase old = OldVersions.getSupportedVersions(); for (int i = 0; i < old.length; i++) { - suite.addTest(UpgradeRun.suite(old[i])); + // DERBY-4913. Test upgrade and create together for 10.3.3.0 since + // that combination seems to trigger a different code path. + if (Arrays.equals(old[i],OldVersions.VERSION_10_3_3_0)) + suite.addTest(UpgradeRun.suite(old[i], true)); + else + suite.addTest(UpgradeRun.suite(old[i], false)); } + return suite; }