You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ddlutils-dev@db.apache.org by to...@apache.org on 2007/02/23 07:55:47 UTC

svn commit: r510850 - in /db/ddlutils/trunk/src: java/org/apache/ddlutils/PlatformFactory.java java/org/apache/ddlutils/platform/sybase/SybaseASE15Platform.java test/org/apache/ddlutils/io/TestAlteration.java test/org/apache/ddlutils/io/TestMisc.java

Author: tomdz
Date: Thu Feb 22 22:55:47 2007
New Revision: 510850

URL: http://svn.apache.org/viewvc?view=rev&rev=510850
Log:
Adjusted tests to be able to run against Sybase ASE
Added Sybase ASE 15 platform for making the tests run on both ASE 12.5 and ASE 15

Added:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseASE15Platform.java
Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java
    db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java?view=diff&rev=510850&r1=510849&r2=510850
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/PlatformFactory.java Thu Feb 22 22:55:47 2007
@@ -40,6 +40,7 @@
 import org.apache.ddlutils.platform.oracle.Oracle9Platform;
 import org.apache.ddlutils.platform.postgresql.PostgreSqlPlatform;
 import org.apache.ddlutils.platform.sapdb.SapDbPlatform;
+import org.apache.ddlutils.platform.sybase.SybaseASE15Platform;
 import org.apache.ddlutils.platform.sybase.SybasePlatform;
 
 /**
@@ -181,25 +182,26 @@
      */
     private static void registerPlatforms()
     {
-        addPlatform(_platforms, AxionPlatform.DATABASENAME,      AxionPlatform.class);
-        addPlatform(_platforms, CloudscapePlatform.DATABASENAME, CloudscapePlatform.class);
-        addPlatform(_platforms, Db2Platform.DATABASENAME,        Db2Platform.class);
-        addPlatform(_platforms, Db2v8Platform.DATABASENAME,      Db2v8Platform.class);
-        addPlatform(_platforms, DerbyPlatform.DATABASENAME,      DerbyPlatform.class);
-        addPlatform(_platforms, FirebirdPlatform.DATABASENAME,   FirebirdPlatform.class);
-        addPlatform(_platforms, HsqlDbPlatform.DATABASENAME,     HsqlDbPlatform.class);
-        addPlatform(_platforms, InterbasePlatform.DATABASENAME,  InterbasePlatform.class);
-        addPlatform(_platforms, MaxDbPlatform.DATABASENAME,      MaxDbPlatform.class);
-        addPlatform(_platforms, MckoiPlatform.DATABASENAME,      MckoiPlatform.class);
-        addPlatform(_platforms, MSSqlPlatform.DATABASENAME,      MSSqlPlatform.class);
-        addPlatform(_platforms, MySqlPlatform.DATABASENAME,      MySqlPlatform.class);
-        addPlatform(_platforms, MySql50Platform.DATABASENAME,    MySql50Platform.class);
-        addPlatform(_platforms, Oracle8Platform.DATABASENAME,    Oracle8Platform.class);
-        addPlatform(_platforms, Oracle9Platform.DATABASENAME,    Oracle9Platform.class);
-        addPlatform(_platforms, Oracle10Platform.DATABASENAME,   Oracle10Platform.class);
-        addPlatform(_platforms, PostgreSqlPlatform.DATABASENAME, PostgreSqlPlatform.class);
-        addPlatform(_platforms, SapDbPlatform.DATABASENAME,      SapDbPlatform.class);
-        addPlatform(_platforms, SybasePlatform.DATABASENAME,     SybasePlatform.class);
+        addPlatform(_platforms, AxionPlatform.DATABASENAME,       AxionPlatform.class);
+        addPlatform(_platforms, CloudscapePlatform.DATABASENAME,  CloudscapePlatform.class);
+        addPlatform(_platforms, Db2Platform.DATABASENAME,         Db2Platform.class);
+        addPlatform(_platforms, Db2v8Platform.DATABASENAME,       Db2v8Platform.class);
+        addPlatform(_platforms, DerbyPlatform.DATABASENAME,       DerbyPlatform.class);
+        addPlatform(_platforms, FirebirdPlatform.DATABASENAME,    FirebirdPlatform.class);
+        addPlatform(_platforms, HsqlDbPlatform.DATABASENAME,      HsqlDbPlatform.class);
+        addPlatform(_platforms, InterbasePlatform.DATABASENAME,   InterbasePlatform.class);
+        addPlatform(_platforms, MaxDbPlatform.DATABASENAME,       MaxDbPlatform.class);
+        addPlatform(_platforms, MckoiPlatform.DATABASENAME,       MckoiPlatform.class);
+        addPlatform(_platforms, MSSqlPlatform.DATABASENAME,       MSSqlPlatform.class);
+        addPlatform(_platforms, MySqlPlatform.DATABASENAME,       MySqlPlatform.class);
+        addPlatform(_platforms, MySql50Platform.DATABASENAME,     MySql50Platform.class);
+        addPlatform(_platforms, Oracle8Platform.DATABASENAME,     Oracle8Platform.class);
+        addPlatform(_platforms, Oracle9Platform.DATABASENAME,     Oracle9Platform.class);
+        addPlatform(_platforms, Oracle10Platform.DATABASENAME,    Oracle10Platform.class);
+        addPlatform(_platforms, PostgreSqlPlatform.DATABASENAME,  PostgreSqlPlatform.class);
+        addPlatform(_platforms, SapDbPlatform.DATABASENAME,       SapDbPlatform.class);
+        addPlatform(_platforms, SybasePlatform.DATABASENAME,      SybasePlatform.class);
+        addPlatform(_platforms, SybaseASE15Platform.DATABASENAME, SybaseASE15Platform.class);
     }
 
     /**

Added: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseASE15Platform.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseASE15Platform.java?view=auto&rev=510850
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseASE15Platform.java (added)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseASE15Platform.java Thu Feb 22 22:55:47 2007
@@ -0,0 +1,47 @@
+package org.apache.ddlutils.platform.sybase;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+/**
+ * The platform implementation for Sybase ASE 15 and above.
+ * 
+ * @version $Revision:  $
+ */
+public class SybaseASE15Platform extends SybasePlatform
+{
+    /** Database name of this platform. */
+    public static final String DATABASENAME     = "SybaseASE15";
+    
+    /**
+     * Creates a new platform instance.
+     */
+    public SybaseASE15Platform()
+    {
+        super();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public String getName()
+    {
+        return DATABASENAME;
+    }
+}

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java?view=diff&rev=510850&r1=510849&r2=510850
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestAlteration.java Thu Feb 22 22:55:47 2007
@@ -625,9 +625,9 @@
             return;
         }
 
