Liquibase does not support EDB’s PostgreSQL JDBC driver, resulting in errors

We are doing a POC on Liquibase and EDB PostgreSQL. When trying to use EDB supplied JDBC driver edb-jdbc-42.2.19.1.jar to work with open source Liquibase schema change tracking tool (latest version 4.5), I see a lot of issues. However if I switch to open source PostgreSQL jar file postgresql-42.2.18.jar I see everything works perfectly fine.

We have reached out to EDB support and they have mentioned that the Liquibase application is not recognizing the EDB JDBC driver as a valid official driver. We need help from the Liquibase community on this. Please help us if there is any workaround or Liquibase team has a timeline for when it can recognize and support EDB’s JDBC driver.

Details:

  • With a freshly installed Liquibase environment, when I run Liquibase for the first time I see this error while creating a tracking table needed by Liquibase. This problem is resolved by creating this table upfront. But still it needs a fix.

SEVERE [liquibase.integration] ERROR: current transaction is aborted, commands ignored until end of transaction block

liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: ERROR: current transaction is aborted, commands ignored until end of transaction block [Failed SQL: (0) CREATE TABLE tkcsowner.my_db_change_log_lock (ID INT NOT NULL, “LOCKED” BOOLEAN NOT NULL, LOCKGRANTED datetime, LOCKEDBY VARCHAR(255), CONSTRAINT PK_MY_DB_CHANGE_LOG_LOCK PRIMARY KEY (ID))]

  • When I used the command generateChangeLog, it worked fine with the PostgreSQL driver but failed with the EDB driver. Here is the command I tried to generate a change log.

liquibase --changeLogFile=dbchangelog.sql generateChangeLog

Here is the error we see in the log

SEVERE [liquibase.integration] com.edb.util.PSQLException: ERROR: relation “information_schema.constraints” does not exist
Position: 58
Location: File: parse_relation.c, Routine: parserOpenTable, Line: 1166
Server SQLState: 42P01
liquibase.exception.CommandExecutionException: liquibase.exception.LiquibaseException: Unexpected error running Liquibase: liquibase.exception.DatabaseException: com.edb.util.PSQLException: ERROR: relation “information_schema.constraints” does not exist

Here is the output from trace file

[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl receiveRFQ] <=BE ReadyForQuery(T)
[2021-11-08 21:34:56] FINEST [com.edb.jdbc.PgResultSet getString] getString columnIndex: 1
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl execute] simple execute, handler=com.edb.jdbc.PgStatement$StatementResultHandler@41e68d87, maxRows=0, fetchSize=0, flags=1
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendParse] FE=> Parse(stmt=null,query=“select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME from information_schema.constraints where constraint_schema=‘tkcsowner’ and constraint_catalog=‘null’ and constraint_type=‘UNIQUE’ and table_name=‘biofingrscntyp’”,oids={})
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendBind] FE=> Bind(stmt=null,portal=null)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendDescribePortal] FE=> Describe(portal=null)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendExecute] FE=> Execute(portal=null,limit=0)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl sendSync] FE=> Sync
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl receiveErrorResponse] <=BE ErrorMessage(ERROR: relation “information_schema.constraints” does not exist
Position: 58
Location: File: parse_relation.c, Routine: parserOpenTable, Line: 1166
Server SQLState: 42P01)
[2021-11-08 21:34:56] FINEST [com.edb.core.v3.QueryExecutorImpl receiveRFQ] <=BE ReadyForQuery(E)

The Java I am using is openjdk version “1.8.0_292” OpenJDK Runtime Environment (build 1.8.0_292-b10) OpenJDK 64-Bit Server VM (build 25.292-b10, mixed mode)

1 Like

Welcome to the Liquibase Community, Inreddyp!

Support for the EnterpriseDB JDBC URL has been added as of Version 4.7.0

EnterpriseDB is not an officially supported database yet, but we believe it should work reasonably well. To access the JDBC Driver, you’ll need to specify the following JDBC URL: jdbc:edb://host:5444/dbname
You will also need to make sure to download and place the EnterpriseDB JDBC Driver in the Liquibase lib/ folder.

Regards,
Tabby

1 Like

Thank you Tabby for the reply.

I used the latest Liquibase 4.9 version to see if it resolves any of my issues previously mentioned. I used latest EDB JDBC driver correctly. But it didn’t help.

I wish Liquibase community take up this issue soon and support EDB as an officially supported database.

Thank you,

Reddy

We have several users and customers who run Liquibase with EDB. I will take a look at this more closely and get back to you.

@lnreddyp I actually just created EDB PostgresSQL driver errors · Issue #2734 · liquibase/liquibase · GitHub so I can better track this/work with a few of our experts on this end. Would you mind heading over there and just dropping a comment on the issue so I have your github handle and can communicate via there while I move it through triage and such? Many thanks!

1 Like

@ktaggart Thank you for taking up this . Sure I can move and will add my comments there.

Many thanks !