mirror of
https://github.com/postgres/postgres.git
synced 2025-07-08 11:42:09 +03:00
Post-PG 10 beta1 pgindent run
perltidy run not included.
This commit is contained in:
@ -112,7 +112,7 @@ static void set_tablefunc_pathlist(PlannerInfo *root, RelOptInfo *rel,
|
||||
static void set_cte_pathlist(PlannerInfo *root, RelOptInfo *rel,
|
||||
RangeTblEntry *rte);
|
||||
static void set_namedtuplestore_pathlist(PlannerInfo *root, RelOptInfo *rel,
|
||||
RangeTblEntry *rte);
|
||||
RangeTblEntry *rte);
|
||||
static void set_worktable_pathlist(PlannerInfo *root, RelOptInfo *rel,
|
||||
RangeTblEntry *rte);
|
||||
static RelOptInfo *make_rel_from_joinlist(PlannerInfo *root, List *joinlist);
|
||||
@ -648,6 +648,7 @@ set_rel_consider_parallel(PlannerInfo *root, RelOptInfo *rel,
|
||||
return;
|
||||
|
||||
case RTE_NAMEDTUPLESTORE:
|
||||
|
||||
/*
|
||||
* tuplestore cannot be shared, at least without more
|
||||
* infrastructure to support that.
|
||||
@ -1579,7 +1580,7 @@ generate_mergeappend_paths(PlannerInfo *root, RelOptInfo *rel,
|
||||
total_subpaths,
|
||||
pathkeys,
|
||||
NULL,
|
||||
partitioned_rels));
|
||||
partitioned_rels));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2220,10 +2221,10 @@ generate_gather_paths(PlannerInfo *root, RelOptInfo *rel)
|
||||
* For each useful ordering, we can consider an order-preserving Gather
|
||||
* Merge.
|
||||
*/
|
||||
foreach (lc, rel->partial_pathlist)
|
||||
foreach(lc, rel->partial_pathlist)
|
||||
{
|
||||
Path *subpath = (Path *) lfirst(lc);
|
||||
GatherMergePath *path;
|
||||
Path *subpath = (Path *) lfirst(lc);
|
||||
GatherMergePath *path;
|
||||
|
||||
if (subpath->pathkeys == NIL)
|
||||
continue;
|
||||
|
@ -664,8 +664,8 @@ cost_index(IndexPath *path, PlannerInfo *root, double loop_count,
|
||||
{
|
||||
/*
|
||||
* For index only scans compute workers based on number of index pages
|
||||
* fetched; the number of heap pages we fetch might be so small as
|
||||
* to effectively rule out parallelism, which we don't want to do.
|
||||
* fetched; the number of heap pages we fetch might be so small as to
|
||||
* effectively rule out parallelism, which we don't want to do.
|
||||
*/
|
||||
if (indexonly)
|
||||
rand_heap_pages = -1;
|
||||
@ -2188,7 +2188,7 @@ final_cost_nestloop(PlannerInfo *root, NestPath *path,
|
||||
/* For partial paths, scale row estimate. */
|
||||
if (path->path.parallel_workers > 0)
|
||||
{
|
||||
double parallel_divisor = get_parallel_divisor(&path->path);
|
||||
double parallel_divisor = get_parallel_divisor(&path->path);
|
||||
|
||||
path->path.rows =
|
||||
clamp_row_est(path->path.rows / parallel_divisor);
|
||||
@ -2624,7 +2624,7 @@ final_cost_mergejoin(PlannerInfo *root, MergePath *path,
|
||||
/* For partial paths, scale row estimate. */
|
||||
if (path->jpath.path.parallel_workers > 0)
|
||||
{
|
||||
double parallel_divisor = get_parallel_divisor(&path->jpath.path);
|
||||
double parallel_divisor = get_parallel_divisor(&path->jpath.path);
|
||||
|
||||
path->jpath.path.rows =
|
||||
clamp_row_est(path->jpath.path.rows / parallel_divisor);
|
||||
@ -3029,7 +3029,7 @@ final_cost_hashjoin(PlannerInfo *root, HashPath *path,
|
||||
/* For partial paths, scale row estimate. */
|
||||
if (path->jpath.path.parallel_workers > 0)
|
||||
{
|
||||
double parallel_divisor = get_parallel_divisor(&path->jpath.path);
|
||||
double parallel_divisor = get_parallel_divisor(&path->jpath.path);
|
||||
|
||||
path->jpath.path.rows =
|
||||
clamp_row_est(path->jpath.path.rows / parallel_divisor);
|
||||
|
@ -1073,8 +1073,8 @@ build_index_paths(PlannerInfo *root, RelOptInfo *rel,
|
||||
true);
|
||||
|
||||
/*
|
||||
* if, after costing the path, we find that it's not worth
|
||||
* using parallel workers, just free it.
|
||||
* if, after costing the path, we find that it's not worth using
|
||||
* parallel workers, just free it.
|
||||
*/
|
||||
if (ipath->path.parallel_workers > 0)
|
||||
add_partial_path(rel, (Path *) ipath);
|
||||
|
@ -140,7 +140,7 @@ static TableFuncScan *create_tablefuncscan_plan(PlannerInfo *root, Path *best_pa
|
||||
static CteScan *create_ctescan_plan(PlannerInfo *root, Path *best_path,
|
||||
List *tlist, List *scan_clauses);
|
||||
static NamedTuplestoreScan *create_namedtuplestorescan_plan(PlannerInfo *root,
|
||||
Path *best_path, List *tlist, List *scan_clauses);
|
||||
Path *best_path, List *tlist, List *scan_clauses);
|
||||
static WorkTableScan *create_worktablescan_plan(PlannerInfo *root, Path *best_path,
|
||||
List *tlist, List *scan_clauses);
|
||||
static ForeignScan *create_foreignscan_plan(PlannerInfo *root, ForeignPath *best_path,
|
||||
@ -200,7 +200,7 @@ static TableFuncScan *make_tablefuncscan(List *qptlist, List *qpqual,
|
||||
static CteScan *make_ctescan(List *qptlist, List *qpqual,
|
||||
Index scanrelid, int ctePlanId, int cteParam);
|
||||
static NamedTuplestoreScan *make_namedtuplestorescan(List *qptlist, List *qpqual,
|
||||
Index scanrelid, char *enrname);
|
||||
Index scanrelid, char *enrname);
|
||||
static WorkTableScan *make_worktablescan(List *qptlist, List *qpqual,
|
||||
Index scanrelid, int wtParam);
|
||||
static Append *make_append(List *appendplans, List *tlist, List *partitioned_rels);
|
||||
@ -4910,7 +4910,7 @@ label_sort_with_costsize(PlannerInfo *root, Sort *plan, double limit_tuples)
|
||||
|
||||
/*
|
||||
* bitmap_subplan_mark_shared
|
||||
* Set isshared flag in bitmap subplan so that it will be created in
|
||||
* Set isshared flag in bitmap subplan so that it will be created in
|
||||
* shared memory.
|
||||
*/
|
||||
static void
|
||||
@ -6425,7 +6425,7 @@ make_modifytable(PlannerInfo *root,
|
||||
node->partitioned_rels = partitioned_rels;
|
||||
node->resultRelations = resultRelations;
|
||||
node->resultRelIndex = -1; /* will be set correctly in setrefs.c */
|
||||
node->rootResultRelIndex = -1; /* will be set correctly in setrefs.c */
|
||||
node->rootResultRelIndex = -1; /* will be set correctly in setrefs.c */
|
||||
node->plans = subplans;
|
||||
if (!onconflict)
|
||||
{
|
||||
|
@ -73,9 +73,9 @@ create_upper_paths_hook_type create_upper_paths_hook = NULL;
|
||||
#define EXPRKIND_QUAL 0
|
||||
#define EXPRKIND_TARGET 1
|
||||
#define EXPRKIND_RTFUNC 2
|
||||
#define EXPRKIND_RTFUNC_LATERAL 3
|
||||
#define EXPRKIND_RTFUNC_LATERAL 3
|
||||
#define EXPRKIND_VALUES 4
|
||||
#define EXPRKIND_VALUES_LATERAL 5
|
||||
#define EXPRKIND_VALUES_LATERAL 5
|
||||
#define EXPRKIND_LIMIT 6
|
||||
#define EXPRKIND_APPINFO 7
|
||||
#define EXPRKIND_PHV 8
|
||||
@ -1041,7 +1041,7 @@ inheritance_planner(PlannerInfo *root)
|
||||
ListCell *lc;
|
||||
Index rti;
|
||||
RangeTblEntry *parent_rte;
|
||||
List *partitioned_rels = NIL;
|
||||
List *partitioned_rels = NIL;
|
||||
|
||||
Assert(parse->commandType != CMD_INSERT);
|
||||
|
||||
@ -1102,10 +1102,10 @@ inheritance_planner(PlannerInfo *root)
|
||||
/*
|
||||
* If the parent RTE is a partitioned table, we should use that as the
|
||||
* nominal relation, because the RTEs added for partitioned tables
|
||||
* (including the root parent) as child members of the inheritance set
|
||||
* do not appear anywhere else in the plan. The situation is exactly
|
||||
* the opposite in the case of non-partitioned inheritance parent as
|
||||
* described below.
|
||||
* (including the root parent) as child members of the inheritance set do
|
||||
* not appear anywhere else in the plan. The situation is exactly the
|
||||
* opposite in the case of non-partitioned inheritance parent as described
|
||||
* below.
|
||||
*/
|
||||
parent_rte = rt_fetch(parentRTindex, root->parse->rtable);
|
||||
if (parent_rte->relkind == RELKIND_PARTITIONED_TABLE)
|
||||
@ -1278,9 +1278,9 @@ inheritance_planner(PlannerInfo *root)
|
||||
* is used elsewhere in the plan, so using the original parent RTE
|
||||
* would give rise to confusing use of multiple aliases in EXPLAIN
|
||||
* output for what the user will think is the "same" table. OTOH,
|
||||
* it's not a problem in the partitioned inheritance case, because
|
||||
* the duplicate child RTE added for the parent does not appear
|
||||
* anywhere else in the plan tree.
|
||||
* it's not a problem in the partitioned inheritance case, because the
|
||||
* duplicate child RTE added for the parent does not appear anywhere
|
||||
* else in the plan tree.
|
||||
*/
|
||||
if (nominalRelation < 0)
|
||||
nominalRelation = appinfo->child_relid;
|
||||
@ -3364,7 +3364,7 @@ get_number_of_groups(PlannerInfo *root,
|
||||
ListCell *lc;
|
||||
ListCell *lc2;
|
||||
|
||||
Assert(gd); /* keep Coverity happy */
|
||||
Assert(gd); /* keep Coverity happy */
|
||||
|
||||
dNumGroups = 0;
|
||||
|
||||
@ -4336,8 +4336,8 @@ consider_groupingsets_paths(PlannerInfo *root,
|
||||
/*
|
||||
* We treat this as a knapsack problem: the knapsack capacity
|
||||
* represents work_mem, the item weights are the estimated memory
|
||||
* usage of the hashtables needed to implement a single rollup, and
|
||||
* we really ought to use the cost saving as the item value;
|
||||
* usage of the hashtables needed to implement a single rollup,
|
||||
* and we really ought to use the cost saving as the item value;
|
||||
* however, currently the costs assigned to sort nodes don't
|
||||
* reflect the comparison costs well, and so we treat all items as
|
||||
* of equal value (each rollup we hash instead saves us one sort).
|
||||
@ -6072,7 +6072,7 @@ get_partitioned_child_rels(PlannerInfo *root, Index rti)
|
||||
|
||||
foreach(l, root->pcinfo_list)
|
||||
{
|
||||
PartitionedChildRelInfo *pc = lfirst(l);
|
||||
PartitionedChildRelInfo *pc = lfirst(l);
|
||||
|
||||
if (pc->parent_relid == rti)
|
||||
{
|
||||
|
@ -883,8 +883,9 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset)
|
||||
* If the main target relation is a partitioned table, the
|
||||
* following list contains the RT indexes of partitioned child
|
||||
* relations including the root, which are not included in the
|
||||
* above list. We also keep RT indexes of the roots separately
|
||||
* to be identitied as such during the executor initialization.
|
||||
* above list. We also keep RT indexes of the roots
|
||||
* separately to be identitied as such during the executor
|
||||
* initialization.
|
||||
*/
|
||||
if (splan->partitioned_rels != NIL)
|
||||
{
|
||||
@ -893,9 +894,9 @@ set_plan_refs(PlannerInfo *root, Plan *plan, int rtoffset)
|
||||
list_copy(splan->partitioned_rels));
|
||||
/* Remember where this root will be in the global list. */
|
||||
splan->rootResultRelIndex =
|
||||
list_length(root->glob->rootResultRelations);
|
||||
list_length(root->glob->rootResultRelations);
|
||||
root->glob->rootResultRelations =
|
||||
lappend_int(root->glob->rootResultRelations,
|
||||
lappend_int(root->glob->rootResultRelations,
|
||||
linitial_int(splan->partitioned_rels));
|
||||
}
|
||||
}
|
||||
|
@ -1555,9 +1555,10 @@ expand_inherited_rtentry(PlannerInfo *root, RangeTblEntry *rte, Index rti)
|
||||
newrc->waitPolicy = oldrc->waitPolicy;
|
||||
|
||||
/*
|
||||
* We mark RowMarks for partitioned child tables as parent RowMarks
|
||||
* so that the executor ignores them (except their existence means
|
||||
* that the child tables be locked using appropriate mode).
|
||||
* We mark RowMarks for partitioned child tables as parent
|
||||
* RowMarks so that the executor ignores them (except their
|
||||
* existence means that the child tables be locked using
|
||||
* appropriate mode).
|
||||
*/
|
||||
newrc->isParent = (childrte->relkind == RELKIND_PARTITIONED_TABLE);
|
||||
|
||||
@ -1593,8 +1594,8 @@ expand_inherited_rtentry(PlannerInfo *root, RangeTblEntry *rte, Index rti)
|
||||
* parent RT index to the list of RT indexes of its partitioned child
|
||||
* tables. When creating an Append or a ModifyTable path for the parent,
|
||||
* we copy the child RT index list verbatim to the path so that it could
|
||||
* be carried over to the executor so that the latter could identify
|
||||
* the partitioned child tables.
|
||||
* be carried over to the executor so that the latter could identify the
|
||||
* partitioned child tables.
|
||||
*/
|
||||
if (partitioned_child_rels != NIL)
|
||||
{
|
||||
|
@ -1642,8 +1642,8 @@ create_gather_merge_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath,
|
||||
Relids required_outer, double *rows)
|
||||
{
|
||||
GatherMergePath *pathnode = makeNode(GatherMergePath);
|
||||
Cost input_startup_cost = 0;
|
||||
Cost input_total_cost = 0;
|
||||
Cost input_startup_cost = 0;
|
||||
Cost input_total_cost = 0;
|
||||
|
||||
Assert(subpath->parallel_safe);
|
||||
Assert(pathkeys);
|
||||
@ -1669,7 +1669,7 @@ create_gather_merge_path(PlannerInfo *root, RelOptInfo *rel, Path *subpath,
|
||||
else
|
||||
{
|
||||
/* We'll need to insert a Sort node, so include cost for that */
|
||||
Path sort_path; /* dummy for result of cost_sort */
|
||||
Path sort_path; /* dummy for result of cost_sort */
|
||||
|
||||
cost_sort(&sort_path,
|
||||
root,
|
||||
|
@ -1149,7 +1149,7 @@ get_relation_constraints(PlannerInfo *root,
|
||||
Index varno = rel->relid;
|
||||
Relation relation;
|
||||
TupleConstr *constr;
|
||||
List *pcqual;
|
||||
List *pcqual;
|
||||
|
||||
/*
|
||||
* We assume the relation has already been safely locked.
|
||||
|
@ -149,9 +149,9 @@ build_simple_rel(PlannerInfo *root, int relid, RelOptInfo *parent)
|
||||
|
||||
/*
|
||||
* Pass top parent's relids down the inheritance hierarchy. If the parent
|
||||
* has top_parent_relids set, it's a direct or an indirect child of the top
|
||||
* parent indicated by top_parent_relids. By extension this child is also
|
||||
* an indirect child of that parent.
|
||||
* has top_parent_relids set, it's a direct or an indirect child of the
|
||||
* top parent indicated by top_parent_relids. By extension this child is
|
||||
* also an indirect child of that parent.
|
||||
*/
|
||||
if (parent)
|
||||
{
|
||||
|
Reference in New Issue
Block a user