pgsql: Change snapshot type to be determined by enum rather thancallba

Поиск
Список
Период
Сортировка
От Andres Freund
Тема pgsql: Change snapshot type to be determined by enum rather thancallba
Дата
Msg-id E1glkfA-0006nq-PP@gemulon.postgresql.org
обсуждение исходный текст
Список pgsql-committers
Change snapshot type to be determined by enum rather than callback.

This is in preparation for allowing the same snapshot be used for
different table AMs. With the current callback based approach we would
need one callback for each supported AM, which clearly would not be
extensible.  Thus add a new Snapshot->snapshot_type field, and move
the dispatch into HeapTupleSatisfiesVisibility() (which is now a
function). Later work will then dispatch calls to
HeapTupleSatisfiesVisibility() and other AMs visibility functions
depending on the type of the table.  The central SnapshotType enum
also seems like a good location to centralize documentation about the
intended behaviour of various types of snapshots.

As tqual.h isn't included by bufmgr.h any more (as HeapTupleSatisfies*
isn't referenced by TestForOldSnapshot() anymore) a few files now need
to include it directly.

Author: Andres Freund, loosely based on earlier work by Haribabu Kommi
Discussion:
    https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
    https://postgr.es/m/20160812231527.GA690404@alvherre.pgsql

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/63746189b23815415cacc715fdc4f6b991f1a5e7

Modified Files
--------------
contrib/amcheck/verify_nbtree.c             |  1 +
contrib/pg_visibility/pg_visibility.c       |  2 +
src/backend/access/nbtree/nbtsort.c         |  1 +
src/backend/replication/logical/snapbuild.c |  6 +-
src/backend/utils/time/snapmgr.c            | 10 ++--
src/backend/utils/time/tqual.c              | 86 ++++++++++++++++++---------
src/include/storage/bufmgr.h                |  5 +-
src/include/utils/snapshot.h                | 90 +++++++++++++++++++++++++----
src/include/utils/tqual.h                   | 40 +++----------
src/tools/pgindent/typedefs.list            |  2 +-
10 files changed, 161 insertions(+), 82 deletions(-)


В списке pgsql-committers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: pgsql: Remove useless bms_copy step in RelationGetIndexAttrBitmap.
Следующее
От: Andres Freund
Дата:
Сообщение: pgsql: Rename RelationData.rd_amroutine to rd_indam.