#include "utils/builtins.h"
#include "utils/fmgroids.h"
#include "utils/rel.h"
+#include "utils/tuplestore.h"
PG_FUNCTION_INFO_V1(verify_heapam);
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/rel.h"
+#include "utils/tuplestore.h"
#include "utils/varlena.h"
#include "utils/wait_event.h"
*/
#include "postgres.h"
+#include "catalog/pg_type_d.h"
#include "executor/execExpr.h"
#include "hstore.h"
#include "nodes/nodeFuncs.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
+#include "utils/tuplestore.h"
PG_FUNCTION_INFO_V1(brin_page_type);
PG_FUNCTION_INFO_V1(brin_page_items);
#include "utils/pg_lsn.h"
#include "utils/rel.h"
#include "utils/ruleutils.h"
+#include "utils/tuplestore.h"
PG_FUNCTION_INFO_V1(gist_page_opaque_info);
PG_FUNCTION_INFO_V1(gist_page_items);
#include "storage/buf_internals.h"
#include "storage/bufmgr.h"
#include "utils/rel.h"
+#include "utils/tuplestore.h"
#define NUM_BUFFERCACHE_PAGES_MIN_ELEM 8
#include "utils/builtins.h"
#include "utils/memutils.h"
#include "utils/timestamp.h"
+#include "utils/tuplestore.h"
PG_MODULE_MAGIC_EXT(
.name = "pg_stat_statements",
#include "access/xlogutils.h"
#include "funcapi.h"
#include "miscadmin.h"
+#include "port/pg_bitutils.h"
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/pg_lsn.h"
+#include "utils/tuplestore.h"
/*
* NOTE: For any code change or issue fix here, it is highly recommended to
#include "utils/fmgrprotos.h"
#include "utils/rel.h"
#include "utils/snapmgr.h"
+#include "utils/tuplestore.h"
#include "utils/varlena.h"
PG_MODULE_MAGIC_EXT(
#include "utils/hsearch.h"
#include "utils/inval.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
/*
* Connection cache hash table entry
#include "commands/explain_format.h"
#include "commands/explain_state.h"
#include "executor/execAsync.h"
+#include "executor/instrument.h"
#include "foreign/fdwapi.h"
#include "funcapi.h"
#include "miscadmin.h"
#include "lib/stringinfo.h"
#include "miscadmin.h"
#include "utils/builtins.h"
+#include "utils/tuplestore.h"
PG_MODULE_MAGIC_EXT(
.name = "tablefunc",
#include "catalog/pg_type.h"
#include "miscadmin.h"
#include "optimizer/optimizer.h"
+#include "portability/instr_time.h"
#include "utils/sampling.h"
#include "utils/spccache.h"
#include "funcapi.h"
#include "lib/stringinfo.h"
#include "utils/builtins.h"
+#include "utils/tuplestore.h"
#include "utils/xml.h"
/* libxml includes */
#include "catalog/index.h"
#include "catalog/pg_am.h"
#include "commands/vacuum.h"
+#include "executor/instrument.h"
#include "miscadmin.h"
#include "pgstat.h"
#include "postmaster/autovacuum.h"
#include "storage/bufmgr.h"
+#include "storage/condition_variable.h"
#include "storage/freespace.h"
#include "storage/proc.h"
#include "tcop/tcopprot.h"
#include "catalog/index.h"
#include "catalog/pg_collation.h"
#include "commands/progress.h"
+#include "executor/instrument.h"
#include "miscadmin.h"
#include "nodes/execnodes.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
+#include "storage/condition_variable.h"
#include "storage/proc.h"
#include "storage/predicate.h"
#include "tcop/tcopprot.h"
#include "utils/memutils.h"
#include "utils/builtins.h"
#include "utils/rel.h"
+#include "utils/tuplesort.h"
#include "utils/typcache.h"
#include "utils/wait_event.h"
#include "storage/smgr.h"
#include "utils/builtins.h"
#include "utils/rel.h"
+#include "utils/tuplesort.h"
static void reform_and_rewrite_tuple(HeapTuple tuple,
Relation OldHeap, Relation NewHeap,
#include "miscadmin.h"
#include "pgstat.h"
#include "storage/bulk_write.h"
+#include "storage/condition_variable.h"
#include "storage/proc.h"
#include "tcop/tcopprot.h"
#include "utils/rel.h"
#include "miscadmin.h"
#include "port/atomics.h"
#include "storage/bufmgr.h"
+#include "storage/fd.h"
#include "storage/shmem.h"
#include "storage/smgr.h"
#include "utils/fmgrprotos.h"
#include "utils/guc_hooks.h"
#include "utils/hsearch.h"
#include "utils/timestamp.h"
+#include "utils/tuplestore.h"
/*
* Every time we process this much WAL, we'll update the values in
#include "postmaster/walsummarizer.h"
#include "utils/fmgrprotos.h"
#include "utils/pg_lsn.h"
+#include "utils/tuplestore.h"
#define NUM_WS_ATTS 3
#define NUM_SUMMARY_ATTS 6
#include "pg_getopt.h"
#include "postmaster/postmaster.h"
#include "storage/bufpage.h"
+#include "storage/fd.h"
#include "storage/ipc.h"
#include "storage/proc.h"
#include "utils/builtins.h"
#include <unistd.h>
#include "access/amapi.h"
+#include "access/attmap.h"
#include "access/heapam.h"
#include "access/multixact.h"
#include "access/relscan.h"
#include "commands/vacuum.h"
#include "common/pg_prng.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "foreign/fdwapi.h"
#include "miscadmin.h"
#include "nodes/nodeFuncs.h"
#include "access/heapam.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "access/xact.h"
#include "catalog/namespace.h"
#include "commands/copyapi.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
#include "pgstat.h"
+#include "port/pg_bitutils.h"
#include "port/pg_bswap.h"
#include "port/simd.h"
#include "utils/builtins.h"
#include "access/table.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "catalog/pg_inherits.h"
#include "commands/copyapi.h"
#include "commands/progress.h"
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
typedef struct EventTriggerQueryState
{
#include "utils/ruleutils.h"
#include "utils/snapmgr.h"
#include "utils/tuplesort.h"
+#include "utils/tuplestore.h"
#include "utils/typcache.h"
#include "utils/xml.h"
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
#include "utils/varlena.h"
#include "postgres.h"
#include "access/amapi.h"
+#include "access/attmap.h"
#include "access/gist.h"
#include "access/heapam.h"
#include "access/htup_details.h"
#include "tcop/pquery.h"
#include "tcop/utility.h"
#include "utils/builtins.h"
+#include "utils/hsearch.h"
#include "utils/snapmgr.h"
#include "utils/timestamp.h"
+#include "utils/tuplestore.h"
/*
#include "access/sysattr.h"
#include "access/tableam.h"
#include "access/toast_compression.h"
+#include "access/tupconvert.h"
#include "access/xact.h"
#include "access/xlog.h"
#include "access/xloginsert.h"
#include "access/sysattr.h"
#include "access/table.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "access/xact.h"
#include "catalog/catalog.h"
#include "catalog/dependency.h"
#include "catalog/pg_type.h"
#include "commands/trigger.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "miscadmin.h"
#include "nodes/bitmapset.h"
#include "nodes/makefuncs.h"
#include "access/xlog.h"
#include "access/xlogrecovery.h"
#include "access/xlogwait.h"
+#include "catalog/pg_type_d.h"
#include "commands/defrem.h"
#include "commands/wait.h"
#include "executor/executor.h"
#include "access/htup_details.h"
#include "catalog/pg_class.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeAgg.h"
#include "executor/nodeAppend.h"
#include "executor/nodeBitmapAnd.h"
#include "executor/execAsync.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeAppend.h"
#include "executor/nodeForeignscan.h"
#include "postgres.h"
#include "access/heaptoast.h"
+#include "access/tupconvert.h"
#include "catalog/pg_type.h"
#include "commands/sequence.h"
#include "executor/execExpr.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/timestamp.h"
+#include "utils/tuplesort.h"
#include "utils/typcache.h"
#include "utils/xml.h"
#include "access/sysattr.h"
#include "access/table.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "access/xact.h"
#include "catalog/namespace.h"
#include "catalog/partition.h"
#include "commands/trigger.h"
#include "executor/executor.h"
#include "executor/execPartition.h"
+#include "executor/instrument.h"
#include "executor/nodeSubplan.h"
#include "foreign/fdwapi.h"
#include "mb/pg_wchar.h"
#include "access/table.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "catalog/index.h"
#include "catalog/partition.h"
#include "executor/execPartition.h"
#include "postgres.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeAgg.h"
#include "executor/nodeAppend.h"
#include "executor/nodeBitmapAnd.h"
#include "utils/builtins.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/tuplestore.h"
#include "utils/typcache.h"
#include "access/parallel.h"
#include "access/table.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "executor/executor.h"
#include "executor/nodeModifyTable.h"
#include "jit/jit.h"
#include "miscadmin.h"
#include "parser/parse_relation.h"
#include "partitioning/partdesc.h"
+#include "port/pg_bitutils.h"
#include "storage/lmgr.h"
#include "utils/builtins.h"
#include "utils/memutils.h"
#include "utils/plancache.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
/*
#include "common/hashfn.h"
#include "executor/execExpr.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeAgg.h"
#include "lib/hyperloglog.h"
#include "miscadmin.h"
#include "optimizer/optimizer.h"
#include "parser/parse_agg.h"
#include "parser/parse_coerce.h"
+#include "port/pg_bitutils.h"
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/datum.h"
#include "postgres.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeBitmapAnd.h"
+#include "nodes/tidbitmap.h"
/* ----------------------------------------------------------------
#include "access/tableam.h"
#include "access/visibilitymap.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeBitmapHeapscan.h"
#include "miscadmin.h"
#include "pgstat.h"
#include "storage/bufmgr.h"
+#include "storage/condition_variable.h"
+#include "utils/dsa.h"
#include "utils/rel.h"
#include "utils/spccache.h"
#include "utils/wait_event.h"
static bool BitmapShouldInitializeSharedState(ParallelBitmapHeapState *pstate);
+/* ----------------
+ * SharedBitmapState information
+ *
+ * BM_INITIAL TIDBitmap creation is not yet started, so first worker
+ * to see this state will set the state to BM_INPROGRESS
+ * and that process will be responsible for creating
+ * TIDBitmap.
+ * BM_INPROGRESS TIDBitmap creation is in progress; workers need to
+ * sleep until it's finished.
+ * BM_FINISHED TIDBitmap creation is done, so now all workers can
+ * proceed to iterate over TIDBitmap.
+ * ----------------
+ */
+typedef enum
+{
+ BM_INITIAL,
+ BM_INPROGRESS,
+ BM_FINISHED,
+} SharedBitmapState;
+
+/* ----------------
+ * ParallelBitmapHeapState information
+ * tbmiterator iterator for scanning current pages
+ * mutex mutual exclusion for state
+ * state current state of the TIDBitmap
+ * cv conditional wait variable
+ * ----------------
+ */
+typedef struct ParallelBitmapHeapState
+{
+ dsa_pointer tbmiterator;
+ slock_t mutex;
+ SharedBitmapState state;
+ ConditionVariable cv;
+} ParallelBitmapHeapState;
+
+
/*
* Do the underlying index scan, build the bitmap, set up the parallel state
* needed for parallel workers to iterate through the bitmap, and set up the
#include "access/genam.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeBitmapIndexscan.h"
#include "executor/nodeIndexscan.h"
#include "miscadmin.h"
+#include "nodes/tidbitmap.h"
/* ----------------------------------------------------------------
#include "postgres.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeBitmapOr.h"
+#include "nodes/tidbitmap.h"
#include "miscadmin.h"
#include "executor/executor.h"
#include "executor/nodeCtescan.h"
#include "miscadmin.h"
+#include "utils/tuplestore.h"
static TupleTableSlot *CteScanNext(CteScanState *node);
#include "funcapi.h"
#include "nodes/nodeFuncs.h"
#include "utils/memutils.h"
+#include "utils/tuplestore.h"
/*
#include "lib/binaryheap.h"
#include "miscadmin.h"
#include "optimizer/optimizer.h"
+#include "utils/sortsupport.h"
/*
* When we read tuples from workers, it's a good idea to read several at once
#include "postgres.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeGroup.h"
#include "miscadmin.h"
#include "commands/tablespace.h"
#include "executor/executor.h"
#include "executor/hashjoin.h"
+#include "executor/instrument.h"
#include "executor/nodeHash.h"
#include "executor/nodeHashjoin.h"
#include "miscadmin.h"
#include "access/parallel.h"
#include "executor/executor.h"
#include "executor/hashjoin.h"
+#include "executor/instrument.h"
#include "executor/nodeHash.h"
#include "executor/nodeHashjoin.h"
#include "miscadmin.h"
#include "access/visibilitymap.h"
#include "catalog/pg_type.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeIndexonlyscan.h"
#include "executor/nodeIndexscan.h"
#include "miscadmin.h"
#include "access/tableam.h"
#include "catalog/pg_am.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeIndexscan.h"
#include "lib/pairingheap.h"
#include "miscadmin.h"
#include "utils/datum.h"
#include "utils/lsyscache.h"
#include "utils/rel.h"
+#include "utils/sortsupport.h"
/*
* When an ordering operator is used, tuples fetched from the index that
#include "executor/executor.h"
#include "executor/nodeMaterial.h"
#include "miscadmin.h"
+#include "utils/tuplestore.h"
/* ----------------------------------------------------------------
* ExecMaterial
#include "executor/nodeMergeAppend.h"
#include "lib/binaryheap.h"
#include "miscadmin.h"
+#include "utils/sortsupport.h"
/*
* We have one slot for each item in the heap array. We use SlotNumber
#include "access/nbtree.h"
#include "executor/execdebug.h"
+#include "executor/instrument.h"
#include "executor/nodeMergejoin.h"
#include "miscadmin.h"
#include "utils/lsyscache.h"
+#include "utils/sortsupport.h"
/*
#include "access/htup_details.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "access/xact.h"
#include "commands/trigger.h"
#include "executor/execPartition.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeModifyTable.h"
#include "foreign/fdwapi.h"
#include "miscadmin.h"
#include "executor/executor.h"
#include "executor/nodeNamedtuplestorescan.h"
#include "utils/queryenvironment.h"
+#include "utils/tuplestore.h"
static TupleTableSlot *NamedTuplestoreScanNext(NamedTuplestoreScanState *node);
#include "postgres.h"
#include "executor/execdebug.h"
+#include "executor/instrument.h"
#include "executor/nodeNestloop.h"
#include "miscadmin.h"
#include "executor/nodeRecursiveunion.h"
#include "miscadmin.h"
#include "utils/memutils.h"
+#include "utils/tuplestore.h"
#include "executor/nodeSetOp.h"
#include "miscadmin.h"
#include "utils/memutils.h"
+#include "utils/sortsupport.h"
/*
#include "utils/jsonpath.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
+#include "utils/tuplestore.h"
#include "utils/xml.h"
static TupleTableSlot *TableFuncNext(TableFuncScanState *node);
#include "catalog/pg_aggregate.h"
#include "catalog/pg_proc.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "executor/nodeWindowAgg.h"
#include "miscadmin.h"
#include "nodes/nodeFuncs.h"
#include "utils/memutils.h"
#include "utils/regproc.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
#include "windowapi.h"
/*
#include "executor/executor.h"
#include "executor/nodeWorktablescan.h"
+#include "utils/tuplestore.h"
static TupleTableSlot *WorkTableScanNext(WorkTableScanState *node);
#include "utils/rel.h"
#include "utils/snapmgr.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
#include "utils/typcache.h"
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
#include "utils/varlena.h"
#include "miscadmin.h"
#include "nodes/execnodes.h"
#include "portability/instr_time.h"
+#include "storage/fd.h"
#include "utils/fmgrprotos.h"
/* GUCs */
#include "miscadmin.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
+#include "nodes/tidbitmap.h"
#include "optimizer/clauses.h"
#include "optimizer/cost.h"
#include "optimizer/optimizer.h"
#include "postgres.h"
#include "access/nbtree.h"
+#include "access/sysattr.h"
#include "catalog/pg_constraint.h"
#include "catalog/pg_type.h"
#include "nodes/makefuncs.h"
#include "postgres.h"
+#include "access/sysattr.h"
#include "access/table.h"
+#include "catalog/pg_type_d.h"
#include "nodes/makefuncs.h"
#include "optimizer/appendinfo.h"
#include "optimizer/optimizer.h"
#include "optimizer/prep.h"
#include "optimizer/tlist.h"
#include "parser/parse_coerce.h"
+#include "port/pg_bitutils.h"
#include "utils/selfuncs.h"
#include "postgres.h"
#include "access/htup_details.h"
+#include "access/sysattr.h"
#include "access/table.h"
#include "foreign/fdwapi.h"
#include "nodes/makefuncs.h"
#include "nodes/pathnodes.h"
#include "optimizer/optimizer.h"
#include "utils/array.h"
+#include "utils/hsearch.h"
#include "utils/inval.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
#include "postgres.h"
#include "access/amapi.h"
+#include "access/attmap.h"
#include "access/htup_details.h"
#include "access/relation.h"
#include "access/reloptions.h"
#include "storage/aio_subsys.h"
#include "storage/bufmgr.h"
#include "storage/ipc.h"
+#include "storage/fd.h"
#include "storage/latch.h"
#include "storage/lmgr.h"
#include "storage/pmsignal.h"
#include "access/commit_ts.h"
#include "access/table.h"
#include "access/tableam.h"
+#include "access/tupconvert.h"
#include "access/twophase.h"
#include "access/xact.h"
#include "catalog/indexing.h"
#include "optimizer/optimizer.h"
#include "parser/parse_relation.h"
#include "pgstat.h"
+#include "port/pg_bitutils.h"
#include "postmaster/bgworker.h"
#include "postmaster/interrupt.h"
#include "postmaster/walwriter.h"
#include "postgres.h"
#include "access/genam.h"
+#include "access/sysattr.h"
#include "access/table.h"
#include "access/htup_details.h"
#include "catalog/pg_operator.h"
*/
#include "postgres.h"
+#include "access/attmap.h"
#include "catalog/pg_type.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "storage/shmem.h"
#include "utils/builtins.h"
#include "utils/memutils.h"
+#include "utils/tuplestore.h"
typedef struct DSMRegistryCtxStruct
{
#include "postgres.h"
+#include <unistd.h>
+
#include "common/int.h"
#include "fmgr.h"
#include "funcapi.h"
#include "storage/shmem.h"
#include "storage/spin.h"
#include "utils/builtins.h"
+#include "utils/tuplestore.h"
/*
* This is the first data structure stored in the shared memory segment, at
#include "rewrite/rewriteHandler.h"
#include "storage/bufmgr.h"
#include "storage/ipc.h"
+#include "storage/fd.h"
#include "storage/pmsignal.h"
#include "storage/proc.h"
#include "storage/procsignal.h"
#include "funcapi.h"
#include "utils/builtins.h"
+#include "utils/tuplestore.h"
#include "utils/wait_event.h"
/*
#include "lib/bloomfilter.h"
#include "lib/qunique.h"
#include "miscadmin.h"
+#include "port/pg_bitutils.h"
#include "storage/large_object.h"
#include "utils/acl.h"
#include "utils/array.h"
*/
#include "postgres.h"
+#include "catalog/pg_type_d.h"
#include "executor/execExpr.h"
#include "nodes/makefuncs.h"
#include "nodes/nodeFuncs.h"
#include "utils/date.h"
#include "utils/datetime.h"
#include "utils/guc.h"
+#include "utils/tuplestore.h"
#include "utils/tzparser.h"
static int DecodeNumber(int flen, char *str, bool haveTextMonth,
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/guc.h"
+#include "utils/tuplestore.h"
static ArrayType *get_hba_options(HbaLine *hba);
#include "utils/date.h"
#include "utils/datetime.h"
#include "utils/fmgroids.h"
+#include "utils/hsearch.h"
#include "utils/json.h"
#include "utils/jsonfuncs.h"
#include "utils/lsyscache.h"
*/
#include "postgres.h"
+#include "catalog/pg_type_d.h"
#include "executor/execExpr.h"
#include "nodes/nodeFuncs.h"
#include "nodes/subscripting.h"
#include "utils/lsyscache.h"
#include "utils/memutils.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
#include "utils/typcache.h"
/* Operations available for setPath */
#include "postgres.h"
+#include "catalog/pg_type_d.h"
#include "funcapi.h"
#include "mb/pg_wchar.h"
#include "storage/proc.h"
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/hsearch.h"
+#include "utils/tuplestore.h"
/* ----------
* The max bytes for showing identifiers of MemoryContext.
#include "utils/ruleutils.h"
#include "utils/syscache.h"
#include "utils/timestamp.h"
+#include "utils/tuplestore.h"
#include "utils/wait_event.h"
#include "utils/acl.h"
#include "utils/builtins.h"
#include "utils/timestamp.h"
+#include "utils/tuplestore.h"
#include "utils/wait_event.h"
#define UINT32_ACCESS_ONCE(var) ((uint32)(*((volatile uint32 *)&(var))))
*/
#include "postgres.h"
+#include "access/tupmacs.h"
#include "common/hashfn.h"
#include "funcapi.h"
#include "libpq/pqformat.h"
#include "optimizer/clauses.h"
#include "optimizer/cost.h"
#include "optimizer/optimizer.h"
+#include "port/pg_bitutils.h"
#include "utils/builtins.h"
#include "utils/date.h"
#include "utils/lsyscache.h"
#include "access/detoast.h"
#include "access/toast_compression.h"
+#include "access/tupmacs.h"
#include "catalog/pg_collation.h"
#include "catalog/pg_type.h"
#include "common/hashfn.h"
#include "utils/memutils.h"
#include "utils/pg_locale.h"
#include "utils/sortsupport.h"
+#include "utils/tuplestore.h"
#include "utils/varlena.h"
typedef varlena VarString;
#include "pgstat.h"
#include "rewrite/rewriteDefine.h"
#include "rewrite/rowsecurity.h"
+#include "storage/fd.h"
#include "storage/lmgr.h"
#include "storage/smgr.h"
#include "utils/array.h"
#include "utils/builtins.h"
#include "utils/fmgrtab.h"
#include "utils/guc.h"
+#include "utils/hsearch.h"
#include "utils/lsyscache.h"
#include "utils/syscache.h"
#include "mb/pg_wchar.h"
#include "miscadmin.h"
#include "pgstat.h"
+#include "port/pg_bitutils.h"
#include "postmaster/autovacuum.h"
#include "postmaster/postmaster.h"
#include "replication/slot.h"
#include "catalog/objectaccess.h"
#include "catalog/pg_authid.h"
#include "catalog/pg_parameter_acl.h"
+#include "catalog/pg_type_d.h"
#include "funcapi.h"
#include "guc_internal.h"
#include "miscadmin.h"
#include "utils/builtins.h"
#include "utils/guc_tables.h"
#include "utils/snapmgr.h"
+#include "utils/tuplestore.h"
static char *flatten_set_variable_args(const char *name, List *args);
static void ShowGUCConfigOption(const char *name, DestReceiver *dest);
#include "funcapi.h"
#include "miscadmin.h"
#include "utils/builtins.h"
+#include "utils/tuplestore.h"
Datum
pg_config(PG_FUNCTION_ARGS)
#include "miscadmin.h"
#include "storage/ipc.h"
#include "utils/builtins.h"
+#include "utils/hsearch.h"
#include "utils/memutils.h"
#include "utils/snapmgr.h"
#include "utils/timestamp.h"
+#include "utils/tuplestore.h"
/*
* Estimate of the maximum number of open portals a user would have,
#include "storage/buffile.h"
#include "utils/memutils.h"
#include "utils/resowner.h"
+#include "utils/tuplestore.h"
/*
#include "access/sdir.h"
#include "access/skey.h"
#include "executor/instrument_node.h"
-#include "nodes/tidbitmap.h"
#include "storage/buf.h"
#include "storage/lockdefs.h"
#include "utils/snapshot.h"
-/* We don't want this file to depend on execnodes.h. */
+
+/*
+ * forward references in this file
+ */
typedef struct IndexInfo IndexInfo;
+typedef struct RelationData *Relation;
+typedef struct TIDBitmap TIDBitmap;
typedef struct TupleTableSlot TupleTableSlot;
-/* or relcache.h */
-typedef struct RelationData *Relation;
/*
* Struct for statistics returned by ambuild
#include "catalog/pg_am_d.h"
#include "fmgr.h"
#include "lib/rbtree.h"
+#include "nodes/tidbitmap.h"
#include "storage/bufmgr.h"
/*
#ifndef BOOTSTRAP_H
#define BOOTSTRAP_H
+#include "catalog/pg_attribute.h"
#include "nodes/execnodes.h"
#include "nodes/parsenodes.h"
#include "nodes/execnodes.h"
+/*
+ * forward references in this file
+ */
+typedef struct AttrMap AttrMap;
+
+
#define DEFAULT_INDEX_TYPE "btree"
/* Action code for index_set_state_flags */
#define EXPLAIN_H
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "parser/parse_node.h"
typedef struct ExplainState ExplainState; /* defined in explain_state.h */
#include "nodes/parsenodes.h"
#include "nodes/plannodes.h"
#include "parser/parse_node.h"
+#include "port/pg_bitutils.h"
typedef enum ExplainSerializeOption
{
#include "miscadmin.h"
#include "executor/executor.h"
+#include "executor/instrument.h"
#include "nodes/execnodes.h"
/*
#ifndef EXECUTOR_H
#define EXECUTOR_H
+#include "access/xlogdefs.h"
#include "datatype/timestamp.h"
#include "executor/execdesc.h"
#include "fmgr.h"
#include "storage/barrier.h"
#include "storage/buffile.h"
#include "storage/lwlock.h"
+#include "utils/dsa.h"
+#include "utils/sharedtuplestore.h"
/* ----------------------------------------------------------------
* hash-join hash table structures
* src/include/lib/simplehash.h
*/
-#include "port/pg_bitutils.h"
/* helpers */
#define SH_MAKE_PREFIX(a) CppConcat(a,_)
/* generate implementation of the hash table */
#ifdef SH_DEFINE
+#include "port/pg_bitutils.h"
+
#ifndef SH_RAW_ALLOCATOR
#include "utils/memutils.h"
#endif
#ifndef EXECNODES_H
#define EXECNODES_H
-#include "access/skey.h"
-#include "access/tupconvert.h"
-#include "executor/instrument.h"
+#include "access/htup.h"
#include "executor/instrument_node.h"
#include "fmgr.h"
#include "lib/ilist.h"
-#include "lib/pairingheap.h"
#include "nodes/miscnodes.h"
#include "nodes/params.h"
#include "nodes/plannodes.h"
-#include "nodes/tidbitmap.h"
#include "partitioning/partdefs.h"
-#include "storage/condition_variable.h"
-#include "utils/hsearch.h"
-#include "utils/queryenvironment.h"
+#include "storage/buf.h"
#include "utils/reltrigger.h"
-#include "utils/sharedtuplestore.h"
-#include "utils/snapshot.h"
-#include "utils/sortsupport.h"
-#include "utils/tuplesort.h"
-#include "utils/tuplestore.h"
+
/*
* forward references in this file
*/
-typedef struct PlanState PlanState;
+typedef struct BufferUsage BufferUsage;
typedef struct ExecRowMark ExecRowMark;
typedef struct ExprState ExprState;
typedef struct ExprContext ExprContext;
+typedef struct HTAB HTAB;
+typedef struct Instrumentation Instrumentation;
+typedef struct pairingheap pairingheap;
+typedef struct PlanState PlanState;
+typedef struct QueryEnvironment QueryEnvironment;
+typedef struct RelationData *Relation;
+typedef Relation *RelationPtr;
+typedef struct ScanKeyData ScanKeyData;
+typedef struct SnapshotData *Snapshot;
+typedef struct SortSupportData *SortSupport;
+typedef struct TIDBitmap TIDBitmap;
+typedef struct TupleConversionMap TupleConversionMap;
+typedef struct TupleDescData *TupleDesc;
+typedef struct Tuplesortstate Tuplesortstate;
+typedef struct Tuplestorestate Tuplestorestate;
+typedef struct TupleTableSlot TupleTableSlot;
+typedef struct TupleTableSlotOps TupleTableSlotOps;
+typedef struct WalUsage WalUsage;
+typedef struct WorkerInstrumentation WorkerInstrumentation;
/* ----------------
SharedIndexScanInstrumentation *biss_SharedInfo;
} BitmapIndexScanState;
-/* ----------------
- * SharedBitmapState information
- *
- * BM_INITIAL TIDBitmap creation is not yet started, so first worker
- * to see this state will set the state to BM_INPROGRESS
- * and that process will be responsible for creating
- * TIDBitmap.
- * BM_INPROGRESS TIDBitmap creation is in progress; workers need to
- * sleep until it's finished.
- * BM_FINISHED TIDBitmap creation is done, so now all workers can
- * proceed to iterate over TIDBitmap.
- * ----------------
- */
-typedef enum
-{
- BM_INITIAL,
- BM_INPROGRESS,
- BM_FINISHED,
-} SharedBitmapState;
-
-/* ----------------
- * ParallelBitmapHeapState information
- * tbmiterator iterator for scanning current pages
- * mutex mutual exclusion for state
- * state current state of the TIDBitmap
- * cv conditional wait variable
- * ----------------
- */
-typedef struct ParallelBitmapHeapState
-{
- dsa_pointer tbmiterator;
- slock_t mutex;
- SharedBitmapState state;
- ConditionVariable cv;
-} ParallelBitmapHeapState;
/* ----------------
* BitmapHeapScanState information
* recheck do current page's tuples need recheck
* ----------------
*/
+
+/* this struct is defined in nodeBitmapHeapscan.c */
+typedef struct ParallelBitmapHeapState ParallelBitmapHeapState;
+
typedef struct BitmapHeapScanState
{
ScanState ss; /* its first field is NodeTag */
#include "access/sdir.h"
#include "access/stratnum.h"
-#include "common/relpath.h"
-#include "lib/stringinfo.h"
#include "nodes/bitmapset.h"
#include "nodes/lockoptions.h"
#include "nodes/primnodes.h"
#include "utils/memutils.h"
#include "utils/rel.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
#include "utils/typcache.h"
/* define our text domain for translations */
#include "utils/regproc.h"
#include "utils/rel.h"
#include "utils/syscache.h"
+#include "utils/tuplestore.h"
#include "utils/typcache.h"
#include "utils/guc.h"
#include "utils/injection_point.h"
#include "utils/memutils.h"
+#include "utils/tuplestore.h"
#include "utils/wait_event.h"
PG_MODULE_MAGIC;
#include "common/hashfn.h"
#include "funcapi.h"
#include "storage/dsm_registry.h"
+#include "storage/fd.h"
#include "utils/builtins.h"
#include "utils/pgstat_internal.h"
#include "tcop/deparse_utility.h"
#include "tcop/utility.h"
#include "utils/builtins.h"
+#include "utils/tuplestore.h"
PG_MODULE_MAGIC;
#include "postgres.h"
+#include "catalog/pg_type_d.h"
#include "funcapi.h"
#include "regex/regex.h"
#include "utils/array.h"