PostgreSQL JDBC Driver 42.7.13 Released

Notable changes

Added

  • feat: invalidate prepared statement cache via search_path GUC_REPORT (PG 18+) PR #4259
  • feat: flushCacheOnDdl — re-prepare server statements after CREATE/DROP/ALTER PR #4067
  • feat: connectExecutor (Executor) instead of connectThreadFactory (ThreadFactory) PR #4165
  • feat: add classLoaderStrategy for thread-context classloader fallback PR #4167
  • feat: cap reWriteBatchedInserts by the protocol limit, not 128 PR #4207
  • feat(core): add OID constants for geometric arrays, RECORD, refcursor PR #4220
  • feat(largeobject): skip in BlobInputStream by seeking instead of reading PR #4204
  • feat(largeobject): expose server version for 64-bit LO API selection PR #4204

Changed

  • refactor(metadata): derive getPrimaryKeys from pg_constraint.conkey PR #4202
  • refactor(core): drop unused encoding Writer plumbing from PGStream PR #4215
  • refactor: favour composition over inheritance for Driver.ConnectTask PR #4160
  • refactor(test-gss): convert GSS tests to Java/JUnit 5 submodule PR #4166
  • chore: remove test-anorm-sbt module and its CI wiring PR #4261
  • build: produce a multi-release jar from reduced-pom.xml on Java 11+ PR #4157
  • build: verify benchmarks under check and CI, skip Jandex for them PR #4235
  • build: promote MethodCanBeStatic to error level PR #4172
  • i18n: convert ISO-8859-x .po files to UTF-8 PR #4115
  • i18n: fill untranslated Italian, Simplified Chinese messages PR #4225 PR #4208
  • i18n: revise Russian translations in ru.po PR #1280
  • docs: note PKCS-12 client certificate chain requirement PR #4200
  • docs: clarify search_path correctness for server-prepared statements PR #4227
  • docs: fix invalid jdbc:postgresql:/ URL form in connection guide PR #2532
  • docs: redirect legacy documentation URLs to their new Hugo pages PR #4238

Fixed

  • fix(jdbc): classify updatable result set by search_path visibility PR #4214
  • fix: render bytea text parameters in PreparedStatement#toString PR #4201
  • fix: PGXAConnection no longer saves and restores the caller’s autoCommit PR #4114
  • fix: detect native CALL preceded by a comment in CallableStatement PR #4209
  • fix(jdbc): return null CHAR_OCTET_LENGTH for non-character columns PR #4231
  • fix(jdbc): honor scale in ResultSet.getBigDecimal(int, int) PR #4211
  • fix: support java.time values in updatable ResultSet updateRow()/insertRow() PR #3848
  • fix: PgResultSet#getCharacterStream wraps String in StringReader PR #4063
  • fix(protocol): defer flushes until response processing PR #4196
  • fix: improve batching when RETURNING contains varchar, numeric types PR #4014
  • fix: correct estimatedReceiveBufferBytes accounting after forced Sync PR #4014
  • fix: avoid creating transient ResultSet for describe statement purposes PR #4014
  • fix: restore pre-describe for generated-key batches PR #4014
  • fix: add explicit failure message when multi-statement executes in batch PR #4014
  • fix(core): detect search_path changes case-insensitively PR #4216
  • fix(largeobject): reset BlobInputStream relative to the LargeObject position PR #4204
  • fix(largeobject): flush a buffered output stream before marking the object closed, and do not let lo_close mask a flush failure Issue #4247 PR #4248
  • fix: auto-detect SSL key format instead of relying on .key extension PR #3946
  • fix(ssl): build PKIX trust anchors without a KeyStore so FIPS JVMs work PR #4193
  • fix: make sure GSS connection uses gssResponseTimeout rather than sslResponseTimeout PR #4076
  • fix: skip autosave savepoint for SET LOCAL/SESSION TRANSACTION PR #4203
  • fix: do not throw AssertionError from BatchResultHandler on a closed connection PR #4187
  • fix: reject SQL_TSI_FRAC_SECOND with an explicit, explained error PR #4229
  • fix: reject null URL in Driver.acceptsURL with a clear NullPointerException PR #4205
  • fix: reject overlong inputs in NumberParser.getFastLong instead of wrapping PR #4163
  • fix: reject out of range and NaN values in PGInterval.setSeconds PR #4194
  • fix: close socket when PgConnection setup fails after connect PR #4161
  • fix: avoid nulling contextClassLoader on shared commonPool workers PR #4156
  • fix: keep LazyCleanerImpl cleanup task alive across transient empty queue PR #4038
  • fix: append default non-proxy hosts when socksNonProxyHosts is set PR #4045
  • fix: simplify implementation of Statement#cancel PR #1827
  • fix: clear ResourceBundle cache on deregister so the driver can unload PR #4237
  • fix: delete temp file when spooling a stream to disk fails with IOException PR #4190
  • fix: avoid direct java.lang.management dependency in maxResultBuffer parser PR #4069
  • fix: reWriteBatchedInserts no longer throws IllegalArgumentException for a parameterless INSERT of 256+ rows PR #4207
  • fix: ship the released jar and detached signature on the GitHub release instead of a SNAPSHOT PR #3814
  • fix: reject empty timestamp, timestamptz, and date text with a clear error instead of ArrayIndexOutOfBoundsException PR #4278

Commits by author

Vladimir Sitnikov (104 commits)

Sehrope Sarkuni (11 commits)

Dave Cramer (5 commits)

James Howe (2 commits)

Davide Angelocola (1 commit)

Devs (1 commit)

Mark Blakley (1 commit)

Jens Teglhus Møller (1 commit)

bshehata (1 commit)

Michael Baumgartner (1 commit)

Contributors to this release

We also thank the translators whose work ships in this release: Federico Campoli (Italian) and Feng Zhihao (Simplified Chinese), and Sergey Mokhov for reviewing the Russian catalog.