Re: pg11b1 from outside a txn: "VACUUM cannot run inside atransaction block": should be: ...or multi-command string

Поиск
Список
Период
Сортировка
От Justin Pryzby
Тема Re: pg11b1 from outside a txn: "VACUUM cannot run inside atransaction block": should be: ...or multi-command string
Дата
Msg-id 20181127214110.GB30707@telsasoft.com
обсуждение исходный текст
Ответ на pg11b1 from outside a txn: "VACUUM cannot run inside a transactionblock": should be: ...or multi-command string  (Justin Pryzby <pryzby@telsasoft.com>)
Список pgsql-hackers
I'm resending a mail from June:
https://www.postgresql.org/message-id/flat/87sh5doya9.fsf%40news-spur.riddles.org.uk#83c3d1a183217204939252d56804f247

This is maybe a trivial change in ERROR string which maybe worth changing.

On PG10:
|[pryzbyj@database ~]$ psql postgres -c 'DROP DATABASE x; CREATE DATABASE x';
|ERROR:  DROP DATABASE cannot be executed from a function or multi-command string

On PG11.1:
|[pryzbyj@telsasoft2015 server]$ psql postgres -c 'DROP DATABASE x; CREATE DATABASE x';
|ERROR:  DROP DATABASE cannot run inside a transaction block

I spent at least a few minutes trying to do things like: psql -c 'begin;commit;create;drop'
..before figuring it out due to misleading error message, despite having
written this earlier message.

On Sat, Jun 23, 2018 at 04:06:37PM -0500, Justin Pryzby wrote:
> in pg10:
> 
>     ts=# begin;VACUUM FULL pg_toast.pg_toast_2619;
>     BEGIN
>     ERROR:  25001: VACUUM cannot run inside a transaction block
>     LOCATION:  PreventTransactionChain, xact.c:3167
> => sounds fine
> 
>     $ psql postgres -c 'SELECT 1; VACUUM pg_statistic'
>     ERROR:  VACUUM cannot be executed from a function or multi-command string
> => sounds fine
> 
> In pg11b1:
> 
>     pryzbyj=# begin;VACUUM FULL pg_toast.pg_toast_2619;
>     BEGIN
>     ERROR:  25001: VACUUM cannot run inside a transaction block
>     LOCATION:  PreventInTransactionBlock, xact.c:3163
> => sounds fine
> 
>     [pryzbyj@dev ~]$ psql -c 'SELECT 1; VACUUM pg_statistic'
>     ERROR:  VACUUM cannot run inside a transaction block
> => Error message seems off??
> 
> I couldn't figure out how to \set VERBOSITY verbose inside a psql command (??),
> but strace shows for v10:
> SERROR\0VERROR\0C25001\0MVACUUM cannot be executed from a function or multi-command
string\0Fxact.c\0L3187\0RPreventTransactionChain
> 
> And for v11:
> SERROR\0VERROR\0C25001\0MVACUUM cannot run inside a transaction block\0Fxact.c\0L3163\0RPreventInTransactionBlock
> 
> Function renamed by commit 04700b685f31508036456bea4d92533e5ceee9d6.
> 
> So behavior change maybe caused by 6eb52da3948dc8bc7c8a61cbacac14823b670c58 ?
> 
> Justin


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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: More issues with pg_verify_checksums and checksum verificationin base backups
Следующее
От: "Bossart, Nathan"
Дата:
Сообщение: Re: Use durable_unlink for .ready and .done files for WAL segmentremoval