Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef PLANCAT_H
00015 #define PLANCAT_H
00016
00017 #include "nodes/relation.h"
00018 #include "utils/relcache.h"
00019
00020
00021 typedef void (*get_relation_info_hook_type) (PlannerInfo *root,
00022 Oid relationObjectId,
00023 bool inhparent,
00024 RelOptInfo *rel);
00025 extern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;
00026
00027
00028 extern void get_relation_info(PlannerInfo *root, Oid relationObjectId,
00029 bool inhparent, RelOptInfo *rel);
00030
00031 extern void estimate_rel_size(Relation rel, int32 *attr_widths,
00032 BlockNumber *pages, double *tuples, double *allvisfrac);
00033
00034 extern int32 get_relation_data_width(Oid relid, int32 *attr_widths);
00035
00036 extern bool relation_excluded_by_constraints(PlannerInfo *root,
00037 RelOptInfo *rel, RangeTblEntry *rte);
00038
00039 extern List *build_physical_tlist(PlannerInfo *root, RelOptInfo *rel);
00040
00041 extern bool has_unique_index(RelOptInfo *rel, AttrNumber attno);
00042
00043 extern Selectivity restriction_selectivity(PlannerInfo *root,
00044 Oid operatorid,
00045 List *args,
00046 Oid inputcollid,
00047 int varRelid);
00048
00049 extern Selectivity join_selectivity(PlannerInfo *root,
00050 Oid operatorid,
00051 List *args,
00052 Oid inputcollid,
00053 JoinType jointype,
00054 SpecialJoinInfo *sjinfo);
00055
00056 #endif