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 2005/09/19 01:01:23 UTC

svn commit: r289996 [2/3] - in /db/ddlutils/trunk: ./ src/java/org/apache/ddlutils/ src/java/org/apache/ddlutils/builder/ src/java/org/apache/ddlutils/model/ src/java/org/apache/ddlutils/platform/ src/test/org/apache/ddlutils/ src/test/org/apache/ddlut...

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestCloudscapePlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestCloudscapePlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestCloudscapePlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestCloudscapePlatform.java Sun Sep 18 16:00:38 2005
@@ -41,41 +41,101 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE coltype;\n"+
-            "CREATE TABLE coltype\n"+
+            "DROP TABLE \"coltype\";\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY           BLOB,\n"+
-            "    COL_BIGINT          BIGINT,\n"+
-            "    COL_BINARY          CHAR(254) FOR BIT DATA,\n"+
-            "    COL_BIT             CHAR FOR BIT DATA,\n"+
-            "    COL_BLOB            BLOB,\n"+
-            "    COL_BOOLEAN         CHAR FOR BIT DATA,\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            CLOB,\n"+
-            "    COL_DATALINK        LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        BLOB,\n"+
-            "    COL_DOUBLE          DOUBLE PRECISION,\n"+
-            "    COL_FLOAT           DOUBLE PRECISION,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     BLOB,\n"+
-            "    COL_LONGVARBINARY   LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_LONGVARCHAR     LONG VARCHAR,\n"+
-            "    COL_NULL            LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_NUMERIC         NUMERIC(15,0),\n"+
-            "    COL_OTHER           BLOB,\n"+
-            "    COL_REAL            REAL,\n"+
-            "    COL_REF             LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          BLOB,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       TIMESTAMP,\n"+
-            "    COL_TINYINT         SMALLINT,\n"+
-            "    COL_VARBINARY       VARCHAR(15) FOR BIT DATA,\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           BLOB,\n"+
+            "    \"COL_BIGINT\"          BIGINT,\n"+
+            "    \"COL_BINARY\"          CHAR(254) FOR BIT DATA,\n"+
+            "    \"COL_BIT\"             CHAR FOR BIT DATA,\n"+
+            "    \"COL_BLOB\"            BLOB,\n"+
+            "    \"COL_BOOLEAN\"         CHAR FOR BIT DATA,\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            CLOB,\n"+
+            "    \"COL_DATALINK\"        LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_DATE\"            DATE,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        BLOB,\n"+
+            "    \"COL_DOUBLE\"          DOUBLE PRECISION,\n"+
+            "    \"COL_FLOAT\"           DOUBLE PRECISION,\n"+
+            "    \"COL_INTEGER\"         INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"     BLOB,\n"+
+            "    \"COL_LONGVARBINARY\"   LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_LONGVARCHAR\"     LONG VARCHAR,\n"+
+            "    \"COL_NULL\"            LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_NUMERIC\"         NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"           BLOB,\n"+
+            "    \"COL_REAL\"            REAL,\n"+
+            "    \"COL_REF\"             LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          BLOB,\n"+
+            "    \"COL_TIME\"            TIME,\n"+
+            "    \"COL_TIMESTAMP\"       TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"         SMALLINT,\n"+
+            "    \"COL_VARBINARY\"       VARCHAR(15) FOR BIT DATA,\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "DROP TABLE \"constraints\";\n" +
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INTEGER GENERATED ALWAYS AS IDENTITY,\n"+
+            "    \"COL_NOT_NULL\"         CHAR(100) FOR BIT DATA NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" DOUBLE PRECISION DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        BIGINT GENERATED ALWAYS AS IDENTITY,\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\";\n"+
+            "DROP TABLE \"table3\";\n"+
+            "DROP TABLE \"table2\";\n"+
+            "DROP TABLE \"table1\";\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" CHAR(100) FOR BIT DATA NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE PRECISION NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDB2Platform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDB2Platform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDB2Platform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDB2Platform.java Sun Sep 18 16:00:38 2005
@@ -41,42 +41,103 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE coltype;\n"+
-            "DROP SEQUENCE IF EXISTS coltype.SequenceName;\n"+
-            "CREATE TABLE coltype\n"+
+            "DROP TABLE \"coltype\";\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY         BLOB,\n"+
-            "    COL_BIGINT        BIGINT,\n"+
-            "    COL_BINARY        CHAR(254) FOR BIT DATA,\n"+
-            "    COL_BIT           CHAR FOR BIT DATA,\n"+
-            "    COL_BLOB          BLOB,\n"+
-            "    COL_BOOLEAN       CHAR FOR BIT DATA,\n"+
-            "    COL_CHAR          CHAR(15),\n"+
-            "    COL_CLOB          CLOB,\n"+
-            "    COL_DATALINK      DATALINK,\n"+
-            "    COL_DATE          DATE,\n"+
-            "    COL_DECIMAL       DECIMAL(15,3),\n"+
-            "    COL_DECIM_NOSCALE DECIMAL(15,0),\n"+       // only 18 characters allowed for identifiers
-            "    COL_DISTINCT      DISTINCT,\n"+
-            "    COL_DOUBLE        DOUBLE,\n"+
-            "    COL_FLOAT         FLOAT,\n"+
-            "    COL_INTEGER       INTEGER,\n"+
-            "    COL_JAVA_OBJECT   BLOB,\n"+
-            "    COL_LONGVARBINARY LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_LONGVARCHAR   LONG VARCHAR,\n"+
-            "    COL_NULL          LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_NUMERIC       NUMERIC(15,0),\n"+
-            "    COL_OTHER         BLOB,\n"+
-            "    COL_REAL          REAL,\n"+
-            "    COL_REF           REF,\n"+
-            "    COL_SMALLINT      SMALLINT,\n"+
-            "    COL_STRUCT        BLOB,\n"+
-            "    COL_TIME          TIME,\n"+
-            "    COL_TIMESTAMP     TIMESTAMP,\n"+
-            "    COL_TINYINT       SMALLINT,\n"+
-            "    COL_VARBINARY     VARCHAR(15) FOR BIT DATA,\n"+
-            "    COL_VARCHAR       VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"         BLOB,\n"+
+            "    \"COL_BIGINT\"        BIGINT,\n"+
+            "    \"COL_BINARY\"        CHAR(254) FOR BIT DATA,\n"+
+            "    \"COL_BIT\"           CHAR FOR BIT DATA,\n"+
+            "    \"COL_BLOB\"          BLOB,\n"+
+            "    \"COL_BOOLEAN\"       CHAR FOR BIT DATA,\n"+
+            "    \"COL_CHAR\"          CHAR(15),\n"+
+            "    \"COL_CLOB\"          CLOB,\n"+
+            "    \"COL_DATALINK\"      DATALINK,\n"+
+            "    \"COL_DATE\"          DATE,\n"+
+            "    \"COL_DECIMAL\"       DECIMAL(15,3),\n"+
+            "    \"COL_DECIM_NOSCALE\" DECIMAL(15,0),\n"+       // only 18 characters allowed for identifiers
+            "    \"COL_DISTINCT\"      DISTINCT,\n"+
+            "    \"COL_DOUBLE\"        DOUBLE,\n"+
+            "    \"COL_FLOAT\"         FLOAT,\n"+
+            "    \"COL_INTEGER\"       INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"   BLOB,\n"+
+            "    \"COL_LONGVARBINARY\" LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_LONGVARCHAR\"   LONG VARCHAR,\n"+
+            "    \"COL_NULL\"          LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_NUMERIC\"       NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"         BLOB,\n"+
+            "    \"COL_REAL\"          REAL,\n"+
+            "    \"COL_REF\"           REF,\n"+
+            "    \"COL_SMALLINT\"      SMALLINT,\n"+
+            "    \"COL_STRUCT\"        BLOB,\n"+
+            "    \"COL_TIME\"          TIME,\n"+
+            "    \"COL_TIMESTAMP\"     TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"       SMALLINT,\n"+
+            "    \"COL_VARBINARY\"     VARCHAR(15) FOR BIT DATA,\n"+
+            "    \"COL_VARCHAR\"       VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "DROP TABLE \"constraints\";\n" +
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"            VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"  INTEGER GENERATED BY DEFAULT AS IDENTITY,\n"+
+            "    \"COL_NOT_NULL\"      CHAR(100) FOR BIT DATA NOT NULL,\n"+
+            "    \"COL_NOT_N_DEFAULT\" DOUBLE DEFAULT '-2.0' NOT NULL,\n"+   // only 18 characters allowed for identifiers
+            "    \"COL_DEFAULT\"       CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"     BIGINT GENERATED BY DEFAULT AS IDENTITY,\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_2_table1\";\n"+
+            "DROP TABLE \"table3\";\n"+
+            "DROP TABLE \"table2\";\n"+
+            "DROP TABLE \"table1\";\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" CHAR(100) FOR BIT DATA NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDerbyPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDerbyPlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDerbyPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestDerbyPlatform.java Sun Sep 18 16:00:38 2005
@@ -41,41 +41,101 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE coltype;\n"+
-            "CREATE TABLE coltype\n"+
+            "DROP TABLE \"coltype\";\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY           BLOB,\n"+
-            "    COL_BIGINT          BIGINT,\n"+
-            "    COL_BINARY          CHAR(254) FOR BIT DATA,\n"+
-            "    COL_BIT             CHAR FOR BIT DATA,\n"+
-            "    COL_BLOB            BLOB,\n"+
-            "    COL_BOOLEAN         CHAR FOR BIT DATA,\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            CLOB,\n"+
-            "    COL_DATALINK        LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        BLOB,\n"+
-            "    COL_DOUBLE          DOUBLE PRECISION,\n"+
-            "    COL_FLOAT           DOUBLE PRECISION,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     BLOB,\n"+
-            "    COL_LONGVARBINARY   LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_LONGVARCHAR     LONG VARCHAR,\n"+
-            "    COL_NULL            LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_NUMERIC         NUMERIC(15,0),\n"+
-            "    COL_OTHER           BLOB,\n"+
-            "    COL_REAL            REAL,\n"+
-            "    COL_REF             LONG VARCHAR FOR BIT DATA,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          BLOB,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       TIMESTAMP,\n"+
-            "    COL_TINYINT         SMALLINT,\n"+
-            "    COL_VARBINARY       VARCHAR(15) FOR BIT DATA,\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           BLOB,\n"+
+            "    \"COL_BIGINT\"          BIGINT,\n"+
+            "    \"COL_BINARY\"          CHAR(254) FOR BIT DATA,\n"+
+            "    \"COL_BIT\"             CHAR FOR BIT DATA,\n"+
+            "    \"COL_BLOB\"            BLOB,\n"+
+            "    \"COL_BOOLEAN\"         CHAR FOR BIT DATA,\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            CLOB,\n"+
+            "    \"COL_DATALINK\"        LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_DATE\"            DATE,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        BLOB,\n"+
+            "    \"COL_DOUBLE\"          DOUBLE PRECISION,\n"+
+            "    \"COL_FLOAT\"           DOUBLE PRECISION,\n"+
+            "    \"COL_INTEGER\"         INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"     BLOB,\n"+
+            "    \"COL_LONGVARBINARY\"   LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_LONGVARCHAR\"     LONG VARCHAR,\n"+
+            "    \"COL_NULL\"            LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_NUMERIC\"         NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"           BLOB,\n"+
+            "    \"COL_REAL\"            REAL,\n"+
+            "    \"COL_REF\"             LONG VARCHAR FOR BIT DATA,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          BLOB,\n"+
+            "    \"COL_TIME\"            TIME,\n"+
+            "    \"COL_TIMESTAMP\"       TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"         SMALLINT,\n"+
+            "    \"COL_VARBINARY\"       VARCHAR(15) FOR BIT DATA,\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "DROP TABLE \"constraints\";\n" +
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INTEGER GENERATED BY DEFAULT AS IDENTITY,\n"+
+            "    \"COL_NOT_NULL\"         CHAR(100) FOR BIT DATA NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" DOUBLE PRECISION DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        BIGINT GENERATED BY DEFAULT AS IDENTITY,\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\";\n"+
+            "DROP TABLE \"table3\";\n"+
+            "DROP TABLE \"table2\";\n"+
+            "DROP TABLE \"table1\";\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" CHAR(100) FOR BIT DATA NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE PRECISION NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestFirebirdPlatform.java Sun Sep 18 16:00:38 2005
@@ -41,43 +41,141 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE coltype;\n"+
+            "DROP TABLE \"coltype\";\n"+
             "COMMIT;\n"+
