Re: serial not accepted as datatype in ALTER TABLE ... ALTER COLUMN
| От | Andy Fan |
|---|---|
| Тема | Re: serial not accepted as datatype in ALTER TABLE ... ALTER COLUMN |
| Дата | |
| Msg-id | 87o7cegopq.fsf@163.com обсуждение исходный текст |
| Ответ на | serial not accepted as datatype in ALTER TABLE ... ALTER COLUMN (Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>) |
| Ответы |
Re: serial not accepted as datatype in ALTER TABLE ... ALTER COLUMN
|
| Список | 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
Вложения
В списке pgsql-hackers по дате отправления: