On Sun, Jan 17, 2021 at 01:23:39AM +0100, Tomas Vondra wrote: > > CREATE TABLE t AS SELECT generate_series(1,9) AS i; > > CREATE STATISTICS s ON (i+1) ,(i+1+0) FROM t; > > ANALYZE t; > > SELECT i+1 FROM t GROUP BY 1; > > ERROR: corrupt MVNDistinct entry > > Thanks. There was a thinko in estimate_multivariate_ndistinct, resulting in > mismatching the ndistinct coefficient items. The attached patch fixes that, > but I've realized the way we pick the "best" statistics may need some > improvements (I added an XXX comment about that).
That maybe indicates a deficiency in testing and code coverage. | postgres=# CREATE TABLE t(i int); | postgres=# CREATE STATISTICS s2 ON (i+1) ,(i+1+0) FROM t; | postgres=# \d t | Table "public.t" | Column | Type | Collation | Nullable | Default | --------+---------+-----------+----------+--------- | i | integer | | | | Indexes: | "t_i_idx" btree (i) | Statistics objects: | "public"."s2" (ndistinct, dependencies, mcv) ON FROM t on ... what ? -- Justin