Re: Re[2]: [PATCH] Optional OR REPLACE in CREATE OPERATOR statement

Поиск
Список
Период
Сортировка
От Nikita Malakhov
Тема Re: Re[2]: [PATCH] Optional OR REPLACE in CREATE OPERATOR statement
Дата
Msg-id CAN-LCVPHt0_zdN+9Ktu2oUJTJhDJQxMMoBPbwjN2r+EoLi6PQA@mail.gmail.com
обсуждение исходный текст
Ответ на Re[2]: [PATCH] Optional OR REPLACE in CREATE OPERATOR statement  (Svetlana Derevyanko <s.derevyanko@postgrespro.ru>)
Список pgsql-hackers
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.derevyanko@postgrespro.ru> wrote:
 
Вторник, 5 июля 2022, 18:29 +03:00 от Tom Lane <tgl@sss.pgh.pa.us>:
 
Svetlana Derevyanko <s.derevyanko@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 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Add sub-transaction overflow status in pg_stat_activity
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: BUG #17434: CREATE/DROP DATABASE can be executed in the same transaction with other commands