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-2021, 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