pgsql: Prevent excess SimpleLruTruncate() deletion.
От | Noah Misch |
---|---|
Тема | pgsql: Prevent excess SimpleLruTruncate() deletion. |
Дата | |
Msg-id | E1l0s5T-0002Mg-U6@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Prevent excess SimpleLruTruncate() deletion. Every core SLRU wraps around. With the exception of pg_notify, the wrap point can fall in the middle of a page. Account for this in the PagePrecedes callback specification and in SimpleLruTruncate()'s use of said callback. Update each callback implementation to fit the new specification. This changes SerialPagePrecedesLogically() from the style of asyncQueuePagePrecedes() to the style of CLOGPagePrecedes(). (Whereas pg_clog and pg_serial share a key space, pg_serial is nothing like pg_notify.) The bug fixed here has the same symptoms and user followup steps as 592a589a04bd456410b853d86bd05faa9432cbbb. Back-patch to 9.5 (all supported versions). Reviewed by Andrey Borodin and (in earlier versions) by Tom Lane. Discussion: https://postgr.es/m/20190202083822.GC32531@gust.leadboat.com Branch ------ REL_12_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/66087f7e922c7279ee2c1967760de0c1f942522b Modified Files -------------- src/backend/access/transam/clog.c | 27 +++++-- src/backend/access/transam/commit_ts.c | 35 +++++--- src/backend/access/transam/multixact.c | 38 +++++---- src/backend/access/transam/slru.c | 143 +++++++++++++++++++++++++++++---- src/backend/access/transam/subtrans.c | 17 ++-- src/backend/commands/async.c | 7 +- src/backend/storage/lmgr/predicate.c | 109 +++++++++++++++++++++---- src/include/access/slru.h | 16 +++- 8 files changed, 312 insertions(+), 80 deletions(-)
В списке pgsql-committers по дате отправления: