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-2017, 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 				 double *indexPages);
33 extern void btcostestimate(struct PlannerInfo *root,
34 			   struct IndexPath *path,
35 			   double loop_count,
36 			   Cost *indexStartupCost,
37 			   Cost *indexTotalCost,
38 			   Selectivity *indexSelectivity,
39 			   double *indexCorrelation,
40 			   double *indexPages);
41 extern void hashcostestimate(struct PlannerInfo *root,
42 				 struct IndexPath *path,
43 				 double loop_count,
44 				 Cost *indexStartupCost,
45 				 Cost *indexTotalCost,
46 				 Selectivity *indexSelectivity,
47 				 double *indexCorrelation,
48 				 double *indexPages);
49 extern void gistcostestimate(struct PlannerInfo *root,
50 				 struct IndexPath *path,
51 				 double loop_count,
52 				 Cost *indexStartupCost,
53 				 Cost *indexTotalCost,
54 				 Selectivity *indexSelectivity,
55 				 double *indexCorrelation,
56 				 double *indexPages);
57 extern void spgcostestimate(struct PlannerInfo *root,
58 				struct IndexPath *path,
59 				double loop_count,
60 				Cost *indexStartupCost,
61 				Cost *indexTotalCost,
62 				Selectivity *indexSelectivity,
63 				double *indexCorrelation,
64 				double *indexPages);
65 extern void gincostestimate(struct PlannerInfo *root,
66 				struct IndexPath *path,
67 				double loop_count,
68 				Cost *indexStartupCost,
69 				Cost *indexTotalCost,
70 				Selectivity *indexSelectivity,
71 				double *indexCorrelation,
72 				double *indexPages);
73 
74 #endif							/* INDEX_SELFUNCS_H */
75