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/