Hi,

Svetlana, yes, Tom means that CREATE OR REPLACE should always produce
the same result no matter which branch actually worked - CREATE or REPLACE.
REPLACE case must produce exactly the same result as you've mentioned -
DROP and CREATE.

As for IF NOT EXISTS option I agree, it seems a reasonable addition to
simplify
error handling in scripts, go on.


On Wed, Jul 6, 2022 at 3:01 PM Svetlana Derevyanko <
s.derevya...@postgrespro.ru> wrote:

>
>
> Вторник, 5 июля 2022, 18:29 +03:00 от Tom Lane <t...@sss.pgh.pa.us>:
>
> =?UTF-8?B?U3ZldGxhbmEgRGVyZXZ5YW5rbw==?= <s.derevya...@postgrespro.ru
> <http:///compose?To=s.derevya...@postgrespro.ru>> writes:
> > It seems useful to have [OR REPLACE] option in CREATE OPERATOR
> statement, as in CREATE FUNCTION. This option may be good for
> writing extension update scripts, to avoid errors with re-creating the same
> operator.
>
> No, that's not acceptable. CREATE OR REPLACE should always produce
> exactly the same final state of the object, but in this case we cannot
> change the underlying function if the operator already exists.
>
> (At least, not without writing a bunch of infrastructure to update
> existing views/rules that might use the operator; which among other
> things would create a lot of deadlock risks.)
>
> regards, tom lane
>
> Hello,
>
> > CREATE OR REPLACE should always produce exactly the same final state of
> the object,
> > but in this case we cannot change the underlying function if the
> operator already exists.
>
> Do you mean that for existing operator CREATE OR REPLACE should be the
> same as DROP OPERATOR and CREATE OPERATOR,  with relevant re-creation of
> existing view/rules/..., using this operator? If yes, what exactly is wrong
> with  changing only RESTRICT and JOIN parameters (or is the problem in
> possible user`s confusion with attempts to change something more?). If no,
> could you, please, clarify what "final state" here means?
>
> Also, if OR REPLACE is unacceptable, then what do you think about IF NOT
> EXISTS option?
>
> Thanks,
>
> --
> Svetlana Derevyanko
> Postgres Professional: http://www.postgrespro.com
> The Russian Postgres Company
>


-- 
Regards,
Nikita Malakhov
Postgres Professional
https://postgrespro.ru/

Reply via email to