Add column if not exists (CINE) - Mailing list pgsql-hackers

From Kjell Rune Skaaraas
Subject Add column if not exists (CINE)
Date
Msg-id 467881.79137.qm@web27104.mail.ukl.yahoo.com
Whole thread Raw
Responses Re: Add column if not exists (CINE)  (Robert Haas <robertmhaas@gmail.com>)
Re: Add column if not exists (CINE)  (Takahiro Itagaki <itagaki.takahiro@oss.ntt.co.jp>)
List pgsql-hackers
Hello,

I've been reading the earlier threads at:
http://archives.postgresql.org/pgsql-hackers/2009-05/thrd7.php#00252
http://archives.postgresql.org/pgsql-hackers/2005-10/thrd4.php#00632
and I'm not sure I have anything that substantially new to add but:

1. I can't see there's an unambiguity about what the syntax would do. It is IF NOT EXISTS, not IF NOT LIKE. Anyone who
shootsthemselves in the foot by calling a CINE and thinking that a preexisting differently defined column is magically
converteddeserves it. Either it should act exactly like the non-CINE command, or do nothing at all as if the statement
wasn'tthere. 

2. The use case is pretty clear to me - flexible scripts that'll bring all earlier database versions to the latest
schema.I've been experimenting in 9.0 alpha with calling DROP CONSTRAINT IF EXISTS then ADD CONSTRAINT with named
constantsfor a CINE effect. which as a side effect will correct any updated constraints too - and it works great.
UnfortunatelyDROP COLUMN IF EXISTS then ADD COLUMN has the side effect of deleting all the data, so that's hardly
usable.

I saw some indications that this might be a minority opinion, well I would like to cast a vote FOR this functionality.
Theworkarounds are ugly, the solution simple and while I agree it's possible to misuse it, my opinion is that you
shouldn'tbecome a surgeon if you can't handle a scalpel. In this case I get the feeling I'm reading instructions on how
todo surgery with a butter knife because we don't dare hand out anything sharper. 

Regards,
Kjell Rune Skaaraas




pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Re: Re: [COMMITTERS] pgsql: Make CheckRequiredParameterValues() depend upon correct
Next
From: Simon Riggs
Date:
Subject: Re: testing HS/SR - 1 vs 2 performance