|
| 1 | +--- |
| 2 | +title: PostgreSQL JDBC Driver 42.3.2 Released |
| 3 | +date: 2022-02-01 07:35:28 -0500 |
| 4 | +categories: |
| 5 | + - new_release |
| 6 | +version: 42.3.2 |
| 7 | +--- |
| 8 | +**Notable changes** |
| 9 | +### Security |
| 10 | +- CVE-2022-21724 pgjdbc instantiates plugin instances based on class names provided via authenticationPluginClassName, |
| 11 | + sslhostnameverifier, socketFactory, sslfactory, sslpasswordcallback connection properties. |
| 12 | + However, the driver did not verify if the class implements the expected interface before instantiating the class. This |
| 13 | + would allow a malicious class to be instantiated that could execute arbitrary code from the JVM. Fixed in [commit](https://github.com/pgjdbc/pgjdbc/commit/f4d0ed69c0b3aae8531d83d6af4c57f22312c813) |
| 14 | + |
| 15 | +### Changed |
| 16 | +- perf: read in_hot_standby GUC on connection [PR #2334](https://github.com/pgjdbc/pgjdbc/pull/2334) |
| 17 | +- test: materialized view privileges [PR #2209](https://github.com/pgjdbc/pgjdbc/pull/2209) fixes [Issue #2060](https://github.com/pgjdbc/pgjdbc/issues/2060) |
| 18 | +- docs: add info about convenience maven project [PR #2407](https://github.com/pgjdbc/pgjdbc/pull/2407) |
| 19 | +- docs: Document timezone reversal from POSIX to ISO [PR #2413](https://github.com/pgjdbc/pgjdbc/pull/2413) |
| 20 | +- fix: we will ask the server if it supports GSS Encryption if gssEncryption |
| 21 | +is prefer or require [PR #2396](https://github.com/pgjdbc/pgjdbc/pull/2396) remove the need to have a ticket in the cache before asking the server if gss encryptions are supported |
| 22 | +- docs: remove Java 6 and 7 references from contributing [PR #2385](https://github.com/pgjdbc/pgjdbc/pull/2385) |
| 23 | +- style: remove Java 8 / JDBC 4.2 checks [PR #2383](https://github.com/pgjdbc/pgjdbc/pull/2383) Remove all remaining checks whether the source is lower than Java 8 |
| 24 | +or JDBC 4.2. |
| 25 | +- fix: throw SQLException for #getBoolean BIT(>1) [PR #2386](https://github.com/pgjdbc/pgjdbc/pull/2386) Throw SQLException instead of ClassCastException when calling |
| 26 | +CallableStatement#getBoolean(int) on BIT(>1). |
| 27 | +- style: import java.time types in more classes [PR #2382](https://github.com/pgjdbc/pgjdbc/pull/2382) Use imports for java.time types in all remaining classes. |
| 28 | +- style: import java.time types in TimestampUtils [PR #2380](https://github.com/pgjdbc/pgjdbc/pull/2380) Use imports for java.time types in TimestampUtils. |
| 29 | +- refactor: Change internal constructors to pass only connection Properties |
| 30 | +Changes internal constructors for PgConnection and related classes to only accept the connection properties object and |
| 31 | +remove the user and password arguments. Any locations that required those fields can retrieve them from the properties map. |
| 32 | +- test: Fix DatabaseMetadataTest to perform mview tests only on 9.3+ |
| 33 | +- perf: read in_hot_standby GUC on connection [PR #2334](https://github.com/pgjdbc/pgjdbc/pull/2334) |
| 34 | +- doc: improv doc around binary decoding of numeric data [#2331](https://github.com/pgjdbc/pgjdbc/pull/2331) |
| 35 | +- Add cert key type checking to chooseClientAlias [PR #2417](https://github.com/pgjdbc/pgjdbc/pull/2417) |
| 36 | + |
| 37 | +### Added |
| 38 | +- feat: Add authenticationPluginClassName option to provide passwords at runtime |
| 39 | +Adds authenticationPluginClassName connection property that allows end users to specify a class |
| 40 | +that will provide the connection passwords at runtime. Users implementing that interface must |
| 41 | +ensure that each invocation of the method provides a new char[] array as the contents |
| 42 | +will be filled with zeroes by the driver after use.Call sites within the driver have been updated to use the char[] directly wherever possible. |
| 43 | +This includes direct usage in the GSS authentication code paths that internally were already converting the String password into a char[] for internal usage. |
| 44 | +This allows configuring a connection with a password that must be generated on the fly or periodically changes. [PR #2369](https://github.com/pgjdbc/pgjdbc/pull/2369) original issue [Issue #2102](https://github.com/pgjdbc/pgjdbc/issues/2102) |
| 45 | +- feat: add tcpNoDelay option [PR #2341](https://github.com/pgjdbc/pgjdbc/pull/2341) fixes [Issue #2324](https://github.com/pgjdbc/pgjdbc/issues/2324) |
| 46 | +- feat: pg_service.conf and .pgpass support (jdbc:postgresql://?service=my-service) [PR #2260](https://github.com/pgjdbc/pgjdbc/pull/2260) fixes [Issue #2278](https://github.com/pgjdbc/pgjdbc/issues/2278) |
| 47 | + |
| 48 | +### Fixed |
| 49 | +- Use local TimestampUtil in PgStatement and PgResultset for thread safety [PR #2291](https://github.com/pgjdbc/pgjdbc/pull/2291) |
| 50 | + fixes [Issue #921](https://github.com/pgjdbc/pgjdbc/issues/921) synchronize modification of shared calendar |
| 51 | +- fix: PgObject isNull() was reporting the opposite fixes [Issue #2411](https://github.com/pgjdbc/pgjdbc/issues/2411) [PR #2414](https://github.com/pgjdbc/pgjdbc/pull/2414) |
| 52 | +- fix: default file name is ".pg_service.conf" on Windows (not "pg_service.conf") [PR #2398](https://github.com/pgjdbc/pgjdbc/pull/2398) fixes [Issue #2278](https://github.com/pgjdbc/pgjdbc/issues/2278) |
| 53 | +- test: Fix RefCursorFetchTest on older platforms |
| 54 | +- fix: do not close refcursor after reading if fetchsize has been set fixes [Issue #2227](https://github.com/pgjdbc/pgjdbc/issues/2227) [PR #2371](https://github.com/pgjdbc/pgjdbc/pull/2371) |
| 55 | +- fix: rework gss authentication to use the principal name to get the credentials fixes [Issue #2235](https://github.com/pgjdbc/pgjdbc/issues/2235) [PR #2352](https://github.com/pgjdbc/pgjdbc/pull/2352) |
| 56 | +- fix: return getIndexInfo metadata columns in UPPER CASE [PR #2368](https://github.com/pgjdbc/pgjdbc/pull/2368) |
| 57 | +- fix: Connection leak in ConnectionFactoryImpl#tryConnect [PR #2350](https://github.com/pgjdbc/pgjdbc/pull/2350) [Issue #2351](https://github.com/pgjdbc/pgjdbc/issues/2351) |
| 58 | +- fix: Fix For IS_AUTOGENERATED Flag [PR #2348](https://github.com/pgjdbc/pgjdbc/pull/2348) |
| 59 | +- fix: parsing service file tests for windows [PR #2347](https://github.com/pgjdbc/pgjdbc/pull/2347) |
| 60 | +- fix: The spec says that calling close() on a closed connection is a noop. [PR #2345](https://github.com/pgjdbc/pgjdbc/pull/2345) fixes [Issue #2300](https://github.com/pgjdbc/pgjdbc/issues/2300) |
| 61 | +- fix: add microsecond precision to getTimestamp() called on sql TIME(6) Currently, "when fetching a value of type TIME(6) through |
| 62 | +resultSet.getTimestamp() only ms precision is retained, the microsecond fractional digits are lost." This change will retain the microsecond |
| 63 | +precision when .getTimestamp() is called on TIME(6). [PR #2181](https://github.com/pgjdbc/pgjdbc/pull/2181) Closes [Issue #1537](https://github.com/pgjdbc/pgjdbc/issues/1537) |
| 64 | +- test: materialized view privileges [PR #2209](https://github.com/pgjdbc/pgjdbc/pull/2209) add and drop a materialized view |
| 65 | +Add to TestUtil and also to DatabaseMetaData setup and teardown fixes [Issue #2060](https://github.com/pgjdbc/pgjdbc/issues/2060) |
| 66 | +- fix: typo in connect.md [PR #2338](https://github.com/pgjdbc/pgjdbc/pull/2238) `OutOfMemoryException` => `OutOfMemoryError` |
| 67 | +- fix: use local TimestampUtil in PgStatement and PgResultset for thread |
| 68 | +safety TimestampUtil is not thread safe. It raises exceptions when multiple threads use ResultSets of one connection. [PR #2291](https://github.com/pgjdbc/pgjdbc/pull/2291) |
| 69 | +fixes [Issue #921](https://github.com/pgjdbc/pgjdbc/issues/921) |
| 70 | +If PgStatement and PgResultSet use their own TimestampUtil no synchronize is needed. |
| 71 | +- fix: typo in CONTRIBUTING.md [PR #2332](https://github.com/pgjdbc/pgjdbc/pull/2332) seccion => section |
| 72 | + |
| 73 | +<!--more--> |
| 74 | + |
| 75 | +**Commits by author** |
| 76 | + |
| 77 | +Andrei Paikin (1): |
| 78 | + minor: fix checkstyle violations for empty lines in enum [PR 2426](https://github.com/pgjdbc/pgjdbc/pull/2426) |
| 79 | + |
| 80 | +Brett Okken (1): |
| 81 | + doc: improv doc around binary decoding of numeric data [PR 2331](https://github.com/pgjdbc/pgjdbc/pull/2331) |
| 82 | + |
| 83 | +Dave Cramer (21): |
| 84 | + move comment to appropriate place and add explanation [PR 2336](https://github.com/pgjdbc/pgjdbc/pull/2336) |
| 85 | + bump version in readme and gradle.properties [PR 2335](https://github.com/pgjdbc/pgjdbc/pull/2335) |
| 86 | + add entries for latest changes [PR 2339](https://github.com/pgjdbc/pgjdbc/pull/2339) |
| 87 | + Ms goodman time gettimestamp micros [PR 2181](https://github.com/pgjdbc/pgjdbc/pull/2181) |
| 88 | + add TCP No Delay option fixes Issue [PR 2324](https://github.com/pgjdbc/pgjdbc/pull/2324) (#2341) |
| 89 | + fix Issue [PR 2300](https://github.com/pgjdbc/pgjdbc/pull/2300). The spec says that calling close() on a closed connection is a noop. (#2345) |
| 90 | + fix: parsing service file tests for windows [PR 2347](https://github.com/pgjdbc/pgjdbc/pull/2347) |
| 91 | + fix: return getIndexInfo metadata columns in UPPER CASE [PR 2368](https://github.com/pgjdbc/pgjdbc/pull/2368) |
| 92 | + fix: rework gss authentication to use the principal name to get the credentials fixes Issue [PR 2235](https://github.com/pgjdbc/pgjdbc/pull/2235) (#2352) |
| 93 | + Removed unsafe package and native kerberos ticket check [PR 2363](https://github.com/pgjdbc/pgjdbc/pull/2363) |
| 94 | + log4jmessage [PR 2370](https://github.com/pgjdbc/pgjdbc/pull/2370) |
| 95 | + Put back GSSCallbackHandler. Avoid using forbidden api [PR 2373](https://github.com/pgjdbc/pgjdbc/pull/2373) |
| 96 | + fix: do not close refcursor after reading if fetchsize has been set fixes ISSUE [PR 2227](https://github.com/pgjdbc/pgjdbc/pull/2227) (#2371) |
| 97 | + perf: add read(b,o,l) to BlobInputStream [PR 2376](https://github.com/pgjdbc/pgjdbc/pull/2376) |
| 98 | + change the default directory returned on windows to APPDATA/postgresql since that is what we end up using anyway [PR 2402](https://github.com/pgjdbc/pgjdbc/pull/2402) |
| 99 | + fix: we will ask the server if it supports GSS Encryption if gssEncryption is prefer or require [PR 2396](https://github.com/pgjdbc/pgjdbc/pull/2396) |
| 100 | + docs: Document timezone reversal from POSIX to ISO [PR 2413](https://github.com/pgjdbc/pgjdbc/pull/2413) |
| 101 | + fix: PgObject isNull() was reporting the opposite fixes Issue [PR 2411](https://github.com/pgjdbc/pgjdbc/pull/2411) (#2414) |
| 102 | + remove skipjre6 and skipjre7 [PR 2415](https://github.com/pgjdbc/pgjdbc/pull/2415) |
| 103 | + Revert "perf: add read(b,o,l) to BlobInputStream [PR 2376](https://github.com/pgjdbc/pgjdbc/pull/2376)" (#2422) |
| 104 | + Changelog42.3.2 [PR 2418](https://github.com/pgjdbc/pgjdbc/pull/2418) |
| 105 | + |
| 106 | +JoelRabinovitch (1): |
| 107 | + fixForIsAutoGenerated Fix For IS_AUTOGENERATED Flag [PR 2348](https://github.com/pgjdbc/pgjdbc/pull/2348) |
| 108 | + |
| 109 | +Marek Läll (2): |
| 110 | + Issue 2278 ; jdbc:postgresql://?service= ; pg_service.conf ; .pgpass [PR 2282](https://github.com/pgjdbc/pgjdbc/pull/2282) |
| 111 | + fix: default file name is ".pg_service.conf" on Windows (not "pg_service.conf") [PR 2398](https://github.com/pgjdbc/pgjdbc/pull/2398) |
| 112 | + |
| 113 | +Mark Grobaker (1): |
| 114 | + test: materialized view privileges [PR 2209](https://github.com/pgjdbc/pgjdbc/pull/2209) |
| 115 | + |
| 116 | +Michał Wyrzykowski (1): |
| 117 | + fix: Connection leak in ConnectionFactoryImpl#tryConnect [PR 2350](https://github.com/pgjdbc/pgjdbc/pull/2350) (#2351) |
| 118 | + |
| 119 | +Nick Burgan (1): |
| 120 | + Add cert key type checking to chooseClientAlias [PR 2417](https://github.com/pgjdbc/pgjdbc/pull/2417) |
| 121 | + |
| 122 | +Philippe Marschall (6): |
| 123 | + style: fix typos in pgobject javadoc [PR 2379](https://github.com/pgjdbc/pgjdbc/pull/2379) |
| 124 | + style: import java.time types in TimestampUtils [PR 2380](https://github.com/pgjdbc/pgjdbc/pull/2380) |
| 125 | + style: import java.time types in more classes [PR 2382](https://github.com/pgjdbc/pgjdbc/pull/2382) |
| 126 | + fix: throw SQLException for #getBoolean BIT(>1) [PR 2386](https://github.com/pgjdbc/pgjdbc/pull/2386) |
| 127 | + style: remove Java 8 / JDBC 4.2 checks [PR 2383](https://github.com/pgjdbc/pgjdbc/pull/2383) |
| 128 | + docs: remove Java 6 and 7 references from contributing [PR 2385](https://github.com/pgjdbc/pgjdbc/pull/2385) |
| 129 | + |
| 130 | +Sehrope Sarkuni (9): |
| 131 | + feat: Change AuthenticationPlugin interface to use char[] rather than String [PR 2420](https://github.com/pgjdbc/pgjdbc/pull/2420) |
| 132 | + test: Disable no-arg callable statement tests in simple query mode [PR 2419](https://github.com/pgjdbc/pgjdbc/pull/2419) |
| 133 | + test: Remove extra catch-fail in RefCursorFetchTest [PR 2391](https://github.com/pgjdbc/pgjdbc/pull/2391) |
| 134 | + test: Fix RefCursorFetchTest on older platforms [PR 2391](https://github.com/pgjdbc/pgjdbc/pull/2391) |
| 135 | + feat: Add authenticationPluginClassName option to provide passwords at runtime [PR 2369](https://github.com/pgjdbc/pgjdbc/pull/2369) |
| 136 | + test: Add TestUtil.assumeHaveMinimumServerVersion(...) helper [PR 2369](https://github.com/pgjdbc/pgjdbc/pull/2369) |
| 137 | + refactor: Change internal constructors to pass only connection Properties [PR 2369](https://github.com/pgjdbc/pgjdbc/pull/2369) |
| 138 | + refactor: Use multi-catch for exceptions in ConnectionFactoryImpl [PR 2369](https://github.com/pgjdbc/pgjdbc/pull/2369) |
| 139 | + test: Fix DatabaseMetadataTest to perform mview tests only on 9.3+ [PR 2340](https://github.com/pgjdbc/pgjdbc/pull/2340) |
| 140 | + |
| 141 | +Sergey Nuyanzin (4): |
| 142 | + [typo] typo in CONTRIBUTING.md [PR 2332](https://github.com/pgjdbc/pgjdbc/pull/2332) |
| 143 | + [typo] in connect.md [PR 2338](https://github.com/pgjdbc/pgjdbc/pull/2338) |
| 144 | + Misprint in messages_ru.java [PR 2358](https://github.com/pgjdbc/pgjdbc/pull/2358) |
| 145 | + |
| 146 | +Sergey Prytkov (1): |
| 147 | + perf: read in_hot_standby GUC on connection [PR 2334](https://github.com/pgjdbc/pgjdbc/pull/2334) |
| 148 | + |
| 149 | +Zuzana Miklankova (1): |
| 150 | + docs: add info about convenience maven project [PR 2407](https://github.com/pgjdbc/pgjdbc/pull/2407) |
| 151 | + |
| 152 | +marcmuel (1): |
| 153 | + fix: use local TimestampUtil in PgStatement and PgResultset for thread safety [PR 2291](https://github.com/pgjdbc/pgjdbc/pull/2291) |
| 154 | + |
0 commit comments