sapdb

CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       INTEGER NOT NULL DEFAULT SERIAL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) NOT NULL DEFAULT 'Chen',
averylonglongfieldname   LONG,
price                    FIXED(7,2) DEFAULT 0.00,
MYDATE                   DATE DEFAULT DATE,
BIGFELLOW                LONG,
TS                       TIMESTAMP DEFAULT TIMESTAMP,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable ADD (height FLOAT(38), weight FLOAT(38));
ALTER TABLE KUTU.testtable MODIFY (height FLOAT(38) NOT NULL, weight FLOAT(38) NOT NULL);

sapdb
ALTER TABLE KUTU.table DROP ("my col", "col2_with_Quotes", A_col3, "col3(10)");

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32)
);

sybase

CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       INT DEFAULT AUTOINCREMENT NOT NULL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   TEXT NULL,
price                    NUMERIC(7,2) DEFAULT 0.00,
MYDATE                   DATETIME DEFAULT GetDate(),
BIGFELLOW                TEXT NULL,
TS                       DATETIME NULL,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE CLUSTERED INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable  ADD
 height REAL NULL, 
 weight REAL NULL;
ALTER TABLE KUTU.testtable  ALTER COLUMN height REAL NOT NULL;
ALTER TABLE KUTU.testtable  ALTER COLUMN weight REAL NOT NULL;

sybase
ALTER TABLE KUTU.table
 DROP COLUMN "my col", 
 DROP COLUMN "col2_with_Quotes", 
 DROP COLUMN A_col3, 
 DROP COLUMN "col3(10)";

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32) NULL
);

mysql

CREATE DATABASE KUTU;
DROP TABLE IF EXISTS KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       INTEGER NOT NULL AUTO_INCREMENT,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) NOT NULL DEFAULT 'Chen',
averylonglongfieldname   TEXT,
price                    NUMERIC(7,2) DEFAULT 0.00,
MYDATE                   TIMESTAMP,
BIGFELLOW                TEXT,
TS                       TIMESTAMP,
                 PRIMARY KEY (ID, LASTNAME)
)ENGINE=INNODB;
ALTER TABLE KUTU.`KUTU.testtable` ADD  INDEX idx_name  (FIRSTNAME, LASTNAME);
ALTER TABLE KUTU.`KUTU.testtable` ADD  INDEX idx_date  (MYDATE);
ALTER TABLE KUTU.testtable ADD  FULLTEXT INDEX idx  (price, firstname, lastname);
ALTER TABLE KUTU.testtable ADD  INDEX idx2  (price, lastname);
ALTER TABLE KUTU.testtable ADD height DOUBLE;
ALTER TABLE KUTU.testtable ADD weight DOUBLE;
ALTER TABLE KUTU.testtable MODIFY COLUMN height DOUBLE NOT NULL;
ALTER TABLE KUTU.testtable MODIFY COLUMN weight DOUBLE NOT NULL;

mysql
ALTER TABLE KUTU.table DROP COLUMN `my col`;
ALTER TABLE KUTU.table DROP COLUMN `col2_with_Quotes`;
ALTER TABLE KUTU.table DROP COLUMN A_col3;
ALTER TABLE KUTU.table DROP COLUMN `col3(10)`;

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32)
);

access

Warning: Access does not supported DEFAULT values (field FIRSTNAME)
Warning: Access does not supported DEFAULT values (field LASTNAME)
Warning: Access does not supported DEFAULT values (field price)
Warning: Access does not supported DEFAULT values (field MYDATE)
Warning: Access does not supported DEFAULT values (field TS)
AlterColumnSQL not supported

