From 82b4a043b52711ec926392200c3906d81d22942a Mon Sep 17 00:00:00 2001 From: Gustavo Armenta Date: Mon, 12 Jan 2026 09:57:48 -0800 Subject: [PATCH] TopologyChangeListener should fallback to pool connection --- .../org/umlg/sqlg/structure/SqlgStartupManager.java | 2 ++ .../org/umlg/sqlg/dialect/impl/PostgresDialect.java | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/sqlg-core/src/main/java/org/umlg/sqlg/structure/SqlgStartupManager.java b/sqlg-core/src/main/java/org/umlg/sqlg/structure/SqlgStartupManager.java index 55b13fac3..53af208e7 100644 --- a/sqlg-core/src/main/java/org/umlg/sqlg/structure/SqlgStartupManager.java +++ b/sqlg-core/src/main/java/org/umlg/sqlg/structure/SqlgStartupManager.java @@ -108,6 +108,7 @@ void loadSqlgSchema() { String version = getBuildVersion(); String oldVersion = createOrUpdateGraph(version); int versionAsInt = Integer.parseInt(oldVersion.replace("-SNAPSHOT", "").replace(".", "")); + LOGGER.debug(String.format("loadSqlgSchema() version=%s, oldVersion=%s, versionAsInt=%s", version, oldVersion, versionAsInt)); if (versionAsInt < 203) { //Need to check if there are any timestampz or timetz columns. //If so throw an exception as the user needs to alter them to drop the 'z' @@ -164,6 +165,7 @@ private void updateTopology(String oldVersion) { if (oldVersion != null) { v = VersionUtil.parseVersion(oldVersion, null, null); } + LOGGER.debug(String.format("updateTopology() v=%s",v)); if (v.isUnknownVersion() || v.compareTo(new Version(1, 5, 0, null, null, null)) < 0) { if (this.sqlDialect.supportsDeferrableForeignKey()) { upgradeForeignKeysToDeferrable(); diff --git a/sqlg-postgres-parent/sqlg-postgres-dialect/src/main/java/org/umlg/sqlg/dialect/impl/PostgresDialect.java b/sqlg-postgres-parent/sqlg-postgres-dialect/src/main/java/org/umlg/sqlg/dialect/impl/PostgresDialect.java index ba85c19e5..c6d429373 100644 --- a/sqlg-postgres-parent/sqlg-postgres-dialect/src/main/java/org/umlg/sqlg/dialect/impl/PostgresDialect.java +++ b/sqlg-postgres-parent/sqlg-postgres-dialect/src/main/java/org/umlg/sqlg/dialect/impl/PostgresDialect.java @@ -3490,7 +3490,16 @@ public void run() { Properties props = new Properties(); props.setProperty("user", sqlgGraph.configuration().getString("jdbc.username")); props.setProperty("password", sqlgGraph.configuration().getString("jdbc.password")); - Connection connection = DriverManager.getConnection(jdbcUrl, props); + Connection connection = null; + try { + connection = DriverManager.getConnection(jdbcUrl, props); + } catch (SQLException e) { + logger.debug("jdbcUrl={}", jdbcUrl); + logger.debug("user={}, password.isEmpty={}", props.getProperty("user"), props.getProperty("password").isEmpty()); + logger.error("failed to open standard jdbc connection, log exception, and instead use pool connection", e); + // https://github.com/pietermartin/sqlg/issues/488 + connection = this.sqlgGraph.tx().getConnection(); + } connection.setAutoCommit(false); while (run.get()) { PGConnection pgConnection = connection.unwrap(org.postgresql.PGConnection.class);