-            "CREATE TABLE coltype\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY           BLOB ,\n"+
-            "    COL_BIGINT          DECIMAL(38,0),\n"+
-            "    COL_BINARY          CHAR CHARACTER SET OCTETS,\n"+
-            "    COL_BIT             DECIMAL(1,0),\n"+
-            "    COL_BLOB            BLOB ,\n"+
-            "    COL_BOOLEAN         DECIMAL(1,0),\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            BLOB SUB_TYPE TEXT,\n"+
-            "    COL_DATALINK        BLOB,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        BLOB,\n"+
-            "    COL_DOUBLE          DOUBLE PRECISION,\n"+
-            "    COL_FLOAT           DOUBLE PRECISION,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     BLOB,\n"+
-            "    COL_LONGVARBINARY   BLOB,\n"+
-            "    COL_LONGVARCHAR     BLOB SUB_TYPE TEXT,\n"+
-            "    COL_NULL            BLOB,\n"+
-            "    COL_NUMERIC         NUMERIC(15,0),\n"+
-            "    COL_OTHER           BLOB,\n"+
-            "    COL_REAL            FLOAT,\n"+
-            "    COL_REF             BLOB,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          BLOB,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       TIMESTAMP,\n"+
-            "    COL_TINYINT         SMALLINT,\n"+
-            "    COL_VARBINARY       VARCHAR(15) CHARACTER SET OCTETS,\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           BLOB ,\n"+
+            "    \"COL_BIGINT\"          DECIMAL(38,0),\n"+
+            "    \"COL_BINARY\"          CHAR CHARACTER SET OCTETS,\n"+
+            "    \"COL_BIT\"             DECIMAL(1,0),\n"+
+            "    \"COL_BLOB\"            BLOB ,\n"+
+            "    \"COL_BOOLEAN\"         DECIMAL(1,0),\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            BLOB SUB_TYPE TEXT,\n"+
+            "    \"COL_DATALINK\"        BLOB,\n"+
+            "    \"COL_DATE\"            DATE,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        BLOB,\n"+
+            "    \"COL_DOUBLE\"          DOUBLE PRECISION,\n"+
+            "    \"COL_FLOAT\"           DOUBLE PRECISION,\n"+
+            "    \"COL_INTEGER\"         INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"     BLOB,\n"+
+            "    \"COL_LONGVARBINARY\"   BLOB,\n"+
+            "    \"COL_LONGVARCHAR\"     BLOB SUB_TYPE TEXT,\n"+
+            "    \"COL_NULL\"            BLOB,\n"+
+            "    \"COL_NUMERIC\"         NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"           BLOB,\n"+
+            "    \"COL_REAL\"            FLOAT,\n"+
+            "    \"COL_REF\"             BLOB,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          BLOB,\n"+
+            "    \"COL_TIME\"            TIME,\n"+
+            "    \"COL_TIMESTAMP\"       TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"         SMALLINT,\n"+
+            "    \"COL_VARBINARY\"       VARCHAR(15) CHARACTER SET OCTETS,\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n"+
             "COMMIT;\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "DELETE FROM RDB$GENERATOR WHERE RDB$GENERATOR_NAME = \"gen_constraints_OL_PK_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "DELETE FROM RDB$GENERATOR WHERE RDB$GENERATOR_NAME = \"gen_constraints_COL_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "DROP TABLE \"constraints\";\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INTEGER,\n"+
+            "    \"COL_NOT_NULL\"         CHAR(100) CHARACTER SET OCTETS NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" DOUBLE PRECISION DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        DECIMAL(38,0),\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n"+
+            "COMMIT;\n"+
+            "CREATE GENERATOR \"gen_constraints_OL_PK_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "SET TERM !! ;\n"+
+            "CREATE TRIGGER \"trg_constraints_OL_PK_AUTO_INCR\" FOR \"constraints\"\n"+
+            "ACTIVE BEFORE INSERT POSITION 0 AS\n"+
+            "BEGIN\n"+
+            "  IF (NEW.\"COL_PK_AUTO_INCR\" IS NULL) THEN\n"+
+            "    NEW.\"COL_PK_AUTO_INCR\" = GEN_ID(\"gen_constraints_OL_PK_AUTO_INCR\", 1);\n"+
+            "END !!\n"+
+            "SET TERM ; !!\n"+
+            "COMMIT;\n"+
+            "CREATE GENERATOR \"gen_constraints_COL_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "SET TERM !! ;\n"+
+            "CREATE TRIGGER \"trg_constraints_COL_AUTO_INCR\" FOR \"constraints\"\n"+
+            "ACTIVE BEFORE INSERT POSITION 0 AS\n"+
+            "BEGIN\n"+
+            "  IF (NEW.\"COL_AUTO_INCR\" IS NULL) THEN\n"+
+            "    NEW.\"COL_AUTO_INCR\" = GEN_ID(\"gen_constraints_COL_AUTO_INCR\", 1);\n"+
+            "END !!\n"+
+            "SET TERM ; !!\n"+
+            "COMMIT;\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "COMMIT;\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_F_COL_FK_2_table1\";\n"+
+            "COMMIT;\n"+
+            "DROP TABLE \"table3\";\n"+
+            "COMMIT;\n"+
+            "DROP TABLE \"table2\";\n"+
+            "COMMIT;\n"+
+            "DROP TABLE \"table1\";\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" CHAR(100) CHARACTER SET OCTETS NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE PRECISION NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "COMMIT;\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_F_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "COMMIT;\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n"+
+            "COMMIT;\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestHsqlDbPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestHsqlDbPlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestHsqlDbPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestHsqlDbPlatform.java Sun Sep 18 16:00:38 2005
@@ -43,41 +43,103 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE coltype IF EXISTS;\n" + //
-            "CREATE TABLE coltype\n" + //
+            "DROP TABLE \"coltype\" IF EXISTS;\n" + //
+            "CREATE TABLE \"coltype\"\n" + //
             "(\n" + //
-            "    COL_ARRAY           LONGVARBINARY,\n"+
-            "    COL_BIGINT          BIGINT,\n"+
-            "    COL_BINARY          BINARY,\n"+
-            "    COL_BIT             BIT,\n"+
-            "    COL_BLOB            LONGVARBINARY,\n"+
-            "    COL_BOOLEAN         BIT,\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            LONGVARCHAR,\n"+
-            "    COL_DATALINK        LONGVARBINARY,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        LONGVARBINARY,\n"+
-            "    COL_DOUBLE          DOUBLE,\n"+
-            "    COL_FLOAT           DOUBLE,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     OBJECT,\n"+
-            "    COL_LONGVARBINARY   LONGVARBINARY,\n"+
-            "    COL_LONGVARCHAR     LONGVARCHAR,\n"+
-            "    COL_NULL            LONGVARBINARY,\n"+
-            "    COL_NUMERIC         NUMERIC(15,0),\n"+
-            "    COL_OTHER           OTHER,\n"+
-            "    COL_REAL            REAL,\n"+
-            "    COL_REF             LONGVARBINARY,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          LONGVARBINARY,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       TIMESTAMP,\n"+
-            "    COL_TINYINT         TINYINT,\n"+
-            "    COL_VARBINARY       VARBINARY(15),\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           LONGVARBINARY,\n"+
+            "    \"COL_BIGINT\"          BIGINT,\n"+
+            "    \"COL_BINARY\"          BINARY,\n"+
+            "    \"COL_BIT\"             BIT,\n"+
+            "    \"COL_BLOB\"            LONGVARBINARY,\n"+
+            "    \"COL_BOOLEAN\"         BIT,\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            LONGVARCHAR,\n"+
+            "    \"COL_DATALINK\"        LONGVARBINARY,\n"+
+            "    \"COL_DATE\"            DATE,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        LONGVARBINARY,\n"+
+            "    \"COL_DOUBLE\"          DOUBLE,\n"+
+            "    \"COL_FLOAT\"           DOUBLE,\n"+
+            "    \"COL_INTEGER\"         INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"     OBJECT,\n"+
+            "    \"COL_LONGVARBINARY\"   LONGVARBINARY,\n"+
+            "    \"COL_LONGVARCHAR\"     LONGVARCHAR,\n"+
+            "    \"COL_NULL\"            LONGVARBINARY,\n"+
+            "    \"COL_NUMERIC\"         NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"           OTHER,\n"+
+            "    \"COL_REAL\"            REAL,\n"+
+            "    \"COL_REF\"             LONGVARBINARY,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          LONGVARBINARY,\n"+
+            "    \"COL_TIME\"            TIME,\n"+
+            "    \"COL_TIMESTAMP\"       TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"         TINYINT,\n"+
+            "    \"COL_VARBINARY\"       VARBINARY(15),\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        // Note that this is not valid in Hsqldb as it supports only one IDENTITY column per table
+        // and a IDENTITY column also needs to be a primary key column (which COL_AUTO_INCR isn't)
+        assertEqualsIgnoringWhitespaces(
+            "DROP TABLE \"constraints\" IF EXISTS;\n" +
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INTEGER IDENTITY,\n"+
+            "    \"COL_NOT_NULL\"         BINARY(100) NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" DOUBLE DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        BIGINT IDENTITY,\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\";\n"+
+            "DROP TABLE \"table3\" IF EXISTS;\n"+
+            "DROP TABLE \"table2\" IF EXISTS;\n"+
+            "DROP TABLE \"table1\" IF EXISTS;\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" BINARY(100) NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestInterbasePlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestInterbasePlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestInterbasePlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestInterbasePlatform.java Sun Sep 18 16:00:38 2005
@@ -41,43 +41,141 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE coltype;\n"+
+            "DROP TABLE \"coltype\";\n"+
             "COMMIT;\n"+
-            "CREATE TABLE coltype\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY           BLOB ,\n"+
-            "    COL_BIGINT          DECIMAL(38,0),\n"+
-            "    COL_BINARY          CHAR CHARACTER SET OCTETS,\n"+
-            "    COL_BIT             DECIMAL(1,0),\n"+
-            "    COL_BLOB            BLOB ,\n"+
-            "    COL_BOOLEAN         DECIMAL(1,0),\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            BLOB SUB_TYPE TEXT,\n"+
-            "    COL_DATALINK        BLOB,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        BLOB,\n"+
-            "    COL_DOUBLE          DOUBLE PRECISION,\n"+
-            "    COL_FLOAT           DOUBLE PRECISION,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     BLOB,\n"+
-            "    COL_LONGVARBINARY   BLOB,\n"+
-            "    COL_LONGVARCHAR     BLOB SUB_TYPE TEXT,\n"+
-            "    COL_NULL            BLOB,\n"+
-            "    COL_NUMERIC         NUMERIC(15,0),\n"+
-            "    COL_OTHER           BLOB,\n"+
-            "    COL_REAL            FLOAT,\n"+
-            "    COL_REF             BLOB,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          BLOB,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       TIMESTAMP,\n"+
-            "    COL_TINYINT         SMALLINT,\n"+
-            "    COL_VARBINARY       VARCHAR(15) CHARACTER SET OCTETS,\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           BLOB ,\n"+
+            "    \"COL_BIGINT\"          DECIMAL(38,0),\n"+
+            "    \"COL_BINARY\"          CHAR CHARACTER SET OCTETS,\n"+
+            "    \"COL_BIT\"             DECIMAL(1,0),\n"+
+            "    \"COL_BLOB\"            BLOB ,\n"+
+            "    \"COL_BOOLEAN\"         DECIMAL(1,0),\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            BLOB SUB_TYPE TEXT,\n"+
+            "    \"COL_DATALINK\"        BLOB,\n"+
+            "    \"COL_DATE\"            DATE,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        BLOB,\n"+
+            "    \"COL_DOUBLE\"          DOUBLE PRECISION,\n"+
+            "    \"COL_FLOAT\"           DOUBLE PRECISION,\n"+
+            "    \"COL_INTEGER\"         INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"     BLOB,\n"+
+            "    \"COL_LONGVARBINARY\"   BLOB,\n"+
+            "    \"COL_LONGVARCHAR\"     BLOB SUB_TYPE TEXT,\n"+
+            "    \"COL_NULL\"            BLOB,\n"+
+            "    \"COL_NUMERIC\"         NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"           BLOB,\n"+
+            "    \"COL_REAL\"            FLOAT,\n"+
+            "    \"COL_REF\"             BLOB,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          BLOB,\n"+
+            "    \"COL_TIME\"            TIME,\n"+
+            "    \"COL_TIMESTAMP\"       TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"         SMALLINT,\n"+
+            "    \"COL_VARBINARY\"       VARCHAR(15) CHARACTER SET OCTETS,\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n"+
             "COMMIT;\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "DELETE FROM RDB$GENERATOR WHERE RDB$GENERATOR_NAME = \"gen_constraints_OL_PK_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "DELETE FROM RDB$GENERATOR WHERE RDB$GENERATOR_NAME = \"gen_constraints_COL_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "DROP TABLE \"constraints\";\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INTEGER,\n"+
+            "    \"COL_NOT_NULL\"         CHAR(100) CHARACTER SET OCTETS NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" DOUBLE PRECISION DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        DECIMAL(38,0),\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n"+
+            "COMMIT;\n"+
+            "CREATE GENERATOR \"gen_constraints_OL_PK_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "SET TERM !! ;\n"+
+            "CREATE TRIGGER \"trg_constraints_OL_PK_AUTO_INCR\" FOR \"constraints\"\n"+
+            "ACTIVE BEFORE INSERT POSITION 0 AS\n"+
+            "BEGIN\n"+
+            "  IF (NEW.\"COL_PK_AUTO_INCR\" IS NULL) THEN\n"+
+            "    NEW.\"COL_PK_AUTO_INCR\" = GEN_ID(\"gen_constraints_OL_PK_AUTO_INCR\", 1);\n"+
+            "END !!\n"+
+            "SET TERM ; !!\n"+
+            "COMMIT;\n"+
+            "CREATE GENERATOR \"gen_constraints_COL_AUTO_INCR\";\n" +
+            "COMMIT;\n"+
+            "SET TERM !! ;\n"+
+            "CREATE TRIGGER \"trg_constraints_COL_AUTO_INCR\" FOR \"constraints\"\n"+
+            "ACTIVE BEFORE INSERT POSITION 0 AS\n"+
+            "BEGIN\n"+
+            "  IF (NEW.\"COL_AUTO_INCR\" IS NULL) THEN\n"+
+            "    NEW.\"COL_AUTO_INCR\" = GEN_ID(\"gen_constraints_COL_AUTO_INCR\", 1);\n"+
+            "END !!\n"+
+            "SET TERM ; !!\n"+
+            "COMMIT;\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "COMMIT;\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_F_COL_FK_2_table1\";\n"+
+            "COMMIT;\n"+
+            "DROP TABLE \"table3\";\n"+
+            "COMMIT;\n"+
+            "DROP TABLE \"table2\";\n"+
+            "COMMIT;\n"+
+            "DROP TABLE \"table1\";\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" CHAR(100) CHARACTER SET OCTETS NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE PRECISION NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "COMMIT;\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "COMMIT;\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_F_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "COMMIT;\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n"+
+            "COMMIT;\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMSSqlPlatform.java Sun Sep 18 16:00:38 2005
@@ -41,7 +41,9 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = 'coltype')\n"+
+            "SET quoted_identifier on;\n"+
+            "SET quoted_identifier on;\n"+
+            "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = \"coltype\")\n"+
             "BEGIN\n"+
             "     DECLARE @reftable nvarchar(60), @constraintname nvarchar(60)\n"+
             "     DECLARE refcursor CURSOR FOR\n"+
@@ -53,7 +55,7 @@
             "       where tables.id = ref.rkeyid\n"+
             "         and cons.id = ref.constid\n"+
             "         and reftables.id = ref.fkeyid\n"+
-            "         and tables.name = 'coltype'\n"+
+            "         and tables.name = \"coltype\"\n"+
             "     OPEN refcursor\n"+
             "     FETCH NEXT from refcursor into @reftable, @constraintname\n"+
             "     while @@FETCH_STATUS = 0\n"+
