On Sat, 16 Mar 2019 at 23:44, Tomas Vondra <tomas.von...@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? 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; Regards, Dean