|
|
|
@ -334,11 +334,11 @@ struct PlannerInfo |
|
|
|
|
|
|
|
|
|
MemoryContext planner_cxt; /* context holding PlannerInfo */ |
|
|
|
|
|
|
|
|
|
double total_table_pages; /* # of pages in all non-dummy tables of
|
|
|
|
|
Cardinality total_table_pages; /* # of pages in all non-dummy tables of
|
|
|
|
|
* query */ |
|
|
|
|
|
|
|
|
|
double tuple_fraction; /* tuple_fraction passed to query_planner */ |
|
|
|
|
double limit_tuples; /* limit_tuples passed to query_planner */ |
|
|
|
|
Selectivity tuple_fraction; /* tuple_fraction passed to query_planner */ |
|
|
|
|
Cardinality limit_tuples; /* limit_tuples passed to query_planner */ |
|
|
|
|
|
|
|
|
|
Index qual_security_level; /* minimum security_level for quals */ |
|
|
|
|
/* Note: qual_security_level is zero if there are no securityQuals */ |
|
|
|
@ -681,7 +681,7 @@ typedef struct RelOptInfo |
|
|
|
|
Relids relids; /* set of base relids (rangetable indexes) */ |
|
|
|
|
|
|
|
|
|
/* size estimates generated by planner */ |
|
|
|
|
double rows; /* estimated number of result tuples */ |
|
|
|
|
Cardinality rows; /* estimated number of result tuples */ |
|
|
|
|
|
|
|
|
|
/* per-relation planner control flags */ |
|
|
|
|
bool consider_startup; /* keep cheap-startup-cost paths? */ |
|
|
|
@ -718,7 +718,7 @@ typedef struct RelOptInfo |
|
|
|
|
List *indexlist; /* list of IndexOptInfo */ |
|
|
|
|
List *statlist; /* list of StatisticExtInfo */ |
|
|
|
|
BlockNumber pages; /* size estimates derived from pg_class */ |
|
|
|
|
double tuples; |
|
|
|
|
Cardinality tuples; |
|
|
|
|
double allvisfrac; |
|
|
|
|
Bitmapset *eclass_indexes; /* Indexes in PlannerInfo's eq_classes list of
|
|
|
|
|
* ECs that mention this rel */ |
|
|
|
@ -841,7 +841,7 @@ struct IndexOptInfo |
|
|
|
|
|
|
|
|
|
/* index-size statistics (from pg_class and elsewhere) */ |
|
|
|
|
BlockNumber pages; /* number of disk pages in index */ |
|
|
|
|
double tuples; /* number of index tuples in index */ |
|
|
|
|
Cardinality tuples; /* number of index tuples in index */ |
|
|
|
|
int tree_height; /* index tree height, or -1 if unknown */ |
|
|
|
|
|
|
|
|
|
/* index descriptor information */ |
|
|
|
@ -1139,7 +1139,7 @@ typedef struct ParamPathInfo |
|
|
|
|
NodeTag type; |
|
|
|
|
|
|
|
|
|
Relids ppi_req_outer; /* rels supplying parameters used by path */ |
|
|
|
|
double ppi_rows; /* estimated number of result tuples */ |
|
|
|
|
Cardinality ppi_rows; /* estimated number of result tuples */ |
|
|
|
|
List *ppi_clauses; /* join clauses available from outer rels */ |
|
|
|
|
} ParamPathInfo; |
|
|
|
|
|
|
|
|
@ -1189,7 +1189,7 @@ typedef struct Path |
|
|
|
|
int parallel_workers; /* desired # of workers; 0 = not parallel */ |
|
|
|
|
|
|
|
|
|
/* estimated size/costs for path (see costsize.c for more info) */ |
|
|
|
|
double rows; /* estimated number of result tuples */ |
|
|
|
|
Cardinality rows; /* estimated number of result tuples */ |
|
|
|
|
Cost startup_cost; /* cost expended before fetching any tuples */ |
|
|
|
|
Cost total_cost; /* total cost (assuming all tuples fetched) */ |
|
|
|
|
|
|
|
|
@ -1452,7 +1452,7 @@ typedef struct AppendPath |
|
|
|
|
List *subpaths; /* list of component Paths */ |
|
|
|
|
/* Index of first partial path in subpaths; list_length(subpaths) if none */ |
|
|
|
|
int first_partial_path; |
|
|
|
|
double limit_tuples; /* hard limit on output tuples, or -1 */ |
|
|
|
|
Cardinality limit_tuples; /* hard limit on output tuples, or -1 */ |
|
|
|
|
} AppendPath; |
|
|
|
|
|
|
|
|
|
#define IS_DUMMY_APPEND(p) \ |
|
|
|
@ -1474,7 +1474,7 @@ typedef struct MergeAppendPath |
|
|
|
|
{ |
|
|
|
|
Path path; |
|
|
|
|
List *subpaths; /* list of component Paths */ |
|
|
|
|
double limit_tuples; /* hard limit on output tuples, or -1 */ |
|
|
|
|
Cardinality limit_tuples; /* hard limit on output tuples, or -1 */ |
|
|
|
|
} MergeAppendPath; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -1515,7 +1515,7 @@ typedef struct MemoizePath |
|
|
|
|
List *param_exprs; /* cache keys */ |
|
|
|
|
bool singlerow; /* true if the cache entry is to be marked as
|
|
|
|
|
* complete after caching the first record. */ |
|
|
|
|
double calls; /* expected number of rescans */ |
|
|
|
|
Cardinality calls; /* expected number of rescans */ |
|
|
|
|
uint32 est_entries; /* The maximum number of entries that the
|
|
|
|
|
* planner expects will fit in the cache, or 0 |
|
|
|
|
* if unknown */ |
|
|
|
@ -1667,7 +1667,7 @@ typedef struct HashPath |
|
|
|
|
JoinPath jpath; |
|
|
|
|
List *path_hashclauses; /* join clauses used for hashing */ |
|
|
|
|
int num_batches; /* number of batches expected */ |
|
|
|
|
double inner_rows_total; /* total inner rows expected */ |
|
|
|
|
Cardinality inner_rows_total; /* total inner rows expected */ |
|
|
|
|
} HashPath; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -1770,7 +1770,7 @@ typedef struct AggPath |
|
|
|
|
Path *subpath; /* path representing input source */ |
|
|
|
|
AggStrategy aggstrategy; /* basic strategy, see nodes.h */ |
|
|
|
|
AggSplit aggsplit; /* agg-splitting mode, see nodes.h */ |
|
|
|
|
double numGroups; /* estimated number of groups in input */ |
|
|
|
|
Cardinality numGroups; /* estimated number of groups in input */ |
|
|
|
|
uint64 transitionSpace; /* for pass-by-ref transition data */ |
|
|
|
|
List *groupClause; /* a list of SortGroupClause's */ |
|
|
|
|
List *qual; /* quals (HAVING quals), if any */ |
|
|
|
@ -1784,7 +1784,7 @@ typedef struct GroupingSetData |
|
|
|
|
{ |
|
|
|
|
NodeTag type; |
|
|
|
|
List *set; /* grouping set as list of sortgrouprefs */ |
|
|
|
|
double numGroups; /* est. number of result groups */ |
|
|
|
|
Cardinality numGroups; /* est. number of result groups */ |
|
|
|
|
} GroupingSetData; |
|
|
|
|
|
|
|
|
|
typedef struct RollupData |
|
|
|
@ -1793,7 +1793,7 @@ typedef struct RollupData |
|
|
|
|
List *groupClause; /* applicable subset of parse->groupClause */ |
|
|
|
|
List *gsets; /* lists of integer indexes into groupClause */ |
|
|
|
|
List *gsets_data; /* list of GroupingSetData */ |
|
|
|
|
double numGroups; /* est. number of result groups */ |
|
|
|
|
Cardinality numGroups; /* est. number of result groups */ |
|
|
|
|
bool hashable; /* can be hashed */ |
|
|
|
|
bool is_hashed; /* to be implemented as a hashagg */ |
|
|
|
|
} RollupData; |
|
|
|
@ -1844,7 +1844,7 @@ typedef struct SetOpPath |
|
|
|
|
List *distinctList; /* SortGroupClauses identifying target cols */ |
|
|
|
|
AttrNumber flagColIdx; /* where is the flag column, if any */ |
|
|
|
|
int firstFlag; /* flag value for first input relation */ |
|
|
|
|
double numGroups; /* estimated number of groups in input */ |
|
|
|
|
Cardinality numGroups; /* estimated number of groups in input */ |
|
|
|
|
} SetOpPath; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -1857,7 +1857,7 @@ typedef struct RecursiveUnionPath |
|
|
|
|
Path *rightpath; |
|
|
|
|
List *distinctList; /* SortGroupClauses identifying target cols */ |
|
|
|
|
int wtParam; /* ID of Param representing work table */ |
|
|
|
|
double numGroups; /* estimated number of groups in input */ |
|
|
|
|
Cardinality numGroups; /* estimated number of groups in input */ |
|
|
|
|
} RecursiveUnionPath; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
@ -2612,7 +2612,7 @@ typedef struct |
|
|
|
|
typedef struct |
|
|
|
|
{ |
|
|
|
|
bool limit_needed; |
|
|
|
|
double limit_tuples; |
|
|
|
|
Cardinality limit_tuples; |
|
|
|
|
int64 count_est; |
|
|
|
|
int64 offset_est; |
|
|
|
|
} FinalPathExtraData; |
|
|
|
@ -2643,15 +2643,15 @@ typedef struct JoinCostWorkspace |
|
|
|
|
Cost inner_rescan_run_cost; |
|
|
|
|
|
|
|
|
|
/* private for cost_mergejoin code */ |
|
|
|
|
double outer_rows; |
|
|
|
|
double inner_rows; |
|
|
|
|
double outer_skip_rows; |
|
|
|
|
double inner_skip_rows; |
|
|
|
|
Cardinality outer_rows; |
|
|
|
|
Cardinality inner_rows; |
|
|
|
|
Cardinality outer_skip_rows; |
|
|
|
|
Cardinality inner_skip_rows; |
|
|
|
|
|
|
|
|
|
/* private for cost_hashjoin code */ |
|
|
|
|
int numbuckets; |
|
|
|
|
int numbatches; |
|
|
|
|
double inner_rows_total; |
|
|
|
|
Cardinality inner_rows_total; |
|
|
|
|
} JoinCostWorkspace; |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|