Hi,
I found an Oracle Error in Build 290.
A column like the following
now produces an error in build 290. The exact error is:
java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:281)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:27)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:39)
at liquibase.Liquibase.update(Liquibase.java:112)
aTime TIMESTAMP DEFAULT 'NULL'
This used to work for us in build 202. In comparing the sql between 202 and 290, build 202 did not put quotes around the null.
Overall, I really like Liquibase. But right now, I am feeling rather discouraged. :( Build 202 worked for Oracle, but not MSSQL. Build 290 seems to work for MSSQL but not Oracle. We need both to work, plus DB2, MySql, Postgress, and Firebird. Other than Firebird, I haven’t even tried the three yet.
Build 290 seems to be the last build to pass.
Thanks,
Alana
Just a bit more info. Things are looking really bad.
Build 202, worked for Firebird and Oracle. However the changeLogSync did not work for MSSQL.
You saw my post above about build 290. I tried the earliest build I could find on the CI server.
Build 244 works for Oracle and MSSQL (including changeLogSync). However Firebird does not work.
When trying to create the schema from scratch using build 244 and Firebird, I get the following error:
[java] liquibase.exception.LockException: liquibase.exception.DatabaseException: Error executing SQL CREATE TABLE DATABASECHANGELOGLOCK (ID INT NOT NULL, LOCKED SMALLINT NOT NULL, LOCKGRANTED TIMESTAMP, LOCKEDBY VARCHAR(255), CONSTRAINT PK_DATABASECHANGELOGLOCK PRIMARY KEY (ID)); INSERT INTO DATABASECHANGELOGLOCK (ID, LOCKED) VALUES (1, 0)
[java] at liquibase.lockservice.LockService.acquireLock(LockService.java:116)
Right now I do not have a build that will work for all three databases I currently need. And I haven’t even begun testing MySql, DB2 and Postgress yet.
Thanks,
Alana
I’ll take a look. I am doing a bit of maven cleanup and code reorganization that is making the current builds fail. When that is done I’ll look at what the failures are. Thanks for the error report.
Nathan
Thanks.
It looks like svn revision 1380 is what broke Firebird for us. Firebird.supportsDDLInTransaction was changed from returning false to true.
Revision 1379 is the last revision that works with MSSQL, Firebird and Oracle for us. Unfortunately, we don’t get to use the fix for CORE-614 (nvarchar in MSSQL). 
Thanks,
Alana
I rolled back the firebird change. Take a look at the 299 build when it completes and see if that works for you.
Nathan
I still need to see what is breaking oracle, though. What is the full change tag that contains your problem tag? Is it a create table or something else?
Nathan
Thanks, I will give the latest build a try.
The Oracle problem is happening in a create table. The full change set is (names are obfuscated).
The problems is with vColumn and wColumn. In Build 202, in the create table sql, we had
aTime TIMESTAMP DEFAULT NULL
Now with Build 290, the create table sql contains
aTime TIMESTAMP DEFAULT 'NULL'
At some point between build 202 and 290, single quotes were added around the NULL. This causes Oracle to have the following exception
java.sql.SQLException: ORA-01858: a non-numeric character was found where a numeric was expected
at liquibase.changelog.ChangeSet.execute(ChangeSet.java:281)
at liquibase.changelog.visitor.UpdateVisitor.visit(UpdateVisitor.java:27)
at liquibase.changelog.ChangeLogIterator.run(ChangeLogIterator.java:39)
at liquibase.Liquibase.update(Liquibase.java:112)
Thanks,
Alana
I committed a fix for the oracle problem as well now. Unfortunately, our build server appears to be offline and it’s just one we’re borrowing, so I’m not sure when it will be available again.
I’m hoping to get an RC2 up very soon, and you can test it out with that. Make sure you let us know if you’re still having problems.
Nathan
Thank you. Will try it out with the latest from svn.
Thanks again,
Alana