@@ -51,7 +51,6 @@ pathman_join_pathlist_hook(PlannerInfo *root,
5151ListCell * lc ;
5252WalkerContext context ;
5353double paramsel ;
54- bool innerrel_rinfo_contains_part_attr ;
5554
5655/* Call hooks set by other extensions */
5756if (set_join_pathlist_next )
@@ -103,11 +102,6 @@ pathman_join_pathlist_hook(PlannerInfo *root,
103102paramsel *=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-
111105foreach (lc ,innerrel -> pathlist )
112106{
113107AppendPath * cur_inner_path = (AppendPath * )lfirst (lc );
@@ -132,14 +126,10 @@ pathman_join_pathlist_hook(PlannerInfo *root,
132126/* Get the ParamPathInfo for a parameterized path */
133127ppi = 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 )))
143133continue ;
144134
145135inner = create_runtimeappend_path (root ,cur_inner_path ,ppi ,paramsel );
@@ -213,13 +203,13 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
213203ListCell * lc ;
214204Oid * children ;
215205List * ranges ,
216- * wrappers ;
206+ * wrappers ,
207+ * rel_partattr_clauses = NIL ;
217208PathKey * pathkeyAsc = NULL ,
218209* pathkeyDesc = NULL ;
219210double paramsel = 1.0 ;
220211WalkerContext context ;
221212int i ;
222- bool rel_rinfo_contains_part_attr = false;
223213
224214if (prel -> parttype == PT_RANGE )
225215{
@@ -336,20 +326,19 @@ pathman_rel_pathlist_hook(PlannerInfo *root,
336326pg_pathman_enable_runtime_merge_append ))
337327return ;
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 ))
341335return ;
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-
348337foreach (lc ,rel -> pathlist )
349338{
350339AppendPath * cur_path = (AppendPath * )lfirst (lc );
351340Relids 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 );
353342Path * 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 ,
368357prel ,rel -> relid ))))
369358continue ;