From eb5b24ef6165989181008658e0430634ea7564ac Mon Sep 17 00:00:00 2001 From: Oliver Thomsen Date: Mon, 5 Aug 2013 18:34:40 +0200 Subject: [PATCH] added support for generateChangelog on DB2iSeries --- .../snapshot/jvm/SequenceSnapshotGenerator.java | 4 +++- .../jvm/UniqueConstraintSnapshotGenerator.java | 11 +++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java b/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java index c618cc00cdc..08268118337 100644 --- a/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java +++ b/liquibase-core/src/main/java/liquibase/snapshot/jvm/SequenceSnapshotGenerator.java @@ -70,7 +70,9 @@ protected DatabaseObject snapshotObject(DatabaseObject example, DatabaseSnapshot } protected String getSelectSequenceSql(Schema schema, Database database) { - if (database instanceof DB2Database) { + if (database instanceof DB2iDatabase) { + return "SELECT SEQUENCE_NAME FROM QSYS2.SYSSEQUENCES WHERE SEQUENCE_SCHEMA = '" + schema.getCatalogName() + "'"; + } else if (database instanceof DB2Database) { return "SELECT SEQNAME AS SEQUENCE_NAME FROM SYSCAT.SEQUENCES WHERE SEQTYPE='S' AND SEQSCHEMA = '" + schema.getCatalogName() + "'"; } else if (database instanceof DerbyDatabase) { return "SELECT " + diff --git a/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java b/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java index 9c530b04159..b7f4ffc97a4 100644 --- a/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java +++ b/liquibase-core/src/main/java/liquibase/snapshot/jvm/UniqueConstraintSnapshotGenerator.java @@ -92,6 +92,11 @@ protected List listConstraints(Table table, Database database, Schema schem "and uc.owner = '" + database.correctObjectName(schema.getCatalogName(), Catalog.class) + "' " + "and ui.table_owner = '" + database.correctObjectName(schema.getCatalogName(), Catalog.class) + "' " + "and ucc.owner = '" + database.correctObjectName(schema.getCatalogName(), Catalog.class) + "'"; + } else if (database instanceof DB2iDatabase) { + sql = "select distinct CONSTRAINT_NAME from QSYS2.SYSCST " + + "where TABLE_NAME = '" + database.correctObjectName(table.getName(), Table.class) + "' " + + "and TABLE_SCHEMA = '" + database.correctObjectName(schema.getCatalogName(), Catalog.class) + "' " + + "and CONSTRAINT_TYPE = 'UNIQUE'"; } else if (database instanceof DB2Database) { sql = "select distinct k.constname as constraint_name from syscat.keycoluse k, syscat.tabconst t " + "where k.constname = t.constname " + @@ -152,6 +157,12 @@ protected List listColumns(UniqueConstraint example, Database database) thr "order by TC.Constraint_Name"; } else if (database instanceof OracleDatabase) { sql = "select ucc.column_name from all_cons_columns ucc where ucc.constraint_name='"+database.correctObjectName(name, UniqueConstraint.class)+"' and ucc.owner='"+database.correctObjectName(schema.getCatalogName(), Catalog.class)+"' order by ucc.position"; + } else if (database instanceof DB2iDatabase) { + sql = "select k.colname as column_name from QSYS2.SYSKEYCST k, QSYS2.SYSCST t " + + "where k.CONSTRAINT_NAME = t.CONSTRAINT_NAME " + + "and t.CONSTRAINT_TYPE = 'UNIQUE'" + + "and k.CONSTRAINT_NAME='"+database.correctObjectName(name, UniqueConstraint.class)+"' "+ + "order by k.ORDINAL_POSITION"; } else if (database instanceof DB2Database) { sql = "select k.colname as column_name from syscat.keycoluse k, syscat.tabconst t " + "where k.constname = t.constname " +