Re: BUG #16988: Spurious "SET LOCAL can only be used in transaction blocks" warning using implicit transaction block

Поиск
Список
Период
Сортировка
От Brar Piening
Тема Re: BUG #16988: Spurious "SET LOCAL can only be used in transaction blocks" warning using implicit transaction block
Дата
Msg-id 3a158f8d-708e-ad13-617a-af8349aae4f4@gmx.de
обсуждение исходный текст
Ответ на Re: BUG #16988: Spurious "SET LOCAL can only be used in transaction blocks" warning using implicit transaction block  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: BUG #16988: Spurious "SET LOCAL can only be used in transaction blocks" warning using implicit transaction block  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-bugs
Tom Lane wrote:
> PG Bug reporting form <noreply@postgresql.org> writes:
>> I am using SET LOCAL in an Npgsql multi-statement command.
> It seems that whatever Npgsql is doing at the wire protocol level
> doesn't match this, but they'd have to explain what they are doing
> for us to offer much help.
>
At the wire protocol level npgsql sends this as two queries via the
extended query protocol without a sync inbetween them.

(Parse,Bind,Describe,Execute;Parse,Bind,Describe,Execute,Sync)

You can use the following short libpq program to reproduce it in PG14
(for brevity I've omitted any error checking):

#include  <libpq-fe.h>

int
main(int  argc,char  **argv)
{
     PGconn* conn;
     PGresult* res;

     conn =PQconnectdb("");
     PQenterPipelineMode(conn);
     PQsendQueryParams(conn,"SET LOCAL work_mem = 100;",0,NULL,NULL,NULL,NULL,1);
     PQsendQueryParams(conn,"SHOW work_mem;",0,NULL,NULL,NULL,NULL,1);
     PQpipelineSync(conn);
     res =PQgetResult(conn);// SET LOCAL => PGRES_COMMAND_OK
     PQclear(res);
     PQgetResult(conn);// NULL
     res =PQgetResult(conn);// SHOW => PGRES_TUPLES_OK
     fprintf(stdout,"%s\n",PQgetvalue(res,0,0));
     PQclear(res);
     PQgetResult(conn);// NULL
     res =PQgetResult(conn);// PGRES_PIPELINE_SYNC
     PQclear(res);
     PQfinish(conn);
     return  0;
}

Regards,
Brar





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

Предыдущее
От: Andrey Borodin
Дата:
Сообщение: Re: CREATE INDEX CONCURRENTLY does not index prepared xact's data
Следующее
От: Tom Lane
Дата:
Сообщение: Re: BUG #16988: Spurious "SET LOCAL can only be used in transaction blocks" warning using implicit transaction block