-
Notifications
You must be signed in to change notification settings - Fork 2
Comparing changes
Open a pull request
base repository: postgresql-cfbot/postgresql
base: cf/5542~1
head repository: postgresql-cfbot/postgresql
compare: cf/5542
- 6 commits
- 28 files changed
- 4 contributors
Commits on May 13, 2025
-
IOS/TableAM: Support AM-specific fast visibility tests
Previously, we assumed VM_ALL_VISIBLE is universal across all AMs. This is probably not the case, so we introduce a new table method called "table_index_vischeck_tuples" which allows anyone to ask the AM whether a tuple is definitely visible to everyone or might be invisible to someone. The API is intended to replace direct calls to VM_ALL_VISIBLE and as such doesn't include "definitely dead to everyone", as the Heap AM's VM doesn't support *definitely dead* as output for its lookups; and thus it would be too expensive for the Heap AM to produce such results. A future commit will use this inside GIST and SP-GIST to fix a race condition between IOS and VACUUM, which causes a bug with tuple visibility, and a further patch will add support for this to nbtree.
Configuration menu - View commit details
-
Copy full SHA for 055b990 - Browse repository at this point
Copy the full SHA 055b990View commit details -
GIST: Fix visibility issues in IOS
Previously, GIST IOS could buffer tuples from pages while VACUUM came along and cleaned up an ALL_DEAD tuple, marking the tuple's page ALL_VISIBLE again and making IOS mistakenly believe the tuple is indeed visible. With this patch, pins now conflict with GIST vacuum, and we now do preliminary visibility checks to be used by IOS so that the IOS infrastructure knows to recheck the heap page even if that page is now ALL_VISIBLE. Idea from Heikki Linnakangas
Configuration menu - View commit details
-
Copy full SHA for 1749f1c - Browse repository at this point
Copy the full SHA 1749f1cView commit details -
SP-GIST: Fix visibility issues in IOS
Previously, SP-GIST IOS could buffer tuples from pages while VACUUM came along and cleaned up an ALL_DEAD tuple, marking the tuple's page ALL_VISIBLE again and making IOS mistakenly believe the tuple is indeed visible. With this patch, pins now conflict with SP-GIST vacuum, and we now do preliminary visibility checks to be used by IOS so that the IOS infrastructure knows to recheck the heap page even if that page is now ALL_VISIBLE. Idea from Heikki Linnakangas
Configuration menu - View commit details
-
Copy full SHA for cf116aa - Browse repository at this point
Copy the full SHA cf116aaView commit details -
NBTree: Reduce Index-Only Scan pin duration
Previously, we would keep a pin on every leaf page while we were returning tuples to the scan. With this patch, we utilize the newly introduced table_index_vischeck_tuples API to pre-check visibility of all TIDs, and thus unpin the page well ahead of when we'd usually be ready with returning and processing all index tuple results. This reduces the time VACUUM may have to wait for a pin, and can increase performance with reduced redundant VM checks.
Configuration menu - View commit details
-
Copy full SHA for 7e0272c - Browse repository at this point
Copy the full SHA 7e0272cView commit details -
Test for IOS/Vacuum race conditions in index AMs
Add regression tests that demonstrate wrong results can occur with index-only scans in GiST and SP-GiST indexes when encountering tuples being removed by a concurrent VACUUM operation. With these tests the index AMs are also expected to not block VACUUM even when they're used inside a cursor. Co-authored-by: Matthias van de Meent <boekewurm+postgres@gmail.com> Co-authored-by: Peter Geoghegan <pg@bowt.ie> Co-authored-by: Michail Nikolaev <michail.nikolaev@gmail.com> Discussion: https://www.postgresql.org/message-id/flat/CANtu0oi0rkR%2BFsgyLXnGZ-uW2950-urApAWLhy-%2BV1WJD%3D_ZXA%40mail.gmail.com
Configuration menu - View commit details
-
Copy full SHA for b798aa8 - Browse repository at this point
Copy the full SHA b798aa8View commit details -
[CF 5542] v12 - Fix buffer pinning logic in [SP-]Gist
This branch was automatically generated by a robot using patches from an email thread registered at: https://commitfest.postgresql.org/patch/5542 The branch will be overwritten each time a new patch version is posted to the thread, and also periodically to check for bitrot caused by changes on the master branch. Patch(es): https://www.postgresql.org/message-id/CAEze2WgnHJF66BtviDFNCPy26gLrb+tfns-Bi62DBfReH0-UCg@mail.gmail.com Author(s): Peter Geoghegan, Michail Nikolaev, Matthias van de Meent, Mihail Nikalayeu
Commitfest Bot committedMay 13, 2025 Configuration menu - View commit details
-
Copy full SHA for 539e92e - Browse repository at this point
Copy the full SHA 539e92eView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff cf/5542~1...cf/5542