Notable Changes
Notable changes
Added
- feat: invalidate prepared statement cache via
search_pathGUC_REPORT (PG 18+) PR #4259 - feat:
flushCacheOnDdl— re-prepare server statements after CREATE/DROP/ALTER PR #4067 - feat:
connectExecutor(Executor) instead ofconnectThreadFactory(ThreadFactory) PR #4165 - feat: add
classLoaderStrategyfor thread-context classloader fallback PR #4167 - feat: cap
reWriteBatchedInsertsby the protocol limit, not 128 PR #4207 - feat(core): add OID constants for geometric arrays, RECORD, refcursor PR #4220
- feat(largeobject): skip in
BlobInputStreamby seeking instead of reading PR #4204 - feat(largeobject): expose server version for 64-bit LO API selection PR #4204
Changed
- refactor(metadata): derive
getPrimaryKeysfrompg_constraint.conkeyPR #4202 - refactor(core): drop unused encoding Writer plumbing from PGStream PR #4215
- refactor: favour composition over inheritance for
Driver.ConnectTaskPR #4160 - refactor(test-gss): convert GSS tests to Java/JUnit 5 submodule PR #4166
- chore: remove
test-anorm-sbtmodule and its CI wiring PR #4261 - build: produce a multi-release jar from
reduced-pom.xmlon Java 11+ PR #4157 - build: verify benchmarks under
checkand CI, skip Jandex for them PR #4235 - build: promote
MethodCanBeStaticto error level PR #4172 - i18n: convert ISO-8859-x
.pofiles to UTF-8 PR #4115 - i18n: fill untranslated Italian, Simplified Chinese messages PR #4225 PR #4208
- i18n: revise Russian translations in
ru.poPR #1280 - docs: note PKCS-12 client certificate chain requirement PR #4200
- docs: clarify
search_pathcorrectness 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_pathvisibility PR #4214 - fix: render bytea text parameters in
PreparedStatement#toStringPR #4201 - fix:
PGXAConnectionno 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_LENGTHfor non-character columns PR #4231 - fix(jdbc): honor scale in
ResultSet.getBigDecimal(int, int)PR #4211 - fix: support
java.timevalues in updatableResultSetupdateRow()/insertRow()PR #3848 - fix:
PgResultSet#getCharacterStreamwrapsStringinStringReaderPR #4063 - fix(protocol): defer flushes until response processing PR #4196
- fix: improve batching when RETURNING contains varchar, numeric types PR #4014
- fix: correct
estimatedReceiveBufferBytesaccounting 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_pathchanges case-insensitively PR #4216 - fix(largeobject): reset
BlobInputStreamrelative to the LargeObject position PR #4204 - fix(largeobject): flush a buffered output stream before marking the object closed, and do not let
lo_closemask a flush failure Issue #4247 PR #4248 - fix: auto-detect SSL key format instead of relying on
.keyextension PR #3946 - fix(ssl): build PKIX trust anchors without a KeyStore so FIPS JVMs work PR #4193
- fix: make sure GSS connection uses
gssResponseTimeoutrather thansslResponseTimeoutPR #4076 - fix: skip autosave savepoint for
SET LOCAL/SESSION TRANSACTIONPR #4203 - fix: do not throw
AssertionErrorfromBatchResultHandleron a closed connection PR #4187 - fix: reject SQL_TSI_FRAC_SECOND with an explicit, explained error PR #4229
- fix: reject null URL in
Driver.acceptsURLwith a clearNullPointerExceptionPR #4205 - fix: reject overlong inputs in
NumberParser.getFastLonginstead of wrapping PR #4163 - fix: reject out of range and NaN values in
PGInterval.setSecondsPR #4194 - fix: close socket when
PgConnectionsetup fails after connect PR #4161 - fix: avoid nulling
contextClassLoaderon sharedcommonPoolworkers PR #4156 - fix: keep
LazyCleanerImplcleanup task alive across transient empty queue PR #4038 - fix: append default non-proxy hosts when
socksNonProxyHostsis set PR #4045 - fix: simplify implementation of
Statement#cancelPR #1827 - fix: clear
ResourceBundlecache 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.managementdependency inmaxResultBufferparser PR #4069 - fix:
reWriteBatchedInsertsno longer throwsIllegalArgumentExceptionfor a parameterlessINSERTof 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, anddatetext with a clear error instead ofArrayIndexOutOfBoundsExceptionPR #4278
Commits by author
Vladimir Sitnikov (104 commits)
- feat: invalidate prepared statement cache via search_path GUC_REPORT (PG 18+)
- feat: flushCacheOnDdl — re-prepare server statements after CREATE/DROP/ALTER
- feat: add classLoaderStrategy for thread-context classloader fallback
- feat: cap reWriteBatchedInserts by the protocol limit, not 128
- feat(core): add OID constants for geometric arrays, RECORD, refcursor
- feat(largeobject): expose server version for 64-bit LO API selection
- fix: detect native CALL preceded by a comment in CallableStatement
- fix(jdbc): return null CHAR_OCTET_LENGTH for non-character columns
- fix(jdbc): honor scale in ResultSet.getBigDecimal(int, int)
- fix: support java.time values in updatable ResultSet updateRow()/insertRow()
- fix: PgResultSet#getCharacterStream wraps String in StringReader
- fix(protocol): defer flushes until response processing
- fix: improve batching when RETURNING contains varchar, numeric types
- fix: correct estimatedReceiveBufferBytes accounting after forced Sync
- fix: avoid creating transient ResultSet for describe statement purposes
- fix: restore pre-describe for generated-key batches
- fix: add explicit failure message when multi-statement executes in batch
- fix(core): detect search_path changes case-insensitively
- fix: auto-detect SSL key format instead of relying on .key extension
- fix(ssl): build PKIX trust anchors without a KeyStore so FIPS JVMs work
- fix: make sure GSS connection uses gssResponseTimeout rather than sslResponseTimeout
- fix: skip autosave savepoint for SET LOCAL/SESSION TRANSACTION
- fix: do not throw AssertionError from BatchResultHandler on a closed connection
- fix: reject SQL_TSI_FRAC_SECOND with an explicit, explained error
- fix: reject null URL in Driver.acceptsURL with a clear NullPointerException
- fix: avoid nulling contextClassLoader on shared commonPool workers
- fix: keep LazyCleanerImpl cleanup task alive across transient empty queue
- fix: simplify implementation of Statement#cancel
- fix: clear ResourceBundle cache on deregister so the driver can unload
- fix: close socket when PgConnection setup fails after connect
- fix(jdbc): classify updatable result set by search_path visibility
- fix: render bytea text parameters in PreparedStatement#toString
- fix: PGXAConnection no longer saves and restores the caller’s autoCommit
- refactor(metadata): derive getPrimaryKeys from pg_constraint.conkey
- refactor(core): drop unused encoding Writer plumbing from PGStream
- refactor: favour composition over inheritance for Driver.ConnectTask
Sehrope Sarkuni (11 commits)
- feat: Use connectExecutor (Executor) instead of connectThreadFactory (ThreadFactory)
- fix: reject overlong inputs in NumberParser.getFastLong instead of wrapping
- fix: reject out of range and NaN values in PGInterval.setSeconds
- fix: Delete temp file when spooling a stream to disk fails with IOException
- refactor: Use FutureTask for loginTimeout task in Driver.connect(…)
- test: Add loginTimeout interruptible test
- test: Add tests for connectThreadFactory
- test: add overflow boundary tests for NumberParser.getFastLong
- test: add range and NaN tests for PGInterval.setSeconds
Dave Cramer (5 commits)
- fix: flush LargeObject output stream before marking closed
- fix: append default non-proxy hosts when socksNonProxyHosts is set
- fix: correct ja.po header to indicate Japanese (#2004)
- update maintainers (#4222)
- maintain consistency with the use of the word maintainer vs committer (#4234)
James Howe (2 commits)
- feat(largeobject): skip in BlobInputStream by seeking instead of reading
- fix(largeobject): reset BlobInputStream relative to the LargeObject position
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.