Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
251 commits
Select commit Hold shift + click to select a range
8919208
Add more tests for corrupted data with pglz_decompress()
michaelpq May 13, 2026
98dd6c2
pgbench: fix verbose error message corruption with multiple threads
MasaoFujii May 14, 2026
1cd37a7
Add tests for cross-session temp table access
akorotkov May 14, 2026
1b0dd08
Prevent access to other sessions' temp tables
akorotkov May 14, 2026
ed0c4d5
refint: Fix segfault in check_foreign_key().
nathan-bossart May 14, 2026
f45f418
Re-add regression tests for ltree and intarray
michaelpq May 15, 2026
d472bf1
Doc: fix release-note typo.
tglsfdc May 15, 2026
dc3db3a
Use ereport(ERROR), not Assert(), for publisher tuples missing columns.
nmisch May 17, 2026
20a4b06
injection_points: Move some structs to new header injection_points.h
michaelpq May 18, 2026
e0c641e
psql: Make ParseVariableDouble reject values above max
danielgustafsson May 18, 2026
89b4b3a
pg_recvlogical: Honor source cluster file permissions for output files
MasaoFujii May 20, 2026
41247cd
Prevent setting NO INHERIT on partitioned NOT NULL constraints
MasaoFujii May 22, 2026
b903d17
Avoid exposing WAL receiver raw conninfo during timeline jumps
michaelpq May 22, 2026
b5fd572
Fix size check in statext_dependencies_deserialize()
michaelpq May 25, 2026
88d7748
postgres_fdw: Give user mapping precedence for use_scram_passthrough
MasaoFujii May 25, 2026
130396e
dblink: Give user mapping precedence for use_scram_passthrough
MasaoFujii May 25, 2026
cd777e2
dblink: Reject use_scram_passthrough on foreign-data wrappers
MasaoFujii May 25, 2026
e7544c5
Fix missed ReleaseVariableStats() in intarray's _int_matchsel().
tglsfdc May 25, 2026
0480d84
Add stack depth check to QueueFKConstraintValidation().
tglsfdc May 26, 2026
97b5c5a
Skip pg_database.dathasloginevt cleanup on standby
akorotkov May 26, 2026
196b4b5
pg_createsubscriber: Fix cleanup of publisher-side objects after errors
MasaoFujii May 27, 2026
ae08eb1
Fix race conditions in ProcKill()'s lock-group freelist handling
michaelpq May 27, 2026
12c9b8b
Fix procLatch ownership race in ProcKill()
michaelpq May 27, 2026
f9d5a52
Don't try to record dependency on a dropped column's datatype
hlinnaka May 27, 2026
c8cd3d6
Avoid orphaned objects dependencies
hlinnaka May 27, 2026
1a9b1cc
Fix race between ProcSignalInit() and EmitProcSignalBarrier().
MasahikoSawada May 27, 2026
e5d019f
postgres_fdw, dblink: Validate use_scram_passthrough values
MasaoFujii May 28, 2026
c0bf1d8
Make stack depth check work with asan's use-after-return
anarazel May 28, 2026
c8b4186
Use term "referenced" rather than "dependent" in dependency locking
hlinnaka May 28, 2026
380a8b2
doc: Correct the timeline for OAuth's shutdown_cb
jchampio May 29, 2026
1e9bc40
psql: Fix issues with deferred errors in pipelines
michaelpq Jun 2, 2026
cc0819e
Fix wrong unsafe-flag test in check_output_expressions()
Jun 3, 2026
b3f13c0
Fix copy-paste error in hash_record_extended()
michaelpq Jun 3, 2026
f833c92
Fix race in ReplicationSlotRelease() for ephemeral slots
MasaoFujii Jun 3, 2026
94c02de
pg_dump: scope indAttNames per index in getIndexes()
akorotkov Jun 3, 2026
0228d09
Fix another case of indirectly casting away const.
tglsfdc Jun 4, 2026
c519413
Improve reporting of invalid weight symbols in setweight() et al.
tglsfdc Jun 4, 2026
273fe94
Fix off-by-one with NFC recomposition for Hangul U+11A7 (TBASE)
michaelpq Jun 4, 2026
79a5062
refint: Remove plan cache.
nathan-bossart Jun 5, 2026
a5112c9
doc: Use groups instead of curves in TLS documentation
danielgustafsson Jun 5, 2026
2b09f8a
pg_surgery: Fix off-by-one bug with heap offset
michaelpq Jun 5, 2026
07a6c26
psql: Fix expanded aligned output
michaelpq Jun 8, 2026
4154a14
Fix memory leak in pgstat_progress_parallel_incr_param()
michaelpq Jun 8, 2026
081434b
ecpg: Reject multiple header items in GET/SET DESCRIPTOR
MasaoFujii Jun 8, 2026
be176e0
doc: Expand on proper use of refint.
nathan-bossart Jun 8, 2026
11aed8d
Fix missed checks for hashability of container-type equality.
tglsfdc Jun 8, 2026
89e6484
dict_synonym.c: remove incorrect outlen.
jeff-davis Jun 8, 2026
c090bef
Remove inappropriate translation marker in getObjectIdentityParts().
tglsfdc Jun 8, 2026
26bd362
Guard against uninitialized default locale.
jeff-davis Jun 8, 2026
beb09e9
Use correct type for catalog_xmin
MasaoFujii Jun 8, 2026
91b57ea
xml2: Fix crash with namespace nodes in xpath_nodeset()
michaelpq Jun 11, 2026
b4bd138
Fix race with timeline selection in logical decoding during promotion
michaelpq Jun 11, 2026
0004cab
seg: Fix seg_out() to preserve the upper boundary's certainty indicator
hlinnaka Jun 11, 2026
9108fed
Fix parsing of parenthesised OLD/NEW in RETURNING list.
deanrasheed Jun 11, 2026
35d9a62
IS JSON/JSON(): Protect against expressions uncoercible to text
alvherre Jun 11, 2026
12c32bb
amcheck: Fix missing allequalimage corruption report
MasaoFujii Jun 12, 2026
4c777d6
Fix handling of namespace nodes in xpath() (xml)
michaelpq Jun 12, 2026
556324c
doc: fix reference for finding replication slots to drop
MasaoFujii Jun 12, 2026
4bff3aa
Fix second race with timeline selection during promotion
michaelpq Jun 12, 2026
0d145be
Update expected regression test output for xml_2.out
michaelpq Jun 12, 2026
27cf3b5
Fix compilation with OpenSSL 4
danielgustafsson Jun 12, 2026
10e5104
Adjust cross-version upgrade tests for seg_out() fix
adunstan Jun 12, 2026
897e794
amcheck: Use correct varlena size accessor in bt_normalize_tuple()
akorotkov Jun 13, 2026
b4db796
Doc: remove stale entry for removed aclitem[] ~ aclitem operator.
tglsfdc Jun 14, 2026
e592535
Trim regression test expected output for xml
michaelpq Jun 15, 2026
b1ab4bc
Fix PQdescribePrepared with more than 7498 params
hlinnaka Jun 15, 2026
6603e81
Modernize pg_bsd_indent's error/warning reporting code.
tglsfdc Jun 15, 2026
85e6624
doc: Fix "Prev" link.
nathan-bossart Jun 15, 2026
abb5825
Clean up quoting of variable strings within replication commands.
tglsfdc Jun 15, 2026
42ffded
Fix inconsistencies with pg_restore --statistics[-only]
michaelpq Jun 15, 2026
54ffa74
pg_dump: Remove dead code in TAP tests
michaelpq Jun 15, 2026
c3e36a9
Fix int32 overflow in ltree_compare()
hlinnaka Jun 16, 2026
477efef
pg_restore: Use dependency-based matching for STATISTICS DATA
michaelpq Jun 16, 2026
bd7b218
logical decoding: Correctly free speculative insertion
alvherre Jun 16, 2026
5a4fea0
Fix another instability in recovery TAP test 004_timeline_switch
michaelpq Jun 16, 2026
13f940b
Fix pgstat_count_io_op_time() calls passing incorrect information
michaelpq Jun 17, 2026
7e085aa
vacuumdb: Fix --missing-stats-only for partitioned indexes.
nathan-bossart Jun 17, 2026
e3b7a43
jsonb_plperl, jsonb_plpython: Fix unguarded recursion and loops.
tglsfdc Jun 17, 2026
1fb397f
oauth_validator: Print captured stderr after call-count failure
jchampio Jun 17, 2026
357e4d6
libpq-oauth: Print libcurl version with OAUTHDEBUG_UNSAFE_TRACE
jchampio Jun 17, 2026
c5c35fd
oauth: Skip call-count test for libcurl 8.20.0
jchampio Jun 17, 2026
5cc5983
Fix PANIC with track_functions due to concurrent drop of pgstats entries
michaelpq Jun 18, 2026
08458bc
Avoid stale slot access after dropping obsolete synced slots.
Jun 18, 2026
8a4f389
Update .abi-compliance-history for pgstat_drop_entry()
michaelpq Jun 18, 2026
5562b26
doc: Fix "Prev" link, take 2.
nathan-bossart Jun 18, 2026
d65cf6f
hstore_plperl: Add CHECK_FOR_INTERRUPTS() in reference-unwinding loop.
tglsfdc Jun 18, 2026
78d89a7
Silence "may be used uninitialized" compiler warning.
nathan-bossart Jun 18, 2026
e9692de
Update JIT tuple deforming code for virtual generated columns
david-rowley Jun 19, 2026
aa80c34
Make pg_mkdir_p() tolerant of a concurrent directory creation.
tglsfdc Jun 19, 2026
e025267
Strip removed-relation references from PlaceHolderVars at join removal
Jun 22, 2026
0204262
pgcrypto: avoid recursive ResourceOwnerForget().
tglsfdc Jun 22, 2026
ac6a58a
Fix unsafe order of operations in ResourceOwnerReleaseAll().
tglsfdc Jun 22, 2026
fe464e9
Re-introduce pgstat_drop_entry(), keeping ABI compatibility
michaelpq Jun 22, 2026
d3ff08e
doc: Describe better handling of indexes in ALTER TABLE ATTACH PARTITION
michaelpq Jun 23, 2026
1ef917e
Re-index ModifyTable FDW arrays when pruning result relations
amitlan Jun 22, 2026
e430ecc
plperl: Fix NULL pointer dereference for forged array object
Jun 24, 2026
bba4e09
Avoid ABI break in ModifyTableState from the FDW pruning fix
amitlan Jun 25, 2026
917fdbc
Fix null-pointer crash in ECPG compiler.
tglsfdc Jun 25, 2026
3bf2cb2
Fix out-of-bounds access in autoprewarm worker
tvondra Jun 26, 2026
5fd1c3f
Avoid collation lookup failure when considering a "char" column.
tglsfdc Jun 28, 2026
53482fc
plpython: Fix NULL pointer dereferences for broken sequence and mappi…
Jun 29, 2026
d36b728
Fix handling of copy_file_range() return value
petere Jun 29, 2026
6276057
Fix unlogged sequence corruption after standby promotion
MasaoFujii Jun 29, 2026
6a6cf80
Document wal_compression=on
j-naylor Jul 1, 2026
215ab56
Don't cast off_t to 32-bit type for output, bug fix
petere Jul 1, 2026
e7564ee
Clear base backup progress on backup failure
MasaoFujii Jul 1, 2026
1e1d077
btree_gist: fix NaN handling in float4/float8 opclasses.
tglsfdc Jul 1, 2026
84001a0
Fix jsonpath .decimal() to honor silent mode
michaelpq Jul 2, 2026
9078990
Fix redefinition of typedef Node in numeric.h
michaelpq Jul 2, 2026
c8d68bf
Remove replication slot advice from MultiXact wraparound hints
MasaoFujii Jul 3, 2026
598af79
psql: Fix \df tab completion for procedures
MasaoFujii Jul 3, 2026
dd5eca0
Fix tracing of BackendKeyData and CancelRequest
hlinnaka Jul 3, 2026
3aaefe8
Prevent access to other sessions' empty temp tables
akorotkov Jul 3, 2026
558c4ea
Use the proper comparator in gbt_bit_ssup_cmp.
tglsfdc Jul 3, 2026
12c5192
Fix btree_gist's NotEqual strategy on internal index pages.
tglsfdc Jul 3, 2026
a7f7958
Disallow renaming a rule to "_RETURN".
tglsfdc Jul 4, 2026
1f8ab91
amcheck: Fix memory leak with gin_index_check()
michaelpq Jul 6, 2026
e2ad214
Restore basebackup_progress_done() to preserve ABI
MasaoFujii Jul 6, 2026
fe5d629
Fix qual pushdown past grouping with mismatched equivalence
Jul 6, 2026
0c06ebf
Prevent satisfies_hash_partition from crashing with VARIADIC NULL.
robertmhaas Jul 6, 2026
d0bb49e
Fix LIKE/regex optimization for indexscan with exact-match pattern.
tglsfdc Jul 6, 2026
a99bd8d
Fix LIKE matching with nondeterministic collations and backslashes.
tglsfdc Jul 6, 2026
51652c4
Fix mishandling of leading '\' in nondeterministic LIKE.
tglsfdc Jul 6, 2026
441e4c8
Enforce RETURNING typmod on SQL/JSON DEFAULT behavior expressions
amitlan Jul 6, 2026
cf184ec
Fix COUNT's logic for window run condition support
david-rowley Jul 7, 2026
50313f8
pg_dump: check for _beginthreadex() failure in parallel dump
hlinnaka Jul 7, 2026
2167302
libpq: Extend "read pending" check from SSL to GSS
hlinnaka Jul 7, 2026
bb0a545
libpq: Drain all pending bytes from SSL/GSS during pqReadData()
hlinnaka Jul 7, 2026
9021c8f
unicode_case.c: defend against truncated UTF8.
jeff-davis Jul 7, 2026
66ec242
pg_unicode_fast: fix final sigma logic.
jeff-davis Jul 7, 2026
45364e4
Fix EXPLAIN failure when deparsing SQL/JSON aggregates
Jul 7, 2026
1383cbd
doc: Fix typo in rule-system view example
MasaoFujii Jul 8, 2026
abecdbc
doc: Clarify COPY FROM WHERE expression restrictions
MasaoFujii Jul 8, 2026
4908225
Fix RETURNING OLD with BEFORE UPDATE trigger and concurrent update.
deanrasheed Jul 8, 2026
27761c0
ssl: Include limits.h to get INT_MAX when using LibreSSL
hlinnaka Jul 9, 2026
87c3a79
libpq: Make error checks in the new buffer draining code more robust
hlinnaka Jul 9, 2026
d1d9688
Shorten pg_attribute_always_inline to pg_always_inline
tvondra Jul 11, 2026
18105e6
Strip removed-relation references from PHVs in join clauses
Jul 15, 2026
36c6b49
Include check on polpermissive relcache for policies
michaelpq Jul 15, 2026
ae8c4bd
Fix argument names in pg_clear_attribute_stats() errors
MasaoFujii Jul 15, 2026
bcc428a
Add additional sanity checks when reading a blkreftable.
robertmhaas Jul 15, 2026
a1b962b
pgbench: Fix incorrect parameter name in error message
danielgustafsson Jul 15, 2026
eabc9a9
Include last block in FSM vacuum of bulk extended relation
melanieplageman Jul 15, 2026
d0fb1da
Introduce macros for WAL block reference IDs of some heap record types
melanieplageman Jul 15, 2026
f581fa7
Fix VM clear WAL logging by registering VM blocks
melanieplageman Jul 15, 2026
4d7feeb
Test that VM clear registers VM buffers
melanieplageman Jul 15, 2026
4a4d6d1
doc: Fix log_parameter_max_length docs to reference log_min_duration_…
MasaoFujii Jul 16, 2026
a6a2eb9
Check CREATE_REPLICATION_SLOT response shape in libpqwalreceiver
MasaoFujii Jul 16, 2026
30c0442
doc: Fix link text for data checksums
danielgustafsson Jul 16, 2026
a00e43a
postgres_fdw: stabilize terminated-connection regression tests
MasaoFujii Jul 16, 2026
c31b0fc
Reject infinite and out-of-range interval shifts in uuidv7().
MasahikoSawada Jul 16, 2026
8af1f52
Fix wrong variable offset sanity check.
petergeoghegan Jul 16, 2026
aa572d5
Doc: Clarify DROP SUBSCRIPTION behavior after SET (slot_name = NONE).
Jul 17, 2026
125893c
meson: Fix ccache issues when using precompiled headers with gcc
anarazel Jul 17, 2026
959b7fa
Fix GiST index-only scan column alignment issue.
petergeoghegan Jul 17, 2026
21f5e65
Fix edge case in remove_useless_result_rtes() with outer joins.
tglsfdc Jul 18, 2026
9e40d07
Skip unnecessary get_relids_in_jointree() when there are no PHVs
Jul 20, 2026
19e3aa7
Fix restore of partitions with exclusion constraints
alvherre Jul 20, 2026
545e2a9
doc: Granting TRIGGER or REFERENCES on table is dangerous.
robertmhaas Jul 20, 2026
1d299d6
walsummarizer: Guard against WAL files whose tail ends are not valid.
robertmhaas Jul 22, 2026
bb0a3ca
injection_points: Clear waiter slot on error and exit
michaelpq Jul 23, 2026
f2d6cf8
psql: Allow pg_read_all_stats to see database size in \l+
MasaoFujii Jul 25, 2026
d560e73
Fix another empty nbtree index SSI race.
petergeoghegan Jul 25, 2026
e452751
Fix propagation of indimmediate flag in index_create_copy()
michaelpq Jul 27, 2026
7becb64
Restore vacuum_delay_point() in GIN posting-tree leaf vacuum
akorotkov Jul 28, 2026
73d63d1
Fix pg_get_publication_tables() failure with concurrent DROP TABLE.
MasahikoSawada Jul 28, 2026
b563fc6
Fix logical decoding of empty prepared transactions.
MasahikoSawada Jul 28, 2026
2771220
Fix planner's nullability/strictness logic for ScalarArrayOpExpr.
tglsfdc Jul 28, 2026
3310163
Fix cascading standby reconnect failure after archive fallback
alvherre Jul 29, 2026
050e9d9
doc: Add a note that refint will be removed in v20
danielgustafsson Jul 29, 2026
0abdb3e
Skip SUBSCRIPTION TABLE TOC entries with --no-subscriptions.
Jul 30, 2026
d4420a9
Initialize bs_reltuples in parallel GIN builds
tvondra Jul 30, 2026
a0369dd
Reject non-finite reltuples when restoring stats
tvondra Jul 30, 2026
02e69be
Fix issue with RANGE's DEFAULT partition pruning
david-rowley Jul 31, 2026
f70acc8
Fix Hash Join performance issue when hashing NULL values
david-rowley Jul 31, 2026
4cc49cb
Fix autovacuum's database sorting.
nathan-bossart Jul 31, 2026
18f0de6
Prevent walsummarizer from getting stuck at a timeline switch.
robertmhaas Jul 31, 2026
fff8c86
oauth: Add unit tests for multiplexer handling
jchampio Jul 31, 2026
74169d3
libpq-oauth: Avoid overflow for very large intervals
jchampio Jul 31, 2026
5f67124
Update time zone data files to tzdata release 2026c.
tglsfdc Aug 2, 2026
4689ea9
Fix memory-safety bugs in the ispell/hunspell dictionary loader.
tglsfdc Aug 2, 2026
81b1e79
Tighten up TS dictionary cache entry creation.
tglsfdc Aug 2, 2026
d04a24d
Remove unused arg and dead code in set_attnotnull()
alvherre Aug 3, 2026
9a8c933
Do not log subscription conninfo.
jeff-davis Aug 3, 2026
a0daa0b
Fix lock release for role membership grants in DROP OWNED BY.
jeff-davis Aug 3, 2026
bf048f0
Fix missing MCXT_ALLOC_NO_OOM handling in MemoryContextAllocAligned
david-rowley Aug 4, 2026
6298a41
Fix missing money overflow checks for INT64_MIN / -1
david-rowley Aug 4, 2026
c374f28
Fix ALTER COLUMN ... DROP EXPRESSION with subpartitions
alvherre Aug 4, 2026
6b46a5d
Fix error handling in getCopyDataMessage() and pqFunctionCall3()
MasaoFujii Aug 4, 2026
19f0391
pg_surgery: Fix infinite loop on large TID arrays
alvherre Aug 4, 2026
13a9be1
doc: Update XID wraparound error example
MasaoFujii Aug 5, 2026
011384b
Fix calculating length of match to localized month/weekday names
alvherre Aug 5, 2026
ed80503
Make local buffers pin limit more conservative
melanieplageman Aug 5, 2026
b37f148
Fix race condition in subscription TAP test 023_twophase_stream.
Aug 6, 2026
585181e
Restore vacuum failsafe abandonment of buffer access strategy
melanieplageman Aug 6, 2026
2fd8d45
Fix local pgstat entry leak on OOM during entry creation
michaelpq Aug 7, 2026
4ea497a
Drain pending asynchronous requests during ExecReScanAppend.
Aug 7, 2026
7c25cdb
Only clear VACUUM's read stream strategy once in failsafe mode
melanieplageman Aug 7, 2026
311e66d
Fix hot standby accepting connections too early after a crash reset
MasaoFujii Aug 7, 2026
828d602
First-draft release notes for 18.5.
tglsfdc Aug 7, 2026
a4c41bb
Release notes for 18.5, 17.11, 16.15, 15.19, 14.24.
tglsfdc Aug 9, 2026
3d3462a
Translation updates
petere Aug 10, 2026
4fafe23
Guard against overlength time zone abbreviations in to_char().
tglsfdc Aug 10, 2026
e251350
Harden tsvector code against overflows.
tglsfdc Aug 10, 2026
dddc8a6
Harden tsquery code against overflows.
tglsfdc Aug 10, 2026
b7e5c3f
Fix potential buffer overrun in regexp match/split functions.
MasahikoSawada Aug 10, 2026
87c4b82
Harden PL/Perl code against "tied" Perl arrays and hashes.
tglsfdc Aug 10, 2026
a2cb5a1
Be more wary about constant's datatype in scalarineqsel().
tglsfdc Aug 10, 2026
7f0e1aa
Replace fixed-size, too-short array with a palloc'd one.
tglsfdc Aug 10, 2026
3392cce
pg_dump: avoid assuming how long pg_proc.protrftypes can be.
tglsfdc Aug 10, 2026
2a03f21
Protect some fixed-size arrays that have FUNC_MAX_ARGS elements.
tglsfdc Aug 10, 2026
54649de
Reject calls from SQL to functions that take or return type internal.
tglsfdc Aug 10, 2026
722695d
Return nulls honestly in aggregate "combine" functions.
tglsfdc Aug 10, 2026
a1fa241
Preserve the owner of extended statistics rebuilt by ALTER TABLE.
MasahikoSawada Aug 10, 2026
8a31ffc
pg_stat_statements: Fix buffer overflow with query normalization
alvherre Aug 10, 2026
849019a
Fix pg_trgm's picksplit function with all-true datums
hlinnaka Aug 10, 2026
028ee71
Use palloc_array() in pltcl and plperl to avoid overflow
hlinnaka Aug 10, 2026
a14ba29
ecpg: Fix out-of-bound writes due to processing of invalid bytea data
michaelpq Aug 10, 2026
203a482
Reject GSSEncRequest after direct SSL connection
michaelpq Aug 10, 2026
8d428c6
Add test with multirange type for pg_restore_attribute_stats()
michaelpq Aug 10, 2026
08454e8
Fix multirange type handling in pg_restore_attribute_stats()
michaelpq Aug 10, 2026
0ddd909
Obstruct EXTRACT() field name deparse injection.
nathan-bossart Aug 10, 2026
822143c
Use value of scram_iterations in mock_scram_secret().
nathan-bossart Aug 10, 2026
0a61fcd
Empty search_path in amcheck.
nmisch Aug 10, 2026
82fd688
Move SplitGUCList() to fe_utils
jchampio Aug 10, 2026
2a29b60
Add an output_plugin_libraries GUC to bless trusted output plugins
jchampio Aug 10, 2026
37b8f3b
Cross-check the type of a portal running EXECUTE or FETCH.
robertmhaas Aug 10, 2026
e88eb4e
Avoid overflow in Levenshtein distance calculations.
nathan-bossart Aug 10, 2026
2e91f85
Check for USAGE privilege on the subtype in CREATE TYPE AS RANGE.
nathan-bossart Aug 10, 2026
2780538
Check for USAGE privilege on types used by stored expressions.
nathan-bossart Aug 10, 2026
57f59ca
Check for USAGE privilege on the composite type in ALTER TABLE OF.
nathan-bossart Aug 10, 2026
0b12f56
Invalidate plan cache after role changes.
nathan-bossart Aug 10, 2026
900894d
Save/restore more lexer state when skipping text due to \if.
tglsfdc Aug 10, 2026
2992125
Teach psql to skip in-line COPY ... FROM STDIN data after a failure.
tglsfdc Aug 10, 2026
08e812c
Fix out-of-bound reads with ascii() for invalid multibyte characters
michaelpq Aug 10, 2026
fe32b10
Fix errorhandling for PGP encryption
danielgustafsson Aug 10, 2026
4c5128c
pgcrypto: Add option to revert to prior decryption behavior
jchampio Aug 10, 2026
71ca694
psql: Don't do backquote expansion in \unrestrict.
nathan-bossart Aug 10, 2026
cf6c2ad
Last-minute updates for release notes.
tglsfdc Aug 10, 2026
e35db2c
Update .abi-compliance-history for security fixes.
tglsfdc Aug 10, 2026
17fae4f
Stamp 18.5.
tglsfdc Aug 10, 2026
5f00385
Fix pg_strupper/lower/title/fold() functions to work with C locale
hlinnaka Aug 11, 2026
841d0cb
Release notes for 18.6.
tglsfdc Aug 11, 2026
724edf9
Stamp 18.6.
tglsfdc Aug 11, 2026
715730f
Merge tag 'REL_18_6' into doc_ja_18_6_merge
noborus Aug 13, 2026
394d02a
18.6翻訳準備1 replaceまで
noborus Aug 13, 2026
97adc61
18.6翻訳準備2 類似分挿入機械翻訳準備
noborus Aug 13, 2026
9bb1851
18.6翻訳準備3 機械翻訳前に手動修正
noborus Aug 13, 2026
f7e93aa
18.6翻訳準備4 release-18.sgml以外の機械翻訳を追加と修正
noborus Aug 13, 2026
fb3d45a
18.6翻訳準備5 release-18.sgmlの機械翻訳を追加。NG語の修正
noborus Aug 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 24 additions & 0 deletions .abi-compliance-history
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,30 @@
# Be sure to replace "<ADD JUSTIFICATION HERE>" with details of your change and
# why it is deemed acceptable.

