From: | Peter Eisentraut <peter(at)eisentraut(dot)org> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Make attstattarget nullable |
Date: | 2023-12-05 12:52:36 |
Message-ID: | 4da8d211-d54d-44b9-9847-f2a9f1184c76@eisentraut.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
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]:
https://www.postgresql.org/message-id/flat/d07ffc2b-e0e8-77f7-38fb-be921dff71af%40enterprisedb.com
Attachment | Content-Type | Size |
---|---|---|
v1-0001-Make-attstattarget-nullable.patch | text/plain | 23.4 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2023-12-05 12:58:10 | Re: table inheritance versus column compression and storage settings |
Previous Message | Amit Langote | 2023-12-05 12:25:01 | Re: remaining sql/json patches |