mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-02-05 19:09:58 +08:00
Fix adjust_semi_join to be more cautious about clauseless joins.
It was reporting that these were fully indexed (hence cheap), when of course they're the exact opposite of that. I'm not certain if the case would arise in practice, since a clauseless semijoin is hard to produce in SQL, but if it did happen we'd make some dumb decisions.
This commit is contained in:
parent
368e44f6a5
commit
3f36070d72
@ -2810,12 +2810,20 @@ adjust_semi_join(PlannerInfo *root, JoinPath *path, SpecialJoinInfo *sjinfo,
|
||||
*/
|
||||
if (indexed_join_quals)
|
||||
{
|
||||
List *nrclauses;
|
||||
if (path->joinrestrictinfo != NIL)
|
||||
{
|
||||
List *nrclauses;
|
||||
|
||||
nrclauses = select_nonredundant_join_clauses(root,
|
||||
path->joinrestrictinfo,
|
||||
path->innerjoinpath);
|
||||
*indexed_join_quals = (nrclauses == NIL);
|
||||
nrclauses = select_nonredundant_join_clauses(root,
|
||||
path->joinrestrictinfo,
|
||||
path->innerjoinpath);
|
||||
*indexed_join_quals = (nrclauses == NIL);
|
||||
}
|
||||
else
|
||||
{
|
||||
/* a clauseless join does NOT qualify */
|
||||
*indexed_join_quals = false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
|
Loading…
Reference in New Issue
Block a user