liquibase-redshift
liquibase-redshift copied to clipboard
Error running generateChangeLog
I'm getting this error trying to run generateChangeLog for the first time.
FINE [liquibase.diff] Cannot get object dependencies: Error executing SQL WITH RECURSIVE preference AS ( SELECT 10 AS max_depth -- The deeper the recursion goes, the slower it performs. , 16384 AS min_oid -- user objects only , '^(londiste|pgq|pg_toast)'::text AS schema_exclusion , '^pg_(conversion|language|ts_(dict|template))'::text AS class_exclusion , '{"SCHEMA":"00", "TABLE":"01", "CONSTRAINT":"02", "DEFAULT":"03", "INDEX":"05", "SEQUENCE":"06", "TRIGGER":"07", "FUNCTION":"08", "VIEW":"10", "MVIEW":"11", "FOREIGN":"12"}'::json AS type_ranks), dependency_pair AS ( WITH relation_object AS ( SELECT oid, oid::regclass::text AS object_name FROM pg_class ) SELECT DISTINCT substring(pg_identify_object(classid, objid, 0)::text, E'(\\w+?)\\.') as referenced_schema_name, CASE classid WHEN 'pg_attrdef'::regclass THEN (SELECT attname FROM pg_attrdef d JOIN pg_attribute c ON (c.attrelid,c.attnum)=(d.adrelid,d.adnum) WHERE d.oid = objid) WHEN 'pg_cast'::regclass THEN (SELECT concat(castsource::regtype::text, ' AS ', casttarget::regtype::text,' WITH ', castfunc::regprocedure::text) FROM pg_cast WHERE oid = objid) WHEN 'pg_class'::regclass THEN rel.object_name WHEN 'pg_constraint'::regclass THEN (SELECT conname FROM pg_constraint WHERE oid = objid) WHEN 'pg_extension'::regclass THEN (SELECT extname FROM pg_extension WHERE oid = objid) WHEN 'pg_namespace'::regclass THEN (SELECT nspname FROM pg_namespace WHERE oid = objid) WHEN 'pg_opclass'::regclass THEN (SELECT opcname FROM pg_opclass WHERE oid = objid) WHEN 'pg_operator'::regclass THEN (SELECT oprname FROM pg_operator WHERE oid = objid) WHEN 'pg_opfamily'::regclass THEN (SELECT opfname FROM pg_opfamily WHERE oid = objid) WHEN 'pg_proc'::regclass THEN objid::regprocedure::text WHEN 'pg_rewrite'::regclass THEN (SELECT ev_class::regclass::text FROM pg_rewrite WHERE oid = objid) WHEN 'pg_trigger'::regclass THEN (SELECT tgname FROM pg_trigger WHERE oid = objid) WHEN 'pg_type'::regclass THEN objid::regtype::text ELSE objid::text END AS REFERENCED_NAME, substring(pg_identify_object(refclassid, refobjid, 0)::text, E'(\\w+?)\\.') as referencing_schema_name, CASE refclassid WHEN 'pg_namespace'::regclass THEN (SELECT nspname FROM pg_namespace WHERE oid = refobjid) WHEN 'pg_class'::regclass THEN rrel.object_name WHEN 'pg_opfamily'::regclass THEN (SELECT opfname FROM pg_opfamily WHERE oid = refobjid) WHEN 'pg_proc'::regclass THEN refobjid::regprocedure::text WHEN 'pg_type'::regclass THEN refobjid::regtype::text ELSE refobjid::text END AS REFERENCING_NAME FROM pg_depend dep LEFT JOIN relation_object rel ON rel.oid = dep.objid LEFT JOIN relation_object rrel ON rrel.oid = dep.refobjid, preference WHERE deptype = ANY('{n,a}') AND objid >= preference.min_oid AND (refobjid >= preference.min_oid OR refobjid = 2200) -- need public schema as root node AND classid::regclass::text !~ preference.class_exclusion AND refclassid::regclass::text !~ preference.class_exclusion AND COALESCE(SUBSTRING(objid::regclass::text, E'^(\\\\w+)\\\\.'),'') !~ preference.schema_exclusion AND COALESCE(SUBSTRING(refobjid::regclass::text, E'^(\\\\w+)\\\\.'),'') !~ preference.schema_exclusion GROUP BY classid, objid, refclassid, refobjid, deptype, rel.object_name, rrel.object_name ) select referenced_schema_name, (CASE WHEN position('.' in referenced_name) >0 THEN substring(referenced_name from position('.' in referenced_name)+1 for length(referenced_name)) ELSE referenced_name END) AS referenced_name, referencing_schema_name, (CASE WHEN position('.' in referencing_name) >0 THEN substring(referencing_name from position('.' in referencing_name)+1 for length(referencing_name)) ELSE referencing_name END) AS referencing_name from dependency_pair where REFERENCED_NAME != REFERENCING_NAME AND ( REFERENCED_NAME like 'datawarehouse.%' OR REFERENCED_NAME NOT LIKE '%.%') AND referencing_schema_name is not null and referencing_name is not null: ERROR: WITH RECURSIVE is not supported [2021-01-11 14:50:16] FINE [liquibase.executor] Executing with the 'jdbc' executor [2021-01-11 14:50:16] FINE [liquibase.executor] 0 row(s) affected Unexpected error running Liquibase: java.lang.RuntimeException: java.lang.RuntimeException: liquibase.exception.UnexpectedLiquibaseException: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block For more information, please use the --logLevel flag [2021-01-11 14:50:16] SEVERE [liquibase.integration] Unexpected error running Liquibase: java.lang.RuntimeException: java.lang.RuntimeException: liquibase.exception.UnexpectedLiquibaseException: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block liquibase.exception.LiquibaseException: liquibase.command.CommandExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: liquibase.exception.UnexpectedLiquibaseException: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:251) at liquibase.integration.commandline.Main.doMigration(Main.java:1519) at liquibase.integration.commandline.Main$1.lambda$run$0(Main.java:361) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.Scope.child(Scope.java:222) at liquibase.Scope.child(Scope.java:226) at liquibase.integration.commandline.Main$1.run(Main.java:360) at liquibase.integration.commandline.Main$1.run(Main.java:193) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:145) at liquibase.integration.commandline.Main.run(Main.java:193) at liquibase.integration.commandline.Main.main(Main.java:156) Caused by: liquibase.command.CommandExecutionException: java.lang.RuntimeException: java.lang.RuntimeException: liquibase.exception.UnexpectedLiquibaseException: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block at liquibase.command.AbstractCommand.execute(AbstractCommand.java:24) at liquibase.integration.commandline.CommandLineUtils.doGenerateChangeLog(CommandLineUtils.java:249) ... 14 more Caused by: java.lang.RuntimeException: java.lang.RuntimeException: liquibase.exception.UnexpectedLiquibaseException: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:203) at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:85) at liquibase.command.core.GenerateChangeLogCommand.run(GenerateChangeLogCommand.java:74) at liquibase.command.AbstractCommand.execute(AbstractCommand.java:19) ... 15 more Caused by: java.lang.RuntimeException: liquibase.exception.UnexpectedLiquibaseException: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block at liquibase.diff.output.changelog.DiffToChangeLog$1.run(DiffToChangeLog.java:186) at liquibase.Scope.lambda$child$0(Scope.java:160) at liquibase.Scope.child(Scope.java:169) at liquibase.Scope.child(Scope.java:159) at liquibase.Scope.child(Scope.java:138) at liquibase.diff.output.changelog.DiffToChangeLog.print(DiffToChangeLog.java:127) ... 18 more Caused by: liquibase.exception.UnexpectedLiquibaseException: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block at liquibase.diff.output.changelog.core.MissingDataExternalFileChangeGenerator.fixMissing(MissingDataExternalFileChangeGenerator.java:173) at liquibase.diff.output.changelog.ChangeGeneratorChain.fixMissing(ChangeGeneratorChain.java:48) at liquibase.diff.output.changelog.ChangeGeneratorFactory.fixMissing(ChangeGeneratorFactory.java:95) at liquibase.diff.output.changelog.DiffToChangeLog.generateChangeSets(DiffToChangeLog.java:302) at liquibase.diff.output.changelog.DiffToChangeLog.printNew(DiffToChangeLog.java:226) at liquibase.diff.output.changelog.DiffToChangeLog$1.run(DiffToChangeLog.java:133) ... 23 more Caused by: com.amazon.redshift.util.RedshiftException: ERROR: current transaction is aborted, commands ignored until end of transaction block at com.amazon.redshift.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2576) at com.amazon.redshift.core.v3.QueryExecutorImpl.processResultsOnThread(QueryExecutorImpl.java:2250) at com.amazon.redshift.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1878) at com.amazon.redshift.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1870) at com.amazon.redshift.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeInternal(RedshiftStatementImpl.java:509) at com.amazon.redshift.jdbc.RedshiftStatementImpl.execute(RedshiftStatementImpl.java:430) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeWithFlags(RedshiftStatementImpl.java:371) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeCachedSql(RedshiftStatementImpl.java:357) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeWithFlags(RedshiftStatementImpl.java:334) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeQuery(RedshiftStatementImpl.java:265) at liquibase.diff.output.changelog.core.MissingDataExternalFileChangeGenerator.fixMissing(MissingDataExternalFileChangeGenerator.java:67) ... 28 more Caused by: com.amazon.redshift.util.RedshiftException: ERROR: WITH RECURSIVE is not supported at com.amazon.redshift.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2576) at com.amazon.redshift.core.v3.QueryExecutorImpl.processResultsOnThread(QueryExecutorImpl.java:2250) at com.amazon.redshift.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1878) at com.amazon.redshift.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1870) at com.amazon.redshift.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:368) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeInternal(RedshiftStatementImpl.java:509) at com.amazon.redshift.jdbc.RedshiftStatementImpl.execute(RedshiftStatementImpl.java:430) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeWithFlags(RedshiftStatementImpl.java:371) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeCachedSql(RedshiftStatementImpl.java:357) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeWithFlags(RedshiftStatementImpl.java:334) at com.amazon.redshift.jdbc.RedshiftStatementImpl.executeQuery(RedshiftStatementImpl.java:265) at liquibase.executor.jvm.JdbcExecutor$QueryStatementCallback.doInStatement(JdbcExecutor.java:461) at liquibase.executor.jvm.JdbcExecutor.execute(JdbcExecutor.java:82) at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:168) at liquibase.executor.jvm.JdbcExecutor.query(JdbcExecutor.java:176) at liquibase.executor.jvm.JdbcExecutor.queryForList(JdbcExecutor.java:241) at liquibase.executor.jvm.JdbcExecutor.queryForList(JdbcExecutor.java:236) at liquibase.diff.output.changelog.DiffToChangeLog.addDependencies(DiffToChangeLog.java:653) at liquibase.diff.output.changelog.DiffToChangeLog.sortObjects(DiffToChangeLog.java:390) at liquibase.diff.output.changelog.DiffToChangeLog.sortMissingObjects(DiffToChangeLog.java:358) at liquibase.diff.output.changelog.DiffToChangeLog.generateChangeSets(DiffToChangeLog.java:299) ... 25 more
I've tried this running 4.2.1 and 4.2.2. This is my first time running liquibase so there's a chance I've got something misconfigured. I've copied the jar files into liquibase/lib and I'm using a properties file to pass in the following arguments (sanitized):
url=jdbc:redshift://*** username=*** password=*** strict=true changeLogFile=mychangelog.redshift.sql changeSetAuthor=JPounders dataOutputDirectory=output driver=com.amazon.redshift.jdbc.Driver #classpath=redshift-jdbc42-2.0.0.1/redshift-jdbc42-2.0.0.1.jar classpath=liquibase-redshift-4.2.2.jar logLevel=debug #liquibase.hub.ApiKey=*** referenceUrl=jdbc:redshift://*** referenceDriver=com.amazon.redshift.jdbc42.Driver referenceUsername=*** referencePassword=*** defaultCatalogName=*** defaultSchemaName=*** includeSchema=true includeTablespace=true liquibaseCatalogName=*** liquibaseSchemaName=public #outputDefaultCatalog=true #outputDefaultSchema=true #schemas=***,***,*** #diffColumnOrder=true