From: | Andy Fan <zhihuifan1213(at)163(dot)com> |
---|---|
To: | Ashutosh Bapat <ashutosh(dot)bapat(dot)oss(at)gmail(dot)com> |
Cc: | pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: serial not accepted as datatype in ALTER TABLE ... ALTER COLUMN |
Date: | 2024-02-18 08:19:04 |
Message-ID: | 87o7cegopq.fsf@163.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi Ashutosh,
> data_type is described on that page as "Data type of the new column,
> or new data type for an existing column." but CREATE TABLE
> documentation [2] redirects data_type to [3], which mentions serial.
> The impression created by the documentation is the second statement
> above is a valid statement as should not throw an error; instead
> change the data type of the column (and create required sequence).
I didn't find out a reason to not support it, if have any reason, I
think it is better have some explaination in the document.
> In code ATPrepAlterColumnType() calls typenameTypeIdAndMod(), whereas
> transformColumnDefinition() (called for ALTER TABLE ... ADD COLUMN and
> CREATE TABLE) handles "serial" data type separately. Looks like we are
> missing a call to transformColumnDefinition() in
> transformAlterTableStmt() under case AT_AlterColumnType.
I tried your idea with the attatchment, it is still in a drafted state
but it can be used as a prove-of-concept and for better following
communicating. Just one point needs to metion is serial implies
"default value" + "not null" constaint. So when we modify a column into
serial, we need to modify the 'NULL value' and only to the default value
at the RewriteTable stage.
--
Best Regards
Andy Fan
Attachment | Content-Type | Size |
---|---|---|
v0-0001-POC-Support-ALTER-TABLE-tableName-ALERT-COLUMN-co.patch | text/x-diff | 17.3 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Sutou Kouhei | 2024-02-18 08:38:09 | Re: Why is pq_begintypsend so slow? |
Previous Message | Li Japin | 2024-02-18 02:30:58 | Re: Thoughts about NUM_BUFFER_PARTITIONS |