1 /*------------------------------------------------------------------------- 2 * 3 * nodeIndexscan.h 4 * 5 * 6 * 7 * Portions Copyright (c) 1996-2016, 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 "nodes/execnodes.h" 18 19 extern IndexScanState *ExecInitIndexScan(IndexScan *node, EState *estate, int eflags); 20 extern TupleTableSlot *ExecIndexScan(IndexScanState *node); 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 26 /* 27 * These routines are exported to share code with nodeIndexonlyscan.c and 28 * nodeBitmapIndexscan.c 29 */ 30 extern void ExecIndexBuildScanKeys(PlanState *planstate, Relation index, 31 List *quals, bool isorderby, 32 ScanKey *scanKeys, int *numScanKeys, 33 IndexRuntimeKeyInfo **runtimeKeys, int *numRuntimeKeys, 34 IndexArrayKeyInfo **arrayKeys, int *numArrayKeys); 35 extern void ExecIndexEvalRuntimeKeys(ExprContext *econtext, 36 IndexRuntimeKeyInfo *runtimeKeys, int numRuntimeKeys); 37 extern bool ExecIndexEvalArrayKeys(ExprContext *econtext, 38 IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 39 extern bool ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo *arrayKeys, int numArrayKeys); 40 41 #endif /* NODEINDEXSCAN_H */ 42