DROP TABLE testtable;
CREATE TABLE testtable (
ID                       COUNTER,
FIRSTNAME                VARCHAR(30),
LASTNAME                 VARCHAR(28) NOT NULL,
averylonglongfieldname   MEMO,
price                    NUMERIC(7,2),
MYDATE                   DATETIME,
BIGFELLOW                MEMO,
TS                       DATETIME,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON testtable (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON testtable (MYDATE);
CREATE INDEX idx ON testtable (price, firstname, lastname);
CREATE INDEX idx2 ON testtable (price, lastname);
ALTER TABLE testtable ADD height DOUBLE;
ALTER TABLE testtable ADD weight DOUBLE;

access
DropColumnSQL not supported

CREATE TABLE adoxyz (
LASTNAME                 VARCHAR(32)
);

oci8po

CREATE USER KUTU IDENTIFIED BY tiger;
GRANT CREATE SESSION, CREATE TABLE,UNLIMITED TABLESPACE,CREATE SEQUENCE TO KUTU;
DROP TABLE KUTU.testtable CASCADE CONSTRAINTS;
drop sequence KUTU.seq_testtable;
CREATE TABLE KUTU.testtable (
ID                       DECIMAL(10) NOT NULL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   VARCHAR(4000),
price                    DECIMAL(7,2) DEFAULT 0.00,
MYDATE                   DATE DEFAULT TRUNC(SYSDATE),
BIGFELLOW                VARCHAR(4000),
TS                       DATE DEFAULT SYSDATE,
                 PRIMARY KEY (ID, LASTNAME)
)TABLESPACE USERS;
CREATE SEQUENCE KUTU.SEQ_testtable   ;
CREATE OR REPLACE TRIGGER KUTU.TRIG_SEQ_testtable BEFORE insert ON KUTU.testtable FOR EACH ROW WHEN (NEW.ID IS NULL OR NEW.ID = 0) BEGIN select KUTU.SEQ_testtable.nextval into :new.ID from dual; END;;
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE BITMAP INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE testtable ADD (
 height DECIMAL, 
 weight DECIMAL);
ALTER TABLE testtable MODIFY(
 height DECIMAL NOT NULL, 
 weight DECIMAL NOT NULL);

oci8
ALTER TABLE table DROP("my col", "col2_with_Quotes", A_col3, "col3(10)") CASCADE CONSTRAINTS;

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32)
);

postgres

AlterColumnSQL needs a complete table-definiton for PostgreSQL

CREATE DATABASE KUTU LOCATION='/u01/postdata';
DROP TABLE KUTU.testtable CASCADE;
CREATE TABLE KUTU.testtable (
ID                       SERIAL,
FIRSTNAME                VARCHAR(30) DEFAULT '',
LASTNAME                 VARCHAR(28) DEFAULT '' NOT NULL,
averylonglongfieldname   TEXT,
price                    NUMERIC(7,2) DEFAULT 0.00,
MYDATE                   DATE DEFAULT CURRENT_DATE,
BIGFELLOW                TEXT,
TS                       TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE INDEX idx ON KUTU.testtable USING HASH (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable ADD COLUMN height FLOAT8;
ALTER TABLE KUTU.testtable ADD COLUMN weight FLOAT8;

CREATE TABLE adoxyz (
ID                       SERIAL,
FIRSTNAME                VARCHAR(30) DEFAULT '',
LASTNAME                 VARCHAR(28) DEFAULT '' NOT NULL,
averylonglongfieldname   TEXT,
price                    NUMERIC(7,2) DEFAULT 0.00,
MYDATE                   DATE DEFAULT CURRENT_DATE,
BIGFELLOW                TEXT,
TS                       TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON adoxyz (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON adoxyz (MYDATE);

postgres
DropColumnSQL needs complete table-definiton for PostgreSQL < 7.3

CREATE TABLE adoxyz (
LASTNAME                 VARCHAR(32)
);

odbc_mssql

CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       INT IDENTITY(1,1) NOT NULL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   TEXT NULL,
price                    NUMERIC(7,2) DEFAULT 0.00,
MYDATE                   DATETIME DEFAULT GetDate(),
BIGFELLOW                TEXT NULL,
TS                       DATETIME DEFAULT GetDate(),
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE CLUSTERED INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable  ADD
 height REAL NULL, 
 weight REAL NULL;
ALTER TABLE KUTU.testtable ALTER COLUMN height REAL NOT NULL;
ALTER TABLE KUTU.testtable ALTER COLUMN weight REAL NOT NULL;

CREATE TABLE adoxyz (
ID                       INT IDENTITY(1,1) NOT NULL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   TEXT NULL,
price                    NUMERIC(7,2) DEFAULT 0.00,
MYDATE                   DATETIME DEFAULT GetDate(),
BIGFELLOW                TEXT NULL,
TS                       DATETIME DEFAULT GetDate(),
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON adoxyz (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON adoxyz (MYDATE);

mssql
ALTER TABLE table
 DROP COLUMN "my col", 
 DROP COLUMN "col2_with_Quotes", 
 DROP COLUMN A_col3, 
 DROP COLUMN "col3(10)";

CREATE TABLE adoxyz (
LASTNAME                 VARCHAR(32) NULL
);

odbc

AlterColumnSQL not supported

CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       DECIMAL(10) NOT NULL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   VARCHAR(250),
price                    DECIMAL(7,2) DEFAULT 0.00,
MYDATE                   DATE,
BIGFELLOW                VARCHAR(250),
TS                       DATE,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable ADD height DECIMAL(32,8);
ALTER TABLE KUTU.testtable ADD weight DECIMAL(32,8);

generic
DropColumnSQL not supported

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32)
);

db2

AlterColumnSQL not supported

CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       INTEGER GENERATED ALWAYS AS IDENTITY,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   VARCHAR(3600),
price                    DECIMAL(7,2) DEFAULT 0.00,
MYDATE                   DATE DEFAULT CURRENT DATE,
BIGFELLOW                VARCHAR(3600),
TS                       TIMESTAMP DEFAULT CURRENT TIMESTAMP,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable ADD height DOUBLE;
ALTER TABLE KUTU.testtable ADD weight DOUBLE;

db2
DropColumnSQL not supported

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32)
);

firebird

AlterColumnSQL not supported

CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       INTEGER NOT NULL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   VARCHAR(4000),
price                    DECIMAL(7,2) DEFAULT 0.00,
MYDATE                   DATE DEFAULT cast('TODAY' as timestamp),
BIGFELLOW                VARCHAR(4000),
TS                       TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable ADD height DOUBLE PRECISION;
ALTER TABLE KUTU.testtable ADD weight DOUBLE PRECISION;

ibase
DropColumnSQL not supported

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32)
);