2780538433fc3b40b4e1e7bc7cbd350e37b6d550
#
# Check for USAGE privilege on types used by stored expressions.
# 2026-08-10 06:38:12 -0700
#
# The addition of a parameter to AlterDomainAddConstraint() breaks ABI
# compatibility, but we are unaware of any impacted third-party code.

2a29b607dbbba47c8e1c97458708e775bfa0e9bb
#
# Add an output_plugin_libraries GUC to bless trusted output plugins
# 2026-08-10 06:38:12 -0700
#
# Addition of a new GUC enlarges ConfigureNamesString[],
# but that is not harmful.

a1fa24127d6a24611e5ec8e5b00584b333a3a06c
#
# Preserve the owner of extended statistics rebuilt by ALTER TABLE.
# 2026-08-10 06:38:11 -0700
#
# CreateStatistics()'s signature changes and CreateStatsStmt gains a field,
# but no known third-party code calls the former or constructs the latter.

8d9a97e0bb6d820dac553848f0d5d8cc3f3e219d
#
# Avoid name collision with NOT NULL constraints
Expand Down
2 changes: 1 addition & 1 deletion .cirrus.tasks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,7 @@ task:
# print_stacktraces=1,verbosity=2, duh
# detect_leaks=0: too many uninteresting leak errors in short-lived binaries
UBSAN_OPTIONS: print_stacktrace=1:disable_coredump=0:abort_on_error=1:verbosity=2
ASAN_OPTIONS: print_stacktrace=1:disable_coredump=0:abort_on_error=1:detect_leaks=0:detect_stack_use_after_return=0
ASAN_OPTIONS: print_stacktrace=1:disable_coredump=0:abort_on_error=1:detect_leaks=0

