Skip to content

Commit d40ade2

Browse files
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 ad4dd06 commit d40ade2

File tree

2 files changed

+12
-7
lines changed

2 files changed

+12
-7
lines changed

‎cardinality_hooks.c

+9-2
Original file line numberDiff line numberDiff line change
@@ -234,10 +234,17 @@ aqo_get_parameterized_baserel_size(PlannerInfo *root,
234234
{
235235
MemoryContext old_ctx_m;
236236

237+
selectivities = list_concat(
238+
get_selectivities(root, param_clauses, rel->relid,
239+
JOIN_INNER, NULL),
240+
get_selectivities(root, rel->baserestrictinfo,
241+
rel->relid,
242+
JOIN_INNER, NULL));
243+
244+
/* Make specific copy of clauses with mutated subplans */
237245
allclauses = list_concat(aqo_get_clauses(root, param_clauses),
238246
aqo_get_clauses(root, rel->baserestrictinfo));
239-
selectivities = get_selectivities(root, allclauses, rel->relid,
240-
JOIN_INNER, NULL);
247+
241248
rte = planner_rt_fetch(rel->relid, root);
242249
get_eclasses(allclauses, &nargs, &args_hash, &eclass_hash);
243250

‎path_utils.c

+3-5
Original file line numberDiff line numberDiff line change
@@ -430,18 +430,16 @@ get_path_clauses(Path *path, PlannerInfo *root, List **selectivities)
430430
case T_ForeignPath:
431431
/* The same as in the default case */
432432
default:
433-
cur = list_concat(aqo_get_clauses(root,
434-
path->parent->baserestrictinfo),
433+
cur = list_concat(list_copy(path->parent->baserestrictinfo),
435434
path->param_info ?
436-
aqo_get_clauses(root,
437-
path->param_info->ppi_clauses) :
438-
NIL);
435+
path->param_info->ppi_clauses : NIL);
439436
if (path->param_info)
440437
cur_sel = get_selectivities(root, cur, path->parent->relid,
441438
JOIN_INNER, NULL);
442439
else
443440
cur_sel = get_selectivities(root, cur, 0, JOIN_INNER, NULL);
444441
*selectivities = cur_sel;
442+
cur = aqo_get_clauses(root, cur);
445443
return cur;
446444
break;
447445
}

0 commit comments

Comments
 (0)