Greg Stark <gsstark@mit.edu> writes:
> It would be nice to be able to do:
> ALTER TABLE ADD foo integer DEFAULT 1
> And there's no question of what what the semantics of this are.
Sure, but you can only optimize this if the default expression is
immutable...
> On the other hand if you do
> ALTER TABLE ADD foo integer
> and then later do
> ALTER TABLE ALTER foo SET DEFAULT 1
> then there is a window where all those foos are NULL and then they magically
> become 1? That doesn't seem tenable.
It'd also be contrary to the SQL spec, AFAICS.
Here's another interesting case to think about:
ALTER TABLE ADD foo integer DEFAULT 1...ALTER TABLE ALTER foo SET DEFAULT 2
You'll have to pay the table-traversal cost on one step or the other.
regards, tom lane