Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commita314c34

Browse files
committed
Clamp semijoin selectivity to be not more than inner-join selectivity.
We should never estimate the output of a semijoin to be more rows thanwe estimate for an inner join with the same input rels and join condition;it's obviously impossible for that to happen. However, given therelatively poor quality of our semijoin selectivity estimates ---particularly, but not only, in cases where we punt and return a defaultestimate --- we did often deliver such estimates. To improve matters,calculate both estimates inside eqjoinsel() and take the smaller one.The bulk of this patch is just mechanical refactoring to avoid repetitiveinformation lookup when we call both eqjoinsel_semi and eqjoinsel_inner.The actual new behavior is justselec = Min(selec, inner_rel->rows * selec_inner);which looks a bit odd but is correct because of our different definitionsfor inner and semi join selectivity.There is one ensuing plan change in the regression tests, but it looksreasonable enough (and checking the actual row counts shows that theestimate moved closer to reality, not further away).Per bug #15160 from Alexey Ermakov. Although this is arguably a bug fix,I won't risk destabilizing plan choices in stable branches byback-patching.Tom Lane, reviewed by Melanie PlagemanDiscussion:https://postgr.es/m/152395805004.19366.3107109716821067806@wrigleys.postgresql.org
1 parent3be5fe2 commita314c34

File tree

2 files changed

+147
-130
lines changed

2 files changed

+147
-130
lines changed

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp