Currently adding a column to a table with a non-NULL default results in
a rewrite of the table. For large tables this can be both expensive and
disruptive. This patch removes the need for the rewrite as long as the
default value is not volatile. The default expression is evaluated at
the time of the ALTER TABLE and the result stored in a new column
(attmissingval) in pg_attribute, and a new column (atthasmissing) is set
to true. Any existing row when fetched will be supplied with the
attmissingval. New rows will have the supplied value or the default and
so will never need the attmissingval.
P. Domingos, and M. Richardson. KDD '01: Proceedings of the seventh ACM SIGKDD international conference on Knowledge discovery and data mining, page 57--66. New York, NY, USA, ACM Press, (2001)
P. Domingos, and M. Richardson. KDD '01: Proceedings of the seventh ACM SIGKDD international conference on Knowledge discovery and data mining, page 57--66. New York, NY, USA, ACM Press, (2001)
M. Berry, B. Hendrickson, and P. Raghavan. 32, page 99-123. (1996)The mathematics of numerical analysis. 1995 AMS-SIAM summer seminar
in applied mathematics, July 17--August 11, 1995, Park City, UT,
USA. Providence.