Header And Logo

PostgreSQL
| The world's most advanced open source database.

plancat.h

Go to the documentation of this file.
00001 /*-------------------------------------------------------------------------
00002  *
00003  * plancat.h
00004  *    prototypes for plancat.c.
00005  *
00006  *
00007  * Portions Copyright (c) 1996-2013, PostgreSQL Global Development Group
00008  * Portions Copyright (c) 1994, Regents of the University of California
00009  *
00010  * src/include/optimizer/plancat.h
00011  *
00012  *-------------------------------------------------------------------------
00013  */
00014 #ifndef PLANCAT_H
00015 #define PLANCAT_H
00016 
00017 #include "nodes/relation.h"
00018 #include "utils/relcache.h"
00019 
00020 /* Hook for plugins to get control in get_relation_info() */
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   /* PLANCAT_H */