PostgreSQL Source Code
git master
|
#include "postgres.h"
#include <math.h>
#include "foreign/fdwapi.h"
#include "miscadmin.h"
#include "nodes/extensible.h"
#include "nodes/nodeFuncs.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/prep.h"
#include "optimizer/restrictinfo.h"
#include "optimizer/tlist.h"
#include "parser/parsetree.h"
#include "utils/lsyscache.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 | FLAT_COPY_PATH(newnode, node, nodetype) |
#define | ADJUST_CHILD_ATTRS(node) |
#define | REPARAMETERIZE_CHILD_PATH(path) |
#define | REPARAMETERIZE_CHILD_PATH_LIST(pathlist) |
Enumerations | |
enum | PathCostComparison { COSTS_EQUAL , COSTS_BETTER1 , COSTS_BETTER2 , COSTS_DIFFERENT } |
Functions | |
static List * | translate_sub_tlist (List *tlist, int relid) |
static int | append_total_cost_compare (const ListCell *a, const ListCell *b) |
static int | append_startup_cost_compare (const ListCell *a, const ListCell *b) |
static List * | reparameterize_pathlist_by_child (PlannerInfo *root, List *pathlist, RelOptInfo *child_rel) |
int | compare_path_costs (Path *path1, Path *path2, CostSelector criterion) |
int | compare_fractional_path_costs (Path *path1, Path *path2, double fraction) |
static PathCostComparison | compare_path_costs_fuzzily (Path *path1, Path *path2, double fuzz_factor) |
void | set_cheapest (RelOptInfo *parent_rel) |
void | add_path (RelOptInfo *parent_rel, Path *new_path) |
bool | add_path_precheck (RelOptInfo *parent_rel, Cost startup_cost, Cost total_cost, List *pathkeys, Relids required_outer) |
void | add_partial_path (RelOptInfo *parent_rel, Path *new_path) |
bool | add_partial_path_precheck (RelOptInfo *parent_rel, Cost total_cost, List *pathkeys) |
Path * | create_seqscan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer, int parallel_workers) |
Path * | create_samplescan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer) |
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) |
BitmapHeapPath * | create_bitmap_heap_path (PlannerInfo *root, RelOptInfo *rel, Path *bitmapqual, Relids required_outer, double loop_count, int parallel_degree) |
BitmapAndPath * | create_bitmap_and_path (PlannerInfo *root, RelOptInfo *rel, List *bitmapquals) |
BitmapOrPath * | create_bitmap_or_path (PlannerInfo *root, RelOptInfo *rel, List *bitmapquals) |
TidPath * | create_tidscan_path (PlannerInfo *root, RelOptInfo *rel, List *tidquals, Relids required_outer) |
TidRangePath * | create_tidrangescan_path (PlannerInfo *root, RelOptInfo *rel, List *tidrangequals, Relids required_outer) |
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) |
MergeAppendPath * | create_merge_append_path (PlannerInfo *root, RelOptInfo *rel, List *subpaths, List *pathkeys, Relids required_outer) |
GroupResultPath * | create_group_result_path (PlannerInfo *root, RelOptInfo *rel, PathTarget *target, List *havingqual) |
MaterialPath * | create_material_path (RelOptInfo *rel, Path *subpath) |
MemoizePath * | create_memoize_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, List *param_exprs, List *hash_operators, bool singlerow, bool binary_mode, double calls) |
UniquePath * | create_unique_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, SpecialJoinInfo *sjinfo) |
GatherMergePath * | create_gather_merge_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, PathTarget *target, List *pathkeys, Relids required_outer, double *rows) |
GatherPath * | create_gather_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, PathTarget *target, Relids required_outer, double *rows) |
SubqueryScanPath * | create_subqueryscan_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, bool trivial_pathtarget, List *pathkeys, Relids required_outer) |
Path * | create_functionscan_path (PlannerInfo *root, RelOptInfo *rel, List *pathkeys, Relids required_outer) |
Path * | create_tablefuncscan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer) |
Path * | create_valuesscan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer) |
Path * | create_ctescan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer) |
Path * | create_namedtuplestorescan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer) |
Path * | create_resultscan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer) |
Path * | create_worktablescan_path (PlannerInfo *root, RelOptInfo *rel, Relids required_outer) |
ForeignPath * | create_foreignscan_path (PlannerInfo *root, RelOptInfo *rel, PathTarget *target, double rows, Cost startup_cost, Cost total_cost, List *pathkeys, Relids required_outer, Path *fdw_outerpath, List *fdw_restrictinfo, List *fdw_private) |
ForeignPath * | create_foreign_join_path (PlannerInfo *root, RelOptInfo *rel, PathTarget *target, double rows, Cost startup_cost, Cost total_cost, List *pathkeys, Relids required_outer, Path *fdw_outerpath, List *fdw_restrictinfo, List *fdw_private) |
ForeignPath * | create_foreign_upper_path (PlannerInfo *root, RelOptInfo *rel, PathTarget *target, double rows, Cost startup_cost, Cost total_cost, List *pathkeys, Path *fdw_outerpath, List *fdw_restrictinfo, List *fdw_private) |
Relids | calc_nestloop_required_outer (Relids outerrelids, Relids outer_paramrels, Relids innerrelids, Relids inner_paramrels) |
Relids | calc_non_nestloop_required_outer (Path *outer_path, Path *inner_path) |
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) |
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) |
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) |
ProjectionPath * | create_projection_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, PathTarget *target) |
Path * | apply_projection_to_path (PlannerInfo *root, RelOptInfo *rel, Path *path, PathTarget *target) |
ProjectSetPath * | create_set_projection_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, PathTarget *target) |
IncrementalSortPath * | create_incremental_sort_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, List *pathkeys, int presorted_keys, double limit_tuples) |
SortPath * | create_sort_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, List *pathkeys, double limit_tuples) |
GroupPath * | create_group_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, List *groupClause, List *qual, double numGroups) |
UpperUniquePath * | create_upper_unique_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, int numCols, double numGroups) |
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) |
GroupingSetsPath * | create_groupingsets_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, List *having_qual, AggStrategy aggstrategy, List *rollups, const AggClauseCosts *agg_costs) |
MinMaxAggPath * | create_minmaxagg_path (PlannerInfo *root, RelOptInfo *rel, PathTarget *target, List *mmaggregates, List *quals) |
WindowAggPath * | create_windowagg_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, PathTarget *target, List *windowFuncs, WindowClause *winclause, List *qual, bool topwindow) |
SetOpPath * | create_setop_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, SetOpCmd cmd, SetOpStrategy strategy, List *distinctList, AttrNumber flagColIdx, int firstFlag, double numGroups, double outputRows) |
RecursiveUnionPath * | create_recursiveunion_path (PlannerInfo *root, RelOptInfo *rel, Path *leftpath, Path *rightpath, PathTarget *target, List *distinctList, int wtParam, double numGroups) |
LockRowsPath * | create_lockrows_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, List *rowMarks, int epqParam) |
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, int epqParam) |
LimitPath * | create_limit_path (PlannerInfo *root, RelOptInfo *rel, Path *subpath, Node *limitOffset, Node *limitCount, LimitOption limitOption, int64 offset_est, int64 count_est) |
void | adjust_limit_rows_costs (double *rows, Cost *startup_cost, Cost *total_cost, int64 offset_est, int64 count_est) |
Path * | reparameterize_path (PlannerInfo *root, Path *path, Relids required_outer, double loop_count) |
Path * | reparameterize_path_by_child (PlannerInfo *root, Path *path, RelOptInfo *child_rel) |
#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 FLAT_COPY_PATH | ( | newnode, | |
node, | |||
nodetype | |||
) |
#define REPARAMETERIZE_CHILD_PATH | ( | path | ) |
#define REPARAMETERIZE_CHILD_PATH_LIST | ( | pathlist | ) |
#define STD_FUZZ_FACTOR 1.01 |
Definition at line 51 of file pathnode.c.
enum PathCostComparison |
Enumerator | |
---|---|
COSTS_EQUAL | |
COSTS_BETTER1 | |
COSTS_BETTER2 | |
COSTS_DIFFERENT |
Definition at line 38 of file pathnode.c.
void add_partial_path | ( | RelOptInfo * | parent_rel, |
Path * | new_path | ||
) |
Definition at line 749 of file pathnode.c.
References Assert(), CHECK_FOR_INTERRUPTS, compare_pathkeys(), RelOptInfo::consider_parallel, 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, and Path::total_cost.
Referenced by add_paths_to_append_rel(), build_index_paths(), create_partial_bitmap_paths(), create_partial_distinct_paths(), create_partial_grouping_paths(), create_plain_partial_paths(), grouping_planner(), recurse_set_operations(), set_subquery_pathlist(), try_partial_hashjoin_path(), try_partial_mergejoin_path(), and try_partial_nestloop_path().
bool add_partial_path_precheck | ( | RelOptInfo * | parent_rel, |
Cost | total_cost, | ||
List * | pathkeys | ||
) |
Definition at line 867 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 422 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, 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(), 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(), recurse_set_operations(), 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, |
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 644 of file pathnode.c.
References bms_equal(), compare_pathkeys(), RelOptInfo::consider_param_startup, RelOptInfo::consider_startup, lfirst, NIL, PATH_REQ_OUTER, Path::pathkeys, PATHKEYS_BETTER2, PATHKEYS_EQUAL, RelOptInfo::pathlist, Path::startup_cost, STD_FUZZ_FACTOR, and Path::total_cost.
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 3818 of file pathnode.c.
References clamp_row_est().
Referenced by create_limit_path(), and estimate_path_cost_size().
Definition at line 1395 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 1373 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 2752 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, 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 2366 of file pathnode.c.
References Assert(), bms_copy(), bms_del_members(), bms_overlap(), and bms_union().
Referenced by try_nestloop_path().
Definition at line 2393 of file pathnode.c.
References Assert(), bms_overlap(), bms_union(), and PATH_REQ_OUTER.
Referenced by try_hashjoin_path(), and try_mergejoin_path().
Definition at line 117 of file pathnode.c.
References compare_path_costs(), Path::startup_cost, TOTAL_COST, and Path::total_cost.
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 71 of file pathnode.c.
References STARTUP_COST, Path::startup_cost, and Path::total_cost.
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 166 of file pathnode.c.
References CONSIDER_PATH_STARTUP_COST, COSTS_BETTER1, COSTS_BETTER2, COSTS_DIFFERENT, COSTS_EQUAL, Path::startup_cost, and Path::total_cost.
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 3114 of file pathnode.c.
References AGG_SORTED, AggPath::aggsplit, AggPath::aggstrategy, RelOptInfo::consider_parallel, PathTarget::cost, cost_agg(), AggPath::groupClause, 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, 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 make_union_unique().
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 1242 of file pathnode.c.
References PlannerInfo::all_query_rels, 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, PlannerInfo::limit_tuples, 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, 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 1077 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, and RelOptInfo::reltarget.
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 1044 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, and RelOptInfo::reltarget.
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 1129 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, and RelOptInfo::reltarget.
Referenced by generate_bitmap_or_paths().
Path* create_ctescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2116 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, and RelOptInfo::reltarget.
Referenced by set_cte_pathlist().
ForeignPath* create_foreign_join_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
PathTarget * | target, | ||
double | rows, | ||
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Relids | required_outer, | ||
Path * | fdw_outerpath, | ||
List * | fdw_restrictinfo, | ||
List * | fdw_private | ||
) |
Definition at line 2272 of file pathnode.c.
References bms_is_empty, RelOptInfo::consider_parallel, 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, | ||
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Path * | fdw_outerpath, | ||
List * | fdw_restrictinfo, | ||
List * | fdw_private | ||
) |
Definition at line 2324 of file pathnode.c.
References Assert(), bms_is_empty, RelOptInfo::consider_parallel, 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, | ||
Cost | startup_cost, | ||
Cost | total_cost, | ||
List * | pathkeys, | ||
Relids | required_outer, | ||
Path * | fdw_outerpath, | ||
List * | fdw_restrictinfo, | ||
List * | fdw_private | ||
) |
Definition at line 2226 of file pathnode.c.
References Assert(), RelOptInfo::consider_parallel, 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, 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 2038 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, and RelOptInfo::reltarget.
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 1873 of file pathnode.c.
References Assert(), cost_gather_merge(), cost_sort(), get_baserel_parampathinfo(), makeNode, GatherMergePath::num_workers, Path::parallel_aware, GatherMergePath::path, Path::pathkeys, pathkeys_contained_in(), Path::pathtype, RelOptInfo::reltarget, Path::rows, Path::startup_cost, subpath(), GatherMergePath::subpath, Path::total_cost, and work_mem.
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 1964 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, 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 3003 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, 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 1516 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, 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 3180 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(), PlannerInfo::group_pathkeys, 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, 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 2578 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, 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 2910 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, sort(), subpath(), SortPath::subpath, and work_mem.
Referenced by add_paths_to_grouping_rel(), create_final_distinct_paths(), create_one_window_path(), create_ordered_paths(), create_partial_distinct_paths(), create_partial_grouping_paths(), gather_grouping_paths(), and generate_useful_gather_paths().
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 995 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, and RelOptInfo::reltarget.
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 3763 of file pathnode.c.
References adjust_limit_rows_costs(), RelOptInfo::consider_parallel, 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(), and grouping_planner().
LockRowsPath* create_lockrows_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
List * | rowMarks, | ||
int | epqParam | ||
) |
Definition at line 3602 of file pathnode.c.
References cpu_tuple_cost, 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 1564 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 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 1596 of file pathnode.c.
References Assert(), MemoizePath::binary_mode, MemoizePath::calls, RelOptInfo::consider_parallel, cpu_tuple_cost, 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 1413 of file pathnode.c.
References PlannerInfo::all_query_rels, Assert(), bms_equal(), RelOptInfo::consider_parallel, cost_merge_append(), cost_sort(), get_appendrel_parampathinfo(), lfirst, PlannerInfo::limit_tuples, 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, Path::rows, Path::startup_cost, subpath(), MergeAppendPath::subpaths, Path::total_cost, and work_mem.
Referenced by generate_orderedappend_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 2512 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, 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 3340 of file pathnode.c.
References PathTarget::cost, cost_qual_eval(), cpu_tuple_cost, 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, 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, | ||
int | epqParam | ||
) |
Definition at line 3664 of file pathnode.c.
References Assert(), ModifyTablePath::canSetTag, CMD_MERGE, CMD_UPDATE, ModifyTablePath::epqParam, list_length(), makeNode, ModifyTablePath::mergeActionLists, 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 2141 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, and RelOptInfo::reltarget.
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 2426 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, 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 2644 of file pathnode.c.
References Assert(), RelOptInfo::consider_parallel, PathTarget::cost, cpu_tuple_cost, 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, 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 3557 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 2167 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, and RelOptInfo::reltarget.
Referenced by reparameterize_path(), and set_result_pathlist().
Path* create_samplescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 954 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, and RelOptInfo::reltarget.
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 929 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, and RelOptInfo::reltarget.
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 2841 of file pathnode.c.
References RelOptInfo::consider_parallel, PathTarget::cost, cpu_tuple_cost, 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, 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 3495 of file pathnode.c.
References SetOpPath::cmd, RelOptInfo::consider_parallel, cpu_operator_cost, 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 2959 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, subpath(), SortPath::subpath, and work_mem.
Referenced by add_paths_to_grouping_rel(), add_paths_with_pathkeys_for_rel(), create_final_distinct_paths(), create_one_window_path(), create_ordered_paths(), create_partial_distinct_paths(), create_partial_grouping_paths(), gather_grouping_paths(), generate_nonunion_paths(), generate_useful_gather_paths(), and make_union_unique().
SubqueryScanPath* create_subqueryscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
bool | trivial_pathtarget, | ||
List * | pathkeys, | ||
Relids | required_outer | ||
) |
Definition at line 2008 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, subpath(), and SubqueryScanPath::subpath.
Referenced by recurse_set_operations(), reparameterize_path(), and set_subquery_pathlist().
Path* create_tablefuncscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2064 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, and RelOptInfo::reltarget.
Referenced by set_tablefunc_pathlist().
TidRangePath* create_tidrangescan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | tidrangequals, | ||
Relids | required_outer | ||
) |
Definition at line 1210 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, and TidRangePath::tidrangequals.
Referenced by create_tidscan_paths().
TidPath* create_tidscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
List * | tidquals, | ||
Relids | required_outer | ||
) |
Definition at line 1181 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, 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 1652 of file pathnode.c.
References AGG_HASHED, Assert(), bms_equal(), RelOptInfo::cheapest_total_path, RelOptInfo::cheapest_unique_path, RelOptInfo::consider_parallel, cost_agg(), cost_sort(), cpu_operator_cost, 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, 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 3062 of file pathnode.c.
References RelOptInfo::consider_parallel, cpu_operator_cost, 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 make_union_unique().
Path* create_valuesscan_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Relids | required_outer | ||
) |
Definition at line 2090 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, and RelOptInfo::reltarget.
Referenced by set_values_pathlist().
WindowAggPath* create_windowagg_path | ( | PlannerInfo * | root, |
RelOptInfo * | rel, | ||
Path * | subpath, | ||
PathTarget * | target, | ||
List * | windowFuncs, | ||
WindowClause * | winclause, | ||
List * | qual, | ||
bool | topwindow | ||
) |
Definition at line 3427 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, Path::rows, 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 2193 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, and RelOptInfo::reltarget.
Referenced by set_worktable_pathlist().
Path* reparameterize_path | ( | PlannerInfo * | root, |
Path * | path, | ||
Relids | required_outer, | ||
double | loop_count | ||
) |
Definition at line 3886 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, 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 4047 of file pathnode.c.
References ADJUST_CHILD_ATTRS, adjust_child_relids_multilevel(), 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(), FLAT_COPY_PATH, GetMemoryChunkContext(), IndexPath::indexclauses, JoinPath::innerjoinpath, JoinPath::joinrestrictinfo, lappend(), makeNode, MemoryContextSwitchTo(), CustomPath::methods, nodeTag, JoinPath::outerjoinpath, MemoizePath::param_exprs, HashPath::path_hashclauses, MergePath::path_mergeclauses, PATH_REQ_OUTER, ParamPathInfo::ppi_clauses, ParamPathInfo::ppi_req_outer, ParamPathInfo::ppi_rows, ParamPathInfo::ppi_serials, RelOptInfo::ppilist, REPARAMETERIZE_CHILD_PATH, REPARAMETERIZE_CHILD_PATH_LIST, CustomPathMethods::ReparameterizeCustomPathByChild, MaterialPath::subpath, MemoizePath::subpath, GatherPath::subpath, AppendPath::subpaths, and RelOptInfo::top_parent_relids.
Referenced by reparameterize_pathlist_by_child(), try_nestloop_path(), and try_partial_nestloop_path().
|
static |
Definition at line 4343 of file pathnode.c.
References lappend(), lfirst, list_free(), NIL, and reparameterize_path_by_child().
void set_cheapest | ( | RelOptInfo * | parent_rel | ) |
Definition at line 244 of file pathnode.c.