BUG #16805: "ALTER TABLE ... ADD COLUMN IF NOT EXISTS ... PRIMARY KEY" fails if column exists and is the primary

Started by PG Bug reporting formover 5 years ago3 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 16805
Logged by: Doug Perham
Email address: dperham@opex.com
PostgreSQL version: 12.5
Operating system: Ubuntu 20.04
Description:

ALTER TABLE IF EXIST foo ADD COLUMN IF NOT EXISTS id BIGSERIAL PRIMARY KEY;
Fails if "id" exists and is already the primary key.

It seems that everything should be okay if "id" exists and is the primary
key. Instead, an error is thrown as follows:

test=# create table foo ( bar text );
CREATE TABLE
test=# alter table if exists foo add column if not exists id bigserial
primary key;
ALTER TABLE
test=# alter table if exists foo add column if not exists id bigserial
primary key;
NOTICE: column "id" of relation "foo" already exists, skipping
ERROR: multiple primary keys for table "foo" are not allowed

#2Hamid Akhtar
hamid.akhtar@gmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #16805: "ALTER TABLE ... ADD COLUMN IF NOT EXISTS ... PRIMARY KEY" fails if column exists and is the primary

I'm unable to reproduce this issue on CentOS7. Here's what I get:

------------------------------------------------------------
psql (12.5)
Type "help" for help.

postgres=# create table foo ( bar text );
CREATE TABLE
postgres=# alter table if exists foo add column if not exists id bigserial;
ALTER TABLE
postgres=# alter table if exists foo add column if not exists id bigserial;
NOTICE: column "id" of relation "foo" already exists, skipping
ALTER TABLE
------------------------------------------------------------

Can you please confirm if you are building from source or using any
standard postgresql packages?

On Tue, Jan 5, 2021 at 2:55 PM PG Bug reporting form <noreply@postgresql.org>
wrote:

The following bug has been logged on the website:

Bug reference: 16805
Logged by: Doug Perham
Email address: dperham@opex.com
PostgreSQL version: 12.5
Operating system: Ubuntu 20.04
Description:

ALTER TABLE IF EXIST foo ADD COLUMN IF NOT EXISTS id BIGSERIAL PRIMARY
KEY;
Fails if "id" exists and is already the primary key.

It seems that everything should be okay if "id" exists and is the primary
key. Instead, an error is thrown as follows:

test=# create table foo ( bar text );
CREATE TABLE
test=# alter table if exists foo add column if not exists id bigserial
primary key;
ALTER TABLE
test=# alter table if exists foo add column if not exists id bigserial
primary key;
NOTICE: column "id" of relation "foo" already exists, skipping
ERROR: multiple primary keys for table "foo" are not allowed

--
Highgo Software (Canada/China/Pakistan)
URL : www.highgo.ca
ADDR: 10318 WHALLEY BLVD, Surrey, BC
CELL:+923335449950 EMAIL: mailto:hamid.akhtar@highgo.ca
SKYPE: engineeredvirus

#3Tom Lane
tgl@sss.pgh.pa.us
In reply to: PG Bug reporting form (#1)
Re: BUG #16805: "ALTER TABLE ... ADD COLUMN IF NOT EXISTS ... PRIMARY KEY" fails if column exists and is the primary

PG Bug reporting form <noreply@postgresql.org> writes:

ALTER TABLE IF EXIST foo ADD COLUMN IF NOT EXISTS id BIGSERIAL PRIMARY KEY;
Fails if "id" exists and is already the primary key.

Yeah, known problem. This is fixed in v13, but the fix seemed too
invasive for a back-patch (see [1]https://git.postgresql.org/gitweb/?p=postgresql.git&amp;a=commitdiff&amp;h=1281a5c90 and follow-on fixes).

regards, tom lane

[1]: https://git.postgresql.org/gitweb/?p=postgresql.git&amp;a=commitdiff&amp;h=1281a5c90