pgsql: Fix race condition in TupleDescCompactAttr assert code

2024-12-23 Thread David Rowley
Fix race condition in TupleDescCompactAttr assert code 5983a4cff added CompactAttribute as an abbreviated alternative to FormData_pg_attribute to allow more cache-friendly processing in tasks related to TupleDescs. That commit contained some assert-only code to check that the CompactAttribute had

pgsql: Try to avoid semaphore-related test failures on NetBSD/OpenBSD.

2024-12-23 Thread Tom Lane
Try to avoid semaphore-related test failures on NetBSD/OpenBSD. These two platforms have a remarkably tight default limit on the number of SysV semaphores in the system: SEMMNS is only 60 out-of-the-box. Unless manual action is taken to raise that, we'll only be able to allocate 3 sets of 16 usab

pgsql: Reset btpo_cycleid in nbtree VACUUM's REDO routine.

2024-12-23 Thread Peter Geoghegan
Reset btpo_cycleid in nbtree VACUUM's REDO routine. Reset btpo_cycleid to 0 in btree_xlog_vacuum for consistency with _bt_delitems_vacuum (the corresponding original execution code). This makes things neater. There might be some performance benefit to being consistent like this. When btvacuumpag

pgsql: postgres_fdw: re-issue cancel requests a few times if necessary.

2024-12-23 Thread Tom Lane
postgres_fdw: re-issue cancel requests a few times if necessary. Despite the best efforts of commit 0e5c82380, we're still seeing occasional failures of postgres_fdw's query_cancel test in the buildfarm. Investigation suggests that its 100ms timeout is still not enough to reliably ensure that the

pgsql: postgres_fdw: re-issue cancel requests a few times if necessary.

2024-12-23 Thread Tom Lane
postgres_fdw: re-issue cancel requests a few times if necessary. Despite the best efforts of commit 0e5c82380, we're still seeing occasional failures of postgres_fdw's query_cancel test in the buildfarm. Investigation suggests that its 100ms timeout is still not enough to reliably ensure that the

pgsql: Remove unnecessary GetTransactionSnapshot() calls

2024-12-23 Thread Heikki Linnakangas
Remove unnecessary GetTransactionSnapshot() calls In get_database_list() and get_subscription_list(), the GetTransactionSnapshot() call is not required because the catalog table scans use the catalog snapshot, which is held until the end of the scan. See table_beginscan_catalog(), which calls Regi

pgsql: Don't allow GetTransactionSnapshot() in logical decoding

2024-12-23 Thread Heikki Linnakangas
Don't allow GetTransactionSnapshot() in logical decoding A historic snapshot should only be used for catalog access, not general queries. We never call GetTransactionSnapshot() during logical decoding, which is good because it wouldn't be very sensible, so the code to deal with that was unreachabl