Skip to content

Commit 3f55c5e

Browse files
danolivoAlena Rybakina
authored and
Alena Rybakina
committed
Bugfix. Copy of clauses, have got by aqo_get_clauses() has a specific structure
and shouldn't be touched by any postgres machinery except node hash generator.
1 parent 648980c commit 3f55c5e

File tree

2 files changed

+11
-7
lines changed

2 files changed

+11
-7
lines changed

cardinality_hooks.c

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,10 +228,16 @@ aqo_get_parameterized_baserel_size(PlannerInfo *root,
228228
{
229229
MemoryContext mcxt;
230230

231+
selectivities = list_concat(
232+
get_selectivities(root, param_clauses, rel->relid,
233+
JOIN_INNER, NULL),
234+
get_selectivities(root, rel->baserestrictinfo,
235+
rel->relid,
236+
JOIN_INNER, NULL));
237+
238+
/* Make specific copy of clauses with mutated subplans */
231239
allclauses = list_concat(aqo_get_clauses(root, param_clauses),
232240
aqo_get_clauses(root, rel->baserestrictinfo));
233-
selectivities = get_selectivities(root, allclauses, rel->relid,
234-
JOIN_INNER, NULL);
235241
relid = planner_rt_fetch(rel->relid, root)->relid;
236242
get_eclasses(allclauses, &nargs, &args_hash, &eclass_hash);
237243

path_utils.c

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -356,18 +356,16 @@ get_path_clauses(Path *path, PlannerInfo *root, List **selectivities)
356356
case T_ForeignPath:
357357
/* The same as in the default case */
358358
default:
359-
cur = list_concat(aqo_get_clauses(root,
360-
path->parent->baserestrictinfo),
359+
cur = list_concat(list_copy(path->parent->baserestrictinfo),
361360
path->param_info ?
362-
aqo_get_clauses(root,
363-
path->param_info->ppi_clauses) :
364-
NIL);
361+
path->param_info->ppi_clauses : NIL);
365362
if (path->param_info)
366363
cur_sel = get_selectivities(root, cur, path->parent->relid,
367364
JOIN_INNER, NULL);
368365
else
369366
cur_sel = get_selectivities(root, cur, 0, JOIN_INNER, NULL);
370367
*selectivities = cur_sel;
368+
cur = aqo_get_clauses(root, cur);
371369
return cur;
372370
break;
373371
}

0 commit comments

Comments
 (0)