A correction from my piece on fast column defaults in Postgres is that `now()` is *not* volatile. When used with `DEFAULT` existing rows pick up that tx's `now()`, new rows get a current `now()` as they're added, and it's all fast. I'm even more amazed.
Conversation
Replying to
If you "set client_min_messages = 'debug1'; ", then you will see a message like "DEBUG: rewriting table "foo" " when ALTER TABLE ... ADD COLUMN must rewrite.

