Re: [HACKERS] PATCH: multivariate histograms and MCV lists
От | Tomas Vondra |
---|---|
Тема | Re: [HACKERS] PATCH: multivariate histograms and MCV lists |
Дата | |
Msg-id | 2f373a2e-b014-64b2-6e20-5c6276ed2c2e@2ndquadrant.com обсуждение исходный текст |
Ответ на | Re: [HACKERS] PATCH: multivariate histograms and MCV lists (Dean Rasheed <dean.a.rasheed@gmail.com>) |
Список | pgsql-hackers |
On 3/17/19 1:14 PM, Dean Rasheed wrote: > On Sat, 16 Mar 2019 at 23:44, Tomas Vondra <tomas.vondra@2ndquadrant.com> wrote: >>> >>> 16). This regression test fails for me: >>> >>> @@ -654,11 +654,11 @@ >>> -- check change of unrelated column type does not reset the MCV statistics >>> ALTER TABLE mcv_lists ALTER COLUMN d TYPE VARCHAR(64); >>> SELECT * FROM check_estimated_rows('SELECT * FROM mcv_lists WHERE a = >>> 1 AND b = ''1'''); >>> estimated | actual >>> -----------+-------- >>> - 50 | 50 >>> + 11 | 50 >>> (1 row) >>> >>> Maybe that's platform-dependent, given what you said about >>> reltuples/relpages being reset. An easy workaround for this would be >>> to modify this test (and perhaps the one that follows) to just query >>> pg_statistic_ext to see if the MCV statistics have been reset. >>> >> >> Ah, sorry for not explaining this bit - the failure is expected, due to >> the reset of relpages/reltuples I mentioned. We do keep the extended >> stats, but the relsize estimate changes a bit. It surprised me a bit, >> and this test made the behavior apparent. The last patchset included a >> piece that changes that - if we decide not to change this, I think we >> can simply accept the actual output. >> > > I don't think changing the way reltuples is reset ought to be within > the scope of this patch. There might be good reasons for it being the > way it is. Perhaps open a discussion on a separate thread? > Agreed, will do. > As far as this test goes, how about just doing this: > > -- check change of unrelated column type does not reset the MCV statistics > ALTER TABLE mcv_lists ALTER COLUMN d TYPE VARCHAR(64); > SELECT stxmcv IS NOT NULL AS has_mcv > FROM pg_statistic_ext WHERE stxrelid = 'mcv_lists'::regclass; > > -- check change of column type resets the MCV statistics > ALTER TABLE mcv_lists ALTER COLUMN c TYPE numeric; > SELECT stxmcv IS NOT NULL AS has_mcv > FROM pg_statistic_ext WHERE stxrelid = 'mcv_lists'::regclass; > OK, that's probably the best thing we can do. regards -- Tomas Vondra http://www.2ndQuadrant.com PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
В списке pgsql-hackers по дате отправления: