aboutsummaryrefslogtreecommitdiff
path: root/doc/src
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2020-07-21 13:03:48 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2020-07-21 13:03:48 -0400
commitfc032bed2fb809ee69eaf2fece349f65274c876f (patch)
treeffa25e5ca8c23870892aaf0b8b292b46637de7aa /doc/src
parent3e66019f15549d3e1e13da665b2549684061d630 (diff)
downloadpostgresql-fc032bed2fb809ee69eaf2fece349f65274c876f.tar.gz
postgresql-fc032bed2fb809ee69eaf2fece349f65274c876f.zip
Be more careful about marking catalog columns NOT NULL by default.
The bug fixed in commit 72eab84a5 would not have occurred if initdb had a less surprising rule about which columns should be marked NOT NULL by default. Let's make that rule be strictly that the column must be fixed-width and its predecessors must be fixed-width and NOT NULL, removing the hacky and unsafe exceptions for oidvector and int2vector. Since we do still want all existing oidvector and int2vector columns to be marked NOT NULL, we have to put BKI_FORCE_NOT_NULL labels on them. But making this less magic and more documented seems like a good idea, even if it's a shade more verbose. I didn't bump catversion since the initial catalog contents are not actually changed by this patch. Note however that the contents of postgres.bki do change, and feeding an old copy of that to a new backend will produce wrong results. Discussion: https://postgr.es/m/204760.1595181800@sss.pgh.pa.us
Diffstat (limited to 'doc/src')
-rw-r--r--doc/src/sgml/bki.sgml3
1 files changed, 2 insertions, 1 deletions
diff --git a/doc/src/sgml/bki.sgml b/doc/src/sgml/bki.sgml
index 4e7568f5ce9..272a10a98c5 100644
--- a/doc/src/sgml/bki.sgml
+++ b/doc/src/sgml/bki.sgml
@@ -119,7 +119,8 @@
require all columns that should be non-nullable to be marked so
in <structname>pg_attribute</structname>. The bootstrap code will
automatically mark catalog columns as <literal>NOT NULL</literal>
- if they are fixed-width and are not preceded by any nullable column.
+ if they are fixed-width and are not preceded by any nullable or
+ variable-width column.
Where this rule is inadequate, you can force correct marking by using
<literal>BKI_FORCE_NOT_NULL</literal>
and <literal>BKI_FORCE_NULL</literal> annotations as needed.