Hacker News new | ask | show | jobs
by anarazel 2867 days ago
> it would lock entire table while adding a new column

It does so for the entire << 1ms it takes to add the necessary metadata.

1 comments

If that's the case, then one less problem to deal with, however I remember it was a matter of several minutes.
That's only the case if you add a DEFAULT value for the new column. Up until the soon-to-be-released v11 that required updating existing rows. Without a default it's essentially just inserting a single row in a row into an internal catalog table (pg_attribute). With a default in v11, we basically just store the default for a new column out of line, and reference it when the row is read.

In either case a lock has to be acquired on the table, which means if there's a longrunning transaction, you can end up blocking for a while...

Ah, yes, i think that was the case. Thanks for extra details!