Lists: | pgsql-hackers |
---|
From: | "Matthew T(dot) O'Connor" <matthew(at)zeut(dot)net> |
---|---|
To: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Is this a bug? |
Date: | 2005-01-25 17:43:16 |
Message-ID: | 41F68534.4070806@zeut.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
I think this may have been discussed before but I found this a bit
surprising:
foo=# SELECT version();
version
---------------------------------------------------------------------------------------------------------
PostgreSQL 7.4.3 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.2
20031022 (Red Hat Linux 3.3.2-1)
(1 row)
foo=# create table foo (id1 int, id2 int, id3 int);
CREATE TABLE
foo=# ALTER TABLE foo ADD unique (id1,id2);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index
"foo_id1_key" for table "foo"
ALTER TABLE
foo=# ALTER TABLE foo ADD unique (id1,id3);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index
"foo_id1_key" for table "foo"
ERROR: relation "foo_id1_key" already exists
foo=#
Now, I know I can specify a constraint name inside the alter command,
but I still expected this to work.
Thanks,
Matthew
From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | "Matthew T(dot) O'Connor" <matthew(at)zeut(dot)net> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Is this a bug? |
Date: | 2005-01-25 17:59:26 |
Message-ID: | 5185.1106675966@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
"Matthew T. O'Connor" <matthew(at)zeut(dot)net> writes:
> Now, I know I can specify a constraint name inside the alter command,
> but I still expected this to work.
It does, in 8.0.
regression=# create table foo (id1 int, id2 int, id3 int);
CREATE TABLE
regression=# ALTER TABLE foo ADD unique (id1,id2);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "foo_id1_key" for table "foo"
ALTER TABLE
regression=# ALTER TABLE foo ADD unique (id1,id3);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "foo_id1_key1" for table "foo"
ALTER TABLE
regression=#
Of course there's no free lunch: it's significantly harder to guess what
the index name will be...
regards, tom lane
From: | Michael Fuhr <mike(at)fuhr(dot)org> |
---|---|
To: | "Matthew T(dot) O'Connor" <matthew(at)zeut(dot)net> |
Cc: | pgsql-hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Is this a bug? |
Date: | 2005-01-25 18:00:32 |
Message-ID: | 20050125180032.GA57609@winnie.fuhr.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Lists: | pgsql-hackers |
On Tue, Jan 25, 2005 at 12:43:16PM -0500, Matthew T. O'Connor wrote:
> foo=# ALTER TABLE foo ADD unique (id1,id3);
> NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index
> "foo_id1_key" for table "foo"
> ERROR: relation "foo_id1_key" already exists
8.0.0 handles this situation better:
test=> create table foo (id1 int, id2 int, id3 int);
CREATE TABLE
test=> ALTER TABLE foo ADD unique (id1,id2);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "foo_id1_key" for table "foo"
ALTER TABLE
test=> ALTER TABLE foo ADD unique (id1,id3);
NOTICE: ALTER TABLE / ADD UNIQUE will create implicit index "foo_id1_key1" for table "foo"
ALTER TABLE
--
Michael Fuhr
http://www.fuhr.org/~mfuhr/