1 /*------------------------------------------------------------------------- 2 * 3 * nodeIndexscan.h 4 * 5 * 6 * 7 * Portions Copyright (c) 1996-2021, PostgreSQL Global Development Group 8 * Portions Copyright (c) 1994, Regents of the University of California 9 * 10 * src/include/executor/nodeIndexscan.h 11 * 12 *------------------------------------------------------------------------- 13 */ 14 #ifndef NODEINDEXSCAN_H 15 #define NODEINDEXSCAN_H 16 17 #include "access/genam.h" 18 #include "access/parallel.h" 19 #include "nodes/execnodes.h" 20 21 extern IndexScanState *ExecInitIndexScan(IndexScan *node, EState *estate, int eflags); 22 extern void ExecEndIndexScan(IndexScanState *node); 23 extern void ExecIndexMarkPos(IndexScanState *node); 24 extern void ExecIndexRestrPos(IndexScanState *node); 25 extern void ExecReScanIndexScan(IndexScanState *node); 26 extern void ExecIndexScanEstimate(IndexScanState *node, ParallelContext *pcxt); 27 extern void ExecIndexScanInitializeDSM(IndexScanState *node, ParallelContext *pcxt); 28 extern void ExecIndexScanReInitializeDSM(IndexScanState *node, ParallelContext *pcxt); 29 extern void ExecIndexScanInitializeWorker(IndexScanState *node, 30 ParallelWorkerContext *pwcxt); 31 32 /* 33 * These routines are exported to share code with nodeIndexonlyscan.c and 34 * nodeBitmapIndexscan.c 35 */ 36 extern void ExecIndexBuildScanKeys(PlanState *planstate, Relation index, 37 List *quals, bool isorderby, 38 ScanKey *scanKeys, int *numScanKeys, 39 IndexRuntimeKeyInfo **runtimeKeys, int *numRuntimeKeys, 40 IndexArrayKeyInfo **arrayKeys, int *numArrayKeys); 41 extern void ExecIndexEvalRuntimeKeys(ExprContext *econtext, 42 IndexRuntimeKeyInfo *runtimeKeys, int numRuntimeKeys); 43 extern bool ExecIndexEvalArrayKeys(ExprContext *econtext, 44 IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 45 extern bool ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 46 47 #endif /* NODEINDEXSCAN_H */ 48