Re: PATCH: add support for IN and @> in functional-dependencystatistics use
От | Dean Rasheed |
---|---|
Тема | Re: PATCH: add support for IN and @> in functional-dependencystatistics use |
Дата | |
Msg-id | CAEZATCX31UBq=SF+UP+mrgQ-dWiknoT3Jr5HhhfcFTtckn6fJQ@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: PATCH: add support for IN and @> in functional-dependencystatistics use (Tomas Vondra <tomas.vondra@2ndquadrant.com>) |
Ответы |
Re: PATCH: add support for IN and @> in functional-dependencystatistics use
|
Список | pgsql-hackers |
On Wed, 18 Mar 2020 at 00:29, Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote: > > OK, I took a look. I think from the correctness POV the patch is OK, but > I think the dependencies_clauselist_selectivity() function now got a bit > too complex. I've been able to parse it now, but I'm sure I'll have > trouble in the future :-( > > Can we refactor / split it somehow and move bits of the logic to smaller > functions, or something like that? > Yeah, it has gotten a bit long. It's somewhat tricky splitting it up, because of the number of shared variables used throughout the function, but here's an updated patch splitting it into what seemed like the 2 most logical pieces. The first piece (still in dependencies_clauselist_selectivity()) works out what dependencies can/should be applied, and the second piece in a new function does the actual work of applying the list of functional dependencies to the clause list. I think that has made it easier to follow, and it has also reduced the complexity of the final "no applicable stats" branch. > Another thing I'd like to suggest is keeping the "old" formula, and > instead of just replacing it with > > P(a,b) = f * Min(P(a), P(b)) + (1-f) * P(a) * P(b) > > but explaining how the old formula may produce nonsensical selectivity, > and how the new formula addresses that issue. > I think this is purely a comment issue? I've added some more extensive comments attempting to justify the formulae. Regards, Dean
Вложения
В списке pgsql-hackers по дате отправления: