Re: Choosing values for multivariate MCV lists
Tomas Vondra <tomas.vondra@2ndquadrant.com>
From: Tomas Vondra <tomas.vondra@2ndquadrant.com>
To: Dean Rasheed <dean.a.rasheed@gmail.com>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2019-06-23T23:56:36Z
Lists: pgsql-hackers
Attachments
- 0001-rework-pg_mcv_list_items.patch (text/plain)
On Mon, Jun 24, 2019 at 01:42:32AM +0200, Tomas Vondra wrote: >On Sun, Jun 23, 2019 at 10:23:19PM +0200, Tomas Vondra wrote: >>On Sun, Jun 23, 2019 at 08:48:26PM +0100, Dean Rasheed wrote: >>>On Sat, 22 Jun 2019 at 15:10, Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote: >>>>One annoying thing I noticed is that the base_frequency tends to end up >>>>being 0, most likely due to getting too small. It's a bit strange, though, >>>>because with statistic target set to 10k the smallest frequency for a >>>>single column is 1/3e6, so for 2 columns it'd be ~1/9e12 (which I think is >>>>something the float8 can represent). >>>> >>> >>>Yeah, it should be impossible for the base frequency to underflow to >>>0. However, it looks like the problem is with mcv_list_items()'s use >>>of %f to convert to text, which is pretty ugly. >>> >> >>Yeah, I realized that too, eventually. One way to fix that would be >>adding %.15f to the sprintf() call, but that just adds ugliness. It's >>probably time to rewrite the function to build the tuple from datums, >>instead of relying on BuildTupleFromCStrings. >> > >OK, attached is a patch doing this. It's pretty simple, and it does >resolve the issue with frequency precision. > >There's one issue with the signature, though - currently the function >returns null flags as bool array, but values are returned as simple >text value (formatted in array-like way, but still just a text). > >In the attached patch I've reworked both to proper arrays, but obviously >that'd require a CATVERSION bump - and there's not much apetite for that >past beta2, I suppose. So I'll just undo this bit. > Meh, I forgot to attach the patch, of couse ... -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Commits
-
Fix pg_mcv_list_items() to produce text[]
- cc052b423ad7 12.0 landed
- 4d66285adc6b 13.0 landed
-
Speed-up build of MCV lists with many distinct values
- 57f459cf6c48 12.0 landed
- e365a581c246 13.0 landed