codekingpro/portable-devtools
114k
1/*-------------------------------------------------------------------------2 *3 * plancat.h4 * prototypes for plancat.c.5 *6 *7 * Portions Copyright (c) 1996-2023, PostgreSQL Global Development Group8 * Portions Copyright (c) 1994, Regents of the University of California9 *10 * src/include/optimizer/plancat.h11 *12 *-------------------------------------------------------------------------13 */14#ifndef PLANCAT_H15#define PLANCAT_H16 17#include "nodes/pathnodes.h"18#include "utils/relcache.h"19 20/* Hook for plugins to get control in get_relation_info() */21typedef void (*get_relation_info_hook_type) (PlannerInfo *root,22 Oid relationObjectId,23 bool inhparent,24 RelOptInfo *rel);25extern PGDLLIMPORT get_relation_info_hook_type get_relation_info_hook;26 27 28extern void get_relation_info(PlannerInfo *root, Oid relationObjectId,29 bool inhparent, RelOptInfo *rel);30 31extern List *infer_arbiter_indexes(PlannerInfo *root);32 33extern void estimate_rel_size(Relation rel, int32 *attr_widths,34 BlockNumber *pages, double *tuples, double *allvisfrac);35 36extern int32 get_rel_data_width(Relation rel, int32 *attr_widths);37extern int32 get_relation_data_width(Oid relid, int32 *attr_widths);38 39extern bool relation_excluded_by_constraints(PlannerInfo *root,40 RelOptInfo *rel, RangeTblEntry *rte);41 42extern List *build_physical_tlist(PlannerInfo *root, RelOptInfo *rel);43 44extern bool has_unique_index(RelOptInfo *rel, AttrNumber attno);45 46extern Selectivity restriction_selectivity(PlannerInfo *root,47 Oid operatorid,48 List *args,49 Oid inputcollid,50 int varRelid);51 52extern Selectivity join_selectivity(PlannerInfo *root,53 Oid operatorid,54 List *args,55 Oid inputcollid,56 JoinType jointype,57 SpecialJoinInfo *sjinfo);58 59extern Selectivity function_selectivity(PlannerInfo *root,60 Oid funcid,61 List *args,62 Oid inputcollid,63 bool is_join,64 int varRelid,65 JoinType jointype,66 SpecialJoinInfo *sjinfo);67 68extern void add_function_cost(PlannerInfo *root, Oid funcid, Node *node,69 QualCost *cost);70 71extern double get_function_rows(PlannerInfo *root, Oid funcid, Node *node);72 73extern bool has_row_triggers(PlannerInfo *root, Index rti, CmdType event);74 75extern bool has_stored_generated_columns(PlannerInfo *root, Index rti);76 77extern Bitmapset *get_dependent_generated_columns(PlannerInfo *root, Index rti,78 Bitmapset *target_cols);79 80#endif /* PLANCAT_H */81 