embedded-database-spring-test icon indicating copy to clipboard operation
embedded-database-spring-test copied to clipboard

Ability to disable autocommit

Open vladimirfx opened this issue 3 years ago • 2 comments

It is a requirement of DBUnit to make DB cleanup works. Setting this in test properties:

zonky.test.database.postgres.client.properties.autocommit=false

crashed embedded database creation with:

Caused by: io.zonky.test.db.provider.ProviderException: Unexpected error when prefetching a database; nested exception is java.lang.RuntimeException: org.postgresql.util.PSQLException: Unsupported property name: autocommitio.zonky.test.db.provider.common.PrefetchingDatabaseProvider$PreparedResult.get(PrefetchingDatabaseProvider.java:312)
	at io.zonky.test.db.provider.common.PrefetchingDatabaseProvider.createDatabase(PrefetchingDatabaseProvider.java:127)
	at io.zonky.test.db.provider.common.OptimizingDatabaseProvider.createDatabase(OptimizingDatabaseProvider.java:106)
	at io.zonky.test.db.provider.common.OptimizingDatabaseProvider.createDatabase(OptimizingDatabaseProvider.java:89)
	at io.zonky.test.db.context.DefaultDatabaseContext.lambda$refreshDatabase$0(DefaultDatabaseContext.java:266)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	... 1 more
Caused by: java.lang.RuntimeException: org.postgresql.util.PSQLException: Unsupported property name: autocommit
	at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.lambda$getDatabase$0(EmbeddedPostgres.java:201)
	at com.google.common.collect.SingletonImmutableBiMap.forEach(SingletonImmutableBiMap.java:66)
	at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.getDatabase(EmbeddedPostgres.java:197)
	at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider$DatabaseInstance.getDatabase(ZonkyPostgresDatabaseProvider.java:190)
	at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider$DatabaseInstance.executeStatement(ZonkyPostgresDatabaseProvider.java:183)
	at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider$DatabaseInstance.createDatabase(ZonkyPostgresDatabaseProvider.java:153)
	at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider.createDatabase(ZonkyPostgresDatabaseProvider.java:103)
	at io.zonky.test.db.provider.postgres.ZonkyPostgresDatabaseProvider.createTemplate(ZonkyPostgresDatabaseProvider.java:91)
	at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createTemplate(TemplatingDatabaseProvider.java:129)
	at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.lambda$createTemplateIfPossible$1(TemplatingDatabaseProvider.java:168)
	at io.zonky.test.db.provider.common.TemplatingDatabaseProvider$TemplateWrapper.loadTemplate(TemplatingDatabaseProvider.java:291)
	at io.zonky.test.db.provider.common.TemplatingDatabaseProvider$TemplateWrapper.access$200(TemplatingDatabaseProvider.java:221)
	at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createTemplateIfPossible(TemplatingDatabaseProvider.java:168)
	at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createDatabase(TemplatingDatabaseProvider.java:112)
	at io.zonky.test.db.provider.common.TemplatingDatabaseProvider.createDatabase(TemplatingDatabaseProvider.java:104)
	at io.zonky.test.db.provider.common.PrefetchingDatabaseProvider$PrefetchingTask.lambda$forPreparer$0(PrefetchingDatabaseProvider.java:333)
	at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
	at io.zonky.test.db.provider.common.PrefetchingDatabaseProvider$PrefetchingTask.run(PrefetchingDatabaseProvider.java:358)
	... 3 more
Caused by: org.postgresql.util.PSQLException: Unsupported property name: autocommit
	at org.postgresql.ds.common.BaseDataSource.setProperty(BaseDataSource.java:1307)
	at io.zonky.test.db.postgres.embedded.EmbeddedPostgres.lambda$getDatabase$0(EmbeddedPostgres.java:199)
	... 20 more

I can provide small PR that treats autocommit property specialty.

vladimirfx avatar Apr 19 '21 10:04 vladimirfx

@vladimirfx Any progress on this?

henrik242 avatar Nov 02 '21 13:11 henrik242

I guess that using server properties instead of the client ones could be the trick to fix the error.

zonky.test.database.postgres.server.properties.autocommit=false

tomix26 avatar Jan 24 '24 11:01 tomix26