Skip to content

Commit 7e7cb1b

Browse files
committed
remove innerrel_rinfo_contains_part_attr in pathman_join_pathlist_hook(), reorder clause_contains_params() check in pathman_rel_pathlist_hook(), use get_baserel_parampathinfo() instead of get_appendrel_parampathinfo()
1 parent 06a2bae commit 7e7cb1b

File tree

2 files changed

+15
-24
lines changed

2 files changed

+15
-24
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,5 @@ regression.out
77
*.so
88
*.pyc
99
pg_pathman--*.sql
10+
*.gcda
11+
*.gcno

src/hooks.c

Lines changed: 13 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ pathman_join_pathlist_hook(PlannerInfo *root,
5151
ListCell *lc;
5252
WalkerContext context;
5353
double paramsel;
54-
bool innerrel_rinfo_contains_part_attr;
5554

5655
/* Call hooks set by other extensions */
5756
if (set_join_pathlist_next)
@@ -103,11 +102,6 @@ pathman_join_pathlist_hook(PlannerInfo *root,
103102
paramsel *= wrap->paramsel;
104103
}
105104

106-
/* Check that innerrel's RestrictInfos contain partitioned column */
107-
innerrel_rinfo_contains_part_attr =
108-
get_partitioned_attr_clauses(innerrel->baserestrictinfo,
109-
inner_prel, innerrel->relid) != NULL;
110-
111105
foreach (lc, innerrel->pathlist)
112106
{
113107
AppendPath *cur_inner_path = (AppendPath *) lfirst(lc);
@@ -132,14 +126,10 @@ pathman_join_pathlist_hook(PlannerInfo *root,
132126
/* Get the ParamPathInfo for a parameterized path */
133127
ppi = get_baserel_parampathinfo(root, innerrel, inner_required);
134128

135-
/*
136-
* Skip if neither rel->baserestrictinfo nor
137-
* ppi->ppi_clauses reference partition attribute
138-
*/
139-
if (!(innerrel_rinfo_contains_part_attr ||
140-
(ppi && get_partitioned_attr_clauses(ppi->ppi_clauses,
141-
inner_prel,
142-
innerrel->relid))))
129+
/* Skip ppi->ppi_clauses don't reference partition attribute */
130+
if (!(ppi && get_partitioned_attr_clauses(ppi->ppi_clauses,
131+
inner_prel,
132+
innerrel->relid)))
143133
continue;
144134

145135
inner = create_runtimeappend_path(root, cur_inner_path, ppi, paramsel);
@@ -213,13 +203,13 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
213203
ListCell *lc;
214204
Oid *children;
215205
List *ranges,
216-
*wrappers;
206+
*wrappers,
207+
*rel_partattr_clauses = NIL;
217208
PathKey *pathkeyAsc = NULL,
218209
*pathkeyDesc = NULL;
219210
double paramsel = 1.0;
220211
WalkerContext context;
221212
int i;
222-
bool rel_rinfo_contains_part_attr = false;
223213

224214
if (prel->parttype == PT_RANGE)
225215
{
@@ -336,20 +326,19 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
336326
pg_pathman_enable_runtime_merge_append))
337327
return;
338328

329+
/* Check that rel's RestrictInfo contains partitioned column */
330+
rel_partattr_clauses = get_partitioned_attr_clauses(rel->baserestrictinfo,
331+
prel, rel->relid);
332+
339333
/* Runtime[Merge]Append is pointless if there are no params in clauses */
340-
if (!clause_contains_params((Node *) get_actual_clauses(rel->baserestrictinfo)))
334+
if (!clause_contains_params((Node *) rel_partattr_clauses))
341335
return;
342336

343-
/* Check that rel's RestrictInfo contains partitioned column */
344-
rel_rinfo_contains_part_attr =
345-
get_partitioned_attr_clauses(rel->baserestrictinfo,
346-
prel, rel->relid) != NULL;
347-
348337
foreach (lc, rel->pathlist)
349338
{
350339
AppendPath *cur_path = (AppendPath *) lfirst(lc);
351340
Relids inner_required = PATH_REQ_OUTER((Path *) cur_path);
352-
ParamPathInfo *ppi = get_appendrel_parampathinfo(rel, inner_required);
341+
ParamPathInfo *ppi = get_baserel_parampathinfo(root, rel, inner_required);
353342
Path *inner_path = NULL;
354343

355344
/* Skip if rel contains some join-related stuff or path type mismatched */
@@ -363,7 +352,7 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
363352
* Skip if neither rel->baserestrictinfo nor
364353
* ppi->ppi_clauses reference partition attribute
365354
*/
366-
if (!(rel_rinfo_contains_part_attr ||
355+
if (!(rel_partattr_clauses ||
367356
(ppi && get_partitioned_attr_clauses(ppi->ppi_clauses,
368357
prel, rel->relid))))
369358
continue;

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy