185#define planner_subplan_get_plan(root, subplan) \
186 ((Plan *) list_nth((root)->glob->subplans, (subplan)->plan_id - 1))
206#ifndef HAVE_PLANNERINFO_TYPEDEF
208#define HAVE_PLANNERINFO_TYPEDEF 1
589#define planner_rt_fetch(rti, root) \
590 ((root)->simple_rte_array ? (root)->simple_rte_array[rti] : \
591 rt_fetch(rti, (root)->parse->rtable))
842#define AMFLAG_HAS_TID_RANGE (1 << 0)
858#define IS_SIMPLE_REL(rel) \
859 ((rel)->reloptkind == RELOPT_BASEREL || \
860 (rel)->reloptkind == RELOPT_OTHER_MEMBER_REL)
863#define IS_JOIN_REL(rel) \
864 ((rel)->reloptkind == RELOPT_JOINREL || \
865 (rel)->reloptkind == RELOPT_OTHER_JOINREL)
868#define IS_UPPER_REL(rel) \
869 ((rel)->reloptkind == RELOPT_UPPER_REL || \
870 (rel)->reloptkind == RELOPT_OTHER_UPPER_REL)
873#define IS_OTHER_REL(rel) \
874 ((rel)->reloptkind == RELOPT_OTHER_MEMBER_REL || \
875 (rel)->reloptkind == RELOPT_OTHER_JOINREL || \
876 (rel)->reloptkind == RELOPT_OTHER_UPPER_REL)
1081#define IS_PARTITIONED_REL(rel) \
1082 ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \
1083 (rel)->part_rels && !IS_DUMMY_REL(rel))
1089#define REL_HAS_ALL_PART_PROPS(rel) \
1090 ((rel)->part_scheme && (rel)->boundinfo && (rel)->nparts > 0 && \
1091 (rel)->part_rels && (rel)->partexprs && (rel)->nullable_partexprs)
1124#ifndef HAVE_INDEXOPTINFO_TYPEDEF
1126#define HAVE_INDEXOPTINFO_TYPEDEF 1
1433#define EC_MUST_BE_REDUNDANT(eclass) \
1434 ((eclass)->ec_has_const)
1579#define get_pathtarget_sortgroupref(target, colno) \
1580 ((target)->sortgrouprefs ? (target)->sortgrouprefs[colno] : (Index) 0)
1700#define PATH_REQ_OUTER(path) \
1701 ((path)->param_info ? (path)->param_info->ppi_req_outer : (Relids) NULL)
1969#define IS_DUMMY_APPEND(p) \
1970 (IsA((p), AppendPath) && ((AppendPath *) (p))->subpaths == NIL)
1977#define IS_DUMMY_REL(r) is_dummy_rel(r)
2751#define RINFO_IS_PUSHED_DOWN(rinfo, joinrelids) \
2752 ((rinfo)->is_pushed_down || \
2753 !bms_is_subset((rinfo)->required_relids, joinrelids))
2914#ifndef HAVE_SPECIALJOININFO_TYPEDEF
2916#define HAVE_SPECIALJOININFO_TYPEDEF 1
3283#define GROUPING_CAN_USE_SORT 0x0001
3284#define GROUPING_CAN_USE_HASH 0x0002
3285#define GROUPING_CAN_PARTIAL_AGG 0x0004
struct AggTransInfo AggTransInfo
struct MergeScanSelCache MergeScanSelCache
struct IndexPath IndexPath
struct TidRangePath TidRangePath
struct JoinCostWorkspace JoinCostWorkspace
bool is_dummy_rel(RelOptInfo *rel)
PartitionwiseAggregateType
@ PARTITIONWISE_AGGREGATE_PARTIAL
@ PARTITIONWISE_AGGREGATE_FULL
@ PARTITIONWISE_AGGREGATE_NONE
struct ForeignPath ForeignPath
struct OuterJoinClauseInfo OuterJoinClauseInfo
struct StatisticExtInfo StatisticExtInfo
struct SetOpPath SetOpPath
struct RollupData RollupData
struct BitmapOrPath BitmapOrPath
struct PlannerGlobal PlannerGlobal
struct ParamPathInfo ParamPathInfo
struct SubqueryScanPath SubqueryScanPath
struct UniquePath UniquePath
struct AggClauseCosts AggClauseCosts
struct EquivalenceClass EquivalenceClass
struct RecursiveUnionPath RecursiveUnionPath
struct EquivalenceMember EquivalenceMember
struct MaterialPath MaterialPath
struct AppendRelInfo AppendRelInfo
struct PartitionSchemeData PartitionSchemeData
struct ProjectionPath ProjectionPath
struct CustomPath CustomPath
struct BitmapAndPath BitmapAndPath
struct PartitionSchemeData * PartitionScheme
struct WindowAggPath WindowAggPath
struct GroupByOrdering GroupByOrdering
struct MinMaxAggInfo MinMaxAggInfo
struct RelOptInfo RelOptInfo
struct GroupingSetsPath GroupingSetsPath
struct IncrementalSortPath IncrementalSortPath
struct ProjectSetPath ProjectSetPath
struct MergePath MergePath
struct LockRowsPath LockRowsPath
struct MergeAppendPath MergeAppendPath
struct GroupPath GroupPath
struct GroupResultPath GroupResultPath
struct MemoizePath MemoizePath
@ UPPERREL_PARTIAL_GROUP_AGG
@ UPPERREL_PARTIAL_DISTINCT
struct PlaceHolderVar PlaceHolderVar
@ RELOPT_OTHER_MEMBER_REL
struct RestrictInfo RestrictInfo
struct JoinPathExtraData JoinPathExtraData
struct ModifyTablePath ModifyTablePath
struct LimitPath LimitPath
struct GroupingSetData GroupingSetData
struct UpperUniquePath UpperUniquePath
struct MinMaxAggPath MinMaxAggPath
struct PlannerParamItem PlannerParamItem
struct ForeignKeyOptInfo ForeignKeyOptInfo
struct PathTarget PathTarget
struct IndexClause IndexClause
struct PlaceHolderInfo PlaceHolderInfo
struct GatherPath GatherPath
struct SemiAntiJoinFactors SemiAntiJoinFactors
struct JoinDomain JoinDomain
struct RowIdentityVarInfo RowIdentityVarInfo
struct AppendPath AppendPath
struct GatherMergePath GatherMergePath
struct BitmapHeapPath BitmapHeapPath
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
Datum initValue pg_node_attr(read_write_ignore)
pg_node_attr(no_query_jumble) NodeTag type
AttrNumber *parent_colnos pg_node_attr(array_size(num_child_cols))
Selectivity bitmapselectivity
Selectivity bitmapselectivity
const struct CustomPathMethods * methods
List * custom_restrictinfo
pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble) NodeTag type
struct EquivalenceClass * ec_merged
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
struct EquivalenceMember *em_parent pg_node_attr(read_write_ignore)
AttrNumber conkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys))
AttrNumber confkey[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys))
struct EquivalenceClass * eclass[INDEX_MAX_KEYS]
pg_node_attr(custom_read_write, no_copy_equal, no_read, no_query_jumble) NodeTag type
Oid conpfeqop[INDEX_MAX_KEYS] pg_node_attr(array_size(nkeys))
List * rinfos[INDEX_MAX_KEYS]
struct EquivalenceMember * fk_eclass_member[INDEX_MAX_KEYS]
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
Cardinality inner_rows_total
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
struct RestrictInfo * rinfo
int *indexkeys pg_node_attr(array_size(ncolumns))
bytea **opclassoptions pg_node_attr(read_write_ignore)
Oid *sortopfamily pg_node_attr(array_size(nkeycolumns))
void(* amcostestimate)(struct PlannerInfo *, struct IndexPath *, double, Cost *, Cost *, Selectivity *, double *, double *) pg_node_attr(read_write_ignore)
List *indexprs pg_node_attr(read_write_ignore)
bool *nulls_first pg_node_attr(array_size(nkeycolumns))
Oid *opcintype pg_node_attr(array_size(nkeycolumns))
RelOptInfo *rel pg_node_attr(read_write_ignore)
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
Oid *indexcollations pg_node_attr(array_size(nkeycolumns))
bool *reverse_sort pg_node_attr(array_size(nkeycolumns))
Oid *opfamily pg_node_attr(array_size(nkeycolumns))
bool *canreturn pg_node_attr(array_size(ncolumns))
ScanDirection indexscandir
Selectivity indexselectivity
Cost inner_rescan_run_cost
Cardinality inner_skip_rows
Cardinality inner_rows_total
Cardinality outer_skip_rows
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
pg_node_attr(abstract) Path path
Selectivity rightstartsel
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
PlannerInfo *subroot pg_node_attr(read_write_ignore)
List * withCheckOptionLists
List * mergeJoinConditions
OnConflictExpr * onconflict
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
struct FmgrInfo * partsupfunc
EquivalenceClass *pk_eclass pg_node_attr(copy_as_scalar, equal_as_scalar)
pg_node_attr(no_read, no_query_jumble) NodeTag type
VolatileFunctionStatus has_volatile_expr
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
Index *sortgrouprefs pg_node_attr(array_size(exprs))
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
PathTarget *pathtarget pg_node_attr(write_only_nondefault_pathtarget)
ParamPathInfo *param_info pg_node_attr(write_only_req_outer)
RelOptInfo *parent pg_node_attr(write_only_relids)
pg_node_attr(no_read, no_query_jumble) NodeTag type
Relids phrels pg_node_attr(equal_ignore)
pg_node_attr(no_query_jumble) Expr xpr
Expr *phexpr pg_node_attr(equal_ignore)
Bitmapset * prunableRelids
PartitionDirectory partition_directory pg_node_attr(read_write_ignore)
List *subroots pg_node_attr(read_write_ignore)
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
Bitmapset * rewindPlanIDs
ParamListInfo boundParams pg_node_attr(read_write_ignore)
void *join_search_private pg_node_attr(read_write_ignore)
struct HTAB *join_rel_hash pg_node_attr(read_write_ignore)
struct RelOptInfo **simple_rel_array pg_node_attr(array_size(simple_rel_array_size))
AttrNumber *grouping_map pg_node_attr(read_write_ignore)
struct PathTarget *upper_targets[UPPERREL_FINAL+1] pg_node_attr(read_write_ignore)
int simple_rel_array_size
struct AppendRelInfo **append_rel_array pg_node_attr(read_write_ignore)
Index qual_security_level
struct PlaceHolderInfo **placeholder_array pg_node_attr(read_write_ignore, array_size(placeholder_array_size))
struct Path * non_recursive_path
List **join_rel_level pg_node_attr(read_write_ignore)
MemoryContext planner_cxt pg_node_attr(read_write_ignore)
RangeTblEntry **simple_rte_array pg_node_attr(read_write_ignore)
List * processed_groupClause
List *upper_rels[UPPERREL_FINAL+1] pg_node_attr(read_write_ignore)
bool hasAlternativeSubPlans
List * right_join_clauses
List *part_schemes pg_node_attr(read_write_ignore)
List * processed_distinctClause
Cardinality total_table_pages
bool *isUsedSubplan pg_node_attr(read_write_ignore)
Selectivity tuple_fraction
bool *isAltSubplan pg_node_attr(read_write_ignore)
int placeholder_array_size pg_node_attr(read_write_ignore)
bool hasPseudoConstantQuals
List *initial_rels pg_node_attr(read_write_ignore)
PlannerInfo *parent_root pg_node_attr(read_write_ignore)
Relids leaf_result_relids
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
struct FdwRoutine *fdwroutine pg_node_attr(read_write_ignore)
bool consider_param_startup
Bitmapset * notnullattnums
struct PathTarget * reltarget
struct PartitionBoundInfoData *boundinfo pg_node_attr(read_write_ignore)
struct RelOptInfo **part_rels pg_node_attr(read_write_ignore)
int32 *attr_widths pg_node_attr(read_write_ignore)
List **partexprs pg_node_attr(read_write_ignore)
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
PartitionScheme part_scheme pg_node_attr(read_write_ignore)
List * cheapest_parameterized_paths
struct RelOptInfo *parent pg_node_attr(read_write_ignore)
struct Path * cheapest_unique_path
Relids lateral_referencers
struct Path * cheapest_startup_path
QualCost baserestrictcost
Relids *attr_needed pg_node_attr(read_write_ignore)
struct Path * cheapest_total_path
struct RelOptInfo *top_parent pg_node_attr(read_write_ignore)
List * non_unique_for_rels
Bitmapset * eclass_indexes
Relids direct_lateral_relids
bool consider_partitionwise_join
Index baserestrict_min_security
List **nullable_partexprs pg_node_attr(read_write_ignore)
void *fdw_private pg_node_attr(read_write_ignore)
Selectivity norm_selec pg_node_attr(equal_ignore)
EquivalenceClass *parent_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore)
bool leakproof pg_node_attr(equal_ignore)
Oid hashjoinoperator pg_node_attr(equal_ignore)
Selectivity outer_selec pg_node_attr(equal_ignore)
EquivalenceClass *right_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore)
EquivalenceMember *left_em pg_node_attr(copy_as_scalar, equal_ignore)
Selectivity left_mcvfreq pg_node_attr(equal_ignore)
Relids left_relids pg_node_attr(equal_ignore)
VolatileFunctionStatus has_volatile pg_node_attr(equal_ignore)
bool can_join pg_node_attr(equal_ignore)
Selectivity right_bucketsize pg_node_attr(equal_ignore)
bool pseudoconstant pg_node_attr(equal_ignore)
Expr *orclause pg_node_attr(equal_ignore)
Relids incompatible_relids
int num_base_rels pg_node_attr(equal_ignore)
List *scansel_cache pg_node_attr(copy_as(NIL), equal_ignore, read_write_ignore)
Selectivity right_mcvfreq pg_node_attr(equal_ignore)
EquivalenceClass *left_ec pg_node_attr(copy_as_scalar, equal_ignore, read_write_ignore)
EquivalenceMember *right_em pg_node_attr(copy_as_scalar, equal_ignore)
pg_node_attr(no_read, no_query_jumble) NodeTag type
bool outer_is_left pg_node_attr(equal_ignore)
QualCost eval_cost pg_node_attr(equal_ignore)
List *mergeopfamilies pg_node_attr(equal_ignore)
Selectivity left_bucketsize pg_node_attr(equal_ignore)
Oid right_hasheqoperator pg_node_attr(equal_ignore)
Oid left_hasheqoperator pg_node_attr(equal_ignore)
Relids clause_relids pg_node_attr(equal_ignore)
Relids right_relids pg_node_attr(equal_ignore)
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
Selectivity outer_match_frac
pg_node_attr(no_read, no_query_jumble) NodeTag type
pg_node_attr(no_copy_equal, no_read, no_query_jumble) NodeTag type
RelOptInfo *rel pg_node_attr(read_write_ignore)