Re: Extended Statistics set/restore/clear functions.

From: Corey Huinker <corey(dot)huinker(at)gmail(dot)com>
To: jian he <jian(dot)universality(at)gmail(dot)com>
Cc: Tomas Vondra <tomas(at)vondra(dot)me>, pgsql-hackers(at)lists(dot)postgresql(dot)org
Subject: Re: Extended Statistics set/restore/clear functions.
Date: 2025-02-20 04:43:16
Message-ID: CADkLM=ekXTzxG7_-Rd7qR0Gwrq8o3kG7oSkAJRTUNSqXi0KTnA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

>
> select '{"1, 0B100101":"NaN"}'::pg_ndistinct;
>> pg_ndistinct
>> ------------------------
>> {"1, 37": -2147483648}
>> (1 row)
>>
>
> I think my initial reaction is to just refuse those special values, but
> I'll look into the parsing code to see what can be done.
>

I noticed that the output function for pg_ndistinct casts that value to an
integer before formatting it %d, so it's being treated as an integer even
if it is not stored as one. After some consultation with Tomas, it made the
most sense to just replicate this on the input side as well, and that is
addressed in the patches below.

I've updated and rebased the patches.

The existing pg_ndistinct and pg_dependences formats were kept as-is. The
formats are clumsy, more processing-friendly formats would be easier, but
the need for such processing is minimal bordering on theoretical, so there
is little impact in keeping the historical format.

There are now checks to ensure that the pg_ndistinct or pg_dependencies
value assigned to an extended statistics object actually makes sense for
that object. What this amounts to is checking that for every attnum cited,
the positive attnums are also ones found the in the stxkeys of the
pg_statistic_ext tuple, and the negative attnums correspond do not exceed
the number of expressions in the attnum. In other words, if the stats
object has no expressions in it, then no negative numbers will be accepted,
if it has 2 expressions than any value -3 or lower will be rejected, etc.

All patches rebased to 71f17823ba010296da9946bd906bb8bcad6325bc.

Attachment Content-Type Size
v3-0001-Add-working-input-function-for-pg_ndistinct.patch text/x-patch 13.7 KB
v3-0002-Add-working-input-function-for-pg_dependencies.patch text/x-patch 14.4 KB
v3-0003-Expose-attribute-statistics-functions-for-use-in-.patch text/x-patch 4.9 KB
v3-0004-Add-extended-statistics-support-functions.patch text/x-patch 97.0 KB

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Ashutosh Bapat 2025-02-20 04:49:43 Re: DB Restarting daily at midnight
Previous Message Gayatri Singh 2025-02-20 04:34:58 DB Restarting daily at midnight