Subject: altering a column to to make it generated

From: Celia McInnis <[email-masked]>
Date: Mon, 22 Apr 2024 15:42:09 -0400

Can I alter a table column to now make it generated? I tried this
unsuccessfully:

create temp table tmp1 as select 15::numeric(6,1) as
distance,'24:30'::interval,0::numeric(7,3) as avgspd;
alter table tmp1 alter column avgspd type numeric(7,3) generated always as
((3600.*distance)/EXTRACT (EPOCH FROM rdrtime::interval)) STORED;
ERROR:  syntax error at or near "generated"
LINE 1: ... table tmp1 alter column avgspd type numeric(7,3) generated ...

I think that at least I have the right bracketing this time! :-)
                                                 ^

---

From: "David G. Johnston" <[email-masked]>
Date: Mon, 22 Apr 2024 12:45:46 -0700

> Can I alter a table column to now make it generated? I tried this

I looked at all of the "alter table ... alter column" commands listed here:

https://www.postgresql.org/docs/current/sql-altertable.html

And none seem to involve the generated expression column.  So the answer is
no.

David J.

---

From: Tom Lane <[email-masked]>
Date: Mon, 22 Apr 2024 16:11:43 -0400

> And none seem to involve the generated expression column.  So the answer is

I think what you'd need to do is drop the existing column
and then add a generated column.

			regards, tom lane