diff options
Diffstat (limited to 'src/backend/optimizer/cost.h')
-rw-r--r-- | src/backend/optimizer/cost.h | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/src/backend/optimizer/cost.h b/src/backend/optimizer/cost.h new file mode 100644 index 00000000000..041dcbbe8e8 --- /dev/null +++ b/src/backend/optimizer/cost.h @@ -0,0 +1,59 @@ +/*------------------------------------------------------------------------- + * + * cost.h-- + * prototypes for costsize.c and clausesel.c. + * + * + * Copyright (c) 1994, Regents of the University of California + * + * $Id: cost.h,v 1.1.1.1 1996/07/09 06:21:34 scrappy Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef COST_H +#define COST_H + +/* + * prototypes for costsize.c-- + * routines to compute costs and sizes + */ +extern bool _enable_seqscan_; +extern bool _enable_indexscan_; +extern bool _enable_sort_; +extern bool _enable_hash_; +extern bool _enable_nestloop_; +extern bool _enable_mergesort_; +extern bool _enable_hashjoin_; + +extern Cost cost_seqscan(int relid, int relpages, int reltuples); +extern Cost cost_index(Oid indexid, int expected_indexpages, Cost selec, + int relpages, int reltuples, int indexpages, + int indextuples, bool is_injoin); +extern Cost cost_sort(List *keys, int tuples, int width, bool noread); +extern Cost cost_result(int tuples, int width); +extern Cost cost_nestloop(Cost outercost, Cost innercost, int outertuples, + int innertuples, int outerpages, bool is_indexjoin); +extern Cost cost_mergesort(Cost outercost, Cost innercost, + List *outersortkeys, List *innersortkeys, + int outersize, int innersize, int outerwidth, int innerwidth); +extern Cost cost_hashjoin(Cost outercost, Cost innercost, List *outerkeys, + List *innerkeys, int outersize, int innersize, + int outerwidth, int innerwidth); +extern int compute_rel_size(Rel *rel); +extern int compute_rel_width(Rel *rel); +extern int compute_targetlist_width(List *targetlist); +extern int compute_joinrel_size(JoinPath *joinpath); +extern int page_size(int tuples, int width); + +/* + * prototypes for fuctions in clausesel.h-- + * routines to compute clause selectivities + */ +extern void set_clause_selectivities(List *clauseinfo_list, Cost new_selectivity); +extern Cost product_selec(List *clauseinfo_list); +extern void set_rest_relselec(Query *root, List *rel_list); +extern void set_rest_selec(Query *root,List *clauseinfo_list); +extern Cost compute_clause_selec(Query *root, + Node *clause, List *or_selectivities); + +#endif /* COST_H */ |