Hi team,

I have a table with a column of "timestamp without timezone" and I want to
alter it to a column of "timestamp with timezone" without rewriting the
rows.

Looking at the docs, and doing some quick tests, the data-on-disk is
identical for both columns. But when doing an alter table, looks like it's
rewriting the rows: (PostgreSQL 13.1)

guru=# create table tt(m timestamp without time zone default now());
guru=# insert into tt(m) values(now());
guru=# SELECT xmin, xmax, cmin, cmax, m from tt;
 xmin | xmax | cmin | cmax |             m
------+------+------+------+----------------------------
  695 |    0 |    0 |    0 | 2021-01-13 11:47:59.146952
(1 row)

guru=# alter table tt alter column m type timestamp with time zone;
guru=# SELECT xmin, xmax, cmin, cmax, m from tt;
 xmin | xmax | cmin | cmax |               m
------+------+------+------+-------------------------------
  696 |    0 |    4 |    4 | 2021-01-13 11:47:59.146952+01
(1 row)

Is there any reason to rewrite the rows or is it just an optimization that
no one hasn't sent a patch ?

Regards,
Dorian

Reply via email to