# SANITIZER_FLAGS is set in the tasks below
CFLAGS: -Og -ggdb -fno-sanitize-recover=all $SANITIZER_FLAGS
Expand Down
18 changes: 9 additions & 9 deletions configure
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.69 for PostgreSQL 18.4.
# Generated by GNU Autoconf 2.69 for PostgreSQL 18.6.
#
# Report bugs to <pgsql-bugs@lists.postgresql.org>.
#
Expand Down Expand Up @@ -582,8 +582,8 @@ MAKEFLAGS=
# Identity of this package.
PACKAGE_NAME='PostgreSQL'
PACKAGE_TARNAME='postgresql'
PACKAGE_VERSION='18.4'
PACKAGE_STRING='PostgreSQL 18.4'
PACKAGE_VERSION='18.6'
PACKAGE_STRING='PostgreSQL 18.6'
PACKAGE_BUGREPORT='pgsql-bugs@lists.postgresql.org'
PACKAGE_URL='https://www.postgresql.org/'

Expand Down Expand Up @@ -1468,7 +1468,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF
\`configure' configures PostgreSQL 18.4 to adapt to many kinds of systems.
\`configure' configures PostgreSQL 18.6 to adapt to many kinds of systems.

Usage: $0 [OPTION]... [VAR=VALUE]...

Expand Down Expand Up @@ -1533,7 +1533,7 @@ fi

if test -n "$ac_init_help"; then
case $ac_init_help in
short | recursive ) echo "Configuration of PostgreSQL 18.4:";;
short | recursive ) echo "Configuration of PostgreSQL 18.6:";;
esac
cat <<\_ACEOF

Expand Down Expand Up @@ -1724,7 +1724,7 @@ fi
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
PostgreSQL configure 18.4
PostgreSQL configure 18.6
generated by GNU Autoconf 2.69

Copyright (C) 2012 Free Software Foundation, Inc.
Expand Down Expand Up @@ -2477,7 +2477,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by PostgreSQL $as_me 18.4, which was
It was created by PostgreSQL $as_me 18.6, which was
generated by GNU Autoconf 2.69. Invocation command line was

$ $0 $@
Expand Down Expand Up @@ -20179,7 +20179,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
# report actual input values of CONFIG_FILES etc. instead of their
# values after options handling.
ac_log="
This file was extended by PostgreSQL $as_me 18.4, which was
This file was extended by PostgreSQL $as_me 18.6, which was
generated by GNU Autoconf 2.69. Invocation command line was

CONFIG_FILES = $CONFIG_FILES
Expand Down Expand Up @@ -20250,7 +20250,7 @@ _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
PostgreSQL config.status 18.4
PostgreSQL config.status 18.6
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"

Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ dnl Read the Autoconf manual for details.
dnl
m4_pattern_forbid(^PGAC_)dnl to catch undefined macros

AC_INIT([PostgreSQL], [18.4], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])
AC_INIT([PostgreSQL], [18.6], [pgsql-bugs@lists.postgresql.org], [], [https://www.postgresql.org/])

m4_if(m4_defn([m4_PACKAGE_VERSION]), [2.69], [], [m4_fatal([Autoconf version 2.69 is required.
Untested combinations of 'autoconf' and PostgreSQL versions are not
Expand Down
17 changes: 15 additions & 2 deletions contrib/amcheck/expected/check_btree.out
Original file line number Diff line number Diff line change
Expand Up @@ -178,27 +178,40 @@ SELECT bt_index_check('toasty', true);
(1 row)

--
-- Check that index expressions and predicates are run as the table's owner
-- Check that index expressions and predicates are run as the table's owner,
-- with empty search_path
--
TRUNCATE bttest_a;
INSERT INTO bttest_a SELECT * FROM generate_series(1, 1000);
ALTER TABLE bttest_a OWNER TO regress_bttest_role;
-- A dummy index function checking current_user
CREATE FUNCTION ifun(int8) RETURNS int8 AS $$
BEGIN
ASSERT current_user = 'regress_bttest_role',
ASSERT current_setting('search_path') = 'pg_catalog, pg_temp',
format('ifun(%s) called with current_schemas %s, search_path %s',
$1, current_schemas(true), current_setting('search_path'));
ASSERT "current_user"() = 'regress_bttest_role',
format('ifun(%s) called by %s', $1, current_user);
RETURN $1;
END;
$$ LANGUAGE plpgsql IMMUTABLE;
CREATE INDEX bttest_a_expr_idx ON bttest_a ((ifun(id) + ifun(0)))
WHERE ifun(id + 10) > ifun(10);
BEGIN;
SET LOCAL check_function_bodies = off;
CREATE SCHEMA preempt;
GRANT USAGE ON SCHEMA preempt TO regress_bttest_role;
SET LOCAL search_path = preempt, pg_catalog, public;
CREATE FUNCTION "current_user"() RETURNS name AS $$
broken
$$ LANGUAGE sql STABLE PARALLEL SAFE STRICT;
SELECT bt_index_check('bttest_a_expr_idx', true);
bt_index_check
----------------

(1 row)

ROLLBACK;
-- UNIQUE constraint check
SELECT bt_index_check('bttest_a_idx', heapallindexed => true, checkunique => true);
bt_index_check
Expand Down
18 changes: 15 additions & 3 deletions contrib/amcheck/sql/check_btree.sql
Original file line number Diff line number Diff line change
Expand Up @@ -116,24 +116,36 @@ INSERT INTO toast_bug SELECT repeat('a', 2200);
SELECT bt_index_check('toasty', true);

--
-- Check that index expressions and predicates are run as the table's owner
-- Check that index expressions and predicates are run as the table's owner,
-- with empty search_path
--
TRUNCATE bttest_a;
INSERT INTO bttest_a SELECT * FROM generate_series(1, 1000);
ALTER TABLE bttest_a OWNER TO regress_bttest_role;
-- A dummy index function checking current_user
CREATE FUNCTION ifun(int8) RETURNS int8 AS $$
BEGIN
ASSERT current_user = 'regress_bttest_role',
ASSERT current_setting('search_path') = 'pg_catalog, pg_temp',
format('ifun(%s) called with current_schemas %s, search_path %s',
$1, current_schemas(true), current_setting('search_path'));
ASSERT "current_user"() = 'regress_bttest_role',
format('ifun(%s) called by %s', $1, current_user);
RETURN $1;
END;
$$ LANGUAGE plpgsql IMMUTABLE;

CREATE INDEX bttest_a_expr_idx ON bttest_a ((ifun(id) + ifun(0)))
WHERE ifun(id + 10) > ifun(10);

BEGIN;
SET LOCAL check_function_bodies = off;
CREATE SCHEMA preempt;
GRANT USAGE ON SCHEMA preempt TO regress_bttest_role;
SET LOCAL search_path = preempt, pg_catalog, public;
CREATE FUNCTION "current_user"() RETURNS name AS $$
broken
$$ LANGUAGE sql STABLE PARALLEL SAFE STRICT;
SELECT bt_index_check('bttest_a_expr_idx', true);
ROLLBACK;

-- UNIQUE constraint check
SELECT bt_index_check('bttest_a_idx', heapallindexed => true, checkunique => true);
Expand Down
1 change: 1 addition & 0 deletions contrib/amcheck/verify_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ amcheck_lock_relation_and_check(Oid indrelid,
SetUserIdAndSecContext(heaprel->rd_rel->relowner,
save_sec_context | SECURITY_RESTRICTED_OPERATION);
save_nestlevel = NewGUCNestLevel();
RestrictSearchPath();
}
else
{
Expand Down
3 changes: 3 additions & 0 deletions contrib/amcheck/verify_gin.c
Original file line number Diff line number Diff line change
Expand Up @@ -638,6 +638,9 @@ gin_check_parent_keys_consistency(Relation rel,
pfree(ipd);
}

if (prev_tuple)
pfree(prev_tuple);

prev_tuple = CopyIndexTuple(idxtuple);
prev_attnum = current_attnum;
}
Expand Down
18 changes: 10 additions & 8 deletions contrib/amcheck/verify_nbtree.c
Original file line number Diff line number Diff line change
Expand Up @@ -336,14 +336,16 @@ bt_index_check_callback(Relation indrel, Relation heaprel, void *state, bool rea
if (indrel->rd_opfamily[i] == INTERVAL_BTREE_FAM_OID)
{
has_interval_ops = true;
ereport(ERROR,
(errcode(ERRCODE_INDEX_CORRUPTED),
errmsg("index \"%s\" metapage incorrectly indicates that deduplication is safe",
RelationGetRelationName(indrel)),
has_interval_ops
? errhint("This is known of \"interval\" indexes last built on a version predating 2023-11.")
: 0));
break;
}

ereport(ERROR,
(errcode(ERRCODE_INDEX_CORRUPTED),
errmsg("index \"%s\" metapage incorrectly indicates that deduplication is safe",
RelationGetRelationName(indrel)),
has_interval_ops
? errhint("This is known of \"interval\" indexes last built on a version predating 2023-11.")
: 0));
}

/* Check index, possibly against table it is an index on */
Expand Down Expand Up @@ -2891,7 +2893,7 @@ bt_normalize_tuple(BtreeCheckState *state, IndexTuple itup)
ItemPointerGetOffsetNumber(&(itup->t_tid)),
RelationGetRelationName(state->rel))));
else if (!VARATT_IS_COMPRESSED(DatumGetPointer(normalized[i])) &&
VARSIZE(DatumGetPointer(normalized[i])) > TOAST_INDEX_TARGET &&
VARSIZE_ANY(DatumGetPointer(normalized[i])) > TOAST_INDEX_TARGET &&
(att->attstorage == TYPSTORAGE_EXTENDED ||
att->attstorage == TYPSTORAGE_MAIN))
{
Expand Down
2 changes: 1 addition & 1 deletion contrib/btree_gist/btree_bit.c
Original file line number Diff line number Diff line change
Expand Up @@ -215,7 +215,7 @@ gbt_bit_ssup_cmp(Datum x, Datum y, SortSupport ssup)
Datum result;

/* for leaf items we expect lower == upper, so only compare lower */
result = DirectFunctionCall2(byteacmp,
result = DirectFunctionCall2(bitcmp,
PointerGetDatum(arg1.lower),
PointerGetDatum(arg2.lower));

Expand Down
59 changes: 42 additions & 17 deletions contrib/btree_gist/btree_float4.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,53 +25,70 @@ PG_FUNCTION_INFO_V1(gbt_float4_penalty);
PG_FUNCTION_INFO_V1(gbt_float4_same);
PG_FUNCTION_INFO_V1(gbt_float4_sortsupport);

/*
* Use the NaN-aware comparators from utils/float.h, so that our results
* will agree with standard btree indexes. Note that penalty and distance
* functions below must also cope with NaNs, in particular with the policy
* that all NaNs are equal.
*/
static bool
gbt_float4gt(const void *a, const void *b, FmgrInfo *flinfo)
{
return (*((const float4 *) a) > *((const float4 *) b));
return float4_gt(*((const float4 *) a), *((const float4 *) b));
}
static bool
gbt_float4ge(const void *a, const void *b, FmgrInfo *flinfo)
{
return (*((const float4 *) a) >= *((const float4 *) b));
return float4_ge(*((const float4 *) a), *((const float4 *) b));
}
static bool
gbt_float4eq(const void *a, const void *b, FmgrInfo *flinfo)
{
return (*((const float4 *) a) == *((const float4 *) b));
return float4_eq(*((const float4 *) a), *((const float4 *) b));
}
static bool
gbt_float4le(const void *a, const void *b, FmgrInfo *flinfo)
{
return (*((const float4 *) a) <= *((const float4 *) b));
return float4_le(*((const float4 *) a), *((const float4 *) b));
}
static bool
gbt_float4lt(const void *a, const void *b, FmgrInfo *flinfo)
{
return (*((const float4 *) a) < *((const float4 *) b));
return float4_lt(*((const float4 *) a), *((const float4 *) b));
}

static int
gbt_float4key_cmp(const void *a, const void *b, FmgrInfo *flinfo)
{
float4KEY *ia = (float4KEY *) (((const Nsrt *) a)->t);
float4KEY *ib = (float4KEY *) (((const Nsrt *) b)->t);
int res;

if (ia->lower == ib->lower)
{
if (ia->upper == ib->upper)
return 0;

return (ia->upper > ib->upper) ? 1 : -1;
}

return (ia->lower > ib->lower) ? 1 : -1;
res = float4_cmp_internal(ia->lower, ib->lower);
if (res != 0)
return res;
return float4_cmp_internal(ia->upper, ib->upper);
}

static float8
gbt_float4_dist(const void *a, const void *b, FmgrInfo *flinfo)
{
return GET_FLOAT_DISTANCE(float4, a, b);
float8 arg1 = *(const float4 *) a;
float8 arg2 = *(const float4 *) b;
float8 r;

r = arg1 - arg2;
/* needn't consider isinf case here, must be due to input infinity */
if (unlikely(isnan(r)))
{
if (isnan(arg1) && isnan(arg2))
r = 0.0; /* treat NaNs as equal */
else if (isnan(arg1) || isnan(arg2))
r = get_float8_infinity(); /* max dist for NaN vs non-NaN */
else
r = 0.0; /* must be Inf - Inf case */
}
return fabs(r);
}


Expand Down Expand Up @@ -101,7 +118,15 @@ float4_dist(PG_FUNCTION_ARGS)
r = a - b;
if (unlikely(isinf(r)) && !isinf(a) && !isinf(b))
float_overflow_error();

if (unlikely(isnan(r)))
{
if (isnan(a) && isnan(b))
r = 0.0; /* treat NaNs as equal */
else if (isnan(a) || isnan(b))
r = get_float4_infinity(); /* max dist for NaN vs non-NaN */
else
r = 0.0; /* must be Inf - Inf case */
}
PG_RETURN_FLOAT4(fabsf(r));
}

Expand Down Expand Up @@ -183,7 +208,7 @@ gbt_float4_penalty(PG_FUNCTION_ARGS)
float4KEY *newentry = (float4KEY *) DatumGetPointer(((GISTENTRY *) PG_GETARG_POINTER(1))->key);
float *result = (float *) PG_GETARG_POINTER(2);

penalty_num(result, origentry->lower, origentry->upper, newentry->lower, newentry->upper);
float_penalty_num(result, origentry->lower, origentry->upper, newentry->lower, newentry->upper);

PG_RETURN_POINTER(result);
}
Expand Down
Loading
Loading