Re: create language ... if not exists - Mailing list pgsql-patches

From Magnus Hagander
Subject Re: create language ... if not exists
Date
Msg-id 20080329223239.31c69ab3@mha-laptop
Whole thread Raw
In response to Re: create language ... if not exists  (Heikki Linnakangas <heikki@enterprisedb.com>)
Responses Re: create language ... if not exists
List pgsql-patches
Heikki Linnakangas wrote:
> Tom Lane wrote:
> > Heikki Linnakangas <heikki@enterprisedb.com> writes:
> >> The way we've solved this problem for other CREATE commands is to
> >> add "OR REPLACE" option, instead of "IF NOT EXISTS". We should do
> >> the same here.
> >
> > If we're willing to consider a solution that is specific to CREATE
> > LANGUAGE (as opposed to implementing IF NOT EXISTS across-the-board,
> > which might happen someday) what I'd suggest is just incorporating
> > the behavior directly into the abbreviated (no parameters) form of
> > CREATE LANGUAGE.  If the language already exists and has the same
> > properties specified in pg_pltemplate, don't raise an error.  Give
> > a notice maybe.
>
> Why not implement "OR REPLACE" like for other things? Still seems the
> most consistent behavior to me.
>
> You might want to get the error if the language already exists, which
> your proposal wouldn't allow. And it wouldn't help with languages
> without a pg_pltemplate entry.

Even though I was the guy originally suggesting that Andreas put
forward a patch for IF NOT EXISTS, now that it's being mention I agree
with Heikki - it's more consistent. And I see the primary use as being
in installation scripts for software that requires pl/pgsql (or any
other PL), for which the exact syntax really doesn't matter - it's
better to be consistent.

If we're implementing IF NOT EXISTS across the board, let's do that for
languages at the same time as for others.

 //Magnus

pgsql-patches by date:

Previous
From: Tom Lane
Date:
Subject: Re: Better psql tab-completion support for schemas and tables
Next
From: Tom Lane
Date:
Subject: Re: create language ... if not exists