@@ -63,42 +65,209 @@
             "     END\n"+
             "     CLOSE refcursor\n"+
             "     DEALLOCATE refcursor\n"+
-            "     DROP TABLE coltype\n"+
+            "     DROP TABLE \"coltype\"\n"+
             "END;\n"+
-            "CREATE TABLE coltype\n"+
+            "SET quoted_identifier on;\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY           IMAGE,\n"+
-            "    COL_BIGINT          DECIMAL(19,0),\n"+
-            "    COL_BINARY          BINARY,\n"+
-            "    COL_BIT             BIT,\n"+
-            "    COL_BLOB            IMAGE,\n"+
-            "    COL_BOOLEAN         BIT,\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            TEXT,\n"+
-            "    COL_DATALINK        IMAGE,\n"+
-            "    COL_DATE            DATETIME,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        IMAGE,\n"+
-            "    COL_DOUBLE          FLOAT,\n"+
-            "    COL_FLOAT           FLOAT,\n"+
-            "    COL_INTEGER         INT,\n"+
-            "    COL_JAVA_OBJECT     IMAGE,\n"+
-            "    COL_LONGVARBINARY   IMAGE,\n"+
-            "    COL_LONGVARCHAR     TEXT,\n"+
-            "    COL_NULL            IMAGE,\n"+
-            "    COL_NUMERIC         NUMERIC(15,0),\n"+
-            "    COL_OTHER           IMAGE,\n"+
-            "    COL_REAL            REAL,\n"+
-            "    COL_REF             IMAGE,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          IMAGE,\n"+
-            "    COL_TIME            DATETIME,\n"+
-            "    COL_TIMESTAMP       DATETIME,\n"+
-            "    COL_TINYINT         SMALLINT,\n"+
-            "    COL_VARBINARY       VARBINARY(15),\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           IMAGE,\n"+
+            "    \"COL_BIGINT\"          DECIMAL(19,0),\n"+
+            "    \"COL_BINARY\"          BINARY,\n"+
+            "    \"COL_BIT\"             BIT,\n"+
+            "    \"COL_BLOB\"            IMAGE,\n"+
+            "    \"COL_BOOLEAN\"         BIT,\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            TEXT,\n"+
+            "    \"COL_DATALINK\"        IMAGE,\n"+
+            "    \"COL_DATE\"            DATETIME,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        IMAGE,\n"+
+            "    \"COL_DOUBLE\"          FLOAT,\n"+
+            "    \"COL_FLOAT\"           FLOAT,\n"+
+            "    \"COL_INTEGER\"         INT,\n"+
+            "    \"COL_JAVA_OBJECT\"     IMAGE,\n"+
+            "    \"COL_LONGVARBINARY\"   IMAGE,\n"+
+            "    \"COL_LONGVARCHAR\"     TEXT,\n"+
+            "    \"COL_NULL\"            IMAGE,\n"+
+            "    \"COL_NUMERIC\"         NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"           IMAGE,\n"+
+            "    \"COL_REAL\"            REAL,\n"+
+            "    \"COL_REF\"             IMAGE,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          IMAGE,\n"+
+            "    \"COL_TIME\"            DATETIME,\n"+
+            "    \"COL_TIMESTAMP\"       DATETIME,\n"+
+            "    \"COL_TINYINT\"         SMALLINT,\n"+
+            "    \"COL_VARBINARY\"       VARBINARY(15),\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        // this is not valid sql as a table can have only one identity column at most 
+        assertEqualsIgnoringWhitespaces(
+            "SET quoted_identifier on;\n"+
+            "SET quoted_identifier on;\n"+
+            "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = \"constraints\")\n"+
+            "BEGIN\n"+
+            "     DECLARE @reftable nvarchar(60), @constraintname nvarchar(60)\n"+
+            "     DECLARE refcursor CURSOR FOR\n"+
+            "     select reftables.name tablename, cons.name constraintname\n"+
+            "      from sysobjects tables,\n"+
+            "           sysobjects reftables,\n"+
+            "           sysobjects cons,\n"+
+            "           sysreferences ref\n"+
+            "       where tables.id = ref.rkeyid\n"+
+            "         and cons.id = ref.constid\n"+
+            "         and reftables.id = ref.fkeyid\n"+
+            "         and tables.name = \"constraints\"\n"+
+            "     OPEN refcursor\n"+
+            "     FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     while @@FETCH_STATUS = 0\n"+
+            "     BEGIN\n"+
+            "       exec ('alter table '+@reftable+' drop constraint '+@constraintname)\n"+
+            "       FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     END\n"+
+            "     CLOSE refcursor\n"+
+            "     DEALLOCATE refcursor\n"+
+            "     DROP TABLE \"constraints\"\n"+
+            "END;\n"+
+            "SET quoted_identifier on;\n"+
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INT IDENTITY(1,1),\n"+
+            "    \"COL_NOT_NULL\"         BINARY(100) NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" FLOAT DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        DECIMAL(19,0) IDENTITY(1,1),\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "SET quoted_identifier on;\n"+
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "SET quoted_identifier on;\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\";\n"+
+            "SET quoted_identifier on;\n"+
+            "SET quoted_identifier on;\n"+
+            "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = \"table3\")\n"+
+            "BEGIN\n"+
+            "     DECLARE @reftable nvarchar(60), @constraintname nvarchar(60)\n"+
+            "     DECLARE refcursor CURSOR FOR\n"+
+            "     select reftables.name tablename, cons.name constraintname\n"+
+            "      from sysobjects tables,\n"+
+            "           sysobjects reftables,\n"+
+            "           sysobjects cons,\n"+
+            "           sysreferences ref\n"+
+            "       where tables.id = ref.rkeyid\n"+
+            "         and cons.id = ref.constid\n"+
+            "         and reftables.id = ref.fkeyid\n"+
+            "         and tables.name = \"table3\"\n"+
+            "     OPEN refcursor\n"+
+            "     FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     while @@FETCH_STATUS = 0\n"+
+            "     BEGIN\n"+
+            "       exec ('alter table '+@reftable+' drop constraint '+@constraintname)\n"+
+            "       FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     END\n"+
+            "     CLOSE refcursor\n"+
+            "     DEALLOCATE refcursor\n"+
+            "     DROP TABLE \"table3\"\n"+
+            "END;\n"+
+            "SET quoted_identifier on;\n"+
+            "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = \"table2\")\n"+
+            "BEGIN\n"+
+            "     DECLARE @reftable nvarchar(60), @constraintname nvarchar(60)\n"+
+            "     DECLARE refcursor CURSOR FOR\n"+
+            "     select reftables.name tablename, cons.name constraintname\n"+
+            "      from sysobjects tables,\n"+
+            "           sysobjects reftables,\n"+
+            "           sysobjects cons,\n"+
+            "           sysreferences ref\n"+
+            "       where tables.id = ref.rkeyid\n"+
+            "         and cons.id = ref.constid\n"+
+            "         and reftables.id = ref.fkeyid\n"+
+            "         and tables.name = \"table2\"\n"+
+            "     OPEN refcursor\n"+
+            "     FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     while @@FETCH_STATUS = 0\n"+
+            "     BEGIN\n"+
+            "       exec ('alter table '+@reftable+' drop constraint '+@constraintname)\n"+
+            "       FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     END\n"+
+            "     CLOSE refcursor\n"+
+            "     DEALLOCATE refcursor\n"+
+            "     DROP TABLE \"table2\"\n"+
+            "END;\n"+
+            "SET quoted_identifier on;\n"+
+            "IF EXISTS (SELECT 1 FROM sysobjects WHERE type = 'U' AND name = \"table1\")\n"+
+            "BEGIN\n"+
+            "     DECLARE @reftable nvarchar(60), @constraintname nvarchar(60)\n"+
+            "     DECLARE refcursor CURSOR FOR\n"+
+            "     select reftables.name tablename, cons.name constraintname\n"+
+            "      from sysobjects tables,\n"+
+            "           sysobjects reftables,\n"+
+            "           sysobjects cons,\n"+
+            "           sysreferences ref\n"+
+            "       where tables.id = ref.rkeyid\n"+
+            "         and cons.id = ref.constid\n"+
+            "         and reftables.id = ref.fkeyid\n"+
+            "         and tables.name = \"table1\"\n"+
+            "     OPEN refcursor\n"+
+            "     FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     while @@FETCH_STATUS = 0\n"+
+            "     BEGIN\n"+
+            "       exec ('alter table '+@reftable+' drop constraint '+@constraintname)\n"+
+            "       FETCH NEXT from refcursor into @reftable, @constraintname\n"+
+            "     END\n"+
+            "     CLOSE refcursor\n"+
+            "     DEALLOCATE refcursor\n"+
+            "     DROP TABLE \"table1\"\n"+
+            "END;\n"+
+            "SET quoted_identifier on;\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INT,\n"+
+            "    \"COL_INDEX_1\" BINARY(100) NOT NULL,\n"+
+            "    \"COL_INDEX_2\" FLOAT NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "SET quoted_identifier on;\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INT,\n"+
+            "    \"COL_FK_1\" INT,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "SET quoted_identifier on;\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INT NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMaxDbPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMaxDbPlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMaxDbPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMaxDbPlatform.java Sun Sep 18 16:00:38 2005
@@ -41,41 +41,101 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE coltype CASCADE;\n"+
-            "CREATE TABLE coltype\n"+
+            "DROP TABLE \"coltype\" CASCADE;\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY           LONG BYTE,\n"+
-            "    COL_BIGINT          FIXED(38,0),\n"+
-            "    COL_BINARY          LONG BYTE,\n"+
-            "    COL_BIT             BOOLEAN,\n"+
-            "    COL_BLOB            LONG BYTE,\n"+
-            "    COL_BOOLEAN         BOOLEAN,\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            LONG,\n"+
-            "    COL_DATALINK        LONG BYTE,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        LONG BYTE,\n"+
-            "    COL_DOUBLE          DOUBLE PRECISION,\n"+
-            "    COL_FLOAT           DOUBLE PRECISION,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     LONG BYTE,\n"+
-            "    COL_LONGVARBINARY   LONG BYTE,\n"+
-            "    COL_LONGVARCHAR     LONG VARCHAR,\n"+
-            "    COL_NULL            LONG BYTE,\n"+
-            "    COL_NUMERIC         DECIMAL(15,0),\n"+
-            "    COL_OTHER           LONG BYTE,\n"+
-            "    COL_REAL            REAL,\n"+
-            "    COL_REF             LONG BYTE,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          LONG BYTE,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       TIMESTAMP,\n"+
-            "    COL_TINYINT         SMALLINT,\n"+
-            "    COL_VARBINARY       LONG BYTE,\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           LONG BYTE,\n"+
+            "    \"COL_BIGINT\"          FIXED(38,0),\n"+
+            "    \"COL_BINARY\"          LONG BYTE,\n"+
+            "    \"COL_BIT\"             BOOLEAN,\n"+
+            "    \"COL_BLOB\"            LONG BYTE,\n"+
+            "    \"COL_BOOLEAN\"         BOOLEAN,\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            LONG,\n"+
+            "    \"COL_DATALINK\"        LONG BYTE,\n"+
+            "    \"COL_DATE\"            DATE,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        LONG BYTE,\n"+
+            "    \"COL_DOUBLE\"          DOUBLE PRECISION,\n"+
+            "    \"COL_FLOAT\"           DOUBLE PRECISION,\n"+
+            "    \"COL_INTEGER\"         INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"     LONG BYTE,\n"+
+            "    \"COL_LONGVARBINARY\"   LONG BYTE,\n"+
+            "    \"COL_LONGVARCHAR\"     LONG VARCHAR,\n"+
+            "    \"COL_NULL\"            LONG BYTE,\n"+
+            "    \"COL_NUMERIC\"         DECIMAL(15,0),\n"+
+            "    \"COL_OTHER\"           LONG BYTE,\n"+
+            "    \"COL_REAL\"            REAL,\n"+
+            "    \"COL_REF\"             LONG BYTE,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          LONG BYTE,\n"+
+            "    \"COL_TIME\"            TIME,\n"+
+            "    \"COL_TIMESTAMP\"       TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"         SMALLINT,\n"+
+            "    \"COL_VARBINARY\"       LONG BYTE,\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "DROP TABLE \"constraints\" CASCADE;\n" +
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INTEGER DEFAULT SERIAL(1),\n"+
+            "    \"COL_NOT_NULL\"         LONG BYTE NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" DOUBLE PRECISION DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        FIXED(38,0) DEFAULT SERIAL(1),\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_FK_COL_FK_2_table1\";\n"+
+            "DROP TABLE \"table3\" CASCADE;\n"+
+            "DROP TABLE \"table2\" CASCADE;\n"+
+            "DROP TABLE \"table1\" CASCADE;\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" LONG BYTE NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE PRECISION NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_FK_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMcKoiPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMcKoiPlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMcKoiPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMcKoiPlatform.java Sun Sep 18 16:00:38 2005
@@ -41,41 +41,103 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE IF EXISTS coltype;\n"+
-            "CREATE TABLE coltype\n"+
+            "DROP TABLE IF EXISTS \"coltype\";\n"+
+            "CREATE TABLE \"coltype\"\n"+
             "(\n"+
-            "    COL_ARRAY           BLOB,\n"+
-            "    COL_BIGINT          BIGINT,\n"+
-            "    COL_BINARY          BINARY,\n"+
-            "    COL_BIT             BOOLEAN,\n"+
-            "    COL_BLOB            BLOB,\n"+
-            "    COL_BOOLEAN         BOOLEAN,\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            CLOB,\n"+
-            "    COL_DATALINK        BLOB,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        BLOB,\n"+
-            "    COL_DOUBLE          DOUBLE,\n"+
-            "    COL_FLOAT           DOUBLE,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     JAVA_OBJECT,\n"+
-            "    COL_LONGVARBINARY   LONGVARBINARY,\n"+
-            "    COL_LONGVARCHAR     LONGVARCHAR,\n"+
-            "    COL_NULL            BLOB,\n"+
-            "    COL_NUMERIC         NUMERIC(15,0),\n"+
-            "    COL_OTHER           BLOB,\n"+
-            "    COL_REAL            REAL,\n"+
-            "    COL_REF             BLOB,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          BLOB,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       TIMESTAMP,\n"+
-            "    COL_TINYINT         TINYINT,\n"+
-            "    COL_VARBINARY       VARBINARY(15),\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    \"COL_ARRAY\"           BLOB,\n"+
+            "    \"COL_BIGINT\"          BIGINT,\n"+
+            "    \"COL_BINARY\"          BINARY,\n"+
+            "    \"COL_BIT\"             BOOLEAN,\n"+
+            "    \"COL_BLOB\"            BLOB,\n"+
+            "    \"COL_BOOLEAN\"         BOOLEAN,\n"+
+            "    \"COL_CHAR\"            CHAR(15),\n"+
+            "    \"COL_CLOB\"            CLOB,\n"+
+            "    \"COL_DATALINK\"        BLOB,\n"+
+            "    \"COL_DATE\"            DATE,\n"+
+            "    \"COL_DECIMAL\"         DECIMAL(15,3),\n"+
+            "    \"COL_DECIMAL_NOSCALE\" DECIMAL(15,0),\n"+
+            "    \"COL_DISTINCT\"        BLOB,\n"+
+            "    \"COL_DOUBLE\"          DOUBLE,\n"+
+            "    \"COL_FLOAT\"           DOUBLE,\n"+
+            "    \"COL_INTEGER\"         INTEGER,\n"+
+            "    \"COL_JAVA_OBJECT\"     JAVA_OBJECT,\n"+
+            "    \"COL_LONGVARBINARY\"   LONGVARBINARY,\n"+
+            "    \"COL_LONGVARCHAR\"     LONGVARCHAR,\n"+
+            "    \"COL_NULL\"            BLOB,\n"+
+            "    \"COL_NUMERIC\"         NUMERIC(15,0),\n"+
+            "    \"COL_OTHER\"           BLOB,\n"+
+            "    \"COL_REAL\"            REAL,\n"+
+            "    \"COL_REF\"             BLOB,\n"+
+            "    \"COL_SMALLINT\"        SMALLINT,\n"+
+            "    \"COL_STRUCT\"          BLOB,\n"+
+            "    \"COL_TIME\"            TIME,\n"+
+            "    \"COL_TIMESTAMP\"       TIMESTAMP,\n"+
+            "    \"COL_TINYINT\"         TINYINT,\n"+
+            "    \"COL_VARBINARY\"       VARBINARY(15),\n"+
+            "    \"COL_VARCHAR\"         VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        // note that this is not valid SQL as obviously only one auto increment field
+        // can be defined for each table
+        assertEqualsIgnoringWhitespaces(
+            "DROP TABLE IF EXISTS \"constraints\";\n" +
+            "CREATE TABLE \"constraints\"\n"+
+            "(\n"+
+            "    \"COL_PK\"               VARCHAR(32),\n"+
+            "    \"COL_PK_AUTO_INCR\"     INTEGER DEFAULT UNIQUEKEY(\"constraints\") + 1,\n"+
+            "    \"COL_NOT_NULL\"         BINARY(100) NOT NULL,\n"+
+            "    \"COL_NOT_NULL_DEFAULT\" DOUBLE DEFAULT '-2.0' NOT NULL,\n"+
+            "    \"COL_DEFAULT\"          CHAR(4) DEFAULT 'test',\n"+
+            "    \"COL_AUTO_INCR\"        BIGINT DEFAULT UNIQUEKEY(\"constraints\") + 1,\n"+
+            "    PRIMARY KEY (\"COL_PK\", \"COL_PK_AUTO_INCR\")\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE \"table3\" DROP CONSTRAINT \"testfk\";\n"+
+            "ALTER TABLE \"table2\" DROP CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\";\n"+
+            "DROP TABLE IF EXISTS \"table3\";\n"+
+            "DROP TABLE IF EXISTS \"table2\";\n"+
+            "DROP TABLE IF EXISTS \"table1\";\n"+
+            "CREATE TABLE \"table1\"\n"+
+            "(\n"+
+            "    \"COL_PK_1\"    VARCHAR(32) NOT NULL,\n"+
+            "    \"COL_PK_2\"    INTEGER,\n"+
+            "    \"COL_INDEX_1\" BINARY(100) NOT NULL,\n"+
+            "    \"COL_INDEX_2\" DOUBLE NOT NULL,\n"+
+            "    \"COL_INDEX_3\" CHAR(4),\n"+
+            "    PRIMARY KEY (\"COL_PK_1\", \"COL_PK_2\")\n"+
+            ");\n"+
+            "CREATE INDEX \"testindex1\" ON \"table1\" (\"COL_INDEX_2\");\n"+
+            "CREATE UNIQUE INDEX \"testindex2\" ON \"table1\" (\"COL_INDEX_3\", \"COL_INDEX_1\");\n"+
+            "CREATE TABLE \"table2\"\n"+
+            "(\n"+
+            "    \"COL_PK\"   INTEGER,\n"+
+            "    \"COL_FK_1\" INTEGER,\n"+
+            "    \"COL_FK_2\" VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "CREATE TABLE \"table3\"\n"+
+            "(\n"+
+            "    \"COL_PK\" VARCHAR(16),\n"+
+            "    \"COL_FK\" INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (\"COL_PK\")\n"+
+            ");\n"+
+            "ALTER TABLE \"table2\" ADD CONSTRAINT \"table2_FK_COL_FK_1_COL_FK_2_table1\" FOREIGN KEY (\"COL_FK_1\", \"COL_FK_2\") REFERENCES \"table1\" (\"COL_PK_2\", \"COL_PK_1\");\n"+
+            "ALTER TABLE \"table3\" ADD CONSTRAINT \"testfk\" FOREIGN KEY (\"COL_FK\") REFERENCES \"table2\" (\"COL_PK\");\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }

Modified: db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMySqlPlatform.java
URL: http://svn.apache.org/viewcvs/db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMySqlPlatform.java?rev=289996&r1=289995&r2=289996&view=diff
==============================================================================
--- db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMySqlPlatform.java (original)
+++ db/ddlutils/trunk/src/test/org/apache/ddlutils/platform/TestMySqlPlatform.java Sun Sep 18 16:00:38 2005
@@ -41,41 +41,101 @@
     public void testColumnTypes() throws Exception
     {
         assertEqualsIgnoringWhitespaces(
-            "DROP TABLE IF EXISTS coltype;\n"+
-            "CREATE TABLE coltype\n"+
+            "DROP TABLE IF EXISTS `coltype`;\n"+
+            "CREATE TABLE `coltype`\n"+
             "(\n"+
-            "    COL_ARRAY           LONGBLOB,\n"+
-            "    COL_BIGINT          BIGINT,\n"+
-            "    COL_BINARY          CHAR(254) BINARY,\n"+
-            "    COL_BIT             TINYINT(1),\n"+
-            "    COL_BLOB            LONGBLOB,\n"+
-            "    COL_BOOLEAN         TINYINT(1),\n"+
-            "    COL_CHAR            CHAR(15),\n"+
-            "    COL_CLOB            LONGTEXT,\n"+
-            "    COL_DATALINK        MEDIUMBLOB,\n"+
-            "    COL_DATE            DATE,\n"+
-            "    COL_DECIMAL         DECIMAL(15,3),\n"+
-            "    COL_DECIMAL_NOSCALE DECIMAL(15,0),\n"+
-            "    COL_DISTINCT        LONGBLOB,\n"+
-            "    COL_DOUBLE          DOUBLE,\n"+
-            "    COL_FLOAT           DOUBLE,\n"+
-            "    COL_INTEGER         INTEGER,\n"+
-            "    COL_JAVA_OBJECT     LONGBLOB,\n"+
-            "    COL_LONGVARBINARY   MEDIUMBLOB,\n"+
-            "    COL_LONGVARCHAR     MEDIUMTEXT,\n"+
-            "    COL_NULL            MEDIUMBLOB,\n"+
-            "    COL_NUMERIC         DECIMAL(15,0),\n"+
-            "    COL_OTHER           LONGBLOB,\n"+
-            "    COL_REAL            FLOAT,\n"+
-            "    COL_REF             MEDIUMBLOB,\n"+
-            "    COL_SMALLINT        SMALLINT,\n"+
-            "    COL_STRUCT          LONGBLOB,\n"+
-            "    COL_TIME            TIME,\n"+
-            "    COL_TIMESTAMP       DATETIME,\n"+
-            "    COL_TINYINT         TINYINT,\n"+
-            "    COL_VARBINARY       VARCHAR(15) BINARY,\n"+
-            "    COL_VARCHAR         VARCHAR(15)\n"+
+            "    `COL_ARRAY`           LONGBLOB,\n"+
+            "    `COL_BIGINT`          BIGINT,\n"+
+            "    `COL_BINARY`          CHAR(254) BINARY,\n"+
+            "    `COL_BIT`             TINYINT(1),\n"+
+            "    `COL_BLOB`            LONGBLOB,\n"+
+            "    `COL_BOOLEAN`         TINYINT(1),\n"+
+            "    `COL_CHAR`            CHAR(15),\n"+
+            "    `COL_CLOB`            LONGTEXT,\n"+
+            "    `COL_DATALINK`        MEDIUMBLOB,\n"+
+            "    `COL_DATE`            DATE,\n"+
+            "    `COL_DECIMAL`         DECIMAL(15,3),\n"+
+            "    `COL_DECIMAL_NOSCALE` DECIMAL(15,0),\n"+
+            "    `COL_DISTINCT`        LONGBLOB,\n"+
+            "    `COL_DOUBLE`          DOUBLE,\n"+
+            "    `COL_FLOAT`           DOUBLE,\n"+
+            "    `COL_INTEGER`         INTEGER,\n"+
+            "    `COL_JAVA_OBJECT`     LONGBLOB,\n"+
+            "    `COL_LONGVARBINARY`   MEDIUMBLOB,\n"+
+            "    `COL_LONGVARCHAR`     MEDIUMTEXT,\n"+
+            "    `COL_NULL`            MEDIUMBLOB,\n"+
+            "    `COL_NUMERIC`         DECIMAL(15,0),\n"+
+            "    `COL_OTHER`           LONGBLOB,\n"+
+            "    `COL_REAL`            FLOAT,\n"+
+            "    `COL_REF`             MEDIUMBLOB,\n"+
+            "    `COL_SMALLINT`        SMALLINT,\n"+
+            "    `COL_STRUCT`          LONGBLOB,\n"+
+            "    `COL_TIME`            TIME,\n"+
+            "    `COL_TIMESTAMP`       DATETIME,\n"+
+            "    `COL_TINYINT`         TINYINT,\n"+
+            "    `COL_VARBINARY`       VARCHAR(15) BINARY,\n"+
+            "    `COL_VARCHAR`         VARCHAR(15)\n"+
             ");\n",
-            createTestDatabase());
+            createTestDatabase(COLUMN_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the column constraints.
+     */
+    public void testColumnConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "DROP TABLE IF EXISTS `constraints`;\n" +
+            "CREATE TABLE `constraints`\n"+
+            "(\n"+
+            "    `COL_PK`               VARCHAR(32),\n"+
+            "    `COL_PK_AUTO_INCR`     INTEGER AUTO_INCREMENT,\n"+
+            "    `COL_NOT_NULL`         CHAR(100) BINARY NOT NULL,\n"+
+            "    `COL_NOT_NULL_DEFAULT` DOUBLE DEFAULT '-2.0' NOT NULL,\n"+
+            "    `COL_DEFAULT`          CHAR(4) DEFAULT 'test',\n"+
+            "    `COL_AUTO_INCR`        BIGINT AUTO_INCREMENT,\n"+
+            "    PRIMARY KEY (`COL_PK`, `COL_PK_AUTO_INCR`)\n"+
+            ");\n",
+            createTestDatabase(COLUMN_CONSTRAINT_TEST_SCHEMA));
+    }
+
+    /**
+     * Tests the table constraints.
+     */
+    public void testTableConstraints() throws Exception
+    {
+        assertEqualsIgnoringWhitespaces(
+            "ALTER TABLE `table3` DROP CONSTRAINT `testfk`;\n"+
+            "ALTER TABLE `table2` DROP CONSTRAINT `table2_FK_COL_FK_1_COL_FK_2_table1`;\n"+
+            "DROP TABLE IF EXISTS `table3`;\n"+
+            "DROP TABLE IF EXISTS `table2`;\n"+
+            "DROP TABLE IF EXISTS `table1`;\n"+
+            "CREATE TABLE `table1`\n"+
+            "(\n"+
+            "    `COL_PK_1`    VARCHAR(32) NOT NULL,\n"+
+            "    `COL_PK_2`    INTEGER,\n"+
+            "    `COL_INDEX_1` CHAR(100) BINARY NOT NULL,\n"+
+            "    `COL_INDEX_2` DOUBLE NOT NULL,\n"+
+            "    `COL_INDEX_3` CHAR(4),\n"+
+            "    PRIMARY KEY (`COL_PK_1`, `COL_PK_2`)\n"+
+            ");\n"+
+            "CREATE INDEX `testindex1` ON `table1` (`COL_INDEX_2`);\n"+
+            "CREATE UNIQUE INDEX `testindex2` ON `table1` (`COL_INDEX_3`, `COL_INDEX_1`);\n"+
+            "CREATE TABLE `table2`\n"+
+            "(\n"+
+            "    `COL_PK`   INTEGER,\n"+
+            "    `COL_FK_1` INTEGER,\n"+
+            "    `COL_FK_2` VARCHAR(32) NOT NULL,\n"+
+            "    PRIMARY KEY (`COL_PK`)\n"+
+            ");\n"+
+            "CREATE TABLE `table3`\n"+
+            "(\n"+
+            "    `COL_PK` VARCHAR(16),\n"+
+            "    `COL_FK` INTEGER NOT NULL,\n"+
+            "    PRIMARY KEY (`COL_PK`)\n"+
+            ");\n"+
+            "ALTER TABLE `table2` ADD CONSTRAINT `table2_FK_COL_FK_1_COL_FK_2_table1` FOREIGN KEY (`COL_FK_1`, `COL_FK_2`) REFERENCES `table1` (`COL_PK_2`, `COL_PK_1`);\n"+
+            "ALTER TABLE `table3` ADD CONSTRAINT `testfk` FOREIGN KEY (`COL_FK`) REFERENCES `table2` (`COL_PK`);\n",
+            createTestDatabase(TABLE_CONSTRAINT_TEST_SCHEMA));
     }
 }