Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
324 commits
Select commit Hold shift + click to select a range
24069b5
Sync files with PG19(Fix handling of namespace nodes in xpath() (xml))
hs-liuxh Aug 19, 2026
ab0c251
doc: fix reference for finding replication slots to drop
MasaoFujii Jun 12, 2026
df3c0f2
Fix second race with timeline selection during promotion
michaelpq Jun 12, 2026
09669c4
Sync files with PG19(Fix second race with timeline selection during p…
hs-liuxh Aug 19, 2026
5226981
Update expected regression test output for xml_2.out
michaelpq Jun 12, 2026
462d5d4
Sync files with PG19(Update expected regression test output for xml_2…
hs-liuxh Aug 19, 2026
e4ed76b
Fix compilation with OpenSSL 4
danielgustafsson Jun 12, 2026
ec40ba2
Sync files with PG19(Fix compilation with OpenSSL 4)
hs-liuxh Aug 19, 2026
6488535
Adjust cross-version upgrade tests for seg_out() fix
adunstan Jun 12, 2026
6ab1d6e
Sync files with PG19(Adjust cross-version upgrade tests for seg_out()…
hs-liuxh Aug 19, 2026
5837edb
amcheck: Use correct varlena size accessor in bt_normalize_tuple()
akorotkov Jun 13, 2026
5e62462
Doc: remove stale entry for removed aclitem[] ~ aclitem operator.
tglsfdc Jun 14, 2026
144e23a
Trim regression test expected output for xml
michaelpq Jun 15, 2026
4c2803a
Sync files with PG19(Trim regression test expected output for xml)
hs-liuxh Aug 19, 2026
67f145e
Fix PQdescribePrepared with more than 7498 params
hlinnaka Jun 15, 2026
0e48499
Modernize pg_bsd_indent's error/warning reporting code.
tglsfdc Jun 15, 2026
0751f1f
doc: Fix "Prev" link.
nathan-bossart Jun 15, 2026
008de4f
Clean up quoting of variable strings within replication commands.
tglsfdc Jun 15, 2026
d71f569
Fix inconsistencies with pg_restore --statistics[-only]
michaelpq Jun 15, 2026
5693bef
pg_dump: Remove dead code in TAP tests
michaelpq Jun 15, 2026
2619ed9
Fix int32 overflow in ltree_compare()
hlinnaka Jun 16, 2026
53e917d
pg_restore: Use dependency-based matching for STATISTICS DATA
michaelpq Jun 16, 2026
a961caa
logical decoding: Correctly free speculative insertion
alvherre Jun 16, 2026
57711d3
Sync files with PG19(logical decoding: Correctly free speculative ins…
hs-liuxh Aug 19, 2026
5852c87
Fix another instability in recovery TAP test 004_timeline_switch
michaelpq Jun 16, 2026
2576068
Sync files with PG19(Fix another instability in recovery TAP test 004…
hs-liuxh Aug 19, 2026
858ebed
Fix pgstat_count_io_op_time() calls passing incorrect information
michaelpq Jun 17, 2026
258de59
vacuumdb: Fix --missing-stats-only for partitioned indexes.
nathan-bossart Jun 17, 2026
10221eb
jsonb_plperl, jsonb_plpython: Fix unguarded recursion and loops.
tglsfdc Jun 17, 2026
6d5a639
oauth_validator: Print captured stderr after call-count failure
jchampio Jun 17, 2026
d632d83
Sync files with PG19(oauth_validator: Print captured stderr after cal…
hs-liuxh Aug 19, 2026
335f41c
libpq-oauth: Print libcurl version with OAUTHDEBUG_UNSAFE_TRACE
jchampio Jun 17, 2026
21e5f5b
oauth: Skip call-count test for libcurl 8.20.0
jchampio Jun 17, 2026
b1a041d
Sync files with PG19(oauth: Skip call-count test for libcurl 8.20.0)
hs-liuxh Aug 19, 2026
60ce42f
Fix PANIC with track_functions due to concurrent drop of pgstats entries
michaelpq Jun 18, 2026
88d8ed9
Sync files with PG19(Fix PANIC with track_functions due to concurrent…
hs-liuxh Aug 19, 2026
4d99fa7
Avoid stale slot access after dropping obsolete synced slots.
Jun 18, 2026
3b3751a
Update .abi-compliance-history for pgstat_drop_entry()
michaelpq Jun 18, 2026
b281119
doc: Fix "Prev" link, take 2.
nathan-bossart Jun 18, 2026
c7b2713
hstore_plperl: Add CHECK_FOR_INTERRUPTS() in reference-unwinding loop.
tglsfdc Jun 18, 2026
2967123
Silence "may be used uninitialized" compiler warning.
nathan-bossart Jun 18, 2026
35eebc5
Update JIT tuple deforming code for virtual generated columns
david-rowley Jun 19, 2026
784b0e7
Sync files with PG19(Update JIT tuple deforming code for virtual gene…
hs-liuxh Aug 19, 2026
3b9db46
Make pg_mkdir_p() tolerant of a concurrent directory creation.
tglsfdc Jun 19, 2026
041203a
Strip removed-relation references from PlaceHolderVars at join removal
Jun 22, 2026
75d9e5e
Sync files with PG19(Strip removed-relation references from PlaceHold…
hs-liuxh Aug 19, 2026
0722bf3
pgcrypto: avoid recursive ResourceOwnerForget().
tglsfdc Jun 22, 2026
978c110
Fix unsafe order of operations in ResourceOwnerReleaseAll().
tglsfdc Jun 22, 2026
e55bb13
Re-introduce pgstat_drop_entry(), keeping ABI compatibility
michaelpq Jun 22, 2026
207eb48
Sync files with PG19(Re-introduce pgstat_drop_entry(), keeping ABI co…
hs-liuxh Aug 19, 2026
57eb1cc
doc: Describe better handling of indexes in ALTER TABLE ATTACH PARTITION
michaelpq Jun 23, 2026
f3567ec
Re-index ModifyTable FDW arrays when pruning result relations
amitlan Jun 22, 2026
adccf57
Sync files with PG19(Re-index ModifyTable FDW arrays when pruning res…
hs-liuxh Aug 19, 2026
1072019
plperl: Fix NULL pointer dereference for forged array object
Jun 24, 2026
2a3660a
Avoid ABI break in ModifyTableState from the FDW pruning fix
amitlan Jun 25, 2026
6909841
Fix null-pointer crash in ECPG compiler.
tglsfdc Jun 25, 2026
47a77d6
Fix out-of-bounds access in autoprewarm worker
tvondra Jun 26, 2026
b19a253
Avoid collation lookup failure when considering a "char" column.
tglsfdc Jun 28, 2026
3683b71
plpython: Fix NULL pointer dereferences for broken sequence and mappi…
Jun 29, 2026
3b53eec
Fix handling of copy_file_range() return value
petere Jun 29, 2026
4ae5f72
Fix unlogged sequence corruption after standby promotion
MasaoFujii Jun 29, 2026
0ba366d
Sync files with PG19(Fix unlogged sequence corruption after standby p…
hs-liuxh Aug 19, 2026
2291350
Document wal_compression=on
j-naylor Jul 1, 2026
c026558
Don't cast off_t to 32-bit type for output, bug fix
petere Jul 1, 2026
4432a18
Clear base backup progress on backup failure
MasaoFujii Jul 1, 2026
f32e536
btree_gist: fix NaN handling in float4/float8 opclasses.
tglsfdc Jul 1, 2026
baabd38
Fix jsonpath .decimal() to honor silent mode
michaelpq Jul 2, 2026
922d5d2
Sync files with PG19(Fix jsonpath .decimal() to honor silent mode)
hs-liuxh Aug 19, 2026
5e20dca
Fix redefinition of typedef Node in numeric.h
michaelpq Jul 2, 2026
d7f7c12
Remove replication slot advice from MultiXact wraparound hints
MasaoFujii Jul 3, 2026
de9b739
psql: Fix \df tab completion for procedures
MasaoFujii Jul 3, 2026
db8934e
Fix tracing of BackendKeyData and CancelRequest
hlinnaka Jul 3, 2026
59d1a0c
Prevent access to other sessions' empty temp tables
akorotkov Jul 3, 2026
7042735
Sync files with PG19(Prevent access to other sessions' empty temp tab…
hs-liuxh Aug 19, 2026
9881e25
Use the proper comparator in gbt_bit_ssup_cmp.
tglsfdc Jul 3, 2026
d4b4e29
Fix btree_gist's NotEqual strategy on internal index pages.
tglsfdc Jul 3, 2026
10f4018
Disallow renaming a rule to "_RETURN".
tglsfdc Jul 4, 2026
01e42fb
Sync files with PG19(Disallow renaming a rule to "_RETURN".)
hs-liuxh Aug 19, 2026
7cecf1b
amcheck: Fix memory leak with gin_index_check()
michaelpq Jul 6, 2026
2e24fa0
Restore basebackup_progress_done() to preserve ABI
MasaoFujii Jul 6, 2026
2544063
Fix qual pushdown past grouping with mismatched equivalence
Jul 6, 2026
48c027c
Sync files with PG19(Fix qual pushdown past grouping with mismatched …
hs-liuxh Aug 19, 2026
15d7ada
Prevent satisfies_hash_partition from crashing with VARIADIC NULL.
robertmhaas Jul 6, 2026
9740d47
Sync files with PG19(Prevent satisfies_hash_partition from crashing w…
hs-liuxh Aug 19, 2026
c374562
Fix LIKE/regex optimization for indexscan with exact-match pattern.
tglsfdc Jul 6, 2026
805b094
Sync files with PG19(Fix LIKE/regex optimization for indexscan with e…
hs-liuxh Aug 19, 2026
7f143a8
Fix LIKE matching with nondeterministic collations and backslashes.
tglsfdc Jul 6, 2026
34a742c
Sync files with PG19(Fix LIKE matching with nondeterministic collatio…
hs-liuxh Aug 19, 2026
3bc5e7f
Fix mishandling of leading '\' in nondeterministic LIKE.
tglsfdc Jul 6, 2026
60f9c60
Sync files with PG19(Fix mishandling of leading '\' in nondeterminist…
hs-liuxh Aug 19, 2026
179858d
Enforce RETURNING typmod on SQL/JSON DEFAULT behavior expressions
amitlan Jul 6, 2026
5cedc15
Sync files with PG19(Enforce RETURNING typmod on SQL/JSON DEFAULT beh…
hs-liuxh Aug 19, 2026
dcddbbf
Fix COUNT's logic for window run condition support
david-rowley Jul 7, 2026
aefbc9d
Sync files with PG19(Fix COUNT's logic for window run condition support)
hs-liuxh Aug 19, 2026
0193566
pg_dump: check for _beginthreadex() failure in parallel dump
hlinnaka Jul 7, 2026
3bf1bda
libpq: Extend "read pending" check from SSL to GSS
hlinnaka Jul 7, 2026
0ab695e
libpq: Drain all pending bytes from SSL/GSS during pqReadData()
hlinnaka Jul 7, 2026
aea4554
unicode_case.c: defend against truncated UTF8.
jeff-davis Jul 7, 2026
0ab06a2
pg_unicode_fast: fix final sigma logic.
jeff-davis Jul 7, 2026
e9149c1
Sync files with PG19(pg_unicode_fast: fix final sigma logic.)
hs-liuxh Aug 19, 2026
4c02e8d
Fix EXPLAIN failure when deparsing SQL/JSON aggregates
Jul 7, 2026
8650831
Sync files with PG19(Fix EXPLAIN failure when deparsing SQL/JSON aggr…
hs-liuxh Aug 19, 2026
92259ac
doc: Fix typo in rule-system view example
MasaoFujii Jul 8, 2026
bf36bae
doc: Clarify COPY FROM WHERE expression restrictions
MasaoFujii Jul 8, 2026
4061c31
Fix RETURNING OLD with BEFORE UPDATE trigger and concurrent update.
deanrasheed Jul 8, 2026
64f826d
Sync files with PG19(Fix RETURNING OLD with BEFORE UPDATE trigger and…
hs-liuxh Aug 19, 2026
6e443f9
ssl: Include limits.h to get INT_MAX when using LibreSSL
hlinnaka Jul 9, 2026
7202fce
libpq: Make error checks in the new buffer draining code more robust
hlinnaka Jul 9, 2026
59019d6
Shorten pg_attribute_always_inline to pg_always_inline
tvondra Jul 11, 2026
d775d9b
Strip removed-relation references from PHVs in join clauses
Jul 15, 2026
8fdf3fe
Sync files with PG19(Strip removed-relation references from PHVs in j…
hs-liuxh Aug 19, 2026
a06aaac
Include check on polpermissive relcache for policies
michaelpq Jul 15, 2026
15af309
Fix argument names in pg_clear_attribute_stats() errors
MasaoFujii Jul 15, 2026
2977248
Add additional sanity checks when reading a blkreftable.
robertmhaas Jul 15, 2026
990be3c
pgbench: Fix incorrect parameter name in error message
danielgustafsson Jul 15, 2026
e35466b
Include last block in FSM vacuum of bulk extended relation
melanieplageman Jul 15, 2026
a9d7979
Introduce macros for WAL block reference IDs of some heap record types
melanieplageman Jul 15, 2026
cd2e4dd
Fix VM clear WAL logging by registering VM blocks
melanieplageman Jul 15, 2026
2d95c88
Test that VM clear registers VM buffers
melanieplageman Jul 15, 2026
761fe3a
doc: Fix log_parameter_max_length docs to reference log_min_duration_…
MasaoFujii Jul 16, 2026
644d5c2
Check CREATE_REPLICATION_SLOT response shape in libpqwalreceiver
MasaoFujii Jul 16, 2026
090350a
doc: Fix link text for data checksums
danielgustafsson Jul 16, 2026
4cf42b1
postgres_fdw: stabilize terminated-connection regression tests
MasaoFujii Jul 16, 2026
21ef6fd
Sync files with PG19(postgres_fdw: stabilize terminated-connection re…
hs-liuxh Aug 19, 2026
85544ab
Reject infinite and out-of-range interval shifts in uuidv7().
MasahikoSawada Jul 16, 2026
9ee3219
Sync files with PG19(Reject infinite and out-of-range interval shifts…
hs-liuxh Aug 19, 2026
8d4a730
Fix wrong variable offset sanity check.
petergeoghegan Jul 16, 2026
32da746
Doc: Clarify DROP SUBSCRIPTION behavior after SET (slot_name = NONE).
Jul 17, 2026
35eaefd
meson: Fix ccache issues when using precompiled headers with gcc
anarazel Jul 17, 2026
3d7e97d
Fix GiST index-only scan column alignment issue.
petergeoghegan Jul 17, 2026
beee325
Sync files with PG19(Fix GiST index-only scan column alignment issue.)
hs-liuxh Aug 19, 2026
4cf8b9c
Fix edge case in remove_useless_result_rtes() with outer joins.
tglsfdc Jul 18, 2026
f2d43fa
Sync files with PG19(Fix edge case in remove_useless_result_rtes() wi…
hs-liuxh Aug 19, 2026
a5f59a7
Skip unnecessary get_relids_in_jointree() when there are no PHVs
Jul 20, 2026
c6dc377
Fix restore of partitions with exclusion constraints
alvherre Jul 20, 2026
7772389
Sync files with PG19(Fix restore of partitions with exclusion constra…
hs-liuxh Aug 19, 2026
251987a
doc: Granting TRIGGER or REFERENCES on table is dangerous.
robertmhaas Jul 20, 2026
d85bec2
walsummarizer: Guard against WAL files whose tail ends are not valid.
robertmhaas Jul 22, 2026
5fead1e
injection_points: Clear waiter slot on error and exit
michaelpq Jul 23, 2026
631df96
Sync files with PG19(injection_points: Clear waiter slot on error and…
hs-liuxh Aug 19, 2026
356b0d4
psql: Allow pg_read_all_stats to see database size in \l+
MasaoFujii Jul 25, 2026
a3c0c88
Fix another empty nbtree index SSI race.
petergeoghegan Jul 25, 2026
962db4f
Fix propagation of indimmediate flag in index_create_copy()
michaelpq Jul 27, 2026
ccaeea2
Sync files with PG19(Fix propagation of indimmediate flag in index_cr…
hs-liuxh Aug 19, 2026
0dba442
Restore vacuum_delay_point() in GIN posting-tree leaf vacuum
akorotkov Jul 28, 2026
a0245fc
Fix pg_get_publication_tables() failure with concurrent DROP TABLE.
MasahikoSawada Jul 28, 2026
044d8cf
Sync files with PG19(Fix pg_get_publication_tables() failure with con…
hs-liuxh Aug 19, 2026
ff113cf
Fix logical decoding of empty prepared transactions.
MasahikoSawada Jul 28, 2026
c195c18
Sync files with PG19(Fix logical decoding of empty prepared transacti…
hs-liuxh Aug 19, 2026
788f659
Fix planner's nullability/strictness logic for ScalarArrayOpExpr.
tglsfdc Jul 28, 2026
388d9a9
Fix cascading standby reconnect failure after archive fallback
alvherre Jul 29, 2026
5511ef8
Sync files with PG19(Fix cascading standby reconnect failure after ar…
hs-liuxh Aug 19, 2026
82b3279
doc: Add a note that refint will be removed in v20
danielgustafsson Jul 29, 2026
8a5a5e1
Skip SUBSCRIPTION TABLE TOC entries with --no-subscriptions.
Jul 30, 2026
ed96649
Initialize bs_reltuples in parallel GIN builds
tvondra Jul 30, 2026
30e7c71
Reject non-finite reltuples when restoring stats
tvondra Jul 30, 2026
86d4b8f
Sync files with PG19(Reject non-finite reltuples when restoring stats)
hs-liuxh Aug 19, 2026
00b2808
Fix issue with RANGE's DEFAULT partition pruning
david-rowley Jul 31, 2026
46ec66f
Sync files with PG19(Fix issue with RANGE's DEFAULT partition pruning)
hs-liuxh Aug 19, 2026
09f4932
Fix Hash Join performance issue when hashing NULL values
david-rowley Jul 31, 2026
fa94389
Fix autovacuum's database sorting.
nathan-bossart Jul 31, 2026
629b294
Prevent walsummarizer from getting stuck at a timeline switch.
robertmhaas Jul 31, 2026
f580a83
oauth: Add unit tests for multiplexer handling
jchampio Jul 31, 2026
fda2352
libpq-oauth: Avoid overflow for very large intervals
jchampio Jul 31, 2026
e27ee57
Update time zone data files to tzdata release 2026c.
tglsfdc Aug 2, 2026
9b44367
Fix memory-safety bugs in the ispell/hunspell dictionary loader.
tglsfdc Aug 2, 2026
f3e4226
Tighten up TS dictionary cache entry creation.
tglsfdc Aug 2, 2026
7d55ab1
Remove unused arg and dead code in set_attnotnull()
alvherre Aug 3, 2026
62b753f
Fix regression test failures caused by syncing PG19 commits.
hs-liuxh Aug 19, 2026
0e0ed48
Do not log subscription conninfo.
jeff-davis Aug 3, 2026
a179eb7
Fix lock release for role membership grants in DROP OWNED BY.
jeff-davis Aug 3, 2026
94718c2
Sync files with PG19(Fix lock release for role membership grants in D…
hs-liuxh Aug 19, 2026
1ab55ee
Fix missing MCXT_ALLOC_NO_OOM handling in MemoryContextAllocAligned
david-rowley Aug 4, 2026
89ef2f4
Fix missing money overflow checks for INT64_MIN / -1
david-rowley Aug 4, 2026
8951296
Sync files with PG19(Fix missing money overflow checks for INT64_MIN …
hs-liuxh Aug 19, 2026
3f74507
Fix ALTER COLUMN ... DROP EXPRESSION with subpartitions
alvherre Aug 4, 2026
c44c47d
Sync files with PG19(Fix ALTER COLUMN ... DROP EXPRESSION with subpar…
hs-liuxh Aug 19, 2026
42050d5
Fix error handling in getCopyDataMessage() and pqFunctionCall3()
MasaoFujii Aug 4, 2026
228b9a2
pg_surgery: Fix infinite loop on large TID arrays
alvherre Aug 4, 2026
fca09ed
doc: Update XID wraparound error example
MasaoFujii Aug 5, 2026
ea398c5
Fix calculating length of match to localized month/weekday names
alvherre Aug 5, 2026
53000c3
Sync files with PG19(Fix calculating length of match to localized mon…
hs-liuxh Aug 19, 2026
bdd11ad
Make local buffers pin limit more conservative
melanieplageman Aug 5, 2026
05b49a8
Fix race condition in subscription TAP test 023_twophase_stream.
Aug 6, 2026
d865dfa
Sync files with PG19(Fix race condition in subscription TAP test 023_…
hs-liuxh Aug 19, 2026
9ae6189
Restore vacuum failsafe abandonment of buffer access strategy
melanieplageman Aug 6, 2026
b4e60a8
Fix local pgstat entry leak on OOM during entry creation
michaelpq Aug 7, 2026
b2e2497
Drain pending asynchronous requests during ExecReScanAppend.
Aug 7, 2026
b0cf85f
Sync files with PG19(Drain pending asynchronous requests during ExecR…
hs-liuxh Aug 19, 2026
292adb0
Only clear VACUUM's read stream strategy once in failsafe mode
melanieplageman Aug 7, 2026
04763b7
Fix hot standby accepting connections too early after a crash reset
MasaoFujii Aug 7, 2026
ad7b597
First-draft release notes for 18.5.
tglsfdc Aug 7, 2026
56392a1
Release notes for 18.5, 17.11, 16.15, 15.19, 14.24.
tglsfdc Aug 9, 2026
81266e8
Translation updates
petere Aug 10, 2026
933991c
Guard against overlength time zone abbreviations in to_char().
tglsfdc Aug 10, 2026
ff4b75a
Harden tsvector code against overflows.
tglsfdc Aug 10, 2026
8713be0
Harden tsquery code against overflows.
tglsfdc Aug 10, 2026
9c5ab05
Fix potential buffer overrun in regexp match/split functions.
MasahikoSawada Aug 10, 2026
a344252
Harden PL/Perl code against "tied" Perl arrays and hashes.
tglsfdc Aug 10, 2026
899db9b
Be more wary about constant's datatype in scalarineqsel().
tglsfdc Aug 10, 2026
385831c
Replace fixed-size, too-short array with a palloc'd one.
tglsfdc Aug 10, 2026
5e0e807
pg_dump: avoid assuming how long pg_proc.protrftypes can be.
tglsfdc Aug 10, 2026
6b273e7
Sync files with PG19(pg_dump: avoid assuming how long pg_proc.protrft…
hs-liuxh Aug 19, 2026
a831304
Protect some fixed-size arrays that have FUNC_MAX_ARGS elements.
tglsfdc Aug 10, 2026
397d942
Reject calls from SQL to functions that take or return type internal.
tglsfdc Aug 10, 2026
9b6fa8b
Sync files with PG19(Reject calls from SQL to functions that take or …
hs-liuxh Aug 19, 2026
0088d73
Return nulls honestly in aggregate "combine" functions.
tglsfdc Aug 10, 2026
06bdd40
Preserve the owner of extended statistics rebuilt by ALTER TABLE.
MasahikoSawada Aug 10, 2026
ddd42fe
Sync files with PG19(Preserve the owner of extended statistics rebuil…
hs-liuxh Aug 19, 2026
f1e21c7
pg_stat_statements: Fix buffer overflow with query normalization
alvherre Aug 10, 2026
9e18437
Fix pg_trgm's picksplit function with all-true datums
hlinnaka Aug 10, 2026
85ebaef
Use palloc_array() in pltcl and plperl to avoid overflow
hlinnaka Aug 10, 2026
d6ea1de
ecpg: Fix out-of-bound writes due to processing of invalid bytea data
michaelpq Aug 10, 2026
0c9519d
Sync files with PG19(ecpg: Fix out-of-bound writes due to processing …
hs-liuxh Aug 19, 2026
6f08cb7
Reject GSSEncRequest after direct SSL connection
michaelpq Aug 10, 2026
15452ae
Add test with multirange type for pg_restore_attribute_stats()
michaelpq Aug 10, 2026
5166440
Sync files with PG19(Add test with multirange type for pg_restore_att…
hs-liuxh Aug 19, 2026
88b9950
Fix multirange type handling in pg_restore_attribute_stats()
michaelpq Aug 10, 2026
65ae225
Sync files with PG19(Fix multirange type handling in pg_restore_attri…
hs-liuxh Aug 19, 2026
50f6178
Obstruct EXTRACT() field name deparse injection.
nathan-bossart Aug 10, 2026
1e0f318
Use value of scram_iterations in mock_scram_secret().
nathan-bossart Aug 10, 2026
057117a
Empty search_path in amcheck.
nmisch Aug 10, 2026
845f6ed
Move SplitGUCList() to fe_utils
jchampio Aug 10, 2026
b777386
Add an output_plugin_libraries GUC to bless trusted output plugins
jchampio Aug 10, 2026
8f65e1c
Sync files with PG19(Add an output_plugin_libraries GUC to bless trus…
hs-liuxh Aug 19, 2026
ac724cd
Cross-check the type of a portal running EXECUTE or FETCH.
robertmhaas Aug 10, 2026
21e2a46
Avoid overflow in Levenshtein distance calculations.
nathan-bossart Aug 10, 2026
84e6c4d
Check for USAGE privilege on the subtype in CREATE TYPE AS RANGE.
nathan-bossart Aug 10, 2026
b508c85
Sync files with PG19(Check for USAGE privilege on the subtype in CREA…
hs-liuxh Aug 19, 2026
6ccb813
Check for USAGE privilege on types used by stored expressions.
nathan-bossart Aug 10, 2026
1987abc
Sync files with PG19(Check for USAGE privilege on types used by store…
hs-liuxh Aug 19, 2026
201226d
Check for USAGE privilege on the composite type in ALTER TABLE OF.
nathan-bossart Aug 10, 2026
48848b9
Sync files with PG19(Check for USAGE privilege on the composite type …
hs-liuxh Aug 19, 2026
3d6752b
Invalidate plan cache after role changes.
nathan-bossart Aug 10, 2026
78bfc77
Save/restore more lexer state when skipping text due to \if.
tglsfdc Aug 10, 2026
c25ec0f
Sync files with PG19(Save/restore more lexer state when skipping text…
hs-liuxh Aug 20, 2026
8693adc
Teach psql to skip in-line COPY ... FROM STDIN data after a failure.
tglsfdc Aug 10, 2026
1d99651
Sync files with PG19(Teach psql to skip in-line COPY ... FROM STDIN d…
hs-liuxh Aug 20, 2026
1452ae1
Fix out-of-bound reads with ascii() for invalid multibyte characters
michaelpq Aug 10, 2026
7aaaa08
Sync files with PG19(Fix out-of-bound reads with ascii() for invalid …
hs-liuxh Aug 20, 2026
dadcf5f
Fix errorhandling for PGP encryption
danielgustafsson Aug 10, 2026
02b3ed2
pgcrypto: Add option to revert to prior decryption behavior
jchampio Aug 10, 2026
3917e0f
psql: Don't do backquote expansion in \unrestrict.
nathan-bossart Aug 10, 2026
e0e0306
Last-minute updates for release notes.
tglsfdc Aug 10, 2026
ff2a78d
Update .abi-compliance-history for security fixes.
tglsfdc Aug 10, 2026
32d77df
Stamp 18.5.
tglsfdc Aug 10, 2026
acfb30d
Fix pg_strupper/lower/title/fold() functions to work with C locale
hlinnaka Aug 11, 2026
bde8a62
Release notes for 18.6.
tglsfdc Aug 11, 2026
cf7a7df
Stamp 18.6.
tglsfdc Aug 11, 2026
5dfb665
Fix regression error
hs-liuxh Aug 20, 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 @@ -583,8 +583,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 @@ -1473,7 +1473,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 @@ -1538,7 +1538,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 @@ -1733,7 +1733,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 @@ -2486,7 +2486,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 @@ -20336,7 +20336,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 @@ -20407,7 +20407,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