1 /*------------------------------------------------------------------------- 2 * 3 * nodeIndexscan.h 4 * 5 * 6 * 7 * Portions Copyright (c) 1996-2018, 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/parallel.h" 18 #include "nodes/execnodes.h" 19 20 extern IndexScanState *ExecInitIndexScan(IndexScan *node, EState *estate, int eflags); 21 extern void ExecEndIndexScan(IndexScanState *node); 22 extern void ExecIndexMarkPos(IndexScanState *node); 23 extern void ExecIndexRestrPos(IndexScanState *node); 24 extern void ExecReScanIndexScan(IndexScanState *node); 25 extern void ExecIndexScanEstimate(IndexScanState *node, ParallelContext *pcxt); 26 extern void ExecIndexScanInitializeDSM(IndexScanState *node, ParallelContext *pcxt); 27 extern void ExecIndexScanReInitializeDSM(IndexScanState *node, ParallelContext *pcxt); 28 extern void ExecIndexScanInitializeWorker(IndexScanState *node, 29 ParallelWorkerContext *pwcxt); 30 31 /* 32 * These routines are exported to share code with nodeIndexonlyscan.c and 33 * nodeBitmapIndexscan.c 34 */ 35 extern void ExecIndexBuildScanKeys(PlanState *planstate, Relation index, 36 List *quals, bool isorderby, 37 ScanKey *scanKeys, int *numScanKeys, 38 IndexRuntimeKeyInfo **runtimeKeys, int *numRuntimeKeys, 39 IndexArrayKeyInfo **arrayKeys, int *numArrayKeys); 40 extern void ExecIndexEvalRuntimeKeys(ExprContext *econtext, 41 IndexRuntimeKeyInfo *runtimeKeys, int numRuntimeKeys); 42 extern bool ExecIndexEvalArrayKeys(ExprContext *econtext, 43 IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 44 extern bool ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 45 46 #endif /* NODEINDEXSCAN_H */ 47