I think we can keep the discussion in your thread. Actually, I got this idea from your discussion.
But for this topic, I don't want to go that far in the first place, because completely allowing that might require more discussion.
Here I am just proposing a patch for a small step. When any dependent generated column has SET EXPRESSION, then we can allow the column type change:
```
-- Before this patch, the recommended usage was: ALTER TABLE gtest DROP COLUMN x, ALTER COLUMN a TYPE float8, ADD COLUMN x bigint GENERATED ALWAYS AS ((a::int + b) * 2) STORED;
-- With this patch, the statement is simplified as: ALTER TABLE gtest ALTER COLUMN a TYPE float8, ALTER COLUMN x SET EXPRESSION ((a::int + b) * 2);