ALTER TABLE RENAME column

Started by Jim Nasbyabout 19 years ago13 messages
#1Jim Nasby
decibel@decibel.org
1 attachment(s)

Any reason not to support renaming columns? Can this be added to TODO?

Attachments:

patchapplication/octet-stream; name=patch; x-unix-mode=0640Download
*** TODO.org	Thu Nov 16 19:24:48 2006
--- TODO	Thu Nov 16 19:27:46 2006
***************
*** 533,538 ****
--- 533,539 ----
            like CHECK that were inherited from the parent table
  	o Have ALTER INDEX update the name of a constraint using that index
  	o Add ALTER TABLE RENAME CONSTRAINT, update index name also
+     o Add ALTER TABLE RENAME COLUMN (should rename appropriate sequences and constraints)
  
  
  * CLUSTER
#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Jim Nasby (#1)
Re: ALTER TABLE RENAME column

Jim Nasby <decibel@decibel.org> writes:

Any reason not to support renaming columns? Can this be added to TODO?

Uh, we did that years ago.

regards, tom lane

#3Peter Eisentraut
peter_e@gmx.net
In reply to: Jim Nasby (#1)
Re: ALTER TABLE RENAME column

Jim Nasby wrote:

Any reason not to support renaming columns? Can this be added to
TODO?

Upgrade to Postgres95.

--
Peter Eisentraut
http://developer.postgresql.org/~petere/

#4Richard Huxton
dev@archonet.com
In reply to: Peter Eisentraut (#3)
Re: ALTER TABLE RENAME column

Peter Eisentraut wrote:

Jim Nasby wrote:

Any reason not to support renaming columns? Can this be added to
TODO?

Upgrade to Postgres95.

Hey, is Jim running MySQL 5?

--
Richard Huxton
Archonet Ltd

#5Jonah H. Harris
jonah.harris@gmail.com
In reply to: Jim Nasby (#1)
Re: ALTER TABLE RENAME column

On 11/16/06, Jim Nasby <decibel@decibel.org> wrote:

Any reason not to support renaming columns? Can this be added to TODO?

ALTER TABLE yo_table RENAME COLUMN yo_column TO yo_new_column;

?

--
Jonah H. Harris, Software Architect | phone: 732.331.1300
EnterpriseDB Corporation | fax: 732.331.1301
33 Wood Ave S, 2nd Floor | jharris@enterprisedb.com
Iselin, New Jersey 08830 | http://www.enterprisedb.com/

#6Andrew Dunstan
andrew@dunslane.net
In reply to: Jonah H. Harris (#5)
Re: ALTER TABLE RENAME column

Jonah H. Harris wrote:

On 11/16/06, Jim Nasby <decibel@decibel.org> wrote:

Any reason not to support renaming columns? Can this be added to TODO?

ALTER TABLE yo_table RENAME COLUMN yo_column TO yo_new_column;

Maybe Jim actually wants a reason to remove support for this ... :-)

cheers

andrew

#7Mario Weilguni
mario.weilguni@icomedias.com
In reply to: Tom Lane (#2)
Re: ALTER TABLE RENAME column

Uh, we did that years ago.

Really?
+ o Add ALTER TABLE RENAME COLUMN (should rename appropriate sequences and constraints)

Sounds like this is not done, at least not renaming sequencens and constraints, or am I wrong here?

Regard
Mario Weilguni

-----Ursprüngliche Nachricht-----
Von: pgsql-hackers-owner@postgresql.org [mailto:pgsql-hackers-owner@postgresql.org] Im Auftrag von Tom Lane
Gesendet: Freitag, 17. November 2006 07:05
An: Jim Nasby
Cc: PostgreSQL Hackers
Betreff: Re: [HACKERS] ALTER TABLE RENAME column

Jim Nasby <decibel@decibel.org> writes:

Any reason not to support renaming columns? Can this be added to TODO?

Uh, we did that years ago.

regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

#8Jonah H. Harris
jonah.harris@gmail.com
In reply to: Mario Weilguni (#7)
Re: ALTER TABLE RENAME column

On 11/17/06, Mario Weilguni <mario.weilguni@icomedias.com> wrote:

Sounds like this is not done, at least not renaming sequencens and constraints, or am I wrong here?

To rename a sequence or a table:

ALTER TABLE yo_table RENAME TO yo_new_table;
ALTER TABLE yo_sequence RENAME TO yo_new_sequence;

Or am I mistaken?

--
Jonah H. Harris, Software Architect | phone: 732.331.1300
EnterpriseDB Corporation | fax: 732.331.1301
33 Wood Ave S, 2nd Floor | jharris@enterprisedb.com
Iselin, New Jersey 08830 | http://www.enterprisedb.com/

#9Jonah H. Harris
jonah.harris@gmail.com
In reply to: Mario Weilguni (#7)
Re: ALTER TABLE RENAME column

On 11/17/06, Mario Weilguni <mario.weilguni@icomedias.com> wrote:

+ o Add ALTER TABLE RENAME COLUMN (should rename appropriate sequences and constraints)

Actually, I don't believe it cascades the rename automagically... if
that's what you're asking.

--
Jonah H. Harris, Software Architect | phone: 732.331.1300
EnterpriseDB Corporation | fax: 732.331.1301
33 Wood Ave S, 2nd Floor | jharris@enterprisedb.com
Iselin, New Jersey 08830 | http://www.enterprisedb.com/

#10Mario Weilguni
mario.weilguni@icomedias.com
In reply to: Jonah H. Harris (#8)
Re: ALTER TABLE RENAME column

Right, but I think jim means automatical renames of sequences, and especially something like this:
db=# CREATE TABLE foo (bar serial);
NOTICE: CREATE TABLE will create implicit sequence "foo_bar_seq" for serial column "foo.bar"
CREATE TABLE
db=# ALTER TABLE foo rename bar to baf;
ALTER TABLE
db=# \d foo
Table "public.foo"
Column | Type | Modifiers
--------+---------+---------------------------------------------------
baf | integer | not null default nextval('foo_bar_seq'::regclass)

The sequence still is named "foo_bar_seq".

IMO this should do:
Alter sequence foo_bar_seq rename to foo_baf_seq;
Alter table foo alter baf set default nextval('foo_baf_seq')

-----Ursprüngliche Nachricht-----
Von: Jonah H. Harris [mailto:jonah.harris@gmail.com]
Gesendet: Freitag, 17. November 2006 16:27
An: Mario Weilguni
Cc: Tom Lane; Jim Nasby; PostgreSQL Hackers
Betreff: Re: [HACKERS] ALTER TABLE RENAME column

On 11/17/06, Mario Weilguni <mario.weilguni@icomedias.com> wrote:

Sounds like this is not done, at least not renaming sequencens and constraints, or am I wrong here?

To rename a sequence or a table:

ALTER TABLE yo_table RENAME TO yo_new_table; ALTER TABLE yo_sequence RENAME TO yo_new_sequence;

Or am I mistaken?

--
Jonah H. Harris, Software Architect | phone: 732.331.1300
EnterpriseDB Corporation | fax: 732.331.1301
33 Wood Ave S, 2nd Floor | jharris@enterprisedb.com
Iselin, New Jersey 08830 | http://www.enterprisedb.com/

#11Tom Lane
tgl@sss.pgh.pa.us
In reply to: Mario Weilguni (#10)
Re: ALTER TABLE RENAME column

"Mario Weilguni" <mario.weilguni@icomedias.com> writes:

IMO this should do:
Alter sequence foo_bar_seq rename to foo_baf_seq;
Alter table foo alter baf set default nextval('foo_baf_seq')

No, it should not, because that risks breaking other references to the
sequence (eg, in user-written functions). If the user is feeling that
he wants consistency, he can rename the sequence himself and take
responsibility for any side-effects on his code.

regards, tom lane

#12Jonah H. Harris
jonah.harris@gmail.com
In reply to: Tom Lane (#11)
Re: ALTER TABLE RENAME column

On 11/17/06, Tom Lane <tgl@sss.pgh.pa.us> wrote:

No, it should not, because that risks breaking other references to the
sequence (eg, in user-written functions). If the user is feeling that
he wants consistency, he can rename the sequence himself and take
responsibility for any side-effects on his code.

I concur.

--
Jonah H. Harris, Software Architect | phone: 732.331.1300
EnterpriseDB Corporation | fax: 732.331.1301
33 Wood Ave S, 2nd Floor | jharris@enterprisedb.com
Iselin, New Jersey 08830 | http://www.enterprisedb.com/

#13Jim Nasby
decibel@decibel.org
In reply to: Jonah H. Harris (#5)
Re: ALTER TABLE RENAME column

On Nov 17, 2006, at 9:47 AM, Jonah H. Harris wrote:

On 11/16/06, Jim Nasby <decibel@decibel.org> wrote:

Any reason not to support renaming columns? Can this be added to
TODO?

ALTER TABLE yo_table RENAME COLUMN yo_column TO yo_new_column;

Oooops... now I see where it's listed in \h. I knew I must have been
missing something...
--
Jim Nasby jim@nasby.net
EnterpriseDB http://enterprisedb.com 512.569.9461 (cell)