PostgreSQL Source Code
git master
|
#include "postgres.h"
#include <math.h>
#include "foreign/fdwapi.h"
#include "miscadmin.h"
#include "nodes/extensible.h"
#include "optimizer/appendinfo.h"
#include "optimizer/clauses.h"
#include "optimizer/cost.h"
#include "optimizer/optimizer.h"
#include "optimizer/pathnode.h"
#include "optimizer/paths.h"
#include "optimizer/planmain.h"
#include "optimizer/tlist.h"
#include "parser/parsetree.h"
#include "utils/memutils.h"
#include "utils/selfuncs.h"
Go to the source code of this file.
Macros | |
#define | STD_FUZZ_FACTOR 1.01 |
#define | CONSIDER_PATH_STARTUP_COST(p) ((p)->param_info == NULL ? (p)->parent->consider_startup : (p)->parent->consider_param_startup) |
#define | ADJUST_CHILD_ATTRS(node) |
#define | REPARAMETERIZE_CHILD_PATH(path) |
#define | REPARAMETERIZE_CHILD_PATH_LIST(pathlist) |
#define | REJECT_IF_PATH_NOT_REPARAMETERIZABLE(path) |
#define | REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE(pathlist) |
Enumerations | |
enum | PathCostComparison { COSTS_EQUAL , COSTS_BETTER1 , COSTS_BETTER2 , COSTS_DIFFERENT } |
#define ADJUST_CHILD_ATTRS | ( | node | ) |
#define CONSIDER_PATH_STARTUP_COST | ( | p | ) | ((p)->param_info == NULL ? (p)->parent->consider_startup : (p)->parent->consider_param_startup) |
#define REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE | ( | pathlist | ) |
#define REJECT_IF_PATH_NOT_REPARAMETERIZABLE | ( | path | ) |
#define REPARAMETERIZE_CHILD_PATH | ( | path | ) |
#define REPARAMETERIZE_CHILD_PATH_LIST | ( | pathlist | ) |
#define STD_FUZZ_FACTOR 1.01 |
Definition at line 47 of file pathnode.c.
enum PathCostComparison |
Enumerator | |
---|---|
COSTS_EQUAL | |
COSTS_BETTER1 | |
COSTS_BETTER2 | |
COSTS_DIFFERENT |
Definition at line 34 of file pathnode.c.
void add_partial_path | ( | RelOptInfo * | parent_rel, |
Path * | new_path | ||
) |
Definition at line 795 of file pathnode.c.
References Assert, CHECK_FOR_INTERRUPTS, compare_pathkeys(), RelOptInfo::consider_parallel, Path::disabled_nodes, foreach_current_index, foreach_delete_current, lfirst, list_insert_nth(), Path::parallel_safe, RelOptInfo::partial_pathlist, Path::pathkeys, PATHKEYS_BETTER1, PATHKEYS_BETTER2, PATHKEYS_DIFFERENT, pfree(), STD_FUZZ_FACTOR, Path::total_cost, and unlikely.
Referenced by add_paths_to_append_rel(), build_index_paths(), build_setop_child_paths(), create_partial_bitmap_paths(), create_partial_distinct_paths(), create_partial_grouping_paths(), create_plain_partial_paths(), grouping_planner(), set_subquery_pathlist(), try_partial_hashjoin_path(), try_partial_mergejoin_path(), and try_partial_nestloop_path().
bool add_partial_path_precheck | ( | RelOptInfo * | parent_rel, |
int | disabled_nodes, | ||
Cost | total_cost, | ||
List * | pathkeys | ||
) |
Definition at line 921 of file pathnode.c.
References add_path_precheck(), compare_pathkeys(), lfirst, RelOptInfo::partial_pathlist, Path::pathkeys, PATHKEYS_BETTER1, PATHKEYS_BETTER2, PATHKEYS_DIFFERENT, STD_FUZZ_FACTOR, and Path::total_cost.
Referenced by try_partial_hashjoin_path(), try_partial_mergejoin_path(), and try_partial_nestloop_path().
void add_path | ( | RelOptInfo * | parent_rel, |
Path * | new_path | ||
) |
Definition at line 461 of file pathnode.c.
References BMS_EQUAL, BMS_SUBSET1, BMS_SUBSET2, bms_subset_compare(), CHECK_FOR_INTERRUPTS, compare_path_costs_fuzzily(), compare_pathkeys(), COSTS_BETTER1, COSTS_BETTER2, COSTS_DIFFERENT, COSTS_EQUAL, Path::disabled_nodes, foreach_current_index, foreach_delete_current, IsA, lfirst, list_insert_nth(), NIL, Path::parallel_safe, PATH_REQ_OUTER, Path::pathkeys, PATHKEYS_BETTER1, PATHKEYS_BETTER2, PATHKEYS_DIFFERENT, RelOptInfo::pathlist, pfree(), Path::rows, STD_FUZZ_FACTOR, and Path::total_cost.
Referenced by add_foreign_final_paths(), add_foreign_grouping_paths(), add_foreign_ordered_paths(), add_paths_to_append_rel(), add_paths_to_grouping_rel(), add_paths_with_pathkeys_for_rel(), build_setop_child_paths(), BuildParameterizedTidPaths(), consider_groupingsets_paths(), create_degenerate_grouping_paths(), create_final_distinct_paths(), create_index_paths(), create_one_window_path(), create_ordered_paths(), create_partial_grouping_paths(), create_tidscan_paths(), fileGetForeignPaths(), gather_grouping_paths(), generate_gather_paths(), generate_nonunion_paths(), generate_orderedappend_paths(), generate_recursion_path(), generate_union_paths(), generate_useful_gather_paths(), get_index_paths(), grouping_planner(), mark_dummy_rel(), postgresGetForeignJoinPaths(), postgresGetForeignPaths(), preprocess_minmax_aggregates(), query_planner(), set_cte_pathlist(), set_dummy_rel_pathlist(), set_function_pathlist(), set_namedtuplestore_pathlist(), set_plain_rel_pathlist(), set_result_pathlist(), set_subquery_pathlist(), set_tablefunc_pathlist(), set_tablesample_rel_pathlist(), set_values_pathlist(), set_worktable_pathlist(), try_hashjoin_path(), try_mergejoin_path(), and try_nestloop_path().
bool add_path_precheck | ( | RelOptInfo * | parent_rel, |
int | disabled_nodes, | ||
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 688 of file pathnode.c.
References bms_equal(), compare_pathkeys(), RelOptInfo::consider_param_startup, RelOptInfo::consider_startup, Path::disabled_nodes, lfirst, NIL, PATH_REQ_OUTER, Path::pathkeys, PATHKEYS_BETTER2, PATHKEYS_EQUAL, RelOptInfo::pathlist, Path::startup_cost, STD_FUZZ_FACTOR, and unlikely.
Referenced by add_partial_path_precheck(), try_hashjoin_path(), try_mergejoin_path(), and try_nestloop_path().
void adjust_limit_rows_costs | ( | double * | rows, |
Cost * | startup_cost, | ||
Cost * | total_cost, | ||
int64 | offset_est, | ||
int64 | count_est | ||
) |
Definition at line 3978 of file pathnode.c.
References clamp_row_est().
Referenced by create_limit_path(), and estimate_path_cost_size().
Definition at line 1453 of file pathnode.c.
References a, b, bms_compare(), cmp(), compare_path_costs(), lfirst, and STARTUP_COST.
Referenced by create_append_path().
Definition at line 1431 of file pathnode.c.
References a, b, bms_compare(), cmp(), compare_path_costs(), lfirst, and TOTAL_COST.
Referenced by create_append_path().
Path* apply_projection_to_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | path, | ||
PathTarget * | target | ||
) |
Definition at line 2873 of file pathnode.c.
References PathTarget::cost, create_projection_path(), PathTarget::exprs, if(), is_parallel_safe(), is_projection_capable_path(), IsA, Path::parallel_safe, QualCost::per_tuple, root, Path::rows, QualCost::startup, Path::startup_cost, GatherPath::subpath, GatherMergePath::subpath, and Path::total_cost.
Referenced by adjust_paths_for_srfs(), build_minmax_path(), create_ordered_paths(), and recurse_set_operations().
Relids calc_nestloop_required_outer | ( | Relids | outerrelids, |
Relids | outer_paramrels, | ||
Relids | innerrelids, | ||
Relids | inner_paramrels | ||
) |
Definition at line 2456 of file pathnode.c.
References Assert, bms_copy(), bms_del_members(), bms_overlap(), and bms_union().
Referenced by try_nestloop_path().
Definition at line 2483 of file pathnode.c.
References Assert, bms_overlap(), bms_union(), PATH_REQ_OUTER, and PG_USED_FOR_ASSERTS_ONLY.
Referenced by try_hashjoin_path(), and try_mergejoin_path().
Definition at line 124 of file pathnode.c.
References compare_path_costs(), Path::disabled_nodes, Path::startup_cost, TOTAL_COST, Path::total_cost, and unlikely.
Referenced by choose_hashed_setop(), get_cheapest_fractional_path(), and get_cheapest_fractional_path_for_pathkeys().
int compare_path_costs | ( | Path * | path1, |
Path * | path2, | ||
CostSelector | criterion | ||
) |
Definition at line 69 of file pathnode.c.
References Path::disabled_nodes, STARTUP_COST, Path::startup_cost, Path::total_cost, and unlikely.
Referenced by append_startup_cost_compare(), append_total_cost_compare(), compare_fractional_path_costs(), generate_mergejoin_paths(), get_cheapest_parameterized_child_path(), get_cheapest_path_for_pathkeys(), and set_cheapest().
|
static |
Definition at line 182 of file pathnode.c.
References CONSIDER_PATH_STARTUP_COST, COSTS_BETTER1, COSTS_BETTER2, COSTS_DIFFERENT, COSTS_EQUAL, Path::disabled_nodes, Path::startup_cost, Path::total_cost, and unlikely.
Referenced by add_path().
AggPath* create_agg_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
PathTarget * | target, | ||
AggStrategy | aggstrategy, | ||
AggSplit | aggsplit, | ||
List * | groupClause, | ||
List * | qual, | ||
const AggClauseCosts * | aggcosts, | ||
double | numGroups | ||
) |
Definition at line 3240 of file pathnode.c.
References AGG_SORTED, AggPath::aggsplit, AggPath::aggstrategy, RelOptInfo::consider_parallel, PathTarget::cost, cost_agg(), AggPath::groupClause, list_copy_head(), list_length(), makeNode, NIL, AggPath::numGroups, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, AggPath::path, Path::pathkeys, Path::pathtype, QualCost::per_tuple, AggPath::qual, root, Path::rows, QualCost::startup, Path::startup_cost, subpath(), AggPath::subpath, Path::total_cost, AggClauseCosts::transitionSpace, and AggPath::transitionSpace.
Referenced by add_paths_to_grouping_rel(), create_final_distinct_paths(), create_partial_distinct_paths(), create_partial_grouping_paths(), and generate_union_paths().
AppendPath* create_append_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | subpaths, | ||
List * | partial_subpaths, | ||
List * | pathkeys, | ||
Relids | required_outer, | ||
int | parallel_workers, | ||
bool | parallel_aware, | ||
double | rows | ||
) |
Definition at line 1300 of file pathnode.c.
References append_startup_cost_compare(), append_total_cost_compare(), Assert, bms_equal(), RelOptInfo::consider_parallel, cost_append(), AppendPath::first_partial_path, get_appendrel_parampathinfo(), get_baserel_parampathinfo(), lfirst, AppendPath::limit_tuples, linitial, list_concat(), list_length(), list_sort(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, AppendPath::path, PATH_REQ_OUTER, Path::pathkeys, Path::pathtype, RelOptInfo::relids, RELOPT_BASEREL, RelOptInfo::reloptkind, RelOptInfo::reltarget, root, Path::rows, Path::startup_cost, subpath(), AppendPath::subpaths, and Path::total_cost.
Referenced by add_paths_to_append_rel(), create_degenerate_grouping_paths(), generate_nonunion_paths(), generate_orderedappend_paths(), generate_union_paths(), mark_dummy_rel(), reparameterize_path(), and set_dummy_rel_pathlist().
BitmapAndPath* create_bitmap_and_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | bitmapquals | ||
) |
Definition at line 1131 of file pathnode.c.
References BitmapAndPath::bitmapquals, bms_add_members(), RelOptInfo::consider_parallel, cost_bitmap_and_node(), get_baserel_parampathinfo(), lfirst, makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, BitmapAndPath::path, PATH_REQ_OUTER, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by bitmap_and_cost_est(), and choose_bitmap_and().
BitmapHeapPath* create_bitmap_heap_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | bitmapqual, | ||
Relids | required_outer, | ||
double | loop_count, | ||
int | parallel_degree | ||
) |
Definition at line 1098 of file pathnode.c.
References BitmapHeapPath::bitmapqual, RelOptInfo::consider_parallel, cost_bitmap_heap_scan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, BitmapHeapPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by create_index_paths(), create_partial_bitmap_paths(), and reparameterize_path().
BitmapOrPath* create_bitmap_or_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | bitmapquals | ||
) |
Definition at line 1183 of file pathnode.c.
References BitmapOrPath::bitmapquals, bms_add_members(), RelOptInfo::consider_parallel, cost_bitmap_or_node(), get_baserel_parampathinfo(), lfirst, makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, BitmapOrPath::path, PATH_REQ_OUTER, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by generate_bitmap_or_paths().
Path* create_ctescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 2196 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_ctescan(), get_baserel_parampathinfo(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by set_cte_pathlist().
ForeignPath* create_foreign_join_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
PathTarget * | target, | ||
double | rows, | ||
int | disabled_nodes, | ||
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Relids | required_outer, | ||
Path * | fdw_outerpath, | ||
List * | fdw_restrictinfo, | ||
List * | fdw_private | ||
) |
Definition at line 2355 of file pathnode.c.
References bms_is_empty, RelOptInfo::consider_parallel, Path::disabled_nodes, elog, ERROR, ForeignPath::fdw_outerpath, ForeignPath::fdw_private, ForeignPath::fdw_restrictinfo, RelOptInfo::lateral_relids, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, ForeignPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, Path::rows, Path::startup_cost, and Path::total_cost.
Referenced by add_paths_with_pathkeys_for_rel(), and postgresGetForeignJoinPaths().
ForeignPath* create_foreign_upper_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
PathTarget * | target, | ||
double | rows, | ||
int | disabled_nodes, | ||
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Path * | fdw_outerpath, | ||
List * | fdw_restrictinfo, | ||
List * | fdw_private | ||
) |
Definition at line 2409 of file pathnode.c.
References Assert, bms_is_empty, RelOptInfo::consider_parallel, Path::disabled_nodes, ForeignPath::fdw_outerpath, ForeignPath::fdw_private, ForeignPath::fdw_restrictinfo, RelOptInfo::lateral_relids, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, ForeignPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, Path::rows, Path::startup_cost, and Path::total_cost.
Referenced by add_foreign_final_paths(), add_foreign_grouping_paths(), and add_foreign_ordered_paths().
ForeignPath* create_foreignscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
PathTarget * | target, | ||
double | rows, | ||
int | disabled_nodes, | ||
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Relids | required_outer, | ||
Path * | fdw_outerpath, | ||
List * | fdw_restrictinfo, | ||
List * | fdw_private | ||
) |
Definition at line 2307 of file pathnode.c.
References Assert, RelOptInfo::consider_parallel, Path::disabled_nodes, ForeignPath::fdw_outerpath, ForeignPath::fdw_private, ForeignPath::fdw_restrictinfo, get_baserel_parampathinfo(), IS_SIMPLE_REL, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, ForeignPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, root, Path::rows, Path::startup_cost, and Path::total_cost.
Referenced by add_paths_with_pathkeys_for_rel(), fileGetForeignPaths(), and postgresGetForeignPaths().
Path* create_functionscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 2118 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_functionscan(), get_baserel_parampathinfo(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by set_function_pathlist().
GatherMergePath* create_gather_merge_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
PathTarget * | target, | ||
List * | pathkeys, | ||
Relids | required_outer, | ||
double * | rows | ||
) |
Definition at line 1962 of file pathnode.c.
References Assert, cost_gather_merge(), elog, ERROR, get_baserel_parampathinfo(), makeNode, GatherMergePath::num_workers, Path::parallel_aware, GatherMergePath::path, Path::pathkeys, pathkeys_contained_in(), Path::pathtype, RelOptInfo::reltarget, root, subpath(), and GatherMergePath::subpath.
Referenced by create_ordered_paths(), gather_grouping_paths(), generate_gather_paths(), and generate_useful_gather_paths().
GatherPath* create_gather_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
PathTarget * | target, | ||
Relids | required_outer, | ||
double * | rows | ||
) |
Definition at line 2044 of file pathnode.c.
References Assert, cost_gather(), get_baserel_parampathinfo(), makeNode, NIL, GatherPath::num_workers, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, GatherPath::path, Path::pathkeys, Path::pathtype, root, GatherPath::single_copy, subpath(), and GatherPath::subpath.
Referenced by generate_gather_paths(), and generate_union_paths().
GroupPath* create_group_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
List * | groupClause, | ||
List * | qual, | ||
double | numGroups | ||
) |
Definition at line 3127 of file pathnode.c.
References RelOptInfo::consider_parallel, PathTarget::cost, cost_group(), GroupPath::groupClause, list_length(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, GroupPath::path, Path::pathkeys, Path::pathtype, QualCost::per_tuple, GroupPath::qual, RelOptInfo::reltarget, root, Path::rows, QualCost::startup, Path::startup_cost, subpath(), GroupPath::subpath, and Path::total_cost.
Referenced by add_paths_to_grouping_rel(), and create_partial_grouping_paths().
GroupResultPath* create_group_result_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
PathTarget * | target, | ||
List * | havingqual | ||
) |
Definition at line 1586 of file pathnode.c.
References RelOptInfo::consider_parallel, PathTarget::cost, cost_qual_eval(), cpu_tuple_cost, makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, GroupResultPath::path, Path::pathkeys, Path::pathtype, QualCost::per_tuple, GroupResultPath::quals, root, Path::rows, QualCost::startup, Path::startup_cost, and Path::total_cost.
Referenced by create_degenerate_grouping_paths(), and query_planner().
GroupingSetsPath* create_groupingsets_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
List * | having_qual, | ||
AggStrategy | aggstrategy, | ||
List * | rollups, | ||
const AggClauseCosts * | agg_costs | ||
) |
Definition at line 3323 of file pathnode.c.
References AGG_HASHED, AGG_MIXED, AGG_PLAIN, AGG_SORTED, GroupingSetsPath::aggstrategy, Assert, RelOptInfo::consider_parallel, PathTarget::cost, cost_agg(), cost_sort(), Path::disabled_nodes, RollupData::gsets, RollupData::is_hashed, lfirst, linitial, list_length(), makeNode, NIL, RollupData::numGroups, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, GroupingSetsPath::path, Path::pathkeys, Path::pathtype, QualCost::per_tuple, GroupingSetsPath::qual, RelOptInfo::reltarget, GroupingSetsPath::rollups, root, Path::rows, QualCost::startup, Path::startup_cost, subpath(), GroupingSetsPath::subpath, Path::total_cost, AggClauseCosts::transitionSpace, GroupingSetsPath::transitionSpace, and work_mem.
Referenced by consider_groupingsets_paths().
HashPath* create_hashjoin_path | ( | PlannerInfo * | root, |
RelOptInfo * | joinrel, | ||
JoinType | jointype, | ||
JoinCostWorkspace * | workspace, | ||
JoinPathExtraData * | extra, | ||
Path * | outer_path, | ||
Path * | inner_path, | ||
bool | parallel_hash, | ||
List * | restrict_clauses, | ||
Relids | required_outer, | ||
List * | hashclauses | ||
) |
Definition at line 2697 of file pathnode.c.
References RelOptInfo::consider_parallel, final_cost_hashjoin(), get_joinrel_parampathinfo(), JoinPath::inner_unique, JoinPathExtraData::inner_unique, JoinPath::innerjoinpath, JoinPath::joinrestrictinfo, JoinPath::jointype, HashPath::jpath, makeNode, NIL, JoinPath::outerjoinpath, Path::parallel_safe, Path::parallel_workers, HashPath::path_hashclauses, RelOptInfo::reltarget, root, and JoinPathExtraData::sjinfo.
Referenced by try_hashjoin_path(), and try_partial_hashjoin_path().
IncrementalSortPath* create_incremental_sort_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
List * | pathkeys, | ||
int | presorted_keys, | ||
double | limit_tuples | ||
) |
Definition at line 3032 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_incremental_sort(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, SortPath::path, Path::pathkeys, Path::pathtype, root, sort(), subpath(), SortPath::subpath, and work_mem.
Referenced by build_setop_child_paths(), create_final_distinct_paths(), create_one_window_path(), create_ordered_paths(), create_partial_distinct_paths(), gather_grouping_paths(), generate_useful_gather_paths(), and make_ordered_path().
IndexPath* create_index_path | ( | PlannerInfo * | root, |
IndexOptInfo * | index, | ||
List * | indexclauses, | ||
List * | indexorderbys, | ||
List * | indexorderbycols, | ||
List * | pathkeys, | ||
ScanDirection | indexscandir, | ||
bool | indexonly, | ||
Relids | required_outer, | ||
double | loop_count, | ||
bool | partial_path | ||
) |
Definition at line 1049 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_index(), get_baserel_parampathinfo(), IndexPath::indexclauses, IndexPath::indexinfo, IndexPath::indexorderbycols, IndexPath::indexorderbys, IndexPath::indexscandir, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, IndexPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by build_index_paths(), and plan_cluster_use_sort().
LimitPath* create_limit_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
Node * | limitOffset, | ||
Node * | limitCount, | ||
LimitOption | limitOption, | ||
int64 | offset_est, | ||
int64 | count_est | ||
) |
Definition at line 3922 of file pathnode.c.
References adjust_limit_rows_costs(), RelOptInfo::consider_parallel, Path::disabled_nodes, LimitPath::limitCount, LimitPath::limitOffset, LimitPath::limitOption, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, LimitPath::path, Path::pathkeys, Path::pathtype, Path::rows, Path::startup_cost, subpath(), LimitPath::subpath, and Path::total_cost.
Referenced by create_final_distinct_paths(), create_partial_distinct_paths(), and grouping_planner().
LockRowsPath* create_lockrows_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
List * | rowMarks, | ||
int | epqParam | ||
) |
Definition at line 3756 of file pathnode.c.
References cpu_tuple_cost, Path::disabled_nodes, LockRowsPath::epqParam, makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, LockRowsPath::path, Path::pathkeys, Path::pathtype, LockRowsPath::rowMarks, Path::rows, Path::startup_cost, subpath(), LockRowsPath::subpath, and Path::total_cost.
Referenced by grouping_planner().
MaterialPath* create_material_path | ( | RelOptInfo * | rel, |
Path * | subpath | ||
) |
Definition at line 1634 of file pathnode.c.
References Assert, RelOptInfo::consider_parallel, cost_material(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, MaterialPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, subpath(), and MaterialPath::subpath.
Referenced by consider_parallel_nestloop(), match_unsorted_outer(), reparameterize_path(), and set_tablesample_rel_pathlist().
MemoizePath* create_memoize_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
List * | param_exprs, | ||
List * | hash_operators, | ||
bool | singlerow, | ||
bool | binary_mode, | ||
double | calls | ||
) |
Definition at line 1667 of file pathnode.c.
References Assert, MemoizePath::binary_mode, MemoizePath::calls, clamp_row_est(), RelOptInfo::consider_parallel, cpu_tuple_cost, Path::disabled_nodes, enable_memoize, MemoizePath::est_entries, MemoizePath::hash_operators, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, MemoizePath::param_exprs, MemoizePath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, Path::rows, MemoizePath::singlerow, Path::startup_cost, subpath(), MemoizePath::subpath, and Path::total_cost.
Referenced by get_memoize_path(), and reparameterize_path().
MergeAppendPath* create_merge_append_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | subpaths, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 1471 of file pathnode.c.
References Assert, bms_equal(), bms_is_empty, RelOptInfo::consider_parallel, cost_merge_append(), cost_sort(), Path::disabled_nodes, RelOptInfo::lateral_relids, lfirst, MergeAppendPath::limit_tuples, linitial, list_length(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, MergeAppendPath::path, PATH_REQ_OUTER, Path::pathkeys, pathkeys_contained_in(), Path::pathtype, RelOptInfo::relids, RelOptInfo::reltarget, root, Path::rows, Path::startup_cost, subpath(), MergeAppendPath::subpaths, Path::total_cost, and work_mem.
Referenced by generate_orderedappend_paths(), and generate_union_paths().
MergePath* create_mergejoin_path | ( | PlannerInfo * | root, |
RelOptInfo * | joinrel, | ||
JoinType | jointype, | ||
JoinCostWorkspace * | workspace, | ||
JoinPathExtraData * | extra, | ||
Path * | outer_path, | ||
Path * | inner_path, | ||
List * | restrict_clauses, | ||
List * | pathkeys, | ||
Relids | required_outer, | ||
List * | mergeclauses, | ||
List * | outersortkeys, | ||
List * | innersortkeys | ||
) |
Definition at line 2631 of file pathnode.c.
References RelOptInfo::consider_parallel, final_cost_mergejoin(), get_joinrel_parampathinfo(), JoinPath::inner_unique, JoinPathExtraData::inner_unique, JoinPath::innerjoinpath, MergePath::innersortkeys, JoinPath::joinrestrictinfo, JoinPath::jointype, MergePath::jpath, makeNode, JoinPath::outerjoinpath, MergePath::outersortkeys, Path::parallel_safe, Path::parallel_workers, MergePath::path_mergeclauses, RelOptInfo::reltarget, root, and JoinPathExtraData::sjinfo.
Referenced by try_mergejoin_path(), and try_partial_mergejoin_path().
MinMaxAggPath* create_minmaxagg_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
PathTarget * | target, | ||
List * | mmaggregates, | ||
List * | quals | ||
) |
Definition at line 3486 of file pathnode.c.
References PathTarget::cost, cost_qual_eval(), cpu_tuple_cost, Path::disabled_nodes, PathTarget::exprs, is_parallel_safe(), lfirst, makeNode, MinMaxAggPath::mmaggregates, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, MinMaxAggPath::path, MinMaxAggInfo::path, MinMaxAggInfo::pathcost, Path::pathkeys, Path::pathtype, QualCost::per_tuple, MinMaxAggPath::quals, root, Path::rows, QualCost::startup, Path::startup_cost, and Path::total_cost.
Referenced by preprocess_minmax_aggregates().
ModifyTablePath* create_modifytable_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
CmdType | operation, | ||
bool | canSetTag, | ||
Index | nominalRelation, | ||
Index | rootRelation, | ||
bool | partColsUpdated, | ||
List * | resultRelations, | ||
List * | updateColnosLists, | ||
List * | withCheckOptionLists, | ||
List * | returningLists, | ||
List * | rowMarks, | ||
OnConflictExpr * | onconflict, | ||
List * | mergeActionLists, | ||
List * | mergeJoinConditions, | ||
int | epqParam | ||
) |
Definition at line 3820 of file pathnode.c.
References Assert, ModifyTablePath::canSetTag, CMD_MERGE, CMD_UPDATE, Path::disabled_nodes, ModifyTablePath::epqParam, list_length(), makeNode, ModifyTablePath::mergeActionLists, ModifyTablePath::mergeJoinConditions, NIL, ModifyTablePath::nominalRelation, ModifyTablePath::onconflict, ModifyTablePath::operation, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, ModifyTablePath::partColsUpdated, ModifyTablePath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, ModifyTablePath::resultRelations, ModifyTablePath::returningLists, ModifyTablePath::rootRelation, ModifyTablePath::rowMarks, Path::rows, Path::startup_cost, subpath(), ModifyTablePath::subpath, Path::total_cost, ModifyTablePath::updateColnosLists, and ModifyTablePath::withCheckOptionLists.
Referenced by grouping_planner().
Path* create_namedtuplestorescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2222 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_namedtuplestorescan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by set_namedtuplestore_pathlist().
NestPath* create_nestloop_path | ( | PlannerInfo * | root, |
RelOptInfo * | joinrel, | ||
JoinType | jointype, | ||
JoinCostWorkspace * | workspace, | ||
JoinPathExtraData * | extra, | ||
Path * | outer_path, | ||
Path * | inner_path, | ||
List * | restrict_clauses, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 2535 of file pathnode.c.
References bms_is_member(), bms_overlap(), RelOptInfo::consider_parallel, final_cost_nestloop(), get_joinrel_parampathinfo(), get_param_path_clause_serials(), JoinPath::inner_unique, JoinPathExtraData::inner_unique, JoinPath::innerjoinpath, JoinPath::joinrestrictinfo, JoinPath::jointype, NestPath::jpath, lappend(), lfirst, makeNode, NIL, JoinPath::outerjoinpath, Path::parallel_safe, Path::parallel_workers, PATH_REQ_OUTER, RelOptInfo::reltarget, RestrictInfo::rinfo_serial, root, and JoinPathExtraData::sjinfo.
Referenced by try_nestloop_path(), and try_partial_nestloop_path().
ProjectionPath* create_projection_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
PathTarget * | target | ||
) |
Definition at line 2763 of file pathnode.c.
References Assert, RelOptInfo::consider_parallel, PathTarget::cost, cpu_tuple_cost, Path::disabled_nodes, ProjectionPath::dummypp, equal(), PathTarget::exprs, is_parallel_safe(), is_projection_capable_path(), IsA, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, ProjectionPath::path, Path::pathkeys, Path::pathtype, QualCost::per_tuple, root, Path::rows, QualCost::startup, Path::startup_cost, subpath(), ProjectionPath::subpath, and Path::total_cost.
Referenced by add_paths_with_pathkeys_for_rel(), adjust_paths_for_srfs(), apply_projection_to_path(), apply_scanjoin_target_to_paths(), and recurse_set_operations().
RecursiveUnionPath* create_recursiveunion_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | leftpath, | ||
Path * | rightpath, | ||
PathTarget * | target, | ||
List * | distinctList, | ||
int | wtParam, | ||
double | numGroups | ||
) |
Definition at line 3711 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_recursive_union(), RecursiveUnionPath::distinctList, RecursiveUnionPath::leftpath, makeNode, NIL, RecursiveUnionPath::numGroups, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, RecursiveUnionPath::path, Path::pathkeys, Path::pathtype, RecursiveUnionPath::rightpath, and RecursiveUnionPath::wtParam.
Referenced by generate_recursion_path().
Path* create_resultscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2248 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_resultscan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by reparameterize_path(), and set_result_pathlist().
Path* create_samplescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 1008 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_samplescan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by reparameterize_path(), and set_tablesample_rel_pathlist().
Path* create_seqscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer, | ||
int | parallel_workers | ||
) |
Definition at line 983 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_seqscan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by create_plain_partial_paths(), plan_cluster_use_sort(), reparameterize_path(), and set_plain_rel_pathlist().
ProjectSetPath* create_set_projection_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
PathTarget * | target | ||
) |
Definition at line 2962 of file pathnode.c.
References RelOptInfo::consider_parallel, PathTarget::cost, cpu_tuple_cost, Path::disabled_nodes, expression_returns_set_rows(), PathTarget::exprs, is_parallel_safe(), lfirst, makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, ProjectSetPath::path, Path::pathkeys, Path::pathtype, QualCost::per_tuple, root, Path::rows, QualCost::startup, Path::startup_cost, subpath(), ProjectSetPath::subpath, and Path::total_cost.
Referenced by adjust_paths_for_srfs().
SetOpPath* create_setop_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
SetOpCmd | cmd, | ||
SetOpStrategy | strategy, | ||
List * | distinctList, | ||
AttrNumber | flagColIdx, | ||
int | firstFlag, | ||
double | numGroups, | ||
double | outputRows | ||
) |
Definition at line 3648 of file pathnode.c.
References SetOpPath::cmd, RelOptInfo::consider_parallel, cpu_operator_cost, Path::disabled_nodes, SetOpPath::distinctList, SetOpPath::firstFlag, SetOpPath::flagColIdx, list_length(), makeNode, NIL, SetOpPath::numGroups, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, SetOpPath::path, Path::pathkeys, Path::pathtype, Path::rows, SETOP_SORTED, Path::startup_cost, SetOpPath::strategy, subpath(), SetOpPath::subpath, and Path::total_cost.
Referenced by generate_nonunion_paths().
SortPath* create_sort_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
List * | pathkeys, | ||
double | limit_tuples | ||
) |
Definition at line 3082 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_sort(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, SortPath::path, Path::pathkeys, Path::pathtype, root, subpath(), SortPath::subpath, and work_mem.
Referenced by add_paths_with_pathkeys_for_rel(), build_setop_child_paths(), create_final_distinct_paths(), create_one_window_path(), create_ordered_paths(), create_partial_distinct_paths(), gather_grouping_paths(), generate_nonunion_paths(), generate_union_paths(), generate_useful_gather_paths(), and make_ordered_path().
SubqueryScanPath* create_subqueryscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
bool | trivial_pathtarget, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 2088 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_subqueryscan(), get_baserel_parampathinfo(), makeNode, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, SubqueryScanPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, root, subpath(), and SubqueryScanPath::subpath.
Referenced by build_setop_child_paths(), reparameterize_path(), and set_subquery_pathlist().
Path* create_tablefuncscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2144 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_tablefuncscan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by set_tablefunc_pathlist().
TidRangePath* create_tidrangescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | tidrangequals, | ||
Relids | required_outer | ||
) |
Definition at line 1264 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_tidrangescan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, TidRangePath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, root, and TidRangePath::tidrangequals.
Referenced by create_tidscan_paths().
TidPath* create_tidscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | tidquals, | ||
Relids | required_outer | ||
) |
Definition at line 1235 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_tidscan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, TidPath::path, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, root, and TidPath::tidquals.
Referenced by BuildParameterizedTidPaths(), and create_tidscan_paths().
UniquePath* create_unique_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
SpecialJoinInfo * | sjinfo | ||
) |
Definition at line 1727 of file pathnode.c.
References AGG_HASHED, Assert, bms_equal(), RelOptInfo::cheapest_total_path, RelOptInfo::cheapest_unique_path, RelOptInfo::consider_parallel, copyObject, cost_agg(), cost_sort(), cpu_operator_cost, Path::disabled_nodes, estimate_num_groups(), get_hash_memory_limit(), GetMemoryChunkContext(), UniquePath::in_operators, JOIN_SEMI, SpecialJoinInfo::jointype, list_length(), makeNode, MemoryContextSwitchTo(), NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, UniquePath::path, Path::pathkeys, Path::pathtype, planner_rt_fetch, query_is_distinct_for(), query_supports_distinctness(), relation_has_unique_index_for(), RelOptInfo::relid, RelOptInfo::relids, RelOptInfo::reltarget, root, RelOptInfo::rows, Path::rows, RTE_RELATION, RTE_SUBQUERY, RelOptInfo::rtekind, SpecialJoinInfo::semi_can_btree, SpecialJoinInfo::semi_can_hash, SpecialJoinInfo::semi_operators, SpecialJoinInfo::semi_rhs_exprs, Path::startup_cost, subpath(), UniquePath::subpath, RangeTblEntry::subquery, SpecialJoinInfo::syn_righthand, Path::total_cost, translate_sub_tlist(), UniquePath::umethod, UniquePath::uniq_exprs, UNIQUE_PATH_HASH, UNIQUE_PATH_NOOP, UNIQUE_PATH_SORT, and work_mem.
Referenced by consider_parallel_nestloop(), hash_inner_and_outer(), join_is_legal(), match_unsorted_outer(), populate_joinrel_with_paths(), and sort_inner_and_outer().
UpperUniquePath* create_upper_unique_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
int | numCols, | ||
double | numGroups | ||
) |
Definition at line 3187 of file pathnode.c.
References RelOptInfo::consider_parallel, cpu_operator_cost, Path::disabled_nodes, makeNode, UpperUniquePath::numkeys, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, UpperUniquePath::path, Path::pathkeys, Path::pathtype, Path::rows, Path::startup_cost, subpath(), UpperUniquePath::subpath, and Path::total_cost.
Referenced by create_final_distinct_paths(), create_partial_distinct_paths(), and generate_union_paths().
Path* create_valuesscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2170 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_valuesscan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by set_values_pathlist().
WindowAggPath* create_windowagg_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
PathTarget * | target, | ||
List * | windowFuncs, | ||
List * | runCondition, | ||
WindowClause * | winclause, | ||
List * | qual, | ||
bool | topwindow | ||
) |
Definition at line 3577 of file pathnode.c.
References Assert, RelOptInfo::consider_parallel, PathTarget::cost, cost_windowagg(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, WindowAggPath::path, Path::pathkeys, Path::pathtype, QualCost::per_tuple, WindowAggPath::qual, root, Path::rows, WindowAggPath::runCondition, QualCost::startup, Path::startup_cost, subpath(), WindowAggPath::subpath, WindowAggPath::topwindow, Path::total_cost, and WindowAggPath::winclause.
Referenced by create_one_window_path().
Path* create_worktablescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2274 of file pathnode.c.
References RelOptInfo::consider_parallel, cost_ctescan(), get_baserel_parampathinfo(), makeNode, NIL, Path::parallel_aware, Path::parallel_safe, Path::parallel_workers, Path::pathkeys, Path::pathtype, RelOptInfo::reltarget, and root.
Referenced by set_worktable_pathlist().
bool path_is_reparameterizable_by_child | ( | Path * | path, |
RelOptInfo * | child_rel | ||
) |
Definition at line 4508 of file pathnode.c.
References BitmapHeapPath::bitmapqual, BitmapAndPath::bitmapquals, BitmapOrPath::bitmapquals, bms_overlap(), CustomPath::custom_paths, ForeignPath::fdw_outerpath, JoinPath::innerjoinpath, nodeTag, JoinPath::outerjoinpath, PATH_REQ_OUTER, REJECT_IF_PATH_LIST_NOT_REPARAMETERIZABLE, REJECT_IF_PATH_NOT_REPARAMETERIZABLE, MaterialPath::subpath, MemoizePath::subpath, GatherPath::subpath, AppendPath::subpaths, and RelOptInfo::top_parent_relids.
Referenced by pathlist_is_reparameterizable_by_child(), try_nestloop_path(), and try_partial_nestloop_path().
|
static |
Definition at line 4668 of file pathnode.c.
References lfirst, and path_is_reparameterizable_by_child().
Path* reparameterize_path | ( | PlannerInfo * | root, |
Path * | path, | ||
Relids | required_outer, | ||
double | loop_count | ||
) |
Definition at line 4046 of file pathnode.c.
References MemoizePath::binary_mode, BitmapHeapPath::bitmapqual, bms_is_subset(), MemoizePath::calls, cost_index(), create_append_path(), create_bitmap_heap_path(), create_material_path(), create_memoize_path(), create_resultscan_path(), create_samplescan_path(), create_seqscan_path(), create_subqueryscan_path(), get_baserel_parampathinfo(), MemoizePath::hash_operators, i, IsA, lappend(), lfirst, makeNode, NIL, Path::parallel_aware, Path::parallel_workers, MemoizePath::param_exprs, IndexPath::path, SubqueryScanPath::path, AppendPath::path, PATH_REQ_OUTER, Path::pathkeys, Path::pathtype, root, MemoizePath::singlerow, subpath(), SubqueryScanPath::subpath, MaterialPath::subpath, MemoizePath::subpath, AppendPath::subpaths, and Path::total_cost.
Referenced by get_cheapest_parameterized_child_path().
Path* reparameterize_path_by_child | ( | PlannerInfo * | root, |
Path * | path, | ||
RelOptInfo * | child_rel | ||
) |
Definition at line 4212 of file pathnode.c.
References ADJUST_CHILD_ATTRS, adjust_child_relids_multilevel(), Assert, BitmapHeapPath::bitmapqual, BitmapAndPath::bitmapquals, BitmapOrPath::bitmapquals, bms_copy(), bms_free(), bms_overlap(), copy_pathtarget(), CustomPath::custom_paths, CustomPath::custom_private, CustomPath::custom_restrictinfo, ForeignPath::fdw_outerpath, ForeignPath::fdw_private, ForeignPath::fdw_restrictinfo, find_param_path_info(), GetMemoryChunkContext(), IndexPath::indexclauses, IndexPath::indexinfo, IndexOptInfo::indrestrictinfo, JoinPath::innerjoinpath, JoinPath::joinrestrictinfo, lappend(), makeNode, MemoryContextSwitchTo(), CustomPath::methods, nodeTag, JoinPath::outerjoinpath, MemoizePath::param_exprs, BitmapHeapPath::path, ForeignPath::path, CustomPath::path, HashPath::path_hashclauses, MergePath::path_mergeclauses, PATH_REQ_OUTER, Path::pathtype, planner_rt_fetch, ParamPathInfo::ppi_clauses, ParamPathInfo::ppi_req_outer, ParamPathInfo::ppi_rows, ParamPathInfo::ppi_serials, RelOptInfo::ppilist, REPARAMETERIZE_CHILD_PATH, REPARAMETERIZE_CHILD_PATH_LIST, CustomPathMethods::ReparameterizeCustomPathByChild, root, RTE_RELATION, RangeTblEntry::rtekind, MaterialPath::subpath, MemoizePath::subpath, GatherPath::subpath, AppendPath::subpaths, RangeTblEntry::tablesample, and RelOptInfo::top_parent_relids.
Referenced by create_nestloop_plan(), and reparameterize_pathlist_by_child().
|
static |
Definition at line 4639 of file pathnode.c.
References lappend(), lfirst, list_free(), NIL, reparameterize_path_by_child(), and root.
void set_cheapest | ( | RelOptInfo * | parent_rel | ) |
Definition at line 269 of file pathnode.c.
References Assert, BMS_DIFFERENT, BMS_EQUAL, BMS_SUBSET1, BMS_SUBSET2, bms_subset_compare(), RelOptInfo::cheapest_parameterized_paths, RelOptInfo::cheapest_startup_path, RelOptInfo::cheapest_total_path, RelOptInfo::cheapest_unique_path, cmp(), compare_path_costs(), compare_pathkeys(), elog, ERROR, IsA, lappend(), lcons(), lfirst, NIL, PATH_REQ_OUTER, Path::pathkeys, PATHKEYS_BETTER2, RelOptInfo::pathlist, STARTUP_COST, and TOTAL_COST.
Referenced by apply_scanjoin_target_to_paths(), create_distinct_paths(), create_grouping_paths(), create_ordinary_grouping_paths(), create_partial_distinct_paths(), create_partitionwise_grouping_paths(), create_window_paths(), generate_partitionwise_join_paths(), mark_dummy_rel(), merge_clump(), postprocess_setop_rel(), query_planner(), set_dummy_rel_pathlist(), set_rel_pathlist(), standard_join_search(), and subquery_planner().
Definition at line 2018 of file pathnode.c.
References IsA, lappend_int(), lfirst, NIL, Var::varattno, and Var::varno.
Referenced by create_unique_path().