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 2006/02/26 20:24:16 UTC

svn commit: r381141 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase: SybaseModelReader.java SybasePlatform.java

Author: tomdz
Date: Sun Feb 26 11:24:14 2006
New Revision: 381141

URL: http://svn.apache.org/viewcvs?rev=381141&view=rev
Log:
Fixes to the blob/clob handling and the determination of auto-increment fields for the Sybase platform

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java?rev=381141&r1=381140&r2=381141&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybaseModelReader.java Sun Feb 26 11:24:14 2006
@@ -58,6 +58,9 @@
     public SybaseModelReader(PlatformInfo platformInfo)
     {
         super(platformInfo);
+        setDefaultCatalogPattern(null);
+        setDefaultSchemaPattern(null);
+        setDefaultTablePattern("%");
 
         PatternCompiler compiler = new Perl5Compiler();
 
@@ -71,6 +74,21 @@
         	throw new DdlUtilsException(ex);
         }
     }
+
+    /**
+     * {@inheritDoc}
+     */
+	protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
+	{
+        Table table = super.readTable(metaData, values);
+
+        if (table != null)
+        {
+            // Sybase does not return the auto-increment status via the database metadata
+            determineAutoIncrementFromResultSetMetaData(table, table.getColumns());
+        }
+        return table;
+	}
 
 	/**
      * {@inheritDoc}

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java?rev=381141&r1=381140&r2=381141&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/sybase/SybasePlatform.java Sun Feb 26 11:24:14 2006
@@ -74,26 +74,27 @@
         info.addNativeTypeMapping(Types.ARRAY,         "IMAGE");
         // we're not using the native BIT type because it is rather limited (cannot be NULL, cannot be indexed)
         info.addNativeTypeMapping(Types.BIT,           "SMALLINT",         Types.SMALLINT);
+        // BIGINT is mapped back in the model reader
         info.addNativeTypeMapping(Types.BIGINT,        "DECIMAL(19,0)");
-        info.addNativeTypeMapping(Types.BLOB,          "IMAGE");
-        info.addNativeTypeMapping(Types.CLOB,          "TEXT");
+        info.addNativeTypeMapping(Types.BLOB,          "IMAGE",            Types.LONGVARBINARY);
+        info.addNativeTypeMapping(Types.CLOB,          "TEXT",             Types.LONGVARCHAR);
         info.addNativeTypeMapping(Types.DATE,          "DATETIME",         Types.TIMESTAMP);
-        info.addNativeTypeMapping(Types.DISTINCT,      "IMAGE");
+        info.addNativeTypeMapping(Types.DISTINCT,      "IMAGE",            Types.LONGVARBINARY);
         info.addNativeTypeMapping(Types.DOUBLE,        "DOUBLE PRECISION");
         info.addNativeTypeMapping(Types.FLOAT,         "DOUBLE PRECISION", Types.DOUBLE);
         info.addNativeTypeMapping(Types.INTEGER,       "INT");
-        info.addNativeTypeMapping(Types.JAVA_OBJECT,   "IMAGE");
+        info.addNativeTypeMapping(Types.JAVA_OBJECT,   "IMAGE",            Types.LONGVARBINARY);
         info.addNativeTypeMapping(Types.LONGVARBINARY, "IMAGE");
         info.addNativeTypeMapping(Types.LONGVARCHAR,   "TEXT");
-        info.addNativeTypeMapping(Types.NULL,          "IMAGE");
-        info.addNativeTypeMapping(Types.OTHER,         "IMAGE");
-        info.addNativeTypeMapping(Types.REF,           "IMAGE");
-        info.addNativeTypeMapping(Types.STRUCT,        "IMAGE");
+        info.addNativeTypeMapping(Types.NULL,          "IMAGE",            Types.LONGVARBINARY);
+        info.addNativeTypeMapping(Types.OTHER,         "IMAGE",            Types.LONGVARBINARY);
+        info.addNativeTypeMapping(Types.REF,           "IMAGE",            Types.LONGVARBINARY);
+        info.addNativeTypeMapping(Types.STRUCT,        "IMAGE",            Types.LONGVARBINARY);
         info.addNativeTypeMapping(Types.TIME,          "DATETIME",         Types.TIMESTAMP);
         info.addNativeTypeMapping(Types.TIMESTAMP,     "DATETIME",         Types.TIMESTAMP);
         info.addNativeTypeMapping(Types.TINYINT,       "SMALLINT",         Types.SMALLINT);
         info.addNativeTypeMapping("BOOLEAN",  "SMALLINT", "SMALLINT");
-        info.addNativeTypeMapping("DATALINK", "IMAGE");
+        info.addNativeTypeMapping("DATALINK", "IMAGE",    "LONGVARBINARY");
 
         info.addDefaultSize(Types.BINARY,    254);
         info.addDefaultSize(Types.VARBINARY, 254);
@@ -196,11 +197,22 @@
      */
 	protected void setStatementParameterValue(PreparedStatement statement, int sqlIndex, int typeCode, Object value) throws SQLException
 	{
-		if ((value instanceof byte[]) && (typeCode == Types.LONGVARBINARY))
+		if ((value instanceof byte[]) && ((typeCode == Types.LONGVARBINARY) || (typeCode == Types.BLOB)))
 		{
 			byte[] data = (byte[])value;
 
 			statement.setBinaryStream(sqlIndex, new ByteArrayInputStream(data), data.length);
+		}
+		else if (typeCode == Types.BLOB)
+		{
+			// Sybase doesn't like the BLOB type, but works without problems with LONGVARBINARY
+			// even when using the Blob class
+			super.setStatementParameterValue(statement, sqlIndex, Types.LONGVARBINARY, value);
+		}
+		else if (typeCode == Types.CLOB)
+		{
+			// Same for CLOB and LONGVARCHAR
+			super.setStatementParameterValue(statement, sqlIndex, Types.LONGVARCHAR, value);
 		}
 		else
 		{