BUG #17435: "add column if not exists" always adds new FK on the column

Started by PG Bug reporting formabout 4 years ago2 messagesbugs
Jump to latest
#1PG Bug reporting form
noreply@postgresql.org

The following bug has been logged on the website:

Bug reference: 17435
Logged by: Rafael Sousa
Email address: rafmsou@gmail.com
PostgreSQL version: 12.10
Operating system: macOS, linux
Description:

The statement below aims to add a new column CCC on table XXX and create a
FK constraint to YYY at the same time:

"alter table XXX add column if not exists CCC uuid references YYY (id);"

I checked the docs and other forum and that seems to be possible. The
problem is that we end up with multiple FKs created on column CCC when
running the statement multiple times. I would hope no FK gets created when
the column already exists, is that correct?

#2Japin Li
japinli@hotmail.com
In reply to: PG Bug reporting form (#1)
Re: BUG #17435: "add column if not exists" always adds new FK on the column

On Sat, 12 Mar 2022 at 07:43, PG Bug reporting form <noreply@postgresql.org> wrote:

The following bug has been logged on the website:

Bug reference: 17435
Logged by: Rafael Sousa
Email address: rafmsou@gmail.com
PostgreSQL version: 12.10
Operating system: macOS, linux
Description:

The statement below aims to add a new column CCC on table XXX and create a
FK constraint to YYY at the same time:

"alter table XXX add column if not exists CCC uuid references YYY (id);"

I checked the docs and other forum and that seems to be possible. The
problem is that we end up with multiple FKs created on column CCC when
running the statement multiple times. I would hope no FK gets created when
the column already exists, is that correct?

It seems this bug has been fixed in 1281a5c907 [1]https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=1281a5c907. However, it doesn't backpatch to v12.

[1]: https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=1281a5c907

--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.