StackOverflowError generating snapshot
Description
Environment
PostgreSQL 9.4.4
Windows 7
java version 1.8.0_66
Liquibase 3.4.2
Activity
Show:
Nathan Voxland March 8, 2016 at 10:56 PM
This has been fixed for 3.5.0
Fixed
Details
Details
Reporter
Douglas Boleta
Douglas BoletaComponents
Fix versions
Affects versions
Priority
Created November 30, 2015 at 4:24 PM
Updated March 8, 2016 at 10:56 PM
Resolved March 8, 2016 at 10:56 PM
I have got a StackOverflow Error when a database has at least two schemas with tables with same name and each one has an index. The script to simulate:
CREATE SCHEMA dummy1;
CREATE SCHEMA dummy2;
CREATE TABLE dummy1.dummy ( id numeric(10,0) NOT NULL);
CREATE UNIQUE INDEX idxvalue ON dummy1.dummy (id);
CREATE TABLE dummy2.dummy ( id numeric(10,0) NOT NULL);
CREATE UNIQUE INDEX idxvalue ON dummy2.dummy (id);
The command to perform the error is:
liquibase.bat --driver=org.postgresql.Driver --url=jdbc
ostgresql://localhost:5432/postgres --username=postgres --password=123 --logLevel=debug --logFile=log.txt snapshot --schemas="dummy1,dummy2"
And the log was:
DEBUG 30/11/15 14:00: liquibase: Connected to postgres@jdbc
ostgresql://localhost:5432/postgres
DEBUG 30/11/15 14:00: liquibase: Setting auto commit to false from true
DEBUG 30/11/15 14:00: liquibase: Computed checksum for 1448899233741 as 34b16eb903226560db75e64bad3900f2
DEBUG 30/11/15 14:00: liquibase: Executing QUERY database command: SELECT relname AS SEQUENCE_NAME FROM pg_class, pg_namespace WHERE relkind='S' AND pg_class.relnamespace = pg_namespace.oid AND nspname = 'dummy1'
DEBUG 30/11/15 14:00: liquibase: Executing QUERY database command: SELECT relname AS SEQUENCE_NAME FROM pg_class, pg_namespace WHERE relkind='S' AND pg_class.relnamespace = pg_namespace.oid AND nspname = 'dummy2'
SEVERE 30/11/15 14:00: liquibase: Unknown Reason
java.lang.StackOverflowError
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.cleanNameFromDatabase(JdbcSnapshotGenerator.java:122)
at liquibase.snapshot.jvm.TableSnapshotGenerator.readTable(TableSnapshotGenerator.java:84)
at liquibase.snapshot.jvm.TableSnapshotGenerator.snapshotObject(TableSnapshotGenerator.java:36)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:60)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:63)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:63)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:63)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:63)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:63)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:50)
at liquibase.snapshot.jvm.JdbcSnapshotGenerator.snapshot(JdbcSnapshotGenerator.java:63)
at liquibase.snapshot.SnapshotGeneratorChain.snapshot(SnapshotGeneratorChain.java:50)
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:194)
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:272)
at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:234)
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:208)
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:292)
at liquibase.snapshot.DatabaseSnapshot.includeNestedObjects(DatabaseSnapshot.java:234)
at liquibase.snapshot.DatabaseSnapshot.include(DatabaseSnapshot.java:208)
at liquibase.snapshot.DatabaseSnapshot.replaceObject(DatabaseSnapshot.java:292)