Stay Informed
This week, read about:
- Finding the Best Linux Distro for Your Organization.
- Oracle, SUSE, and others caught up in RHEL drama hit back with OpenELA.
- What's New in Apache Kafka 3.5: Features to Watch.
Key Security, Maintenance, and Features Releases
Non-Security Based Updates
Angular 16.2.0
benchpress:
fix: correctly report GC memory amounts (#50760)
common:
feat: add component input binding support for NgComponentOutlet (#51148)
feat: Allow ngSrc to be changed post-init (#50683)
compiler:
feat: scope selectors in @scope queries (#50747)
compiler-cli:
fix: libraries compiled with v16.1+ breaking with Angular framework v16.0.x (#50714)
core:
feat: add afterRender and afterNextRender (#50607)
feat: create injector debugging APIs (#48639)
feat: support Provider type in Injector.create (#49587)
fix: handle hydration of view containers for root components (#51247)
router:
feat: exposes the fixture of the RouterTestingHarness (#50280)
Apache Tomcat 11.0.0-M10
Catalina:
- Fix potential database connection leaks in
DataSourceUserDatabase
identified by Coverity Scan. (markt) - Make parsing of
ExtendedAccessLogValve
patterns more robust. (markt) - Fix failure trying to persist configuration for an internal credential handler. (remm)
- 66680: When serializing a session during the session presistence process, do not log a warning that null Principals are not serializable. Pull request #638 provided by tsryo. (markt)
- 66822: Use the same naming format in log messages for Connector instances as the associated ProtocolHandler instance. (markt)
- The parts count should also lower the actual
maxParameterCount
used for parsing parameters if parts are parsed first. (remm)
Coyote
- Refactor blocking reads and writes for the NIO connector to remove code paths that could allow a notification from the Poller to be missed resuting in a timeout rather than the expected read or write. (markt)
- Refactor waiting for an HTTP/2 stream or connection window update to handle spurious wake-ups during the wait. (markt)
- Improve extensibility of endpoints for socket channel creation and TLS. Pull request #639 provided by Marco Fargetta. (remm)
- Correct a regression introduced in 11.0.0-M9 and use the correct constant when constructing the default value for the
certificateKeystoreFile
attribute of anSSLHostConfigCertificate
instance. (markt) - Refactor HTTP/2 implementation to reduce pinning when using virtual threads. (markt)
- Pass through ciphers referring to an OpenSSL profile, such a
PROFILE=SYSTEM
instead of producing an error trying to parse it. (remm) - 66841: Ensure that
AsyncListener.onError()
is called after an error during asynchronous processing with HTTP/2. (markt) - 66842: When using asynchronous I/O (the default), include DATA frames when calculating the HTTP/2 overhead count to ensure that connections are not prematurely terminated. (markt)
- Correct a race condition that could cause spurious RST messages to be sent after the response had been written to an HTTP/2 stream. (markt)
Web-socket:
- 66681: Fix a
NullPointerException
when flushing batched messages with compression enabled usingpermessage-deflate
. (markt)
Jdbc-pool:
- Fix the
releaseIdleCounter
does not increment when testAllIdle releases them. Pull request #241 provided by Arun Chaitanya Miriappalli (lihan) - Fix the
ConnectionState
state will be inconsistent with actual state on the connection when an exception occurs while writing. Pull request #643 provided by Wenjun Xiao. (lihan)
Other:
- Update NSIS to 3.0.9. (markt)
- Update Checkstyle to 10.12.2. (markt)
- Improvements to French translations. (remm)
- Improvements to Japanese translations. Contributed by tak7iji and Shirayuking. (markt)
- 66829: Fix quoting so users can use the
_RUNJAVA
environment variable as intended on Windows when the path to the Java executable contains spaces. (markt) - 66834: Correct the OSGi contract references in the manifest files to refer to the Jakarta EE contract names rather than the Java EE contract names. (markt)
- Update Tomcat Native to 2.0.5. (markt)
Apache Tomcat 10.1.12
Catalina:
- 66680: When serializing a session during the session presistence process, do not log a warning that null Principals are not serializable. Pull request #638 provided by tsryo. (markt)
- Catch
NamingException
inJNDIRealm#getPrincipal
. It is used in Java up to 17 to signal closed connections. (fschumacher) - 66822: Use the same naming format in log messages for Connector instances as the associated ProtocolHandler instance. (markt)
- The parts count should also lower the actual
maxParameterCount
used for parsing parameters if parts are parsed first. (remm)
Coyote:
- Correct a regression introduced in 10.1.11 and use the correct constant when constructing the default value for the
certificateKeystoreFile
attribute of anSSLHostConfigCertificate
instance. (markt) - Refactor HTTP/2 implementation to reduce pinning when using virtual threads. (markt)
- Pass through ciphers referring to an OpenSSL profile, such as
PROFILE=SYSTEM
instead of producing an error trying to parse it. (remm) - 66841: Ensure that
AsyncListener.onError()
is called after an error during asynchronous processing with HTTP/2. (markt) - 66842: When using asynchronous I/O (the default), include DATA frames when calculating the HTTP/2 overhead count to ensure that connections are not prematurely terminated. (markt)
- Correct a race condition that could cause spurious RST messages to be sent after the response had been written to an HTTP/2 stream. (markt)
WebSocket:
- 66681: Fix a
NullPointerException
when flushing batched messages with compression enabled usingpermessage-deflate
. (markt)
jdbc-pool:
- Fix the
releaseIdleCounter
does not increment when testAllIdle releases them. Pull request #241 provided by Arun Chaitanya Miriappalli (lihan) - Fix the
ConnectionState
state will be inconsistent with actual state on the connection when an exception occurs while writing. Pull request #643 provided by Wenjun Xiao. (lihan)
Other:
- Update NSIS to 3.0.9. (markt)
- Update Checkstyle to 10.12.2. (markt)
- Improvements to French translations. (remm)
- Improvements to Japanese translations. Contributed by tak7iji and Shirayuking. (markt)
- 66829: Fix quoting so users can use the
_RUNJAVA
environment variable as intended on Windows when the path to the Java executable contains spaces. (markt) - 66834: Correct the OSGi contract references in the manifest files to refer to the Jakarta EE contract names rather than the Java EE contract names. (markt)
- Update Tomcat Native to 2.0.5. (markt)
Docker Engine / Compose v2.20.3
Enhancements:
- Watch: add tar sync implementation by @milas in #10853
- Improve buildkit node creation by @silvin-lubecki in #10843
- Display builder's name on the first build line. by @silvin-lubecki in #10881
- Improve shell completion for --project-directory by @relrelb in #10879
- Add shell completion for --profile by @relrelb in #10878
Fixes:
- Progress: minor correctness fixes by @milas in #10871
- Up: do not warn on successful optional dependency complete by @milas in #10870
- Build: fix missing proxy build args for classic builder by @milas in #10887
Internal:
- Trace: do not block connecting to OTLP endpoint by @milas in #10882
- Test: fix e2e test for privileged builds by @milas in #10873
- Test: temporarily disable an exit-code-from Cucumber test case by @milas in #10875
- Watch: support multiple containers for tar implementation by @milas in #10860
- Watch: batch & de-duplicate file events by @milas in #10865
- Watch: enable tar-based syncer by default by @milas in #10877
- Update Config comment in API Service interface by @prafgup in #10840
- Update README and CI workflows to match main branch by @glours in #10889
Dependencies:
- Build(deps): bump github.com/docker/cli from 24.0.4+incompatible to 24.0.5+incompatible by @dependabot in #10845
- Build(deps): bump google.golang.org/grpc from 1.56.2 to 1.57.0 by @dependabot in #10847
- Build(deps): bump github.com/containerd/containerd from 1.7.2 to 1.7.3 by @dependabot in #10850
- Build(deps): bump github.com/docker/docker from 24.0.5-0.20230714235725-36e9e796c6fc+incompatible to 24.0.5+incompatible by @dependabot in #10844
- Update to go1.20.7 by @thaJeztah in #10861
- Upgrade Golang to 1.21 by @glours in #10890
- Bump compose-go to version v1.18.0 by @glours in #10891
- Bump compose-go to version v1.18.1 by @glours in #10893
- Build(deps): bump github.com/moby/buildkit from 0.12.1-0.20230717122532-faa0cc7da353 to 0.12.1 by @dependabot in #10867
HAProxy v2.9-dev3
BUG/MINOR: ssl: OCSP callback only registered for first SSL_CTX
BUG/MEDIUM: h3: Properly report a C-L header was found to the HTX start-line
MINOR: sample: add pid sample
MINOR: sample: implement act_conn sample fetch
MINOR: sample: accept_date / request_date return %Ts / %tr timestamp values
MEDIUM: sample: implement us and ms variant of utime and ltime
BUG/MINOR: sample: check alloc_trash_chunk() in conv_time_common()
DOC: configuration: describe Td in Timing events
MINOR: sample: implement the T* timer tags from the log-format as fetches
DOC: configuration: add sample fetches for timing events
BUG/MINOR: quic: Possible crash when acknowledging Initial v2 packets
MINOR: quic: Export QUIC traces code from quic_conn.c
MINOR: quic: Export QUIC CLI code from quic_conn.c
MINOR: quic: Move TLS related code to quic_tls.c
MINOR: quic: Add new "QUIC over SSL" C module.
MINOR: quic: Add a new quic_ack.c C module for QUIC acknowledgements
CLEANUP: quic: Defined but no more used function (quic_get_tls_enc_levels())
MINOR: quic: Split QUIC connection code into three parts
CLEANUP: quic: quic_conn struct cleanup
MINOR: quic; Move the QUIC frame pool to its proper location
BUG/MINOR: chunk: fix chunk_appendf() to not write a zero if buffer is full
BUG/MEDIUM: h3: Be sure to handle fin bit on the last DATA frame
DOC: configuration: rework the custom log format table
BUG/MINOR: quic+openssl_compat: Non initialized TLS encryption levels
CLEANUP: acl: remove cache_idx from acl struct
REORG: cfgparse: extract curproxy as a global variable
MINOR: acl: add acl() sample fetch
BUILD: cfgparse: keep a single "curproxy"
BUG/MEDIUM: bwlim: Reset analyse expiration date when then channel analyse ends
MEDIUM: stream: Reset response analyse expiration date if there is no analyzer
BUG/MINOR: htx/mux-h1: Properly handle bodyless responses when splicing is used
BUG/MEDIUM: quic: consume contig space on requeue datagram
BUG/MINOR: http-client: Don't forget to commit changes on HTX message
CLEANUP: stconn: Move comment about sedesc fields on the field line
REGTESTS: http: Create a dedicated script to test spliced bodyless responses
REGTESTS: Test SPLICE feature is enabled to execute script about splicing
BUG/MINOR: quic: reappend rxbuf buffer on fake dgram alloc error
BUILD: quic: fix wrong potential NULL dereference
MINOR: h3: abort request if not completed before full response
BUG/MAJOR: http-ana: Get a fresh trash buffer for each header value replacement
CLEANUP: quic: Remove quic_path_room().
MINOR: quic: Amplification limit handling sanitization.
MINOR: quic: Move some counters from [rt]x quic_conn anonymous struct
MEDIUM: quic: Send CONNECTION_CLOSE packets from a dedicated buffer.
MINOR: quic: Use a pool for the connection ID tree.
MEDIUM: quic: Allow the quic_conn memory to be asap released.
MINOR: quic: Release asap quic_conn memory (application level)
MINOR: quic: Release asap quic_conn memory from ->close() xprt callback.
MINOR: quic: Warning for OpenSSL wrapper QUIC bindings without "limited-quic"
REORG: http: move has_forbidden_char() from h2.c to http.h
BUG/MAJOR: h3: reject header values containing invalid chars
MINOR: mux-h2/traces: also suggest invalid header upon parsing error
MINOR: ist: add new function ist_find_range() to find a character range
MINOR: http: add new function http_path_has_forbidden_char()
MINOR: h2: pass accept-invalid-http-request down the request parser
REGTESTS: http-rules: add accept-invalid-http-request for normalize-uri tests
BUG/MINOR: h1: do not accept '#' as part of the URI component
BUG/MINOR: h2: reject more chars from the :path pseudo header
BUG/MINOR: h3: reject more chars from the :path pseudo header
REGTESTS: http-rules: verify that we block '#' by default for normalize-uri
DOC: clarify the handling of URL fragments in requests
BUG/MAJOR: http: reject any empty content-length header value
BUG/MINOR: http: skip leading zeroes in content-length values
BUG/MEDIUM: mux-h1: fix incorrect state checking in h1_process_mux()
BUG/MEDIUM: mux-h1: do not forget EOH even when no header is sent
BUILD: mux-h1: shut a build warning on clang from previous commit
DEV: makefile: add a new "range" target to iteratively build all commits
CI: do not use "groupinstall" for Fedora Rawhide builds
CI: get rid of travis-ci wrapper for Coverity scan
BUG/MINOR: quic: mux started when releasing quic_conn
BUG/MINOR: quic: Possible crash in quic_cc_conn_io_cb() traces.
MINOR: quic: Add a trace for QUIC conn fd ready for receive
BUG/MINOR: quic: Possible crash when issuing "show fd/sess" CLI commands
BUG/MINOR: quic: Missing tasklet (quic_cc_conn_io_cb) memory release (leak)
BUG/MEDIUM: quic: fix tasklet_wakeup loop on connection closing
BUG/MINOR: hlua: fix invalid use of lua_pop on error paths
MINOR: hlua: add hlua_stream_ctx_prepare helper function
BUG/MEDIUM: hlua: streams don't support mixing lua-load with lua-load-per-thread
MAJOR: threads/plock: update the embedded library again
MINOR: stick-table: move the task_queue() call outside of the lock
MINOR: stick-table: move the task_wakeup() call outside of the lock
MEDIUM: stick-table: change the ref_cnt atomically
MINOR: stick-table: better organize the struct stktable
MEDIUM: peers: update ->commitupdate out of the lock using a CAS
MEDIUM: peers: drop then re-acquire the wrlock in peer_send_teachmsgs()
MEDIUM: peers: only read-lock peer_send_teachmsgs()
MEDIUM: stick-table: use a distinct lock for the updates tree
MEDIUM: stick-table: touch updates under an upgradable read lock
MEDIUM: peers: drop the stick-table lock before entering peer_send_teachmsgs()
MINOR: stick-table: move the update lock into its own cache line
CLEANUP: stick-table: slightly reorder the stktable struct
BUILD: defaults: use __WORDSIZE not LONGBITS for MAX_THREADS_PER_GROUP
MINOR: tools: make ptr_hash() support 0-bit outputs
MINOR: tools: improve ptr hash distribution on 64 bits
OPTIM: tools: improve hash distribution using a better prime seed
OPTIM: pools: use exponential back-off on shared pool allocation/release
OPTIM: pools: make pool_get_from_os() / pool_put_to_os() not update ->allocated
MINOR: pools: introduce the use of multiple buckets
MEDIUM: pools: spread the allocated counter over a few buckets
MEDIUM: pools: move the used counter over a few buckets
MEDIUM: pools: move the needed_avg counter over a few buckets
MINOR: pools: move the failed allocation counter over a few buckets
MAJOR: pools: move the shared pool's free_list over multiple buckets
MINOR: pools: make pool_evict_last_items() use pool_put_to_os_no_dec()
BUILD: pools: fix build error on clang with inline vs forceinline
Jenkins 2.419
Use standard size node icon even with long node names. (pull 8089)
Jenkins 2.418
New login page breaks login theme plugin. (issue 71238)
Fix "Manage Jenkins" context menu (regression in 2.415). (issue 71744)
Fix mistranslation of Japanese message in mailing list reference. (pull 8324)
Nodejs v20.5.1
Notable Changes
The following CVEs are fixed in this release:
CVE-2023-32002: Policies can be bypassed via Module._load (High)
CVE-2023-32558: process.binding() can bypass the permission model through path traversal (High)
CVE-2023-32004: Permission model can be bypassed by specifying a path traversal sequence in a Buffer (High)
CVE-2023-32006: Policies can be bypassed by module.constructor.createRequire (Medium)
CVE-2023-32559: Policies can be bypassed via process.binding (Medium)
CVE-2023-32005: fs.statfs can bypass the permission model (Low)
CVE-2023-32003: fs.mkdtemp() and fs.mkdtempSync() can bypass the permission model (Low)
OpenSSL Security Releases:
OpenSSL security advisory 14th July.
OpenSSL security advisory 19th July.
OpenSSL security advisory 31st July.
- Disallow substituting a schema or owner name into an extension script if the name contains a quote, backslash, or dollar sign (Noah Misch)
This restriction guards against SQL-injection hazards for trusted extensions.
The PostgreSQL Project thanks Micah Gate, Valerie Woolard, Tim Carey-Smith, and Christoph Berg for reporting this problem. (CVE-2023-39417)
- Fix
MERGE
to enforce row security policies properly (Dean Rasheed)
When MERGE
performs an UPDATE
action, it should enforce any UPDATE
or SELECT
RLS policies defined on the target table, to be consistent with the way that a plain UPDATE
with a WHERE
clause works. Instead it was enforcing INSERT
RLS policies for both INSERT
and UPDATE
actions.
In addition, when MERGE
performs a DO NOTHING
action, it applied the target table's DELETE
RLS policies to existing rows, even though those rows are not being deleted. While it's not a security problem, this could result in unwanted errors.
The PostgreSQL Project thanks Dean Rasheed for reporting this problem. (CVE-2023-39418)
- Fix confusion between empty (no rows) ranges and all-NULL ranges in BRIN indexes, as well as incorrect merging of all-NULL summaries (Tomas Vondra)
Each of these oversights could result in forgetting that a BRIN index range contains any NULL values, potentially allowing subsequent queries that should return NULL values to miss doing so.
This fix will not in itself correct faulty BRIN entries. It's recommended to REINDEX
any BRIN indexes that may be used to search for nulls.
- Avoid leaving a corrupted database behind when
DROP DATABASE
is interrupted (Andres Freund)
If DROP DATABASE
was interrupted after it had already begun taking irreversible steps, the target database remained accessible (because the removal of its pg_database
row would roll back), but it would have corrupt contents. Fix by marking the database as inaccessible before we begin to perform irreversible operations. A failure after that will leave the database still partially present, but nothing can be done with it except to issue another DROP DATABASE
.
- Ensure that partitioned indexes are correctly marked as valid or not at creation (Michael Paquier)
If a new partitioned index matches an existing but invalid index on one of the partitions, the partitioned index could end up being marked valid prematurely. This could lead to misbehavior or assertion failures in subsequent queries on the partitioned table.
- Ignore invalid child indexes when matching partitioned indexes to child indexes during
ALTER TABLE ATTACH PARTITION
(Michael Paquier)
Such an index will now be ignored, and a new child index created instead.
- Fix possible failure when marking a partitioned index valid after all of its partitions have been attached (Michael Paquier)
The update of the index's pg_index
entry could use stale data for other columns. One reported symptom is an “attempted to update invisible tuple” error.
- Fix
ALTER EXTENSION SET SCHEMA
to complain if the extension contains any objects outside the extension's schema (Michael Paquier, Heikki Linnakangas)
Erroring out if the extension contains objects in multiple schemas was always intended; but the check was mis-coded so that it would fail to detect some cases, leading to surprising behavior.
- Fix tracking of tables' access method dependencies (Michael Paquier)
ALTER TABLE ... SET ACCESS METHOD
failed to update relevant pg_depend
entries when changing a table's access method. When using non-built-in access methods, this creates a risk that an access method could be dropped even though tables still depend on it. This fix corrects the logic in ALTER TABLE
, but it will not adjust any already-missing pg_depend
entries.
- Don't use partial unique indexes for uniqueness proofs in the planner (David Rowley)
This could give rise to incorrect plans, since the presumed uniqueness of rows read from a table might not hold if the index in question isn't used to scan the table.
- Don't Memoize lateral joins with volatile join conditions (Richard Guo)
Applying Memoize to a sub-plan that contains volatile filter conditions is likely to lead to wrong answers. The check to avoid doing this missed some cases that can arise when using LATERAL
.
- Avoid producing incorrect plans for foreign joins with pseudoconstant join clauses (Etsuro Fujita)
The planner currently lacks support for attaching pseudoconstant join clauses to a pushed-down remote join, so disable generation of remote joins in such cases. (A better solution will require ABI-breaking changes of planner data structures, so it will have to wait for a future major release.)
- Correctly handle sub-SELECTs in RLS policy expressions and security-barrier views when expanding rule actions (Tom Lane)
- Fix race conditions in conflict detection for
SERIALIZABLE
isolation mode (Thomas Munro)
Conflicts could be missed when using bitmap heap scans, when using GIN indexes, and when examining an initially-empty btree index. All these cases could lead to serializability failures due to improperly allowing conflicting transactions to commit.
- Fix misbehavior of EvalPlanQual checks with inherited or partitioned target tables (Tom Lane)
This oversight could lead to update or delete actions in READ COMMITTED
isolation mode getting performed when they should have been skipped because of a conflicting concurrent update.
- Fix hash join with an inner-side hash key that contains Params coming from an outer nested loop (Tom Lane)
When rescanning the join after the values of such Params have changed, we must rebuild the hash table, but neglected to do so. This could result in missing join output rows.
- Fix intermittent failures when trying to update a field of a composite column (Tom Lane)
If the overall value of the composite column is wide enough to require out-of-line toasting, then an unluckily-timed cache flush could cause errors or server crashes.
- Prevent query-lifespan memory leaks in some
UPDATE
queries with triggers (Tomas Vondra) - Prevent query-lifespan memory leaks when an Incremental Sort plan node is rescanned (James Coleman, Laurenz Albe, Tom Lane)
- Accept fractional seconds in the input to
jsonpath
'sdatetime()
method (Tom Lane) - Prevent stack-overflow crashes with very complex text search patterns (Tom Lane)
- Allow tokens up to 10240 bytes long in
pg_hba.conf
andpg_ident.conf
(Tom Lane)
The previous limit of 256 bytes has been found insufficient for some use-cases.
- Ensure that all existing placeholders are checked for matches when an extension declares its GUC prefix to be reserved (Karina Litskevich, Ekaterina Sokolova)
Faulty loop logic could cause some entries to be skipped.
- Fix mishandling of C++ out-of-memory conditions (Heikki Linnakangas)
If JIT is in use, running out of memory in a C++ new
call would lead to a PostgreSQL FATAL error, instead of the expected C++ exception.
- Fix rare null-pointer crash in
plancache.c
(Tom Lane) - Avoid leaking a stats entry for a subscription when it is dropped (Masahiko Sawada)
- Avoid losing track of possibly-useful shared memory segments when a page free results in coalescing ranges of free space (Dongming Liu)
Ensure that the segment is moved into the appropriate “bin” for its new amount of free space, so that it will be found by subsequent searches.
- Allow
VACUUM
to continue after detecting certain types of b-tree index corruption (Peter Geoghegan)
If an invalid sibling-page link is detected, log the issue and press on, rather than throwing an error as before. Nothing short of REINDEX
will fix the broken index, but preventing VACUUM
from completing until that is done risks making matters far worse.
- Ensure that
WrapLimitsVacuumLock
is released afterVACUUM
detects invalid data inpg_database
.datfrozenxid
orpg_database
.datminmxid
(Andres Freund)
Failure to release this lock could lead to a deadlock later, although the lock would be cleaned up if the session exits or encounters some other error.
- Avoid double replay of prepared transactions during crash recovery (suyu.cmj, Michael Paquier)
After a crash partway through a checkpoint with some two-phase transaction state data already flushed to disk by this checkpoint, crash recovery could attempt to replay the prepared transaction(s) twice, leading to a fatal error such as “lock is already held” in the startup process.
- Ensure that a newly created, but still empty table is
fsync
'ed at the next checkpoint (Heikki Linnakangas)
Without this, if there is an operating system crash causing the empty file to disappear, subsequent operations on the table might fail with “could not open file” errors.
- Ensure that creation of the init fork of an unlogged index is WAL-logged (Heikki Linnakangas)
While an unlogged index's main data fork is not WAL-logged, its init fork should be, to ensure that we have a consistent state to restore the index to after a crash. This step was missed if the init fork contains no data, which is a case not used by any standard index AM; but perhaps some extension behaves that way.
- Silence bogus “missing contrecord” errors (Thomas Munro)
Treat this case as plain end-of-WAL to avoid logging inaccurate complaints from pg_waldump and walsender.
- Fix overly strict assertion in
jsonpath
code (David Rowley)
This assertion failed if a query applied the .type()
operator to a like_regex
result. There was no bug in non-assert builds.
- Avoid assertion failure when processing an empty statement via the extended query protocol in an already-aborted transaction (Tom Lane)
- Avoid assertion failure when the
stats_fetch_consistency
setting is changed intra-transaction (Kyotaro Horiguchi) - Fix
contrib/fuzzystrmatch
's Soundexdifference()
function to handle empty input sanely (Alexander Lakhin, Tom Lane)
An input string containing no alphabetic characters resulted in unpredictable output.
- Tighten whitespace checks in
contrib/hstore
input (Evan Jones)
In some cases, characters would be falsely recognized as whitespace and hence discarded.
- Disallow oversize input arrays with
contrib/intarray
'sgist__int_ops
index opclass (Ankit Kumar Pandey, Alexander Lakhin)
Previously this code would report a NOTICE
but press on anyway, creating an invalid index entry that presents a risk of crashes when the index is read.
- Avoid useless double decompression of GiST index entries in
contrib/intarray
(Konstantin Knizhnik, Matthias van de Meent, Tom Lane) - Fix
contrib/pageinspect
'sgist_page_items()
function to work when there are included index columns (Alexander Lakhin, Michael Paquier)
Previously, if the index has included columns, gist_page_items()
would fail to display those values on index leaf pages, or crash outright on non-leaf pages.
- In psql, ignore the
PSQL_WATCH_PAGER
environment variable when stdin/stdout are not a terminal (Tom Lane)
This corresponds to the treatment of PSQL_PAGER
in commands besides \watch
.
- Fix pg_dump to correctly handle new-style SQL-language functions whose bodies require parse-time dependencies on unique indexes (Tom Lane)
Such cases can arise from GROUP BY
and ON CONFLICT
clauses, for example. The function must then be postponed until after the unique index in the dump output, but pg_dump did not do that and instead printed a warning about “could not resolve dependency loop”.
- Improve pg_dump's display of details about dependency-loop problems (Tom Lane)
- Avoid crash in pgbench with an empty pipeline and prepared mode (Álvaro Herrera)
- Ensure that
pg_index
.indisreplident
is kept up-to-date in relation cache entries (Shruthi Gowda)
This value could be stale in some cases. There is no core code that relies on the relation cache's copy, so this is only a latent bug as far as Postgres itself is concerned; but there may be extensions for which it is a live bug.
- Fix make_etags script to work with non-Exuberant ctags (Masahiko Sawada)
- Disallow substituting a schema or owner name into an extension script if the name contains a quote, backslash, or dollar sign (Noah Misch)
This restriction guards against SQL-injection hazards for trusted extensions.
The PostgreSQL Project thanks Micah Gate, Valerie Woolard, Tim Carey-Smith, and Christoph Berg for reporting this problem. (CVE-2023-39417)
- Fix confusion between empty (no rows) ranges and all-NULL ranges in BRIN indexes, as well as incorrect merging of all-NULL summaries (Tomas Vondra)
Each of these oversights could result in forgetting that a BRIN index range contains any NULL values, potentially allowing subsequent queries that should return NULL values to miss doing so.
This fix will not in itself correct faulty BRIN entries. It's recommended to REINDEX
any BRIN indexes that may be used to search for nulls.
- Avoid leaving a corrupted database behind when
DROP DATABASE
is interrupted (Andres Freund)
If DROP DATABASE
was interrupted after it had already begun taking irreversible steps, the target database remained accessible (because the removal of its pg_database
row would roll back), but it would have corrupt contents. Fix by marking the database as inaccessible before we begin to perform irreversible operations. A failure after that will leave the database still partially present, but nothing can be done with it except to issue another DROP DATABASE
.
- Ensure that partitioned indexes are correctly marked as valid or not at creation (Michael Paquier)
If a new partitioned index matches an existing but invalid index on one of the partitions, the partitioned index could end up being marked valid prematurely. This could lead to misbehavior or assertion failures in subsequent queries on the partitioned table.
- Ignore invalid child indexes when matching partitioned indexes to child indexes during
ALTER TABLE ATTACH PARTITION
(Michael Paquier)
Such an index will now be ignored, and a new child index created instead.
- Fix possible failure when marking a partitioned index valid after all of its partitions have been attached (Michael Paquier)
The update of the index's pg_index
entry could use stale data for other columns. One reported symptom is an “attempted to update invisible tuple” error.
- Fix
ALTER EXTENSION SET SCHEMA
to complain if the extension contains any objects outside the extension's schema (Michael Paquier, Heikki Linnakangas)
Erroring out if the extension contains objects in multiple schemas was always intended; but the check was mis-coded so that it would fail to detect some cases, leading to surprising behavior.
- Don't use partial unique indexes for uniqueness proofs in the planner (David Rowley)
This could give rise to incorrect plans, since the presumed uniqueness of rows read from a table might not hold if the index in question isn't used to scan the table.
- Don't Memoize lateral joins with volatile join conditions (Richard Guo)
Applying Memoize to a sub-plan that contains volatile filter conditions is likely to lead to wrong answers. The check to avoid doing this missed some cases that can arise when using LATERAL
.
- Avoid producing incorrect plans for foreign joins with pseudoconstant join clauses (Etsuro Fujita)
The planner currently lacks support for attaching pseudoconstant join clauses to a pushed-down remote join, so disable generation of remote joins in such cases. (A better solution will require ABI-breaking changes of planner data structures, so it will have to wait for a future major release.)
- Correctly handle sub-SELECTs in RLS policy expressions and security-barrier views when expanding rule actions (Tom Lane)
- Fix race conditions in conflict detection for
SERIALIZABLE
isolation mode (Thomas Munro)
Conflicts could be missed when using bitmap heap scans, when using GIN indexes, and when examining an initially-empty btree index. All these cases could lead to serializability failures due to improperly allowing conflicting transactions to commit.
- Fix misbehavior of EvalPlanQual checks with inherited or partitioned target tables (Tom Lane)
This oversight could lead to update or delete actions in READ COMMITTED
isolation mode getting performed when they should have been skipped because of a conflicting concurrent update.
- Fix hash join with an inner-side hash key that contains Params coming from an outer nested loop (Tom Lane)
When rescanning the join after the values of such Params have changed, we must rebuild the hash table, but neglected to do so. This could result in missing join output rows.
- Fix intermittent failures when trying to update a field of a composite column (Tom Lane)
If the overall value of the composite column is wide enough to require out-of-line toasting, then an unluckily-timed cache flush could cause errors or server crashes.
- Prevent query-lifespan memory leaks in some
UPDATE
queries with triggers (Tomas Vondra) - Prevent query-lifespan memory leaks when an Incremental Sort plan node is rescanned (James Coleman, Laurenz Albe, Tom Lane)
- Accept fractional seconds in the input to
jsonpath
'sdatetime()
method (Tom Lane) - Prevent stack-overflow crashes with very complex text search patterns (Tom Lane)
- Allow tokens up to 10240 bytes long in
pg_hba.conf
andpg_ident.conf
(Tom Lane)
The previous limit of 256 bytes has been found insufficient for some use-cases.
- Fix mishandling of C++ out-of-memory conditions (Heikki Linnakangas)
If JIT is in use, running out of memory in a C++ new
call would lead to a PostgreSQL FATAL error, instead of the expected C++ exception.
- Fix rare null-pointer crash in
plancache.c
(Tom Lane) - Avoid losing track of possibly-useful shared memory segments when a page free results in coalescing ranges of free space (Dongming Liu)
Ensure that the segment is moved into the appropriate “bin” for its new amount of free space, so that it will be found by subsequent searches.
- Allow
VACUUM
to continue after detecting certain types of b-tree index corruption (Peter Geoghegan)
If an invalid sibling-page link is detected, log the issue and press on, rather than throwing an error as before. Nothing short of REINDEX
will fix the broken index, but preventing VACUUM
from completing until that is done risks making matters far worse.
- Ensure that
WrapLimitsVacuumLock
is released afterVACUUM
detects invalid data inpg_database
.datfrozenxid
orpg_database
.datminmxid
(Andres Freund)
Failure to release this lock could lead to a deadlock later, although the lock would be cleaned up if the session exits or encounters some other error.
- Avoid double replay of prepared transactions during crash recovery (suyu.cmj, Michael Paquier)
After a crash partway through a checkpoint with some two-phase transaction state data already flushed to disk by this checkpoint, crash recovery could attempt to replay the prepared transaction(s) twice, leading to a fatal error such as “lock is already held” in the startup process.
- Fix possible failure while promoting a standby server, if archiving is enabled and two-phase transactions need to be recovered (Julian Markwort)
If any required two-phase transactions were logged in the most recent (partial) log segment, promotion would fail with an incorrect complaint about “requested WAL segment has already been removed”.
- Ensure that a newly created, but still empty table is
fsync
'ed at the next checkpoint (Heikki Linnakangas)
Without this, if there is an operating system crash causing the empty file to disappear, subsequent operations on the table might fail with “could not open file” errors.
- Ensure that creation of the init fork of an unlogged index is WAL-logged (Heikki Linnakangas)
While an unlogged index's main data fork is not WAL-logged, its init fork should be, to ensure that we have a consistent state to restore the index to after a crash. This step was missed if the init fork contains no data, which is a case not used by any standard index AM; but perhaps some extension behaves that way.
- Fix missing reinitializations of delay-checkpoint-end flags (suyu.cmj)
This could result in unnecessary delays of checkpoints, or in assertion failures in assert-enabled builds.
- Fix overly strict assertion in
jsonpath
code (David Rowley)
This assertion failed if a query applied the .type()
operator to a like_regex
result. There was no bug in non-assert builds.
- Avoid assertion failure when processing an empty statement via the extended query protocol in an already-aborted transaction (Tom Lane)
- Fix
contrib/fuzzystrmatch
's Soundexdifference()
function to handle empty input sanely (Alexander Lakhin, Tom Lane)
An input string containing no alphabetic characters resulted in unpredictable output.
- Tighten whitespace checks in
contrib/hstore
input (Evan Jones)
In some cases, characters would be falsely recognized as whitespace and hence discarded.
- Disallow oversize input arrays with
contrib/intarray
'sgist__int_ops
index opclass (Ankit Kumar Pandey, Alexander Lakhin)
Previously this code would report a NOTICE
but press on anyway, creating an invalid index entry that presents a risk of crashes when the index is read.
- Avoid useless double decompression of GiST index entries in
contrib/intarray
(Konstantin Knizhnik, Matthias van de Meent, Tom Lane) - Fix
contrib/pageinspect
'sgist_page_items()
function to work when there are included index columns (Alexander Lakhin, Michael Paquier)
Previously, if the index has included columns, gist_page_items()
would fail to display those values on index leaf pages, or crash outright on non-leaf pages.
- Fix pg_dump to correctly handle new-style SQL-language functions whose bodies require parse-time dependencies on unique indexes (Tom Lane)
Such cases can arise from GROUP BY
and ON CONFLICT
clauses, for example. The function must then be postponed until after the unique index in the dump output, but pg_dump did not do that and instead printed a warning about “could not resolve dependency loop”.
- Ensure that
pg_index
.indisreplident
is kept up-to-date in relation cache entries (Shruthi Gowda)
This value could be stale in some cases. There is no core code that relies on the relation cache's copy, so this is only a latent bug as far as Postgres itself is concerned; but there may be extensions for which it is a live bug.
Redis 7.2.0
Upgrade urgency LOW: This is the first stable Release for Redis 7.2.
Bug Fixes:
- redis-cli in cluster mode handles
unknown-endpoint
(#12273) - Update request / response policy hints for a few commands (#12417)
- Ensure that the function load timeout is disabled during loading from RDB/AOF and on replicas. (#12451)
- Fix false success and a memory leak for ACL selector with bad parenthesis combination (#12452)
- Fix the assertion when script timeout occurs after it signaled a blocked client (#12459)
Fixes for issues in previous releases of Redis 7.2:
- Update MONITOR client's memory correctly for INFO and client-eviction (#12420)
- The response of cluster nodes was unnecessarily adding an extra comma when no
hostname was present. (#12411)
d12d10c (0.40) Update to OpenSSL 1.1.1v Peter Shipton #17896
67512b5 (0.40) Update OpenSSL to the 1.1.1 July 19 CVE level Peter Shipton #17836
18fb6d1 (0.40) Use jdk19 to build jdk20 Peter Shipton #17834
b681a67 (0.40) Exclude cmdLineTester_CryptoTest in FIPS mode Paritosh Kumar #17777
ac8c50c (v0.40.0-release) j9gc_createJavaLangString protects string objects across GC points Jason Feng #17747
7319b8d (0.40) Split sanity.openjdk into 3 parallel jobs Lan Xia #17705
6eed053 (v0.40.0-release) CRIU tests pass if the original thread IDs can't be acquired Jason Feng #17702
c5b1658 (0.40) Modify the translated PII files in nls folder 20230627 Dong Chen #17687
26d65ac Change API used for computing code cache size in low memory environments (0.40.0) Marius Pirvu #17682
4dd1080 (v0.40.0-release) CRIU tests require only one Pre-checkpoint message Jason Feng #17669
e116b33 (v0.40.0-release) CRIU skips clearInetAddressCache() if InetAddress is not initialized Jason Feng #17670
e13741a (0.40) Add missed check for compressed string Dmitri Pivkine #17661
558f239 (0.40) CRIU GC: Flush and Reset Buffers on Reinit Salman Rana #17653
c50c466 (0.40) Add checkpoint delay when clinit is occuring Tobi Ajila #17652
8b4420c (v0.40.0)Use debug interpreter unconditionally when debug is enabled … Mike Zhang #17627
efe6ee2 (v0.40.0-release) CRIU throws JVMCRIUException in single threaded mode if parks no timeout Jason Feng #17639
2684cbb (0.40) Update Split List Forced Flag + Revert CRIU Thread Count Reinit Salman Rana #17644
970c9be (0.40) GC CRIU: Reinit HeapRegionDescriptorExtensions (Region Obj Lists) Salman Rana #17645
71eab61 (0.40) Avoid generating store of uninitialized auto when reducing TRT2 Devin Papineau #17605
b5af32b [0.40] Add NLS message: J9NLS_PORT_RUNNING_IN_CONTAINER_FAILURE Babneet Singh #17600
17f2765 (0.40) Fix invalid OMR_PRI* usage on Windows Kevin Grigorenko #17569
c4720f2 [FFI/Jtreg_JDK20] Keep the downcall address alive for downcall (0.40) ChengJin01 #17565
936ec54 (0.40) Modify the translated PII files in nls folder 20230607 Dong Chen #17545
99c5d95 [FFI/Jtreg_JDK20] Validate the downcall address with the scope check (0.40) ChengJin01 #17538
b9cd65e Insert branch around re performing store for awrtbar Rahil Shah #17517
f514560 CRIU skips j9sysinfo_get_username()/getpwuid() if isCheckPointAllowed Jason Feng #17505
0a07503 Put select system property names and values in allocated memory Keith W. Campbell #17407
bedafef Handle new vector opcodes Gita Koblents #17112
60798a3 Revert "Enable EDO during AOT compilation" Peter Shipton #17512
6ed80ce Enable EDO during AOT compilation Christian Despres #17217
3cbf8a0 Bump actions/setup-python from 2.3.3 to 4.6.1 dependabot[bot] #17502
4334ef0 Remove configuration information for Java 19 Keith W. Campbell #17507
42d8c31 Correct return type of JVM_Sleep() Keith W. Campbell #17504
c005819 Expand bytecode offset variables to 32bit Kevin Langman #17469
91c8570 Fix array constructor for Object Lists Aleksandar Micic #17503
283b706 Set LIGHT_WEIGHT_CHECKOUT to true Lan Xia #17497
423823f Correct SPDX license identifiers Jason Feng #17494
b087017 Correct SPDX license identifier Dmitri Pivkine #17489
dd16eba CRIU JDK11UpTimeoutAdjustmentTest adjusts for thread starting Jason Feng #17473
9797bca Rework RegionExtenstion/Object List Initialization Salman Rana #17461
69d50bc Bump actions/github-script from 3.2.0 to 6.4.1 dependabot[bot] #17481
ba2ccc1 Bump actions/checkout from 2.7.0 to 3.5.2 dependabot[bot] #17482
914adf4 Bump adoptium/run-aqa from 1.0.8 to 2.0.1 dependabot[bot] #17483
54a776f Bump peter-evans/create-pull-request from 3.14.0 to 5.0.1 dependabot[bot] #17480
013e44d Bump actions/upload-artifact from 2.3.1 to 3.1.2 dependabot[bot] #17484
ff98e55 [StepSecurity] Apply security best practices StepSecurity Bot #17477
b58a15e Call static method VM.getVMArgs() from JNI as a static method Peter Shipton #17475
f98cb31 Update openssl to version 1.1.1u Keith W. Campbell #17468
3e340db Disable FFI specific code for compilation in JDK21 ChengJin01 #17352
6aab183 Add/update java.specification.maintenance.version Keith W. Campbell #17470
c7ac2f7 Correct SPDX license identifiers Keith W. Campbell #17435
3b029b0 Add support for persistent SCC on z/OS Hang Shao #17073
f988e15 Set symbol declared class for field shadows Devin Papineau #17327
623c7ba Adding helper functions for crc32 special routines to enable optimizations in AOT Bhavani SN #17453
1b94cba Handle code cache alloction for low memory SajinaKandy #17425
12286f5 CRIU restore clears InetAddress.cache Jason Feng #17448
ec0eb13 Add the unimplemented assertion to Thread.findScopedValueBindings() Gengchen Tuo #17451
3bacb5a Add CH Table AOT Feature Flag Irwin D'Souza #17260
4bb727b Place fatal asserts in FE queries that JITServer should not call Marius Pirvu #17355
18f6869 Simplify callMustBeInlinedRegardlessOfSize calls James You #17406
1220e36 Use genLoadProfiledClassAddressConstant in Z codegen Spencer Comin #14932
37e239e Revert "Sync JVM init and exit paths" Babneet Singh #17438
de38712 Fix bug related to J9::Options::_compilationDelayTime unit Marius Pirvu #17436
3ca50dc Fix compile error due to unused variable Keith W. Campbell #17434
7d5d62a Correctly handle primitive VTs in System.arraycopy Ehren Julien-Neitzert #17048
3fbe09e Add areFlattenableValueTypesEnabled() for JIT Hang Shao #17413
22b17b8 [Jtreg/FFI] Remove the null segment check for pointer ChengJin01 #17408
826d49a (0.39) Prototype Continuation caching Babneet Singh #17409
e4a741f Add new optimization catchBlockProfiler Marius Pirvu #16854
b182f7a Add 31-64 interop support for JVM_ funcs for JDK17+ Joran Siu #17369
9667d83 Add new build flag to split value object feature from Valhalla Hang Shao #17394
a555ad2 WIP: Teach ValueTypeUnsafeTests about dual header shape Shubham Verma #17375
cb36d2d Sync JVM init and exit paths Babneet Singh #17101
d41eba9 Fix handling of IPv6 addressed Keith W. Campbell #17403
c9ea68f Enable CRC32 to run with AOT enabled on Power Bhavani SN #17243
8800e58 Patch addresses in LLILF/IIHF pairs on class unload and HCR Spencer Comin #15705
0ef06f4 Use TRUE instead of true calling freeContinuation() Babneet Singh #17398
8aa8676 Prototype Continuation caching Jack Lu #17344
09a3602 DDR: Fix function call parsing in StackMap Devin Nakamura #17278
b5c39bf Return false from JVM_DTraceIsSupported Peter Shipton #17391
1cbe6d1 Add missing value type check before zero the lockword Hang Shao #17381
8e3bb68 [FFI/JDK20_Jtreg] Handle the invalid arguments & return value ChengJin01 #17308
7806354 Provide a better error message for failed library loads on jdk17+ Peter Shipton #17374
3e7e8f9 Fix to handle suspend/resume of virtual/carrier threads Dipak Bagadiya #17350
45ed10a Fix typo in JDK11 build instructions James You #17373
575cae3 Remove unnecessary compatibility constant J9DescriptionCpTypeShift Keith W. Campbell #17376
ae2bda7 Throw UnsupportedOperationException in sun.misc.Perf.attach natives Peter Shipton #17380
ba48d1f Refactor GC Object List Allocation/Initialization Salman Rana #17330
7aa3fb8 Introduce GC CRIU (reinit) API for Thread Local Obj Buffers / Env Delegate Salman Rana #17348
0d24025 Remove obsolete references to freetype in jdk8 build instructions Peter Shipton #17379
9f19595 Define J9ClassEnv::primitiveArrayComponentType() Devin Papineau #17274
400ef3e Fix constant mapping in J9ConstantPoolCommand Jack Lu #17371
61cabd5 Support offloading for jdk17+ Peter Shipton #17306
899eedf Ensure JITServer tests check if server exists Irwin D'Souza #17363
663c581 Correct condition for preparing offloading library Keith W. Campbell #17370
7815549 Close VM and thread libraries on successful DestroyJavaVM Graham Chapman #17336
b3ac5be Correct types for min, length in memory segment objects Keith W. Campbell #17275
e698b8f Revert "Restore @OverRide annotation for Access.getLoaderNameID()" Peter Shipton #17361
36f6357 Implement JVM_VirtualThreadHideFrames() Gengchen Tuo #16654