informix

AlterColumnSQL not supported

CREATE DATABASE KUTU;
DROP TABLE KUTU.testtable;
CREATE TABLE KUTU.testtable (
ID                       SERIAL,
FIRSTNAME                VARCHAR(30) DEFAULT 'Joan',
LASTNAME                 VARCHAR(28) DEFAULT 'Chen' NOT NULL,
averylonglongfieldname   TEXT,
price                    DECIMAL(7,2) DEFAULT 0.00,
MYDATE                   DATE DEFAULT TODAY,
BIGFELLOW                TEXT,
TS                       DATETIME YEAR TO SECOND DEFAULT CURRENT,
                 PRIMARY KEY (ID, LASTNAME)
);
CREATE INDEX idx_name ON KUTU."KUTU.testtable" (FIRSTNAME, LASTNAME);
CREATE INDEX idx_date ON KUTU."KUTU.testtable" (MYDATE);
CREATE INDEX idx ON KUTU.testtable (price, firstname, lastname);
CREATE INDEX idx2 ON KUTU.testtable (price, lastname);
ALTER TABLE KUTU.testtable ADD height FLOAT;
ALTER TABLE KUTU.testtable ADD weight FLOAT;

informix
DropColumnSQL not supported

CREATE TABLE KUTU.adoxyz (
LASTNAME                 VARCHAR(32)
);

Test XML Schema

<?xml version="1.0"?>
<schema version="0.3">
  <table name="mytable">
    <field name="row1" type="I">
      <descr>An integer row that's a primary key and autoincrements</descr>
      <KEY/>
      <AUTOINCREMENT/>
    </field>
    <field name="row2" type="C" size="16">
      <descr>A 16 character varchar row that can't be null</descr>
      <NOTNULL/>
    </field>
    <index name="myindex">
      <col>row1</col>
      <col>row2</col>
    </index>
  </table>
  <sql>
    <descr>SQL to be executed only on specific platforms</descr>
    <query platform="postgres|postgres7">
      insert into mytable ( row1, row2 ) values ( 12, 'postgres stuff' )
    </query>
    <query platform="mysql">
      insert into mytable ( row1, row2 ) values ( 12, 'mysql stuff' )
    </query>
	<query platform="mssql">
      insert into mytable ( row1, row2 ) values ( 12, 'Microsoft stuff' )
    </query>
  </sql>
  <table name="obsoletetable">
    <DROP/>
  </table>
</schema>
fail connect1