diff --git a/src/backend/access/heap/heapam.c b/src/backend/access/heap/heapam.c index 2c4a145357..3a184f2ecc 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 e632ad0a9b..ffd79ffca7 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 776533a2ef..63bb134949 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 f5560e6f70..35290847bd 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 149d97e3c3..d7ccf2bfbe 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 954e3f9ab6..0c994122d8 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 66c2f54d5b..f9214f8b62 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 4248def61a..99e3f2a672 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 b9aec7d18b..66914007ec 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 f63238454a..e381a30760 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 846bd7608c..416051a8e3 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 769504c459..9ca30b0443 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 82dbf72675..fe99096efc 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 c5b453ddcb..92ca129858 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 f7602f2555..6ffe921f28 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 2526c3a2fc..bd837d3cd8 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 c96a2c3ae9..b3f61dd1fc 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 8cdcf2368b..5ba612922f 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 c3373dfaf3..7415c4faab 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 43a2286c17..b78ef2f47d 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 028cdb61d1..9f660499f3 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 5703165490..7cae085177 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; /* ----------------