Index SLRUs by 64-bit integers rather than by 32-bit integers
authorAlexander Korotkov <[email protected]>
Tue, 28 Nov 2023 23:39:55 +0000 (01:39 +0200)
committerAlexander Korotkov <[email protected]>
Tue, 28 Nov 2023 23:40:56 +0000 (01:40 +0200)
commit4ed8f0913bfdb5f3551de3c27fc2c2e880abc5a2
treebaa2a0501fa0e31380f68af5ddce0d15f76186a5
parenta916b47e23290ca24ffd083e5128d994f62966f6
Index SLRUs by 64-bit integers rather than by 32-bit integers

We've had repeated bugs in the area of handling SLRU wraparound in the past,
some of which have caused data loss. Switching to an indexing system for SLRUs
that does not wrap around should allow us to get rid of a whole bunch
of problems and improve the overall reliability of the system.

This particular  however only changes the indexing and doesn't address
the wraparound per se. This is going to be done in the following es.

Author: Maxim Orlov, Aleksander Alekseev, Alexander Korotkov, Teodor Sigaev
Author: Nikita Glukhov, Pavel Borisov, Yura Sokolov
Reviewed-by: Jacob Champion, Heikki Linnakangas, Alexander Korotkov
Reviewed-by: Japin Li, Pavel Borisov, Tom Lane, Peter Eisentraut, Andres Freund
Reviewed-by: Andrey Borodin, Dilip Kumar, Aleksander Alekseev
Discussion: https://postgr.es/m/CACG%3DezZe1NQSCnfHOr78AtAZxJZeCvxrts0ygrxYwe%3DpyyjVWA%40mail.gmail.com
Discussion: https://postgr.es/m/CAJ7c6TPDOYBYrnCAeyndkBktO0WG2xSdYduTF0nxq%2BvfkmTF5Q%40mail.gmail.com
18 files changed:
src/backend/access/rmgrdesc/clogdesc.c
src/backend/access/rmgrdesc/committsdesc.c
src/backend/access/rmgrdesc/mxactdesc.c
src/backend/access/transam/clog.c
src/backend/access/transam/commit_ts.c
src/backend/access/transam/multixact.c
src/backend/access/transam/slru.c
src/backend/access/transam/subtrans.c
src/backend/commands/async.c
src/backend/storage/lmgr/predicate.c
src/include/access/clog.h
src/include/access/commit_ts.h
src/include/access/slru.h
src/include/storage/proc.h
src/include/storage/sync.h
src/test/modules/test_slru/expected/test_slru.out
src/test/modules/test_slru/test_slru--1.0.sql
src/test/modules/test_slru/test_slru.c