I see further down in the init() method there are some checks for supportsBooleanDataType() (which I added to DB2iDatabase on my local copy of the extension, to return ‘false’), but it doesn’t get that far because of the above fail.
Any suggestions? Is this a bug in the init() method?
Thanks much! tbh, I am not an IBMi expert. I just created an empty library and thought that might work. I could use some advice on how to properly create an empty database library on the i.
Also, I am executing liquibase from a java program using APIs, but I do not see how to configure things – is there an API for pointing at a liquibase.properties file? Or are there APIs where I can set various properties programatically? The API docs for liquibase are rather thin – or maybe there is better documentation/examples somewhere that I have not found?
I just noticed that you (Costin) might be talking about DB2 on z, whereas I’m talking about DB2 on i (which is quite different). It does indeed appear that DB2 on IBMi does not support BOOLEAN columns, so I think there is indeed a bug in liquibase when it tries to create the LOCK table on DB2 on IBMi.
Whoa. Looking much deeper (obviously I’m quite new to liquibase), I see that this kind of thing should already be handled via the clever LiquibaseDataType mechanism. But I think there still might be a subtle bug deep in liquibase.datatype.core.BooleanType.toDatabaseDataType(Database). This line:
} else if (database.getClass().isAssignableFrom(DB2Database.class)) {
I think should be:
} else if (DB2Database.class.isAssignableFrom(database.getClass())) {