mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-11-27 07:21:09 +08:00
Fix broken MemoizePath support in reparameterize_path().
It neglected to recurse to the subpath, meaning you'd get back a path identical to the input. This could produce wrong query results if the omission meant that the subpath fails to enforce some join clause it should be enforcing. We don't have a test case for this at the moment, but the code is obviously broken and the fix is equally obvious. Back-patch to v14 where Memoize was introduced. Richard Guo Discussion: https://postgr.es/m/CAMbWs4_R=ORpz=Lkn2q3ebPC5EuWyfZF+tmfCPVLBVK5W39mHA@mail.gmail.com
This commit is contained in:
parent
6eb2f0ed4c
commit
e76913802c
@ -3994,9 +3994,15 @@ reparameterize_path(PlannerInfo *root, Path *path,
|
||||
case T_Memoize:
|
||||
{
|
||||
MemoizePath *mpath = (MemoizePath *) path;
|
||||
Path *spath = mpath->subpath;
|
||||
|
||||
spath = reparameterize_path(root, spath,
|
||||
required_outer,
|
||||
loop_count);
|
||||
if (spath == NULL)
|
||||
return NULL;
|
||||
return (Path *) create_memoize_path(root, rel,
|
||||
mpath->subpath,
|
||||
spath,
|
||||
mpath->param_exprs,
|
||||
mpath->hash_operators,
|
||||
mpath->singlerow,
|
||||
|
Loading…
Reference in New Issue
Block a user