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