mirror of
https://github.com/postgres/postgres.git
synced 2025-11-07 19:06:32 +03:00
Move remaining code from tqual.[ch] to heapam.h / heapam_visibility.c.
Given these routines are heap specific, and that there will be more generic visibility support in via table AM, it makes sense to move the prototypes to heapam.h (routines like HeapTupleSatisfiesVacuum will not be exposed in a generic fashion, because they are too storage specific). Similarly, the code in tqual.c is specific to heap, so moving it into access/heap/ makes sense. Author: Andres Freund Discussion: https://postgr.es/m/20180703070645.wchpu5muyto5n647@alap3.anarazel.de
This commit is contained in:
@@ -12,7 +12,7 @@ subdir = src/backend/access/heap
|
||||
top_builddir = ../../../..
|
||||
include $(top_builddir)/src/Makefile.global
|
||||
|
||||
OBJS = heapam.o hio.o pruneheap.o rewriteheap.o syncscan.o tuptoaster.o \
|
||||
vacuumlazy.o visibilitymap.o
|
||||
OBJS = heapam.o heapam_visibility.o hio.o pruneheap.o rewriteheap.o \
|
||||
syncscan.o tuptoaster.o vacuumlazy.o visibilitymap.o
|
||||
|
||||
include $(top_srcdir)/src/backend/common.mk
|
||||
|
||||
@@ -66,7 +66,6 @@
|
||||
#include "utils/lsyscache.h"
|
||||
#include "utils/relcache.h"
|
||||
#include "utils/snapmgr.h"
|
||||
#include "utils/tqual.h"
|
||||
|
||||
|
||||
/* GUC variable */
|
||||
@@ -5284,8 +5283,8 @@ test_lockmode_for_conflict(MultiXactStatus status, TransactionId xid,
|
||||
|
||||
/*
|
||||
* Note: we *must* check TransactionIdIsInProgress before
|
||||
* TransactionIdDidAbort/Commit; see comment at top of tqual.c for an
|
||||
* explanation.
|
||||
* TransactionIdDidAbort/Commit; see comment at top of heapam_visibility.c
|
||||
* for an explanation.
|
||||
*/
|
||||
if (TransactionIdIsCurrentTransactionId(xid))
|
||||
{
|
||||
@@ -6254,7 +6253,8 @@ FreezeMultiXactId(MultiXactId multi, uint16 t_infomask,
|
||||
*
|
||||
* As with all tuple visibility routines, it's critical to test
|
||||
* TransactionIdIsInProgress before TransactionIdDidCommit,
|
||||
* because of race conditions explained in detail in tqual.c.
|
||||
* because of race conditions explained in detail in
|
||||
* heapam_visibility.c.
|
||||
*/
|
||||
if (TransactionIdIsCurrentTransactionId(xid) ||
|
||||
TransactionIdIsInProgress(xid))
|
||||
|
||||
1703
src/backend/access/heap/heapam_visibility.c
Normal file
1703
src/backend/access/heap/heapam_visibility.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -25,7 +25,6 @@
|
||||
#include "storage/bufmgr.h"
|
||||
#include "utils/snapmgr.h"
|
||||
#include "utils/rel.h"
|
||||
#include "utils/tqual.h"
|
||||
|
||||
/* Working data for heap_page_prune and subroutines */
|
||||
typedef struct
|
||||
|
||||
@@ -130,7 +130,6 @@
|
||||
|
||||
#include "utils/memutils.h"
|
||||
#include "utils/rel.h"
|
||||
#include "utils/tqual.h"
|
||||
|
||||
#include "storage/procarray.h"
|
||||
|
||||
|
||||
@@ -42,7 +42,6 @@
|
||||
#include "utils/rel.h"
|
||||
#include "utils/snapmgr.h"
|
||||
#include "utils/typcache.h"
|
||||
#include "utils/tqual.h"
|
||||
|
||||
|
||||
#undef TOAST_DEBUG
|
||||
|
||||
@@ -59,7 +59,6 @@
|
||||
#include "utils/memutils.h"
|
||||
#include "utils/pg_rusage.h"
|
||||
#include "utils/timestamp.h"
|
||||
#include "utils/tqual.h"
|
||||
|
||||
|
||||
/*
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "utils/ruleutils.h"
|
||||
#include "utils/snapmgr.h"
|
||||
#include "utils/syscache.h"
|
||||
#include "utils/tqual.h"
|
||||
|
||||
|
||||
/* ----------------------------------------------------------------
|
||||
|
||||
@@ -192,7 +192,7 @@ vacuumLeafPage(spgBulkDeleteState *bds, Relation index, Buffer buffer,
|
||||
* happened since VACUUM started.
|
||||
*
|
||||
* Note: we could make a tighter test by seeing if the xid is
|
||||
* "running" according to the active snapshot; but tqual.c doesn't
|
||||
* "running" according to the active snapshot; but snapmgr.c doesn't
|
||||
* currently export a suitable API, and it's not entirely clear
|
||||
* that a tighter test is worth the cycles anyway.
|
||||
*/
|
||||
|
||||
@@ -228,8 +228,8 @@ TransactionIdDidAbort(TransactionId transactionId)
|
||||
* (and so it's not named TransactionIdDidComplete, which would be the
|
||||
* appropriate name for a function that worked that way). The intended
|
||||
* use is just to short-circuit TransactionIdIsInProgress calls when doing
|
||||
* repeated tqual.c checks for the same XID. If this isn't extremely fast
|
||||
* then it will be counterproductive.
|
||||
* repeated heapam_visibility.c checks for the same XID. If this isn't
|
||||
* extremely fast then it will be counterproductive.
|
||||
*
|
||||
* Note:
|
||||
* Assumes transaction identifier is valid.
|
||||
|
||||
@@ -774,10 +774,10 @@ TransactionIdIsCurrentTransactionId(TransactionId xid)
|
||||
* We always say that BootstrapTransactionId is "not my transaction ID"
|
||||
* even when it is (ie, during bootstrap). Along with the fact that
|
||||
* transam.c always treats BootstrapTransactionId as already committed,
|
||||
* this causes the tqual.c routines to see all tuples as committed, which
|
||||
* is what we need during bootstrap. (Bootstrap mode only inserts tuples,
|
||||
* it never updates or deletes them, so all tuples can be presumed good
|
||||
* immediately.)
|
||||
* this causes the heapam_visibility.c routines to see all tuples as
|
||||
* committed, which is what we need during bootstrap. (Bootstrap mode
|
||||
* only inserts tuples, it never updates or deletes them, so all tuples
|
||||
* can be presumed good immediately.)
|
||||
*
|
||||
* Likewise, InvalidTransactionId and FrozenTransactionId are certainly
|
||||
* not my transaction ID, so we can just return "false" immediately for
|
||||
|
||||
Reference in New Issue
Block a user