-        boolean isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
-        String  model1Xml; 
-        String  model2Xml;
+        boolean      isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String model1Xml; 
+        final String model2Xml;
 
         if (isSybase)
         {
@@ -731,15 +731,15 @@
     	}
 
         // we need special catering for Sybase which does not support identity for INTEGER columns
-        boolean isSybase  = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
-        String  model1Xml = 
+        boolean      isSybase  = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String model1Xml = 
             "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
             "<database name='roundtriptest'>\n"+
             "  <table name='roundtrip'>\n"+
             "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
             "  </table>\n"+
             "</database>";
-        String model2Xml;
+        final String model2Xml;
 
         if (isSybase)
         {
@@ -1045,15 +1045,15 @@
             return;
         }
 
-        boolean isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
-        String model2Xml = 
+        boolean      isSybase  = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String model1Xml;
+        final String model2Xml = 
             "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
             "<database name='roundtriptest'>\n"+
             "  <table name='roundtrip'>\n"+
             "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
             "  </table>\n"+
             "</database>";
-        String model1Xml; 
 
         if (isSybase)
         {
@@ -1964,19 +1964,37 @@
             "    <column name='pk' type='VARCHAR' size='20' primaryKey='true' required='true'/>\n"+
             "  </table>\n"+
            "</database>";
-        final String model2Xml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='roundtrip1'>\n"+
-            "    <column name='pk' type='VARCHAR' size='20' primaryKey='true' required='true'/>\n"+
-            "  </table>\n"+
-            "  <table name='roundtrip2'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' autoIncrement='true' required='true'/>\n"+
-            "  </table>\n"+
-           "</database>";
+        final String model2Xml; 
 
+        // Sybase does not like INTEGER auto-increment columns
+        if (SybasePlatform.DATABASENAME.equals(getPlatform().getName()))
+        {
+            model2Xml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='roundtrip1'>\n"+
+                "    <column name='pk' type='VARCHAR' size='20' primaryKey='true' required='true'/>\n"+
+                "  </table>\n"+
+                "  <table name='roundtrip2'>\n"+
+                "    <column name='pk' type='NUMERIC' size='12,0' primaryKey='true' autoIncrement='true' required='true'/>\n"+
+                "  </table>\n"+
+               "</database>";
+        }
+        else
+        {
+            model2Xml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='roundtrip1'>\n"+
+                "    <column name='pk' type='VARCHAR' size='20' primaryKey='true' required='true'/>\n"+
+                "  </table>\n"+
+                "  <table name='roundtrip2'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' autoIncrement='true' required='true'/>\n"+
+                "  </table>\n"+
+               "</database>";
+        }
         createDatabase(model1Xml);
-
+        
         insertRow("roundtrip1", new Object[] { "1" });
 
         alterDatabase(model2Xml);
@@ -2077,18 +2095,35 @@
      */
     public void testRemoveTable3()
     {
-        final String model1Xml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='roundtrip'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
-            "    <column name='avalue' type='VARCHAR' size='20' required='true'/>\n"+
-            "  </table>\n"+
-            "</database>";
+        final String model1Xml;
         final String model2Xml = 
             "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
             "<database name='roundtriptest'>\n"+
             "</database>";
+
+        // Sybase does not like INTEGER auto-increment columns
+        if (SybasePlatform.DATABASENAME.equals(getPlatform().getName()))
+        {
+            model1Xml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='roundtrip'>\n"+
+                "    <column name='pk' type='NUMERIC' size='12,0' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='avalue' type='VARCHAR' size='20' required='true'/>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+        else
+        {
+            model1Xml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='roundtrip'>\n"+
+                "    <column name='pk' type='NUMERIC' size='12,0' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='avalue' type='VARCHAR' size='20' required='true'/>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
 
         createDatabase(model1Xml);
 

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java
URL: http://svn.apache.org/viewvc/db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java?view=diff&rev=510850&r1=510849&r2=510850
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/io/TestMisc.java Thu Feb 22 22:55:47 2007
@@ -22,6 +22,7 @@
 import java.io.Reader;
 import java.io.StringReader;
 import java.io.StringWriter;
+import java.math.BigDecimal;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.List;
@@ -30,6 +31,7 @@
 
 import org.apache.commons.beanutils.DynaBean;
 import org.apache.ddlutils.platform.hsqldb.HsqlDbPlatform;
+import org.apache.ddlutils.platform.sybase.SybasePlatform;
 import org.dom4j.Document;
 import org.dom4j.Element;
 import org.dom4j.io.SAXReader;
@@ -63,31 +65,68 @@
             // TODO: for testing these platforms, we need deleteRows
             return;
         }
-        final String modelXml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='misc1'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
-            "    <column name='avalue' type='INTEGER' required='false'/>\n"+
-            "  </table>\n"+
-            "  <table name='misc2'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
-            "    <column name='fk' type='INTEGER' required='false'/>\n"+
-            "    <foreign-key name='test' foreignTable='misc1'>\n"+
-            "      <reference local='fk' foreign='pk'/>\n"+
-            "    </foreign-key>\n"+
-            "  </table>\n"+
-            "</database>";
+
+        // Sybase does not like INTEGER auto-increment columns
+        boolean      isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String modelXml; 
+
+        if (isSybase)
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc1'>\n"+
+                "    <column name='pk' type='NUMERIC' size='12,0' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='avalue' type='INTEGER' required='false'/>\n"+
+                "  </table>\n"+
+                "  <table name='misc2'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+                "    <column name='fk' type='NUMERIC' size='12,0' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc1'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+        else
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc1'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='avalue' type='INTEGER' required='false'/>\n"+
+                "  </table>\n"+
+                "  <table name='misc2'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+                "    <column name='fk' type='INTEGER' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc1'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
 
         createDatabase(modelXml);
 
         getPlatform().setIdentityOverrideOn(true);
 
-        insertRow("misc1", new Object[] { new Integer(10), new Integer(1) });
-        insertRow("misc1", new Object[] { new Integer(12), new Integer(2) });
-        insertRow("misc1", new Object[] { new Integer(13), new Integer(3) });
-        insertRow("misc2", new Object[] { new Integer(1), new Integer(10) });
-        insertRow("misc2", new Object[] { new Integer(2), new Integer(13) });
+        if (isSybase)
+        {
+            insertRow("misc1", new Object[] { new BigDecimal(10), new Integer(1) });
+            insertRow("misc1", new Object[] { new BigDecimal(12), new Integer(2) });
+            insertRow("misc1", new Object[] { new BigDecimal(13), new Integer(3) });
+            insertRow("misc2", new Object[] { new Integer(1), new BigDecimal(10) });
+            insertRow("misc2", new Object[] { new Integer(2), new BigDecimal(13) });
+        }
+        else
+        {
+            insertRow("misc1", new Object[] { new Integer(10), new Integer(1) });
+            insertRow("misc1", new Object[] { new Integer(12), new Integer(2) });
+            insertRow("misc1", new Object[] { new Integer(13), new Integer(3) });
+            insertRow("misc2", new Object[] { new Integer(1), new Integer(10) });
+            insertRow("misc2", new Object[] { new Integer(2), new Integer(13) });
+        }
 
         StringWriter   stringWriter = new StringWriter();
         DatabaseDataIO dataIO       = new DatabaseDataIO();
@@ -135,19 +174,36 @@
 
         List beans = getRows("misc1");
 
-        assertEquals(new Integer(10), beans.get(0), "pk");
+        if (isSybase)
+        {
+            assertEquals(new BigDecimal(10), beans.get(0), "pk");
+            assertEquals(new BigDecimal(12), beans.get(1), "pk");
+            assertEquals(new BigDecimal(13), beans.get(2), "pk");
+        }
+        else
+        {
+            assertEquals(new Integer(10), beans.get(0), "pk");
+            assertEquals(new Integer(12), beans.get(1), "pk");
+            assertEquals(new Integer(13), beans.get(2), "pk");
+        }
         assertEquals(new Integer(1),  beans.get(0), "avalue");
-        assertEquals(new Integer(12), beans.get(1), "pk");
         assertEquals(new Integer(2),  beans.get(1), "avalue");
-        assertEquals(new Integer(13), beans.get(2), "pk");
         assertEquals(new Integer(3),  beans.get(2), "avalue");
 
         beans = getRows("misc2");
 
         assertEquals(new Integer(1),  beans.get(0), "pk");
-        assertEquals(new Integer(10), beans.get(0), "fk");
         assertEquals(new Integer(2),  beans.get(1), "pk");
-        assertEquals(new Integer(13), beans.get(1), "fk");
+        if (isSybase)
+        {
+            assertEquals(new BigDecimal(10), beans.get(0), "fk");
+            assertEquals(new BigDecimal(13), beans.get(1), "fk");
+        }
+        else
+        {
+            assertEquals(new Integer(10), beans.get(0), "fk");
+            assertEquals(new Integer(13), beans.get(1), "fk");
+        }
     }
 
     /**
@@ -162,31 +218,67 @@
             return;
         }
 
-        final String modelXml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='misc1'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
-            "    <column name='avalue' type='INTEGER' required='false'/>\n"+
-            "  </table>\n"+
-            "  <table name='misc2'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
-            "    <column name='fk' type='INTEGER' required='false'/>\n"+
-            "    <foreign-key name='test' foreignTable='misc1'>\n"+
-            "      <reference local='fk' foreign='pk'/>\n"+
-            "    </foreign-key>\n"+
-            "  </table>\n"+
-            "</database>";
+        // Sybase does not like INTEGER auto-increment columns
+        boolean      isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String modelXml; 
+
+        if (isSybase)
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc1'>\n"+
+                "    <column name='pk' type='NUMERIC' size='12,0' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='avalue' type='INTEGER' required='false'/>\n"+
+                "  </table>\n"+
+                "  <table name='misc2'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+                "    <column name='fk' type='NUMERIC' size='12,0' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc1'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+        else
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc1'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='avalue' type='INTEGER' required='false'/>\n"+
+                "  </table>\n"+
+                "  <table name='misc2'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true'/>\n"+
+                "    <column name='fk' type='INTEGER' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc1'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
 
         createDatabase(modelXml);
 
         getPlatform().setIdentityOverrideOn(true);
 
-        insertRow("misc1", new Object[] { new Integer(10), new Integer(1) });
-        insertRow("misc1", new Object[] { new Integer(12), new Integer(2) });
-        insertRow("misc1", new Object[] { new Integer(13), new Integer(3) });
-        insertRow("misc2", new Object[] { new Integer(1), new Integer(10) });
-        insertRow("misc2", new Object[] { new Integer(2), new Integer(13) });
+        if (isSybase)
+        {
+            insertRow("misc1", new Object[] { new BigDecimal(10), new Integer(1) });
+            insertRow("misc1", new Object[] { new BigDecimal(12), new Integer(2) });
+            insertRow("misc1", new Object[] { new BigDecimal(13), new Integer(3) });
+            insertRow("misc2", new Object[] { new Integer(1), new BigDecimal(10) });
+            insertRow("misc2", new Object[] { new Integer(2), new BigDecimal(13) });
+        }
+        else
+        {
+            insertRow("misc1", new Object[] { new Integer(10), new Integer(1) });
+            insertRow("misc1", new Object[] { new Integer(12), new Integer(2) });
+            insertRow("misc1", new Object[] { new Integer(13), new Integer(3) });
+            insertRow("misc2", new Object[] { new Integer(1), new Integer(10) });
+            insertRow("misc2", new Object[] { new Integer(2), new Integer(13) });
+        }
 
         StringWriter   stringWriter = new StringWriter();
         DatabaseDataIO dataIO       = new DatabaseDataIO();
@@ -236,19 +328,36 @@
 
         List beans = getRows("misc1");
 
-        assertEquals(new Integer(1), beans.get(0), "pk");
+        if (isSybase)
+        {
+            assertEquals(new BigDecimal(1), beans.get(0), "pk");
+            assertEquals(new BigDecimal(2), beans.get(1), "pk");
+            assertEquals(new BigDecimal(3), beans.get(2), "pk");
+        }
+        else
+        {
+            assertEquals(new Integer(1), beans.get(0), "pk");
+            assertEquals(new Integer(2), beans.get(1), "pk");
+            assertEquals(new Integer(3), beans.get(2), "pk");
+        }
         assertEquals(new Integer(1), beans.get(0), "avalue");
-        assertEquals(new Integer(2), beans.get(1), "pk");
         assertEquals(new Integer(2), beans.get(1), "avalue");
-        assertEquals(new Integer(3), beans.get(2), "pk");
         assertEquals(new Integer(3), beans.get(2), "avalue");
 
         beans = getRows("misc2");
 
         assertEquals(new Integer(1), beans.get(0), "pk");
-        assertEquals(new Integer(1), beans.get(0), "fk");
         assertEquals(new Integer(2), beans.get(1), "pk");
-        assertEquals(new Integer(3), beans.get(1), "fk");
+        if (isSybase)
+        {
+            assertEquals(new BigDecimal(1), beans.get(0), "fk");
+            assertEquals(new BigDecimal(3), beans.get(1), "fk");
+        }
+        else
+        {
+            assertEquals(new Integer(1), beans.get(0), "fk");
+            assertEquals(new Integer(3), beans.get(1), "fk");
+        }
     }
 
     /**
@@ -263,26 +372,57 @@
             return;
         }
 
-        final String modelXml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='misc'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
-            "    <column name='fk' type='INTEGER' required='false'/>\n"+
-            "    <foreign-key name='test' foreignTable='misc'>\n"+
-            "      <reference local='fk' foreign='pk'/>\n"+
-            "    </foreign-key>\n"+
-            "  </table>\n"+
-            "</database>";
+        // Sybase does not like INTEGER auto-increment columns
+        boolean      isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String modelXml;
+
+        if (isSybase)
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='pk' type='NUMERIC' size='12,0' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='fk' type='NUMERIC' size='12,0' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+        else
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='fk' type='INTEGER' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
 
         createDatabase(modelXml);
 
         getPlatform().setIdentityOverrideOn(false);
 
-        insertRow("misc", new Object[] { new Integer(1), null });
-        insertRow("misc", new Object[] { new Integer(2), new Integer(1) });
-        insertRow("misc", new Object[] { new Integer(3), new Integer(2) });
-        insertRow("misc", new Object[] { new Integer(4), new Integer(4) });
+        if (isSybase)
+        {
+            insertRow("misc", new Object[] { new BigDecimal(1), null });
+            insertRow("misc", new Object[] { new BigDecimal(2), new BigDecimal(1) });
+            insertRow("misc", new Object[] { new BigDecimal(3), new BigDecimal(2) });
+            insertRow("misc", new Object[] { new BigDecimal(4), new BigDecimal(4) });
+        }
+        else
+        {
+            insertRow("misc", new Object[] { new Integer(1), null });
+            insertRow("misc", new Object[] { new Integer(2), new Integer(1) });
+            insertRow("misc", new Object[] { new Integer(3), new Integer(2) });
+            insertRow("misc", new Object[] { new Integer(4), new Integer(4) });
+        }
 
         StringWriter   stringWriter = new StringWriter();
         DatabaseDataIO dataIO       = new DatabaseDataIO();
@@ -323,14 +463,28 @@
 
         List beans = getRows("misc");
 
-        assertEquals(new Integer(1), beans.get(0), "pk");
-        assertNull(((DynaBean)beans.get(0)).get("fk"));
-        assertEquals(new Integer(2), beans.get(1), "pk");
-        assertEquals(new Integer(1), beans.get(1), "fk");
-        assertEquals(new Integer(3), beans.get(2), "pk");
-        assertEquals(new Integer(2), beans.get(2), "fk");
-        assertEquals(new Integer(4), beans.get(3), "pk");
-        assertEquals(new Integer(4), beans.get(3), "fk");
+        if (isSybase)
+        {
+            assertEquals(new BigDecimal(1), beans.get(0), "pk");
+            assertNull(((DynaBean)beans.get(0)).get("fk"));
+            assertEquals(new BigDecimal(2), beans.get(1), "pk");
+            assertEquals(new BigDecimal(1), beans.get(1), "fk");
+            assertEquals(new BigDecimal(3), beans.get(2), "pk");
+            assertEquals(new BigDecimal(2), beans.get(2), "fk");
+            assertEquals(new BigDecimal(4), beans.get(3), "pk");
+            assertEquals(new BigDecimal(4), beans.get(3), "fk");
+        }
+        else
+        {
+            assertEquals(new Integer(1), beans.get(0), "pk");
+            assertNull(((DynaBean)beans.get(0)).get("fk"));
+            assertEquals(new Integer(2), beans.get(1), "pk");
+            assertEquals(new Integer(1), beans.get(1), "fk");
+            assertEquals(new Integer(3), beans.get(2), "pk");
+            assertEquals(new Integer(2), beans.get(2), "fk");
+            assertEquals(new Integer(4), beans.get(3), "pk");
+            assertEquals(new Integer(4), beans.get(3), "fk");
+        }
     }
 
     /**
@@ -345,26 +499,57 @@
             return;
         }
 
-        final String modelXml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='misc'>\n"+
-            "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
-            "    <column name='fk' type='INTEGER' required='false'/>\n"+
-            "    <foreign-key name='test' foreignTable='misc'>\n"+
-            "      <reference local='fk' foreign='pk'/>\n"+
-            "    </foreign-key>\n"+
-            "  </table>\n"+
-            "</database>";
+        // Sybase does not like INTEGER auto-increment columns
+        boolean      isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String modelXml;
+
+        if (isSybase)
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='pk' type='NUMERIC' size='12,0' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='fk' type='NUMERIC' size='12,0' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+        else
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='pk' type='INTEGER' primaryKey='true' required='true' autoIncrement='true'/>\n"+
+                "    <column name='fk' type='INTEGER' required='false'/>\n"+
+                "    <foreign-key name='test' foreignTable='misc'>\n"+
+                "      <reference local='fk' foreign='pk'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
 
         createDatabase(modelXml);
 
         getPlatform().setIdentityOverrideOn(true);
 
-        insertRow("misc", new Object[] { new Integer(10), null });
-        insertRow("misc", new Object[] { new Integer(11), new Integer(10) });
-        insertRow("misc", new Object[] { new Integer(12), new Integer(11) });
-        insertRow("misc", new Object[] { new Integer(13), new Integer(13) });
+        if (isSybase)
+        {
+            insertRow("misc", new Object[] { new BigDecimal(10), null });
+            insertRow("misc", new Object[] { new BigDecimal(11), new BigDecimal(10) });
+            insertRow("misc", new Object[] { new BigDecimal(12), new BigDecimal(11) });
+            insertRow("misc", new Object[] { new BigDecimal(13), new BigDecimal(13) });
+        }
+        else
+        {
+            insertRow("misc", new Object[] { new Integer(10), null });
+            insertRow("misc", new Object[] { new Integer(11), new Integer(10) });
+            insertRow("misc", new Object[] { new Integer(12), new Integer(11) });
+            insertRow("misc", new Object[] { new Integer(13), new Integer(13) });
+        }
 
         StringWriter   stringWriter = new StringWriter();
         DatabaseDataIO dataIO       = new DatabaseDataIO();
@@ -405,14 +590,28 @@
 
         List beans = getRows("misc");
 
-        assertEquals(new Integer(10), beans.get(0), "pk");
-        assertNull(((DynaBean)beans.get(0)).get("fk"));
-        assertEquals(new Integer(11), beans.get(1), "pk");
-        assertEquals(new Integer(10), beans.get(1), "fk");
-        assertEquals(new Integer(12), beans.get(2), "pk");
-        assertEquals(new Integer(11), beans.get(2), "fk");
-        assertEquals(new Integer(13), beans.get(3), "pk");
-        assertEquals(new Integer(13), beans.get(3), "fk");
+        if (isSybase)
+        {
+            assertEquals(new BigDecimal(10), beans.get(0), "pk");
+            assertNull(((DynaBean)beans.get(0)).get("fk"));
+            assertEquals(new BigDecimal(11), beans.get(1), "pk");
+            assertEquals(new BigDecimal(10), beans.get(1), "fk");
+            assertEquals(new BigDecimal(12), beans.get(2), "pk");
+            assertEquals(new BigDecimal(11), beans.get(2), "fk");
+            assertEquals(new BigDecimal(13), beans.get(3), "pk");
+            assertEquals(new BigDecimal(13), beans.get(3), "fk");
+        }
+        else
+        {
+            assertEquals(new Integer(10), beans.get(0), "pk");
+            assertNull(((DynaBean)beans.get(0)).get("fk"));
+            assertEquals(new Integer(11), beans.get(1), "pk");
+            assertEquals(new Integer(10), beans.get(1), "fk");
+            assertEquals(new Integer(12), beans.get(2), "pk");
+            assertEquals(new Integer(11), beans.get(2), "fk");
+            assertEquals(new Integer(13), beans.get(3), "pk");
+            assertEquals(new Integer(13), beans.get(3), "fk");
+        }
     }
 
     /**
@@ -426,17 +625,39 @@
             return;
         }
 
-        final String modelXml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='misc'>\n"+
-            "    <column name='id' primaryKey='true' required='true' type='SMALLINT' size='2' autoIncrement='true'/>\n"+
-            "    <column name='parent_id' primaryKey='false' required='false' type='SMALLINT' size='2' autoIncrement='false'/>\n"+
-            "    <foreign-key foreignTable='misc' name='misc_parent_fk'>\n"+
-            "      <reference local='parent_id' foreign='id'/>\n"+
-            "    </foreign-key>\n"+
-            "  </table>\n"+
-            "</database>";
+        // Sybase does not like INTEGER auto-increment columns
+        boolean      isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String modelXml;
+
+        if (isSybase)
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='id' primaryKey='true' required='true' type='NUMERIC' size='10,0' autoIncrement='true'/>\n"+
+                "    <column name='parent_id' primaryKey='false' required='false' type='NUMERIC' size='10,0' autoIncrement='false'/>\n"+
+                "    <foreign-key foreignTable='misc' name='misc_parent_fk'>\n"+
+                "      <reference local='parent_id' foreign='id'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+        else
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='id' primaryKey='true' required='true' type='SMALLINT' size='2' autoIncrement='true'/>\n"+
+                "    <column name='parent_id' primaryKey='false' required='false' type='SMALLINT' size='2' autoIncrement='false'/>\n"+
+                "    <foreign-key foreignTable='misc' name='misc_parent_fk'>\n"+
+                "      <reference local='parent_id' foreign='id'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+
         final String dataXml = 
             "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
             "<data>\n"+
@@ -465,31 +686,62 @@
 
         List beans = getRows("misc", "id");
 
-        assertEquals(12, beans.size());
-        assertEquals(new Integer(1),  beans.get(0), "id");
-        assertNull(((DynaBean)beans.get(0)).get("parent_id"));
-        assertEquals(new Integer(2),  beans.get(1), "id");
-        assertNull(((DynaBean)beans.get(1)).get("parent_id"));
-        assertEquals(new Integer(3),  beans.get(2), "id");
-        assertEquals(new Integer(2),  beans.get(2), "parent_id");
-        assertEquals(new Integer(4),  beans.get(3), "id");
-        assertEquals(new Integer(1),  beans.get(3), "parent_id");
-        assertEquals(new Integer(5),  beans.get(4), "id");
-        assertEquals(new Integer(3),  beans.get(4), "parent_id");
-        assertEquals(new Integer(6),  beans.get(5), "id");
-        assertNull(((DynaBean)beans.get(5)).get("parent_id"));
-        assertEquals(new Integer(7),  beans.get(6), "id");
-        assertEquals(new Integer(1),  beans.get(6), "parent_id");
-        assertEquals(new Integer(8),  beans.get(7), "id");
-        assertEquals(new Integer(7),  beans.get(7), "parent_id");
-        assertEquals(new Integer(9),  beans.get(8), "id");
-        assertEquals(new Integer(6),  beans.get(8), "parent_id");
-        assertEquals(new Integer(10), beans.get(9), "id");
-        assertEquals(new Integer(4),  beans.get(9), "parent_id");
-        assertEquals(new Integer(11), beans.get(10), "id");
-        assertNull(((DynaBean)beans.get(10)).get("parent_id"));
-        assertEquals(new Integer(12), beans.get(11), "id");
-        assertEquals(new Integer(11), beans.get(11), "parent_id");
+        if (isSybase)
+        {
+            assertEquals(12, beans.size());
+            assertEquals(new BigDecimal(1),  beans.get(0), "id");
+            assertNull(((DynaBean)beans.get(0)).get("parent_id"));
+            assertEquals(new BigDecimal(2),  beans.get(1), "id");
+            assertNull(((DynaBean)beans.get(1)).get("parent_id"));
+            assertEquals(new BigDecimal(3),  beans.get(2), "id");
+            assertEquals(new BigDecimal(2),  beans.get(2), "parent_id");
+            assertEquals(new BigDecimal(4),  beans.get(3), "id");
+            assertEquals(new BigDecimal(1),  beans.get(3), "parent_id");
+            assertEquals(new BigDecimal(5),  beans.get(4), "id");
+            assertEquals(new BigDecimal(3),  beans.get(4), "parent_id");
+            assertEquals(new BigDecimal(6),  beans.get(5), "id");
+            assertNull(((DynaBean)beans.get(5)).get("parent_id"));
+            assertEquals(new BigDecimal(7),  beans.get(6), "id");
+            assertEquals(new BigDecimal(1),  beans.get(6), "parent_id");
+            assertEquals(new BigDecimal(8),  beans.get(7), "id");
+            assertEquals(new BigDecimal(7),  beans.get(7), "parent_id");
+            assertEquals(new BigDecimal(9),  beans.get(8), "id");
+            assertEquals(new BigDecimal(6),  beans.get(8), "parent_id");
+            assertEquals(new BigDecimal(10), beans.get(9), "id");
+            assertEquals(new BigDecimal(4),  beans.get(9), "parent_id");
+            assertEquals(new BigDecimal(11), beans.get(10), "id");
+            assertNull(((DynaBean)beans.get(10)).get("parent_id"));
+            assertEquals(new BigDecimal(12), beans.get(11), "id");
+            assertEquals(new BigDecimal(11), beans.get(11), "parent_id");
+        }
+        else
+        {
+            assertEquals(12, beans.size());
+            assertEquals(new Integer(1),  beans.get(0), "id");
+            assertNull(((DynaBean)beans.get(0)).get("parent_id"));
+            assertEquals(new Integer(2),  beans.get(1), "id");
+            assertNull(((DynaBean)beans.get(1)).get("parent_id"));
+            assertEquals(new Integer(3),  beans.get(2), "id");
+            assertEquals(new Integer(2),  beans.get(2), "parent_id");
+            assertEquals(new Integer(4),  beans.get(3), "id");
+            assertEquals(new Integer(1),  beans.get(3), "parent_id");
+            assertEquals(new Integer(5),  beans.get(4), "id");
+            assertEquals(new Integer(3),  beans.get(4), "parent_id");
+            assertEquals(new Integer(6),  beans.get(5), "id");
+            assertNull(((DynaBean)beans.get(5)).get("parent_id"));
+            assertEquals(new Integer(7),  beans.get(6), "id");
+            assertEquals(new Integer(1),  beans.get(6), "parent_id");
+            assertEquals(new Integer(8),  beans.get(7), "id");
+            assertEquals(new Integer(7),  beans.get(7), "parent_id");
+            assertEquals(new Integer(9),  beans.get(8), "id");
+            assertEquals(new Integer(6),  beans.get(8), "parent_id");
+            assertEquals(new Integer(10), beans.get(9), "id");
+            assertEquals(new Integer(4),  beans.get(9), "parent_id");
+            assertEquals(new Integer(11), beans.get(10), "id");
+            assertNull(((DynaBean)beans.get(10)).get("parent_id"));
+            assertEquals(new Integer(12), beans.get(11), "id");
+            assertEquals(new Integer(11), beans.get(11), "parent_id");
+        }
     }
 
     /**
@@ -504,21 +756,47 @@
             return;
         }
 
-        final String modelXml = 
-            "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
-            "<database name='roundtriptest'>\n"+
-            "  <table name='misc'>\n"+
-            "    <column name='id' primaryKey='true' required='true' type='SMALLINT' size='2' autoIncrement='true'/>\n"+
-            "    <column name='left_id' primaryKey='false' required='false' type='SMALLINT' size='2' autoIncrement='false'/>\n"+
-            "    <column name='right_id' primaryKey='false' required='false' type='SMALLINT' size='2' autoIncrement='false'/>\n"+
-            "    <foreign-key foreignTable='misc' name='misc_left_fk'>\n"+
-            "      <reference local='left_id' foreign='id'/>\n"+
-            "    </foreign-key>\n"+
-            "    <foreign-key foreignTable='misc' name='misc_right_fk'>\n"+
-            "      <reference local='right_id' foreign='id'/>\n"+
-            "    </foreign-key>\n"+
-            "  </table>\n"+
-            "</database>";
+        // Sybase does not like INTEGER auto-increment columns
+        boolean      isSybase = SybasePlatform.DATABASENAME.equals(getPlatform().getName());
+        final String modelXml;
+
+        if (isSybase)
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='id' primaryKey='true' required='true' type='NUMERIC' size='6,0' autoIncrement='true'/>\n"+
+                "    <column name='left_id' primaryKey='false' required='false' type='NUMERIC' size='6,0' autoIncrement='false'/>\n"+
+                "    <column name='right_id' primaryKey='false' required='false' type='NUMERIC' size='6,0' autoIncrement='false'/>\n"+
+                "    <foreign-key foreignTable='misc' name='misc_left_fk'>\n"+
+                "      <reference local='left_id' foreign='id'/>\n"+
+                "    </foreign-key>\n"+
+                "    <foreign-key foreignTable='misc' name='misc_right_fk'>\n"+
+                "      <reference local='right_id' foreign='id'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+        else
+        {
+            modelXml = 
+                "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
+                "<database name='roundtriptest'>\n"+
+                "  <table name='misc'>\n"+
+                "    <column name='id' primaryKey='true' required='true' type='SMALLINT' size='2' autoIncrement='true'/>\n"+
+                "    <column name='left_id' primaryKey='false' required='false' type='SMALLINT' size='2' autoIncrement='false'/>\n"+
+                "    <column name='right_id' primaryKey='false' required='false' type='SMALLINT' size='2' autoIncrement='false'/>\n"+
+                "    <foreign-key foreignTable='misc' name='misc_left_fk'>\n"+
+                "      <reference local='left_id' foreign='id'/>\n"+
+                "    </foreign-key>\n"+
+                "    <foreign-key foreignTable='misc' name='misc_right_fk'>\n"+
+                "      <reference local='right_id' foreign='id'/>\n"+
+                "    </foreign-key>\n"+
+                "  </table>\n"+
+                "</database>";
+        }
+
         final String dataXml = 
             "<?xml version='1.0' encoding='ISO-8859-1'?>\n"+
             "<data>\n"+
@@ -542,24 +820,48 @@
         List beans = getRows("misc", "id");
 
         assertEquals(6, beans.size());
-        assertEquals(new Integer(1), beans.get(0), "id");
-        assertEquals(new Integer(2), beans.get(0), "left_id");
-        assertEquals(new Integer(3), beans.get(0), "right_id");
-        assertEquals(new Integer(2), beans.get(1), "id");
-        assertEquals(new Integer(5), beans.get(1), "left_id");
-        assertEquals(new Integer(4), beans.get(1), "right_id");
-        assertEquals(new Integer(3), beans.get(2), "id");
-        assertEquals(new Integer(2), beans.get(2), "left_id");
-        assertEquals(new Integer(4), beans.get(2), "right_id");
-        assertEquals(new Integer(4), beans.get(3), "id");
-        assertEquals(new Integer(6), beans.get(3), "left_id");
-        assertEquals((Object)null,   beans.get(3), "right_id");
-        assertEquals(new Integer(5), beans.get(4), "id");
-        assertEquals((Object)null,   beans.get(4), "left_id");
-        assertEquals(new Integer(6), beans.get(4), "right_id");
-        assertEquals(new Integer(6), beans.get(5), "id");
-        assertEquals((Object)null,   beans.get(5), "left_id");
-        assertEquals((Object)null,   beans.get(5), "right_id");
+        if (isSybase)
+        {
+            assertEquals(new BigDecimal(1), beans.get(0), "id");
+            assertEquals(new BigDecimal(2), beans.get(0), "left_id");
+            assertEquals(new BigDecimal(3), beans.get(0), "right_id");
+            assertEquals(new BigDecimal(2), beans.get(1), "id");
+            assertEquals(new BigDecimal(5), beans.get(1), "left_id");
+            assertEquals(new BigDecimal(4), beans.get(1), "right_id");
+            assertEquals(new BigDecimal(3), beans.get(2), "id");
+            assertEquals(new BigDecimal(2), beans.get(2), "left_id");
+            assertEquals(new BigDecimal(4), beans.get(2), "right_id");
+            assertEquals(new BigDecimal(4), beans.get(3), "id");
+            assertEquals(new BigDecimal(6), beans.get(3), "left_id");
+            assertEquals((Object)null,      beans.get(3), "right_id");
+            assertEquals(new BigDecimal(5), beans.get(4), "id");
+            assertEquals((Object)null,      beans.get(4), "left_id");
+            assertEquals(new BigDecimal(6), beans.get(4), "right_id");
+            assertEquals(new BigDecimal(6), beans.get(5), "id");
+            assertEquals((Object)null,      beans.get(5), "left_id");
+            assertEquals((Object)null,      beans.get(5), "right_id");
+        }
+        else
+        {
+            assertEquals(new Integer(1), beans.get(0), "id");
+            assertEquals(new Integer(2), beans.get(0), "left_id");
+            assertEquals(new Integer(3), beans.get(0), "right_id");
+            assertEquals(new Integer(2), beans.get(1), "id");
+            assertEquals(new Integer(5), beans.get(1), "left_id");
+            assertEquals(new Integer(4), beans.get(1), "right_id");
+            assertEquals(new Integer(3), beans.get(2), "id");
+            assertEquals(new Integer(2), beans.get(2), "left_id");
+            assertEquals(new Integer(4), beans.get(2), "right_id");
+            assertEquals(new Integer(4), beans.get(3), "id");
+            assertEquals(new Integer(6), beans.get(3), "left_id");
+            assertEquals((Object)null,   beans.get(3), "right_id");
+            assertEquals(new Integer(5), beans.get(4), "id");
+            assertEquals((Object)null,   beans.get(4), "left_id");
+            assertEquals(new Integer(6), beans.get(4), "right_id");
+            assertEquals(new Integer(6), beans.get(5), "id");
+            assertEquals((Object)null,   beans.get(5), "left_id");
+            assertEquals((Object)null,   beans.get(5), "right_id");
+        }
     }
 
     /**