Liquibase-oracle in 3.0.0

Not yet. Now that 3.0.0 is out I will be going through the extensions and making them compatible. There was some java API-level changes from 2.x to 3.x that need to be resolved. That was the main reason behind the 2.x -> 3.x version change.


Nathan

I could try to do it for you but I don’t see it in
https://github.com/liquibase

It wasn’t developed by me, but contributed. My first step figure out the state. According to the extension page, the source is at https://liquibase.jira.com/wiki/display/CONTRIB/Oracle+Extensions which will definitely need to be moved.


I’ll get it moved over to github and if you wanted to then get it fixed up that would be great.


Nathan

The liquibase-oracle extension code has been moved to https://github.com/liquibase/liquibase-oracle .


As part of the move, I did a round of fixes to make sure it is at least compiling under 3.0, but I haven’t tried running or testing it yet.


The first commit to the repository matches what is in the trunk of the old SVN repository, so you can see the changes I made to get it to compile.


If you could test it out and make whatever other changes are needed, that would be great. Let me know how it works or if you have questions.


Nathan

It is looking pretty good.  I’m failing most unit tests.  I think the reason is that they expect something already in the database.  Not sure what the initial seed needs.

If there is a generic liquibase set of changes that are normally used.

I’m not sure what the initial data seed was either, it was originally developed by someone else. There isn’t  any sort of standard liquibase starting data set they could have started from.


Nathan

I will look at what the tests are looking for and create a table after I get it to work manually.

Running manually I am getting an error that may be oracle related or more likeliy is my improper configuration.

 

My theory is that I am still running 3.0.0-rc2.  I will try manually placing 3.0.0 in my m2repo.

 

Caused by: java.lang.NullPointerException

at liquibase.diff.compare.DatabaseObjectComparatorFactory.isSameObject(D atabaseObjectComparatorFactory.java:86)

at liquibase.snapshot.DatabaseSnapshot.get(DatabaseSnapshot.java:180)

at liquibase.snapshot.SnapshotGeneratorFactory.createSnapshot(SnapshotGe neratorFactory.java:137)

at liquibase.snapshot.SnapshotGeneratorFactory.has(SnapshotGeneratorFact ory.java:87)

at liquibase.snapshot.SnapshotGeneratorFactory.hasDatabaseChangeLogLockT able(SnapshotGeneratorFactory.java:168)

at liquibase.database.AbstractJdbcDatabase.hasDatabaseChangeLogLockTable (AbstractJdbcDatabase.java:742)

at liquibase.database.AbstractJdbcDatabase.checkDatabaseChangeLogLockTab le(AbstractJdbcDatabase.java:768)

at liquibase.lockservice.LockServiceImpl.acquireLock(LockServiceImpl.jav a:95)

… 7 more

I am now using real lb 3.0.0

 

The root cause of my error is in first line of liquibase.diff.compare.DatabaseObjectComparatorFactory.createComparatorChain(Class<? extends DatabaseObject>, Database)

SortedSet comparators = DatabaseObjectComparatorFactory.getInstance().getComparators(databaseObjectType, database);

I see, that should return back not a null comparatorChain if there are no comparators, but a default one.


Do you know what type is being passed in that it’s not finding a comparator for?

Nathan

I’m not sure my first observation was real problem.

 

Looking age … generateStatements (Database)  DB is comming in as Informix

 

I may not be telling liquibase correct db object.

 

Caused by:

java.lang.NullPointerException

at liquibase.ext.ora.truncate.TruncateChange.generateStatements(

TruncateChange.java:73)

at liquibase.change.AbstractChange.generateStatementsVolatile(

AbstractChange.java:240)

at liquibase.change.AbstractChange.supports(

AbstractChange.java:275)

at liquibase.change.ChangeParameterMetaData.analyzeSupportedDatabases(

ChangeParameterMetaData.java:88)

at liquibase.change.ChangeParameterMetaData.(

ChangeParameterMetaData.java:71)

at liquibase.change.AbstractChange.createChangeParameterMetadata(

AbstractChange.java:128)

... 73 more

That should automatically be set correctly based on the jdbc connection. 


The Database object being passed into generateStatements() is an InformixDatabase instance? Can you call getConnection().getUrl() on that instance to see where you are connected?

Nathan

Thanks. I may go through and look at trying to add some snapshot support for the new types in the extension and then create a new release for it.


Nathan

I tried liqiubase 3.0.0 through maven with

<dependency>
    <groupId>org.liquibase.ext</groupId>
    <artifactId>liquibase-oracle</artifactId>
    <version>1.2.0</version>
</dependency>

When I remove that dependency my liquibase works (except for the conversions that now don’t exist).  Is there a 3.0.0 equivalent for liquibase-oracle?


java.lang.NoSuchMethodError: liquibase.change.AbstractChange.(Ljava/lang/String;Ljava/lang/String;I)V
    at liquibase.ext.ora.check.CheckAttribute.(CheckAttribute.java:12)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:525)
    at java.lang.Class.newInstance0(Class.java:372)
    at java.lang.Class.newInstance(Class.java:325)
    at liquibase.change.ChangeFactory.register(ChangeFactory.java:61)
    at liquibase.change.ChangeFactory.init(ChangeFactory.java:32)
    at liquibase.change.ChangeFactory.getInstance(ChangeFactory.java:42)
    at liquibase.parser.core.xml.XMLChangeLogSAXHandler.startElement(XMLChangeLogSAXHandler.java:359)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:506)
    at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:740)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:376)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2715)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:607)
    at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:116)
    at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:488)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:835)
    at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:764)
    at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:123)
    at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1210)
    at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:568)
    at liquibase.parser.core.xml.XMLChangeLogSAXParser.parse(XMLChangeLogSAXParser.java:99)
    at liquibase.Liquibase.update(Liquibase.java:128)

Have submitted a pull request for a version of liquibase-oracle which works (although not exhaustively tested).

So, are the oracle extensions limited to the 2.x release for now? I’m trying to get this set up, and am not sure which version is supported by what. This thread is the only mention of the current oracle-extensions 1.2.0 being incompatible with 3.0.2 that I’ve been able to find anywhere. Guess we should downgrade to 2.x…

The code in git should be working with 3.0, but I haven’t gotten a chance to test it enough to officially release it yet.


Nathan

Hello Nathan,

I’m interested in this plugin, do you have an ETA for the release ?

Thanks in advance,

      Nicolas

Thanks for the reminder. I pushed out the liquibase-oracle 3.0.0 release which is built against liquibase 3.0.5. It should be working it’s way through the maven repositories now and has also been added to https://liquibase.jira.com/wiki/display/CONTRIB/Oracle+Extensions


Nathan