diff options
author | Robert Haas <rhaas@postgresql.org> | 2019-03-13 08:55:00 -0400 |
---|---|---|
committer | Robert Haas <rhaas@postgresql.org> | 2019-03-13 08:55:00 -0400 |
commit | bbb96c3704c041d139181c6601e5bc770e045d26 (patch) | |
tree | cd03cd7963e96e06180a076a8a7c402484df47bc /doc/src | |
parent | 95fa9f1a137fcb55ed418d8c91a315c7bb169979 (diff) |
Allow ALTER TABLE .. SET NOT NULL to skip provably unnecessary scans.
If existing CHECK or NOT NULL constraints preclude the presence
of nulls, we need not look to see whether any are present.
Sergei Kornilov, reviewed by Stephen Frost, Ildar Musin, David Rowley,
and by me.
Discussion: http://postgr.es/m/81911511895540@web58j.yandex.ru
Diffstat (limited to 'doc/src')
-rw-r--r-- | doc/src/sgml/ref/alter_table.sgml | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/doc/src/sgml/ref/alter_table.sgml b/doc/src/sgml/ref/alter_table.sgml index 890b23afd64..e360728c025 100644 --- a/doc/src/sgml/ref/alter_table.sgml +++ b/doc/src/sgml/ref/alter_table.sgml @@ -214,8 +214,17 @@ WITH ( MODULUS <replaceable class="parameter">numeric_literal</replaceable>, REM <listitem> <para> These forms change whether a column is marked to allow null - values or to reject null values. You can only use <literal>SET - NOT NULL</literal> when the column contains no null values. + values or to reject null values. + </para> + + <para> + <literal>SET NOT NULL</literal> may only be applied to a column + providing none of the records in the table contain a + <literal>NULL</literal> value for the column. Ordinarily this is + checked during the <literal>ALTER TABLE</literal> by scanning the + entire table; however, if a valid <literal>CHECK</literal> constraint is + found which proves no <literal>NULL</literal> can exist, then the + table scan is skipped. </para> <para> |