From 916fac56b6d31ef7e0281d4f6d61ea87741a1328 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Thu, 14 May 2020 11:03:42 +0200 Subject: [PATCH] [jOOQ/jOOQ#10195] GenerationTool should execute SHUTDOWN on HSQLDB connections --- .../java/org/jooq/codegen/GenerationTool.java | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java index 5b501a243d..d43105c4ef 100644 --- a/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java +++ b/jOOQ-codegen/src/main/java/org/jooq/codegen/GenerationTool.java @@ -39,6 +39,7 @@ package org.jooq.codegen; import static java.lang.Boolean.FALSE; import static java.lang.Boolean.TRUE; +import static org.jooq.SQLDialect.HSQLDB; import static org.jooq.tools.StringUtils.defaultIfNull; import static org.jooq.tools.StringUtils.defaultString; import static org.jooq.tools.StringUtils.isBlank; @@ -61,7 +62,9 @@ import java.util.Properties; import javax.sql.DataSource; import org.jooq.Constants; +import org.jooq.DSLContext; import org.jooq.Log.Level; +import org.jooq.impl.DSL; import org.jooq.meta.CatalogVersionProvider; import org.jooq.meta.Database; import org.jooq.meta.Databases; @@ -109,6 +112,7 @@ public class GenerationTool { private ClassLoader loader; private DataSource dataSource; private Connection connection; + private DSLContext ctx; private Boolean autoCommit; private boolean close; @@ -129,6 +133,7 @@ public class GenerationTool { */ public void setConnection(Connection connection) { this.connection = connection; + this.ctx = DSL.using(connection); } /** @@ -314,7 +319,7 @@ public class GenerationTool { close = true; if (dataSource != null) { - connection = dataSource.getConnection(); + setConnection(dataSource.getConnection()); } else { String url = System.getProperty("jooq.codegen.jdbc.url"); @@ -351,7 +356,7 @@ public class GenerationTool { if (!properties.containsKey("password")) properties.put("password", defaultString(j.getPassword())); - connection = driver.newInstance().connect(defaultString(j.getUrl()), properties); + setConnection(driver.newInstance().connect(defaultString(j.getUrl()), properties)); } catch (Exception e) { if (databaseName != null) @@ -870,10 +875,15 @@ public class GenerationTool { // Close connection only if it was created by the GenerationTool if (connection != null) { - if (close) + if (close) { + if (ctx.family() == HSQLDB && dataSource == null) + ctx.execute("shutdown"); + connection.close(); - else if (autoCommit != null) + } + else if (autoCommit != null) { connection.setAutoCommit(autoCommit); + } } } }