renovate-bot opened a new pull request, #4985: URL: https://github.com/apache/polaris/pull/4985
This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.postgresql:postgresql](https://jdbc.postgresql.org) ([source](https://redirect.github.com/pgjdbc/pgjdbc)) | `42.7.12` โ `42.7.13` |  |  | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/642) for more information. --- ### Release Notes <details> <summary>pgjdbc/pgjdbc (org.postgresql:postgresql)</summary> ### [`v42.7.13`](https://redirect.github.com/pgjdbc/pgjdbc/blob/HEAD/CHANGELOG.md#42713-2026-07-06) ##### Added - feat: invalidate the prepared-statement cache when the server reports a `search_path` change via GUC\_REPORT (PostgreSQL 18+), so cached plans are no longer used against the wrong schema [PR #​4259](https://redirect.github.com/pgjdbc/pgjdbc/pull/4259) - feat: `reWriteBatchedInserts` now merges up to 32768 rows into one multi-values `INSERT` (bounded by the 65535 bind-parameter limit on the extended protocol) instead of capping at 128, which speeds up batches of few-column rows. The new `reWriteBatchedInsertsSize` connection property lowers that cap when set; the default of `0` uses that maximum. [PR #​4207](https://redirect.github.com/pgjdbc/pgjdbc/pull/4207) - feat: invalidate the prepared-statement cache after CREATE/DROP/ALTER so callers no longer trip on "cached plan must not change result type" without opting into `autosave=ALWAYS`. Controlled by the new `flushCacheOnDdl` connection property (default `true`); set to `false` for the prior behaviour. [PR #​4067](https://redirect.github.com/pgjdbc/pgjdbc/pull/4067) - feat: add `connectExecutor` connection property to customize the `Executor` used to run the worker task that performs the connection attempt when `loginTimeout` is in effect. The value is the fully qualified name of a class implementing `java.util.concurrent.Executor`. With a null value, the default, the driver retains the prior behavior of running the connection attempt on a daemon thread named `"PostgreSQL JDBC driver connection thread"`. The executor must run the task on a thread other than the caller's. Running the attempt on a named thread lets applications that monitor driver-created threads identify it. [PR #​4165](https://redirect.github.com/pgjdbc/pgjdbc/pull/4165) - feat: add `classLoaderStrategy` connection property to control which classloaders the driver searches when loading a class named by a connection property, for example `socketFactory`. The default `driver-first` now falls back to the thread context classloader when the driver's classloader cannot resolve the class, which fixes class loading in non-flat class paths such as Quarkus and OSGi. Set `driver` to keep the previous driver-classloader-only behaviour, or `context-first` to prefer the thread context classloader [Issue #​2112](https://redirect.github.com/pgjdbc/pgjdbc/issues/2112) [PR #​4167](https://redirect.github.com/pgjdbc/pgjdbc/pull/4167) - feat: add OID constants for geometric arrays, `RECORD`, and `refcursor` [PR #​4220](https://redirect.github.com/pgjdbc/pgjdbc/pull/4220) - feat: `LargeObject` `BlobInputStream` now skips by seeking instead of reading, and the driver exposes the server version so it can select the 64-bit large-object API where available [PR #​4204](https://redirect.github.com/pgjdbc/pgjdbc/pull/4204) ##### Changed - refactor: the worker that runs the connection attempt under `loginTimeout` is now a `FutureTask` (`ConnectTask`) instead of the hand-rolled `ConnectThread`. When the caller hits the timeout, the task is now cancelled with `cancel(true)`, which interrupts the worker thread rather than letting it run to completion. This makes the connection attempt interruptible, so `loginTimeout` can stop a slow connection attempt instead of leaking a thread. As before, a connection that the worker still manages to establish after the caller gives up is closed by the worker so that it does not leak. There are no public API changes and this should only lead to faster background resource cleanup for connections that time out. [PR #​4120](https://redirect.github.com/pgjdbc/pgjdbc/pull/4120) - chore: `PGXAConnection.ConnectionHandler` now rejects `setAutoCommit(false)` and `setSavepoint(...)` during an active XA branch, in addition to the long-rejected `setAutoCommit(true)` / `commit()` / `rollback()`. The `setSavepoint` rejection was already meant to be in place but the guard misspelled the method name as `setSavePoint`, so savepoints silently went through. Both changes bring the proxy in line with JTA 1.2 ยง3.4. [PR #​4114](https://redirect.github.com/pgjdbc/pgjdbc/pull/4114) - chore: `commitPrepared` / `rollback`-of-prepared now return `XAER_RMFAIL` instead of `XAER_RMERR` when the underlying connection is left in a non-idle `TransactionState`. Transaction managers (Geronimo, Narayana, Atomikos) treat `XAER_RMFAIL` as retryable on a fresh `XAResource`; the prepared transaction is no longer abandoned. [PR #​4114](https://redirect.github.com/pgjdbc/pgjdbc/pull/4114) - refactor: derive `getPrimaryKeys` from `pg_constraint.conkey` [PR #​4202](https://redirect.github.com/pgjdbc/pgjdbc/pull/4202) ##### Fixed - fix: the published GitHub release now ships the released `postgresql-<version>.jar` and its detached PGP signature, taken from the same signed build that is uploaded to Maven Central, instead of a leftover SNAPSHOT jar [Issue #​3812](https://redirect.github.com/pgjdbc/pgjdbc/issues/3812) [PR #​3814](https://redirect.github.com/pgjdbc/pgjdbc/pull/3814) - fix: simplify the `Statement#cancel` state machine by dropping the redundant `CANCELLED` state. `killTimerTask` now waits for the state to return to `IDLE` directly, which removes a spin-forever case when more than one thread observes the cancel completing [PR #​1827](https://redirect.github.com/pgjdbc/pgjdbc/pull/1827). - perf: defer simple-query flushes until the driver reads the response, allowing `BEGIN` and the following query to share a network flush [Issue #​3894](https://redirect.github.com/pgjdbc/pgjdbc/issues/3894) [PR #​4196](https://redirect.github.com/pgjdbc/pgjdbc/pull/4196) - fix: `reWriteBatchedInserts` no longer throws `IllegalArgumentException` when batching a parameterless `INSERT` (for example `INSERT INTO t VALUES (1, 2)`) of 256 rows or more [PR #​4207](https://redirect.github.com/pgjdbc/pgjdbc/pull/4207) - fix: a comment before `CALL` in a `CallableStatement` no longer hides the native call, so OUT parameter registration works for `/* comment */ call proc(?, ?)` and similar. `Parser.modifyJdbcCall` now skips leading whitespace and SQL comments (both `--` and `/* */`) before the call, tolerates a trailing comment after a `{ ... }` escape, and no longer adds a spurious comma when moving an OUT parameter into a call whose arguments are only a comment [Issue #​2538](https://redirect.github.com/pgjdbc/pgjdbc/issues/2538) [PR #​4209](https://redirect.github.com/pgjdbc/pgjdbc/pull/4209) - fix: `PreparedStatement.toString()` no longer throws for a `bytea` value supplied as text via `PGobject`. Hex-format values (`\x...`) are validated and rendered as a `bytea` literal, and escape-format values are quoted and cast like any other literal [Issue #​3757](https://redirect.github.com/pgjdbc/pgjdbc/issues/3757) [PR #​4201](https://redirect.github.com/pgjdbc/pgjdbc/pull/4201) - fix: the driver no longer nulls the `contextClassLoader` of shared `ForkJoinPool.commonPool()` worker threads, which previously left unrelated tasks on those threads running with a `null` classloader [Issue #​4155](https://redirect.github.com/pgjdbc/pgjdbc/issues/4155) [PR #​4156](https://redirect.github.com/pgjdbc/pgjdbc/pull/4156) - fix: `PgResultSet#getCharacterStream` wraps `String` in a `StringReader` [PR #​4063](https://redirect.github.com/pgjdbc/pgjdbc/pull/4063) - fix: `PGXAConnection` no longer saves and restores the underlying connection's JDBC `autoCommit` flag. All XA-protocol SQL (`BEGIN`, `PREPARE TRANSACTION`, `COMMIT`, `ROLLBACK`, `COMMIT PREPARED`, `ROLLBACK PREPARED`, the `recover()` SELECT) is sent through `QUERY_SUPPRESS_BEGIN`, so the caller's `autoCommit` value is invariant across every `XAResource` call. Fixes the "2nd phase commit must be issued using an idle connection" failure during recovery on managed datasources that pool connections with `autoCommit=false` (TomEE, WildFly, WebSphere Liberty) [PR #​4114](https://redirect.github.com/pgjdbc/pgjdbc/pull/4114) - fix: `PGXAConnection.prepare()` now mutates XA state only after `PREPARE TRANSACTION` succeeds. A failed `PREPARE` previously left the driver thinking the branch was already prepared, so the follow-up `rollback(xid)` tried `ROLLBACK PREPARED` against a non-existent gid and returned `XAER_RMERR`. Transaction managers (Narayana) escalated this to `HeuristicMixedException`. With the fix, `rollback(xid)` takes the active-branch path and issues a plain `ROLLBACK`, which the server accepts cleanly. Fixes [Issue #​3153](https://redirect.github.com/pgjdbc/pgjdbc/issues/3153), [Issue #​3123](https://redirect.github.com/pgjdbc/pgjdbc/issues/3123). [PR #​4114](https://redirect.github.com/pgjdbc/pgjdbc/pull/4114) - fix: an updatable result set over an unqualified table name is now classified using only the table visible through `search_path`. When two schemas held a table with the same name and the same primary or unique index name but a different set of key columns, the driver took the union of both schemas' columns, so the result set could be wrongly rejected as not updatable [PR #​4214](https://redirect.github.com/pgjdbc/pgjdbc/pull/4214). Supersedes [PR #​3400](https://redirect.github.com/pgjdbc/pgjdbc/pull/3400). - fix: `LargeObject.close()` now flushes a buffered output stream before marking the object closed, so closing a large object without an explicit `flush()` no longer drops buffered writes. The flush runs while the object is still open (it calls back into `LargeObject.write()`), and `lo_close` always runs afterward; a failure from `lo_close` no longer masks an earlier flush error, and the transaction is not committed when the flush failed [Issue #​4247](https://redirect.github.com/pgjdbc/pgjdbc/issues/4247) [PR #​4248](https://redirect.github.com/pgjdbc/pgjdbc/pull/4248). - fix: reject empty `timestamp`, `timestamptz`, and `date` text with a clear `SQLException` (SQLState `22007`) instead of an `ArrayIndexOutOfBoundsException` [PR #​4278](https://redirect.github.com/pgjdbc/pgjdbc/pull/4278) - fix: return null `CHAR_OCTET_LENGTH` for non-character columns [PR #​4231](https://redirect.github.com/pgjdbc/pgjdbc/pull/4231) - fix: honor scale in `ResultSet.getBigDecimal(int, int)` [PR #​4211](https://redirect.github.com/pgjdbc/pgjdbc/pull/4211) - fix: support `java.time` values in an updatable `ResultSet` `updateRow()` / `insertRow()` [PR #​3848](https://redirect.github.com/pgjdbc/pgjdbc/pull/3848) - fix: improve batching when the `RETURNING` clause contains `varchar` or `numeric` types [PR #​4014](https://redirect.github.com/pgjdbc/pgjdbc/pull/4014) - fix: correct `estimatedReceiveBufferBytes` accounting after a forced `Sync` [PR #​4014](https://redirect.github.com/pgjdbc/pgjdbc/pull/4014) - fix: avoid creating a transient `ResultSet` for describe-statement purposes, and restore the pre-describe path for generated-key batches [PR #​4014](https://redirect.github.com/pgjdbc/pgjdbc/pull/4014) - fix: add an explicit failure message when a multi-statement command executes in a batch [PR #​4014](https://redirect.github.com/pgjdbc/pgjdbc/pull/4014) - fix: detect `search_path` changes case-insensitively [PR #​4216](https://redirect.github.com/pgjdbc/pgjdbc/pull/4216) - fix: auto-detect the SSL key format instead of relying on the `.key` extension [PR #​3946](https://redirect.github.com/pgjdbc/pgjdbc/pull/3946) - fix: build PKIX trust anchors without a `KeyStore` so FIPS JVMs work [PR #​4193](https://redirect.github.com/pgjdbc/pgjdbc/pull/4193) - fix: use `gssResponseTimeout` rather than `sslResponseTimeout` for GSS connections [PR #​4076](https://redirect.github.com/pgjdbc/pgjdbc/pull/4076) - fix: skip the autosave savepoint for `SET LOCAL` / `SET SESSION TRANSACTION` [PR #​4203](https://redirect.github.com/pgjdbc/pgjdbc/pull/4203) - fix: do not throw `AssertionError` from `BatchResultHandler` on a closed connection [PR #​4187](https://redirect.github.com/pgjdbc/pgjdbc/pull/4187) - fix: reject `SQL_TSI_FRAC_SECOND` with an explicit, explained error [PR #​4229](https://redirect.github.com/pgjdbc/pgjdbc/pull/4229) - fix: reject a null URL in `Driver.acceptsURL` with a clear `NullPointerException` [PR #​4205](https://redirect.github.com/pgjdbc/pgjdbc/pull/4205) - fix: reject overlong inputs in `NumberParser.getFastLong` instead of silently wrapping [PR #​4163](https://redirect.github.com/pgjdbc/pgjdbc/pull/4163) - fix: reject out-of-range and NaN values in `PGInterval.setSeconds` [PR #​4194](https://redirect.github.com/pgjdbc/pgjdbc/pull/4194) - fix: close the socket when `PgConnection` setup fails after connect [PR #​4161](https://redirect.github.com/pgjdbc/pgjdbc/pull/4161) - fix: keep the `LazyCleanerImpl` cleanup task alive across a transient empty queue [PR #​4038](https://redirect.github.com/pgjdbc/pgjdbc/pull/4038) - fix: append the default non-proxy hosts when `socksNonProxyHosts` is set [PR #​4045](https://redirect.github.com/pgjdbc/pgjdbc/pull/4045) - fix: clear the `ResourceBundle` cache on deregister so the driver can unload [PR #​4237](https://redirect.github.com/pgjdbc/pgjdbc/pull/4237) - fix: delete the temp file when spooling a stream to disk fails with an `IOException` [PR #​4190](https://redirect.github.com/pgjdbc/pgjdbc/pull/4190) - fix: avoid a direct `java.lang.management` dependency in the `maxResultBuffer` parser [PR #​4069](https://redirect.github.com/pgjdbc/pgjdbc/pull/4069) </details> --- ### Configuration ๐ **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) ๐ฆ **Automerge**: Disabled by config. Please merge this manually once you are satisfied. โป **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. ๐ **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR was generated by [Mend Renovate](https://mend.io/renovate/). View the [repository job log](https://developer.mend.io/github/apache/polaris). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yNDIuMiIsInVwZGF0ZWRJblZlciI6IjQzLjI0Mi4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZS1wb2xhcmlzIl19--> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
