Re: Alter column to type serial - Mailing list pgsql-hackers

From Thom Brown
Subject Re: Alter column to type serial
Date
Msg-id AANLkTim2ysWsQtB6UO2Gkoveew1SA4fi7fZnBR9wVB1+@mail.gmail.com
Whole thread Raw
In response to Re: Alter column to type serial  (Tom Lane <tgl@sss.pgh.pa.us>)
Responses Re: Alter column to type serial
List pgsql-hackers
On 4 November 2010 14:04, Tom Lane <tgl@sss.pgh.pa.us> wrote:
Thom Brown <thom@linux.com> writes:
> Would it be possible (or reasonable) to add support for changing the type of
> a column to serial or bigserial (yes, yes, I know they're not actual
> types)?

We've looked at that in the past and decided there were enough corner
cases that it wasn't clearly a good idea.  In particular, what do you do
with the existing data in the column?  What do you do if there's already
a DEFAULT expression for the column, throw it away?  In particular, what
of the special case that the column is in fact already a serial, so the
default is pointing at an existing sequence?

It is possible to accomplish everything that such a command would do
manually, so the argument for having it boils down to wanting it to
be a bit easier.  But unless the command can always do the right thing
automatically, I'm not sure "easy" is a good argument.

There's also the objection that such an operation would actually have
very little to do with ALTER COLUMN TYPE --- most of the things it would
do are not that.  The fact that serial was bolted on as a fake type is a
wart that maybe we shouldn't extend in this particular fashion.


I suspected this may have been discussed previously, I just failed to find it.  And yes, it's purely for simplification, and to auto-clean sequences when tables are dropped.  I didn't think it would be straightforward, but clearly there are show-stoppers abound.

Thanks for the reply though. :)

--
Thom Brown
Twitter: @darkixion
IRC (freenode): dark_ixion
Registered Linux user: #516935

pgsql-hackers by date:

Previous
From: Dimitri Fontaine
Date:
Subject: Re: ALTER OBJECT any_name SET SCHEMA name
Next
From: Alvaro Herrera
Date:
Subject: Re: ALTER OBJECT any_name SET SCHEMA name