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 |
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 |