Re: Statistics and selectivity estimation for ranges
От | Heikki Linnakangas |
---|---|
Тема | Re: Statistics and selectivity estimation for ranges |
Дата | |
Msg-id | 5140CF0C.2080506@vmware.com обсуждение исходный текст |
Ответ на | Re: Statistics and selectivity estimation for ranges (Alexander Korotkov <aekorotkov@gmail.com>) |
Ответы |
Re: Statistics and selectivity estimation for ranges
|
Список | pgsql-hackers |
On 01.03.2013 16:22, Alexander Korotkov wrote: > On Tue, Mar 12, 2013 at 8:03 PM, Heikki Linnakangas<hlinnakangas@vmware.com >> wrote: > >> So, after some hacking, I ended up with this version. I find it more >> readable, I hope I didn't miss anything. This seems to produce results that >> are close, but not identical, to the original patch. I'm not sure where the >> discrepancy is coming from, or which patch is more correct in that respect. >> I'll continue from this tomorrow, but if you have the time, please take a >> look and let me know what you think. > > I've read your explanation and version of patch. In general it seems > correct to me. > There is one point why I have breaked up abstraction in some functions is > infinities. For example, in calc_length_hist_frac one or both of length1 > and length2 can be infinity. In the line >> frac = area / (length2 - length1); > you can get NaN result. I've especially adjusted the code to get more of > less correct result in this case. Hmm, good point. I think I managed to fix those cases in the attached version. Is there any other corner case that I missed? > Another minor note about this line >> bin_width *= get_position(typcache, lower,&hist_lower[i], >> &hist_lower[i + 1]); > ITSM it sould looks like >> bin_width -= 1.0 - get_position(typcache, lower,&hist_lower[i], >> &hist_lower[i + 1]); > Imagine lower and upper bounds fall into same histogram bin. In this case > we should subtract lengths of both parts which were cut in the left and in > the right. Yes, true. There's one negation too many above, though; should be: bin_width -= get_position(typcache, lower,&hist_lower[i], &hist_lower[i + 1]); Fixed that. Barring any more issues, I'll read through this once more tomorrow and commit. - Heikki
Вложения
В списке pgsql-hackers по дате отправления: