When increasing the length constraint on a varchar column, Postgres is smart enough to not rewrite the table.
I expected the same thing to be true when increasing the size of a numeric column.
However this does not seem to be the case:
Consider the following table:
create table foo
(
some_number numeric(12,2)
);
The following statement returns "immediately", regardless of the number of rows in the table
alter table foo alter column some_number numeric(15,2);
However, when running (on the original table definition)
alter table foo alter column some_number numeric(15,3);
it takes quite a while (depending on the number of rows) which indicates a table rewrite is taking place.
I don't understand why going from numeric(12,2) to numeric(15,3) would require a table rewrite.
Thomas