1 /*------------------------------------------------------------------------- 2 * 3 * nodeIndexscan.h 4 * 5 * 6 * 7 * Portions Copyright (c) 1996-2017, 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, shm_toc *toc); 29 30 /* 31 * These routines are exported to share code with nodeIndexonlyscan.c and 32 * nodeBitmapIndexscan.c 33 */ 34 extern void ExecIndexBuildScanKeys(PlanState *planstate, Relation index, 35 List *quals, bool isorderby, 36 ScanKey *scanKeys, int *numScanKeys, 37 IndexRuntimeKeyInfo **runtimeKeys, int *numRuntimeKeys, 38 IndexArrayKeyInfo **arrayKeys, int *numArrayKeys); 39 extern void ExecIndexEvalRuntimeKeys(ExprContext *econtext, 40 IndexRuntimeKeyInfo *runtimeKeys, int numRuntimeKeys); 41 extern bool ExecIndexEvalArrayKeys(ExprContext *econtext, 42 IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 43 extern bool ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 44 45 #endif /* NODEINDEXSCAN_H */ 46