If you are interested in adding support, that would be great. The easiest way is to register on liquibase.jira.com, check out the code using your username/password, and commit what you need to change. We are experimenting with
The state of the code right now, is that there are two major branches: /branches/1_9 and /trunk. Trunk is in the process of a major refactoring which will hopefully be done in about a month. While that would be the best place to add it, it may not be in the state to jump into adding new dialect support. Your best bet will probably be to check out /branches/1_9 and add it there. We can always merge the changes into trunk later on. You can take a look at any of the Database implementations (DB2Database may be a good starting point). There is an AbstractSampleChangeLogRunnerTest class you can extend as well to provide a good automated test of your new dialect. See DB2SampleChangeLogRunnerTest for an example. Let me know if you have any questions Nathan -----Original Message----- From: Marc Logemann [mailto:[email protected]] Sent: Monday, June 01, 2009 7:30 AM To: [email protected] Subject: Re: [Liquibase-user] duplicate Key on Liq Table creation Hi, ok, replying to myself after some hours of investigation: 1) we need to define a new DB dialiect in Liquibase which is called "DB2 for iSeries". The DB2 on this platform, while mostly SQL level compliant has some quirks when it comes to MetaData handling. Its a different driver also which is used on this platform. I could start cloning the original DB2 and make some changes. With current version, Liquibase handles it like a normal DB2 DB because the proprietary product name (defined in driver) starts also with DB2 (DB2 UDB for iSeries). 2) my problem mentioned is there because of the call in AbstractDatabase.doesChangeLogLockTableExist() rs = connection .getMetaData ().getTables(convertRequestedSchemaToCatalog(getDefaultSchemaName()), convertRequestedSchemaToSchema(getDefaultSchemaName()), getDatabaseChangeLogLockTableName(), new String[]{"TABLE"}); just doesnt work. On DB2 for ISeries its a bad idea to supply "null" as schema name. It uses some user profile defaults to determine the default schema instead of just looking at some very prominent JDBC url parameters for the jt400 driver. The mother of all my problems is, that every call to getTables() just doesnt work or better, results in a result-set without any rows. So Liquibase thinks there are no tables. In my case he thinks that its DBCHANGELOG tables are not there, but they are. So as long as DB2 for iSeries is different in some ways (and to my knowledge, this will be the case for the time being), you have to handle it differently. This also applies for nearly ALL SQL clients available. I am using DBVisualizer which is really good but it also fails with some DB2 for iSeries thingies because of the non-existant DB2 abstraction for this platform. So i am willing to help out there and hope patches are appreciated. --- regards Marc Logemann http://www.logemann.org http://www.logentis.de Am 30.05.2009 um 00:41 schrieb Marc Logemann: > Hi, > > i am trying to use liquibase to bootstrap a complete DB schema, thus i > dont have any tables. Only the schema. Normally Liquibase creates its > two management tables and then runs the changeset. This works with > MySQL but with DB2 for iSeries, i am getting the following stack. It > seems Liquibase use a Constraint names two times. Lquibase wants to > create "PK_DATABASECHANGE" two times. > > java.sql.SQLException: [SQL0601] PK_DATABASECHANGE der Art * in > NETVERSYS2 bereits vorhanden. > at > com.ibm.as400.access.JDError.throwSQLException(JDError.java:650) > at > com.ibm.as400.access.JDError.throwSQLException(JDError.java:621) > at > com > .ibm > .as400 > .access.AS400JDBCStatement.commonPrepare(AS400JDBCStatement.java: > 1378) > at > com > .ibm.as400.access.AS400JDBCStatement.execute(AS400JDBCStatement.java: > 1729) > at > org > .apache > .commons.dbcp.DelegatingStatement.execute(DelegatingStatement.java: > 264) > at liquibase.database.template.JdbcTemplate > $1ExecuteStatementCallback.doInStatement(JdbcTemplate.java:78) > at > liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:48) > at > liquibase.database.template.JdbcTemplate.execute(JdbcTemplate.java:86) > at > liquibase > .database > .AbstractDatabase > .checkDatabaseChangeLogLockTable(AbstractDatabase.java:712) > at liquibase.lock.LockHandler.acquireLock(LockHandler.java:40) > at liquibase.lock.LockHandler.waitForLock(LockHandler.java:150) > at liquibase.Liquibase.listUnrunChangeSets(Liquibase.java:518) > > The SQL message is in german, it translates to: > > java.sql.SQLException: [SQL0601] PK_DATABASECHANGE of Type * in > NETVERSYS2 already existant. > > And in fact it already exists because Liquibase already created its > first (the lock table) entity. It seems it wants to create the second > with the same constraint name. Can this be? > > --- > regards > Marc Logemann > http://www.logemann.org > http://www.logentis.de > > > > > > ------------------------------------------------------------------------ ------ > Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT > is a gathering of tech-side developers & brand creativity > professionals. Meet > the minds behind Google Creative Lab, Visual Complexity, Processing, & > iPhoneDevCamp as they present alongside digital heavyweights like > Barbarian > Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com > _______________________________________________ > Liquibase-user mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/liquibase-user ------------------------------------------------------------------------ ------ Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT is a gathering of tech-side developers & brand creativity professionals. Meet the minds behind Google Creative Lab, Visual Complexity, Processing, & iPhoneDevCamp as they present alongside digital heavyweights like Barbarian Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com _______________________________________________ Liquibase-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/liquibase-user ------------------------------------------------------------------------------ OpenSolaris 2009.06 is a cutting edge operating system for enterprises looking to deploy the next generation of Solaris that includes the latest innovations from Sun and the OpenSource community. Download a copy and enjoy capabilities such as Networking, Storage and Virtualization. Go to: http://p.sf.net/sfu/opensolaris-get _______________________________________________ Liquibase-user mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/liquibase-user
