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/11 20:22:53 UTC

svn commit: r377019 - in /db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql: MSSqlBuilder.java MSSqlModelReader.java MSSqlPlatform.java

Author: tomdz
Date: Sat Feb 11 11:22:51 2006
New Revision: 377019

URL: http://svn.apache.org/viewcvs?rev=377019&view=rev
Log:
Enhanced/fixed Sql Server platform

Modified:
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java
    db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlPlatform.java

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java?rev=377019&r1=377018&r2=377019&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlBuilder.java Sat Feb 11 11:22:51 2006
@@ -263,4 +263,20 @@
         print(identifier);
         print("'");
     }
+
+    // TODO: DROP default is done via selecting the name of the constraint for column avalue of table toundtrip
+    //
+    // SELECT name 
+    // FROM sysobjects so JOIN sysconstraints sc
+    // ON so.id = sc.constid 
+    // WHERE object_name(so.parent_obj) = 'roundtrip' 
+    // AND so.xtype = 'D'
+    // AND sc.colid = 
+    //   (SELECT colid FROM syscolumns 
+    //    WHERE id = object_id('roundtrip') AND 
+    //    name = 'avalue')
+    //
+    // and then using this in
+    //
+    // ALTER TABLE roundtrip DROP CONSTRAINT ...
 }

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java?rev=377019&r1=377018&r2=377019&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlModelReader.java Sat Feb 11 11:22:51 2006
@@ -75,32 +75,48 @@
         }
     }
 
+
+    /**
+     * {@inheritDoc}
+     */
+	protected Table readTable(DatabaseMetaDataWrapper metaData, Map values) throws SQLException
+	{
+        Table table = super.readTable(metaData, values);
+
+        // Sql Server does not return the auto-increment status via the database metadata
+        determineAutoIncrementFromResultSetMetaData(table, table.getColumns());
+        return table;
+	}
+
     /**
      * {@inheritDoc}
      */
 	protected boolean isInternalPrimaryKeyIndex(Table table, Index index)
 	{
-		// Sql Server generates an index "[pk name in uppercase]__[table name]__[hex number]"
-		// TODO: test with multiple pks
-		StringBuffer pkIndexName = new StringBuffer();
-		Column[]     pks         = table.getPrimaryKeyColumns();
+		// Sql Server generates an index "PK__[table name]__[hex number]"
+		StringBuilder pkIndexName = new StringBuilder();
+		Column[]      pks         = table.getPrimaryKeyColumns();
 
 		if (pks.length > 0)
 		{
-			for (int idx = 0; idx < pks.length; idx++)
-			{
-				pkIndexName.append(pks[idx].getName());
-			}
-			pkIndexName.append("__");
+			pkIndexName.append("PK__");
 			pkIndexName.append(table.getName());
 			pkIndexName.append("__");
 
-			return index.getName().toUpperCase().startsWith(pkIndexName.toString().toUpperCase());
-		}
-		else
-		{
-			return false;
+			if (index.getName().toUpperCase().startsWith(pkIndexName.toString().toUpperCase()))
+			{
+				// if its an index for the pk, then its columns have to be the pk columns
+				for (int idx = 0; idx < pks.length; idx++)
+				{
+					if (!pks[idx].getName().equals(index.getColumn(idx).getName()))
+					{
+						return false;
+					}
+				}
+				return true;
+			}
 		}
+		return false;
 	}
 
     /**

Modified: db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlPlatform.java?rev=377019&r1=377018&r2=377019&view=diff
==============================================================================
--- db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlPlatform.java (original)
+++ db/ddlutils/trunk/src/java/org/apache/ddlutils/platform/mssql/MSSqlPlatform.java Sat Feb 11 11:22:51 2006
@@ -78,6 +78,11 @@
         info.addNativeTypeMapping("BOOLEAN",  "BIT",   "BIT");
         info.addNativeTypeMapping("DATALINK", "IMAGE", "LONGVARBINARY");
 
+        info.addDefaultSize(Types.CHAR,       254);
+        info.addDefaultSize(Types.VARCHAR,    254);
+        info.addDefaultSize(Types.BINARY,     254);
+        info.addDefaultSize(Types.VARBINARY,  254);
+
         setSqlBuilder(new MSSqlBuilder(info));
         setModelReader(new MSSqlModelReader(info));
     }