From cb04ad498551dcdb91a834c2e8730cdf0b77e70a Mon Sep 17 00:00:00 2001 From: Thomas Munro Date: Wed, 29 Jul 2020 16:46:58 +1200 Subject: [PATCH] Move syncscan.c to src/backend/access/common. Since the tableam.c code needs to make use of the syncscan.c routines itself, and since other block-oriented AMs might also want to use it one day, it didn't make sense for it to live under src/backend/access/heap. Reviewed-by: Andres Freund Discussion: https://postgr.es/m/CA%2BhUKGLCnG%3DNEAByg6bk%2BCT9JZD97Y%3DAxKhh27Su9FeGWOKvDg%40mail.gmail.com --- src/backend/access/common/Makefile | 1 + .../access/{heap => common}/syncscan.c | 6 ++--- src/backend/access/heap/Makefile | 1 - src/backend/access/heap/heapam.c | 1 + src/backend/access/heap/heapam_handler.c | 1 + src/backend/access/table/tableam.c | 2 +- src/backend/storage/ipc/ipci.c | 1 + src/include/access/heapam.h | 6 ----- src/include/access/syncscan.h | 25 +++++++++++++++++++ 9 files changed, 33 insertions(+), 11 deletions(-) rename src/backend/access/{heap => common}/syncscan.c (98%) create mode 100644 src/include/access/syncscan.h diff --git a/src/backend/access/common/Makefile b/src/backend/access/common/Makefile index fd74e14024..5a007d63f1 100644 --- a/src/backend/access/common/Makefile +++ b/src/backend/access/common/Makefile @@ -24,6 +24,7 @@ OBJS = \ reloptions.o \ scankey.o \ session.o \ + syncscan.o \ toast_internals.o \ tupconvert.o \ tupdesc.o diff --git a/src/backend/access/heap/syncscan.c b/src/backend/access/common/syncscan.c similarity index 98% rename from src/backend/access/heap/syncscan.c rename to src/backend/access/common/syncscan.c index a32f6836f8..c1ce156902 100644 --- a/src/backend/access/heap/syncscan.c +++ b/src/backend/access/common/syncscan.c @@ -1,7 +1,7 @@ /*------------------------------------------------------------------------- * * syncscan.c - * heap scan synchronization support + * scan synchronization support * * When multiple backends run a sequential scan on the same table, we try * to keep them synchronized to reduce the overall I/O needed. The goal is @@ -40,13 +40,13 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * src/backend/access/heap/syncscan.c + * src/backend/access/common/syncscan.c * *------------------------------------------------------------------------- */ #include "postgres.h" -#include "access/heapam.h" +#include "access/syncscan.h" #include "miscadmin.h" #include "storage/lwlock.h" #include "storage/shmem.h" diff --git a/src/backend/access/heap/Makefile b/src/backend/access/heap/Makefile index 51a7f5e0d0..af0bd1888e 100644 --- a/src/backend/access/heap/Makefile +++ b/src/backend/access/heap/Makefile @@ -20,7 +20,6 @@ OBJS = \ hio.o \ pruneheap.o \ rewriteheap.o \ - syncscan.o \ vacuumlazy.o \ visibilitymap.o diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 2c9bb0c7ee..8df2716de4 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -41,6 +41,7 @@ #include "access/parallel.h" #include "access/relscan.h" #include "access/subtrans.h" +#include "access/syncscan.h" #include "access/sysattr.h" #include "access/tableam.h" #include "access/transam.h" diff --git a/src/backend/access/heap/heapam_handler.c b/src/backend/access/heap/heapam_handler.c index 8f2e537921..267a6ee25a 100644 --- a/src/backend/access/heap/heapam_handler.c +++ b/src/backend/access/heap/heapam_handler.c @@ -24,6 +24,7 @@ #include "access/heaptoast.h" #include "access/multixact.h" #include "access/rewriteheap.h" +#include "access/syncscan.h" #include "access/tableam.h" #include "access/tsmapi.h" #include "access/xact.h" diff --git a/src/backend/access/table/tableam.c b/src/backend/access/table/tableam.c index 4e8553de2a..3afb63b1fe 100644 --- a/src/backend/access/table/tableam.c +++ b/src/backend/access/table/tableam.c @@ -21,7 +21,7 @@ #include -#include "access/heapam.h" /* for ss_* */ +#include "access/syncscan.h" #include "access/tableam.h" #include "access/xact.h" #include "optimizer/plancat.h" diff --git a/src/backend/storage/ipc/ipci.c b/src/backend/storage/ipc/ipci.c index 427b0d59cd..e850ebd131 100644 --- a/src/backend/storage/ipc/ipci.c +++ b/src/backend/storage/ipc/ipci.c @@ -20,6 +20,7 @@ #include "access/multixact.h" #include "access/nbtree.h" #include "access/subtrans.h" +#include "access/syncscan.h" #include "access/twophase.h" #include "commands/async.h" #include "miscadmin.h" diff --git a/src/include/access/heapam.h b/src/include/access/heapam.h index f279edc473..b31de38910 100644 --- a/src/include/access/heapam.h +++ b/src/include/access/heapam.h @@ -182,12 +182,6 @@ extern void heap_page_prune_execute(Buffer buffer, OffsetNumber *nowunused, int nunused); extern void heap_get_root_tuples(Page page, OffsetNumber *root_offsets); -/* in heap/syncscan.c */ -extern void ss_report_location(Relation rel, BlockNumber location); -extern BlockNumber ss_get_location(Relation rel, BlockNumber relnblocks); -extern void SyncScanShmemInit(void); -extern Size SyncScanShmemSize(void); - /* in heap/vacuumlazy.c */ struct VacuumParams; extern void heap_vacuum_rel(Relation onerel, diff --git a/src/include/access/syncscan.h b/src/include/access/syncscan.h new file mode 100644 index 0000000000..7cbf63c399 --- /dev/null +++ b/src/include/access/syncscan.h @@ -0,0 +1,25 @@ +/*------------------------------------------------------------------------- + * + * syncscan.h + * POSTGRES synchronous scan support functions. + * + * + * Portions Copyright (c) 1996-2020, PostgreSQL Global Development Group + * Portions Copyright (c) 1994, Regents of the University of California + * + * src/include/access/syncscan.h + * + *------------------------------------------------------------------------- + */ +#ifndef SYNCSCAN_H +#define SYNCSCAN_H + +#include "storage/block.h" +#include "utils/relcache.h" + +extern void ss_report_location(Relation rel, BlockNumber location); +extern BlockNumber ss_get_location(Relation rel, BlockNumber relnblocks); +extern void SyncScanShmemInit(void); +extern Size SyncScanShmemSize(void); + +#endif