1 /*-------------------------------------------------------------------------
7 * Portions Copyright (c) 1996-2008, PostgreSQL Global Development Group
8 * Portions Copyright (c) 1994, Regents of the University of California
12 *-------------------------------------------------------------------------
14 #ifndef NODEINDEXSCAN_H
15 #define NODEINDEXSCAN_H
17 #include "nodes/execnodes.h"
19 extern int ExecCountSlotsIndexScan(IndexScan
*node
);
20 extern IndexScanState
*ExecInitIndexScan(IndexScan
*node
, EState
*estate
, int eflags
);
21 extern TupleTableSlot
*ExecIndexScan(IndexScanState
*node
);
22 extern void ExecEndIndexScan(IndexScanState
*node
);
23 extern void ExecIndexMarkPos(IndexScanState
*node
);
24 extern void ExecIndexRestrPos(IndexScanState
*node
);
25 extern void ExecIndexReScan(IndexScanState
*node
, ExprContext
*exprCtxt
);
27 /* routines exported to share code with nodeBitmapIndexscan.c */
28 extern void ExecIndexBuildScanKeys(PlanState
*planstate
, Relation index
,
30 List
*quals
, ScanKey
*scanKeys
, int *numScanKeys
,
31 IndexRuntimeKeyInfo
**runtimeKeys
, int *numRuntimeKeys
,
32 IndexArrayKeyInfo
**arrayKeys
, int *numArrayKeys
);
33 extern void ExecIndexEvalRuntimeKeys(ExprContext
*econtext
,
34 IndexRuntimeKeyInfo
*runtimeKeys
, int numRuntimeKeys
);
35 extern bool ExecIndexEvalArrayKeys(ExprContext
*econtext
,
36 IndexArrayKeyInfo
*arrayKeys
, int numArrayKeys
);
37 extern bool ExecIndexAdvanceArrayKeys(IndexArrayKeyInfo
*arrayKeys
, int numArrayKeys
);
39 #endif /* NODEINDEXSCAN_H */