1 /*-------------------------------------------------------------------------
2  *
3  * index_selfuncs.h
4  *	  Index cost estimation functions for standard index access methods.
5  *
6  *
7  * Note: this is split out of selfuncs.h mainly to avoid importing all of the
8  * planner's data structures into the non-planner parts of the index AMs.
9  * If you make it depend on anything besides access/amapi.h, that's likely
10  * a mistake.
11  *
12  * Portions Copyright (c) 1996-2016, PostgreSQL Global Development Group
13  * Portions Copyright (c) 1994, Regents of the University of California
14  *
15  * src/include/utils/index_selfuncs.h
16  *
17  *-------------------------------------------------------------------------
18  */
19 #ifndef INDEX_SELFUNCS_H
20 #define INDEX_SELFUNCS_H
21 
22 #include "access/amapi.h"
23 
24 /* Functions in selfuncs.c */
25 extern void brincostestimate(struct PlannerInfo *root,
26 				 struct IndexPath *path,
27 				 double loop_count,
28 				 Cost *indexStartupCost,
29 				 Cost *indexTotalCost,
30 				 Selectivity *indexSelectivity,
31 				 double *indexCorrelation);
32 extern void btcostestimate(struct PlannerInfo *root,
33 			   struct IndexPath *path,
34 			   double loop_count,
35 			   Cost *indexStartupCost,
36 			   Cost *indexTotalCost,
37 			   Selectivity *indexSelectivity,
38 			   double *indexCorrelation);
39 extern void hashcostestimate(struct PlannerInfo *root,
40 				 struct IndexPath *path,
41 				 double loop_count,
42 				 Cost *indexStartupCost,
43 				 Cost *indexTotalCost,
44 				 Selectivity *indexSelectivity,
45 				 double *indexCorrelation);
46 extern void gistcostestimate(struct PlannerInfo *root,
47 				 struct IndexPath *path,
48 				 double loop_count,
49 				 Cost *indexStartupCost,
50 				 Cost *indexTotalCost,
51 				 Selectivity *indexSelectivity,
52 				 double *indexCorrelation);
53 extern void spgcostestimate(struct PlannerInfo *root,
54 				struct IndexPath *path,
55 				double loop_count,
56 				Cost *indexStartupCost,
57 				Cost *indexTotalCost,
58 				Selectivity *indexSelectivity,
59 				double *indexCorrelation);
60 extern void gincostestimate(struct PlannerInfo *root,
61 				struct IndexPath *path,
62 				double loop_count,
63 				Cost *indexStartupCost,
64 				Cost *indexTotalCost,
65 				Selectivity *indexSelectivity,
66 				double *indexCorrelation);
67 
68 #endif   /* INDEX_SELFUNCS_H */
69