Re: Make attstattarget nullable

From: Peter Eisentraut <peter(at)eisentraut(dot)org>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Make attstattarget nullable
Date: 2023-12-23 12:56:29
Views: Raw Message | Whole Thread | Download mbox | Resend email
Lists: pgsql-hackers

Here is an updated patch rebased over 3e2e0d5ad7.

The 0001 patch stands on its own, but I also tacked on two additional
WIP patches that simplify some pg_attribute handling and make these
kinds of refactorings simpler in the future. See description in the

On 05.12.23 13:52, Peter Eisentraut wrote:
> In [0] it was discussed that we could make attstattarget a nullable
> column, instead of always storing an explicit -1 default value for most
> columns.  This patch implements this.
> This changes the pg_attribute field attstattarget into a nullable field
> in the variable-length part of the row.  If no value is set by the user
> for attstattarget, it is now null instead of previously -1.  This saves
> space in pg_attribute and tuple descriptors for most practical
> scenarios.  (ATTRIBUTE_FIXED_PART_SIZE is reduced from 108 to 104.)
> Also, null is the semantically more correct value.
> The ANALYZE code internally continues to represent the default
> statistics target by -1, so that that code can avoid having to deal with
> null values.  But that is now contained to ANALYZE code.  The DDL code
> deals with attstattarget possibly null.
> For system columns, the field is now always null but the effective value
> 0 (don't analyze) is assumed.
> To set a column's statistics target to the default value, the new
> command form ALTER TABLE ... SET STATISTICS DEFAULT can be used.  (SET
> STATISTICS -1 still works.)
> [0]:

Attachment Content-Type Size
v2-0001-Make-attstattarget-nullable.patch text/plain 22.7 KB
v2-0002-WIP-Generalize-handling-of-nullable-pg_attribute-.patch text/plain 5.4 KB
v2-0003-WIP-Add-attstattarget-to-Form_pg_attribute_extra.patch text/plain 9.7 KB

In response to


Browse pgsql-hackers by date

  From Date Subject
Next Message Andrew Dunstan 2023-12-23 13:20:07 Re: authentication/t/ trashes ~/.psql_history
Previous Message Pavel Stehule 2023-12-23 12:36:10 Re: date_trunc function in interval version