From: Andres Freund Date: Tue, 15 Jan 2019 01:02:12 +0000 (-0800) Subject: Don't include genam.h from execnodes.h and relscan.h anymore. X-Git-Tag: REL_12_BETA1~943 X-Git-Url: http://git.postgresql.org/gitweb/?a=commitdiff_plain;h=0944ec54de389b4b8a471ca1f40f1b9d81de1f30;p=postgresql.git Don't include genam.h from execnodes.h and relscan.h anymore. This is the genam.h equivalent of 4c850ecec649c (which removed heapam.h from a lot of other headers). There's still a few header includes of genam.h, but not from central headers anymore. As a few headers are not indirectly included anymore, execnodes.h and relscan.h need a few additional includes. Some of the depended on types were replacable by using the underlying structs, but e.g. for Snapshot in execnodes.h that'd have gotten more invasive than reasonable in this commit. Like the aforementioned commit 4c850ecec649c, this requires adding new genam.h includes to a number of backend files, which likely is also required in a few external projects. Author: Andres Freund Discussion: https://postgr.es/m/20190114000701.y4ttcb74jpskkcfb@alap3.anarazel.de --- diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 2c4a1453576..3a184f2eccb 100644 --- a/src/backend/access/heap/heapam.c +++ b/src/backend/access/heap/heapam.c @@ -39,6 +39,7 @@ #include "postgres.h" #include "access/bufmask.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/heapam_xlog.h" #include "access/hio.h" diff --git a/src/backend/access/index/genam.c b/src/backend/access/index/genam.c index e632ad0a9bc..ffd79ffca7d 100644 --- a/src/backend/access/index/genam.c +++ b/src/backend/access/index/genam.c @@ -19,6 +19,7 @@ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/relscan.h" #include "access/transam.h" diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c index 776533a2efb..63bb1349496 100644 --- a/src/backend/bootstrap/bootstrap.c +++ b/src/backend/bootstrap/bootstrap.c @@ -17,6 +17,7 @@ #include #include +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/xact.h" diff --git a/src/backend/catalog/dependency.c b/src/backend/catalog/dependency.c index f5560e6f706..35290847bd9 100644 --- a/src/backend/catalog/dependency.c +++ b/src/backend/catalog/dependency.c @@ -14,6 +14,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/htup_details.h" #include "access/heapam.h" #include "access/xact.h" diff --git a/src/backend/catalog/heap.c b/src/backend/catalog/heap.c index 149d97e3c3b..d7ccf2bfbef 100644 --- a/src/backend/catalog/heap.c +++ b/src/backend/catalog/heap.c @@ -29,6 +29,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/multixact.h" diff --git a/src/backend/catalog/indexing.c b/src/backend/catalog/indexing.c index 954e3f9ab65..0c994122d85 100644 --- a/src/backend/catalog/indexing.c +++ b/src/backend/catalog/indexing.c @@ -15,6 +15,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "catalog/index.h" diff --git a/src/backend/catalog/objectaddress.c b/src/backend/catalog/objectaddress.c index 66c2f54d5bf..f9214f8b629 100644 --- a/src/backend/catalog/objectaddress.c +++ b/src/backend/catalog/objectaddress.c @@ -15,6 +15,7 @@ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/sysattr.h" diff --git a/src/backend/commands/analyze.c b/src/backend/commands/analyze.c index 4248def61a7..99e3f2a672a 100644 --- a/src/backend/commands/analyze.c +++ b/src/backend/commands/analyze.c @@ -16,6 +16,7 @@ #include +#include "access/genam.h" #include "access/heapam.h" #include "access/multixact.h" #include "access/sysattr.h" diff --git a/src/backend/commands/constraint.c b/src/backend/commands/constraint.c index b9aec7d18be..66914007ecf 100644 --- a/src/backend/commands/constraint.c +++ b/src/backend/commands/constraint.c @@ -13,6 +13,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "catalog/index.h" #include "commands/trigger.h" diff --git a/src/backend/commands/extension.c b/src/backend/commands/extension.c index f63238454a3..e381a307601 100644 --- a/src/backend/commands/extension.c +++ b/src/backend/commands/extension.c @@ -29,6 +29,7 @@ #include #include +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/sysattr.h" diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c index 846bd7608ce..416051a8e30 100644 --- a/src/backend/commands/matview.c +++ b/src/backend/commands/matview.c @@ -14,6 +14,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/multixact.h" diff --git a/src/backend/commands/typecmds.c b/src/backend/commands/typecmds.c index 769504c4591..9ca30b0443c 100644 --- a/src/backend/commands/typecmds.c +++ b/src/backend/commands/typecmds.c @@ -31,6 +31,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/xact.h" diff --git a/src/backend/executor/execCurrent.c b/src/backend/executor/execCurrent.c index 82dbf72675b..fe99096efc2 100644 --- a/src/backend/executor/execCurrent.c +++ b/src/backend/executor/execCurrent.c @@ -12,6 +12,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/relscan.h" #include "access/sysattr.h" #include "catalog/pg_type.h" diff --git a/src/backend/executor/execIndexing.c b/src/backend/executor/execIndexing.c index c5b453ddcbe..92ca129858c 100644 --- a/src/backend/executor/execIndexing.c +++ b/src/backend/executor/execIndexing.c @@ -106,6 +106,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/relscan.h" #include "access/xact.h" #include "catalog/index.h" diff --git a/src/backend/executor/execReplication.c b/src/backend/executor/execReplication.c index f7602f25553..6ffe921f28f 100644 --- a/src/backend/executor/execReplication.c +++ b/src/backend/executor/execReplication.c @@ -14,6 +14,7 @@ #include "postgres.h" +#include "access/genam.h" #include "access/heapam.h" #include "access/relscan.h" #include "access/transam.h" diff --git a/src/backend/executor/nodeBitmapIndexscan.c b/src/backend/executor/nodeBitmapIndexscan.c index 2526c3a2fc0..bd837d3cd8e 100644 --- a/src/backend/executor/nodeBitmapIndexscan.c +++ b/src/backend/executor/nodeBitmapIndexscan.c @@ -21,6 +21,7 @@ */ #include "postgres.h" +#include "access/genam.h" #include "executor/execdebug.h" #include "executor/nodeBitmapIndexscan.h" #include "executor/nodeIndexscan.h" diff --git a/src/backend/executor/nodeIndexonlyscan.c b/src/backend/executor/nodeIndexonlyscan.c index c96a2c3ae9d..b3f61dd1fc6 100644 --- a/src/backend/executor/nodeIndexonlyscan.c +++ b/src/backend/executor/nodeIndexonlyscan.c @@ -30,7 +30,9 @@ */ #include "postgres.h" +#include "access/genam.h" #include "access/relscan.h" +#include "access/tupdesc.h" #include "access/visibilitymap.h" #include "executor/execdebug.h" #include "executor/nodeIndexonlyscan.h" diff --git a/src/backend/optimizer/plan/planner.c b/src/backend/optimizer/plan/planner.c index 8cdcf2368b2..5ba612922f9 100644 --- a/src/backend/optimizer/plan/planner.c +++ b/src/backend/optimizer/plan/planner.c @@ -18,6 +18,7 @@ #include #include +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/parallel.h" diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c index c3373dfaf3d..7415c4faabc 100644 --- a/src/backend/utils/init/postinit.c +++ b/src/backend/utils/init/postinit.c @@ -19,6 +19,7 @@ #include #include +#include "access/genam.h" #include "access/heapam.h" #include "access/htup_details.h" #include "access/session.h" diff --git a/src/include/access/relscan.h b/src/include/access/relscan.h index 43a2286c172..b78ef2f47d0 100644 --- a/src/include/access/relscan.h +++ b/src/include/access/relscan.h @@ -14,11 +14,12 @@ #ifndef RELSCAN_H #define RELSCAN_H -#include "access/genam.h" #include "access/htup_details.h" #include "access/itup.h" -#include "access/tupdesc.h" +#include "port/atomics.h" +#include "storage/buf.h" #include "storage/spin.h" +#include "utils/relcache.h" /* * Shared state for parallel heap scan. @@ -46,9 +47,9 @@ typedef struct HeapScanDescData { /* scan parameters */ Relation rs_rd; /* heap relation descriptor */ - Snapshot rs_snapshot; /* snapshot to see */ + struct SnapshotData *rs_snapshot; /* snapshot to see */ int rs_nkeys; /* number of scan keys */ - ScanKey rs_key; /* array of scan key descriptors */ + struct ScanKeyData *rs_key; /* array of scan key descriptors */ bool rs_bitmapscan; /* true if this is really a bitmap scan */ bool rs_samplescan; /* true if this is really a sample scan */ bool rs_pageatatime; /* verify visibility page-at-a-time? */ @@ -88,11 +89,11 @@ typedef struct IndexScanDescData /* scan parameters */ Relation heapRelation; /* heap relation descriptor, or NULL */ Relation indexRelation; /* index relation descriptor */ - Snapshot xs_snapshot; /* snapshot to see */ + struct SnapshotData *xs_snapshot; /* snapshot to see */ int numberOfKeys; /* number of index qualifier conditions */ int numberOfOrderBys; /* number of ordering operators */ - ScanKey keyData; /* array of index qualifier descriptors */ - ScanKey orderByData; /* array of ordering op descriptors */ + struct ScanKeyData *keyData; /* array of index qualifier descriptors */ + struct ScanKeyData *orderByData; /* array of ordering op descriptors */ bool xs_want_itup; /* caller requests index tuples */ bool xs_temp_snap; /* unregister snapshot at scan end? */ @@ -112,9 +113,9 @@ typedef struct IndexScanDescData * format will be used. */ IndexTuple xs_itup; /* index tuple returned by AM */ - TupleDesc xs_itupdesc; /* rowtype descriptor of xs_itup */ + struct TupleDescData *xs_itupdesc; /* rowtype descriptor of xs_itup */ HeapTuple xs_hitup; /* index data returned by AM, as HeapTuple */ - TupleDesc xs_hitupdesc; /* rowtype descriptor of xs_hitup */ + struct TupleDescData *xs_hitupdesc; /* rowtype descriptor of xs_hitup */ /* xs_ctup/xs_cbuf/xs_recheck are valid after a successful index_getnext */ HeapTupleData xs_ctup; /* current heap tuple, if any */ @@ -137,7 +138,7 @@ typedef struct IndexScanDescData bool xs_continue_hot; /* T if must keep walking HOT chain */ /* parallel index scan information, in shared memory */ - ParallelIndexScanDesc parallel_scan; + struct ParallelIndexScanDescData *parallel_scan; } IndexScanDescData; /* Generic structure for parallel scans */ @@ -155,8 +156,8 @@ typedef struct SysScanDescData Relation heap_rel; /* catalog being scanned */ Relation irel; /* NULL if doing heap scan */ struct HeapScanDescData *scan; /* only valid in heap-scan case */ - IndexScanDesc iscan; /* only valid in index-scan case */ - Snapshot snapshot; /* snapshot to unregister at end of scan */ + struct IndexScanDescData *iscan; /* only valid in index-scan case */ + struct SnapshotData *snapshot; /* snapshot to unregister at end of scan */ } SysScanDescData; #endif /* RELSCAN_H */ diff --git a/src/include/executor/nodeIndexscan.h b/src/include/executor/nodeIndexscan.h index 028cdb61d1c..9f660499f32 100644 --- a/src/include/executor/nodeIndexscan.h +++ b/src/include/executor/nodeIndexscan.h @@ -14,6 +14,7 @@ #ifndef NODEINDEXSCAN_H #define NODEINDEXSCAN_H +#include "access/genam.h" #include "access/parallel.h" #include "nodes/execnodes.h" diff --git a/src/include/nodes/execnodes.h b/src/include/nodes/execnodes.h index 57031654900..7cae0851774 100644 --- a/src/include/nodes/execnodes.h +++ b/src/include/nodes/execnodes.h @@ -14,7 +14,6 @@ #ifndef EXECNODES_H #define EXECNODES_H -#include "access/genam.h" #include "access/tupconvert.h" #include "executor/instrument.h" #include "lib/pairingheap.h" @@ -24,6 +23,7 @@ #include "utils/queryenvironment.h" #include "utils/reltrigger.h" #include "utils/sharedtuplestore.h" +#include "utils/snapshot.h" #include "utils/sortsupport.h" #include "utils/tuplestore.h" #include "utils/tuplesort.h" @@ -1306,14 +1306,14 @@ typedef struct SampleScanState */ typedef struct { - ScanKey scan_key; /* scankey to put value into */ + struct ScanKeyData *scan_key; /* scankey to put value into */ ExprState *key_expr; /* expr to evaluate to get value */ bool key_toastable; /* is expr's result a toastable datatype? */ } IndexRuntimeKeyInfo; typedef struct { - ScanKey scan_key; /* scankey to put value into */ + struct ScanKeyData *scan_key; /* scankey to put value into */ ExprState *array_expr; /* expr to evaluate to get array value */ int next_elem; /* next array element to use */ int num_elems; /* number of elems in current array value */ @@ -1352,16 +1352,16 @@ typedef struct IndexScanState ScanState ss; /* its first field is NodeTag */ ExprState *indexqualorig; List *indexorderbyorig; - ScanKey iss_ScanKeys; + struct ScanKeyData *iss_ScanKeys; int iss_NumScanKeys; - ScanKey iss_OrderByKeys; + struct ScanKeyData *iss_OrderByKeys; int iss_NumOrderByKeys; IndexRuntimeKeyInfo *iss_RuntimeKeys; int iss_NumRuntimeKeys; bool iss_RuntimeKeysReady; ExprContext *iss_RuntimeContext; Relation iss_RelationDesc; - IndexScanDesc iss_ScanDesc; + struct IndexScanDescData *iss_ScanDesc; /* These are needed for re-checking ORDER BY expr ordering */ pairingheap *iss_ReorderQueue; @@ -1397,16 +1397,16 @@ typedef struct IndexOnlyScanState { ScanState ss; /* its first field is NodeTag */ ExprState *indexqual; - ScanKey ioss_ScanKeys; + struct ScanKeyData *ioss_ScanKeys; int ioss_NumScanKeys; - ScanKey ioss_OrderByKeys; + struct ScanKeyData *ioss_OrderByKeys; int ioss_NumOrderByKeys; IndexRuntimeKeyInfo *ioss_RuntimeKeys; int ioss_NumRuntimeKeys; bool ioss_RuntimeKeysReady; ExprContext *ioss_RuntimeContext; Relation ioss_RelationDesc; - IndexScanDesc ioss_ScanDesc; + struct IndexScanDescData *ioss_ScanDesc; Buffer ioss_VMBuffer; Size ioss_PscanLen; } IndexOnlyScanState; @@ -1431,7 +1431,7 @@ typedef struct BitmapIndexScanState { ScanState ss; /* its first field is NodeTag */ TIDBitmap *biss_result; - ScanKey biss_ScanKeys; + struct ScanKeyData *biss_ScanKeys; int biss_NumScanKeys; IndexRuntimeKeyInfo *biss_RuntimeKeys; int biss_NumRuntimeKeys; @@ -1440,7 +1440,7 @@ typedef struct BitmapIndexScanState bool biss_RuntimeKeysReady; ExprContext *biss_RuntimeContext; Relation biss_RelationDesc; - IndexScanDesc biss_ScanDesc; + struct IndexScanDescData *biss_ScanDesc; } BitmapIndexScanState; /* ----------------