Re: ERROR: corrupt MVNDistinct entry

Richard Guo <guofenglinux@gmail.com>

From: Richard Guo <guofenglinux@gmail.com>
To: Andrei Lepikhov <lepihov@gmail.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2024-12-25T08:14:53Z
Lists: pgsql-hackers
On Wed, Dec 25, 2024 at 11:34 AM Andrei Lepikhov <lepihov@gmail.com> wrote:
> I have a couple of notes.
> 1. The nulling_relids provides us sensible information about possible
> nulls inside the input. We are not using it to estimate the number of
> such nulls for now. Does Your idea consist of obtaining 'clear'
> statistics and reusing nulling_relids knowledge somewhere later?

Are you referring to the nullfrac estimates?  A RelOptInfo's
nulling_relids records all above outer joins that can null this rel.
However, I cannot see how it helps with nullfrac.

> 2. It is ok for Vars. But what about expressions? We use equal() in
> distinct, MCV and dependencies modules. Do we need to remove nulls
> before using extended statistics as a general rule?

AFAIU, the expressions in extended statistics are not decorated with
any nullingrels bits, are they?

Thanks
Richard



Commits

  1. Ignore nullingrels when looking up statistics

  2. Make Vars be outer-join-aware.