Re: is ErrorResponse possible on Sync?
От | Alvaro Herrera |
---|---|
Тема | Re: is ErrorResponse possible on Sync? |
Дата | |
Msg-id | 202201121939.zrszuiavtgy4@alvherre.pgsql обсуждение исходный текст |
Ответ на | Re: is ErrorResponse possible on Sync? (Andrei Matei <andreimatei1@gmail.com>) |
Список | pgsql-hackers |
On 2022-Jan-12, Andrei Matei wrote: > If Sync itself cannot fail, then what is this > sentence really saying: "This parameterless message (ed. Sync) causes the > backend to close the current transaction if it's not inside a BEGIN/COMMIT > transaction block (“close” meaning to commit if no error, or roll back if > error)." ? > This seems to say that, outside of BEGIN/END, the transaction is committed > at Sync time (i.e. if the Sync is never sent, nothing is committed). > Presumably, committing a transaction can fail even if no > previous command/statement failed, right? A deferred trigger can cause a failure at COMMIT time for which no previous error was reported. alvherre=# create table t (a int unique deferrable initially deferred); CREATE TABLE alvherre=# insert into t values (1); INSERT 0 1 alvherre=# begin; BEGIN alvherre=*# insert into t values (1); INSERT 0 1 alvherre=*# commit; ERROR: duplicate key value violates unique constraint "t_a_key" DETALLE: Key (a)=(1) already exists. I'm not sure if you can cause this to explode with just a Sync message, though. -- Álvaro Herrera Valdivia, Chile — https://www.EnterpriseDB.com/
В списке pgsql-hackers по дате отправления: