Re: Repeatable Read Isolation in SQL running via background worker

Поиск
Список
Период
Сортировка
От Jeremy Finzel
Тема Re: Repeatable Read Isolation in SQL running via background worker
Дата
Msg-id CAMa1XUhZ-YT_E+_ipP1ty-bADc62VLJFAagkL2hdv0cyGegzWQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: Repeatable Read Isolation in SQL running via background worker  (Robert Haas <robertmhaas@gmail.com>)
Список pgsql-hackers


On Tue, Aug 14, 2018 at 11:18 AM, Robert Haas <robertmhaas@gmail.com> wrote:
On Mon, Aug 13, 2018 at 10:52 AM, Jeremy Finzel <finzelj@gmail.com> wrote:
> On Thu, Aug 9, 2018 at 4:34 PM, Jeremy Finzel <finzelj@gmail.com> wrote:
>> I am using worker_spi as a model to run a SQL statement inside a
>> background worker.  From my browsing of the Postgres library, I believe that
>> if I want repeatable read isolation level, the proper way for me to attain
>> this is to add this line after StartTransactionCommand() in worker_spi_main:
>>
>> XactIsoLevel = XACT_REPEATABLE_READ;

It's usually a good idea to only change GUCs through the GUC machinery
i.e. use SetConfigOption().

Are you using StartTransactionCommand() and CommitTransactionCommand()
to manage transaction boundaries?  If not, maybe you should.

Many thanks for the reply.  Yes, I am using StartTransactionCommand and Commit just like in worker_spi.c.  Here is the relevant section of code:

SetCurrentStatementStartTimestamp();
StartTransactionCommand();
XactIsoLevel = XACT_REPEATABLE_READ;
SPI_connect();
PushActiveSnapshot(GetTransactionSnapshot());
pgstat_report_activity(STATE_RUNNING, buf.data);

/* We can now execute queries via SPI */
SPI_execute(buf.data, false, 0);

/*
* And finish our transaction.
*/
SPI_finish();
PopActiveSnapshot();
CommitTransactionCommand();

So if you are saying it would be better to use SetConfigOption() there I will look into that.  Thanks!
Jeremy

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

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: Memory leak with CALL to Procedure with COMMIT.
Следующее
От: Shawn Debnath
Дата:
Сообщение: Re: A slightly misleading comment in GetNewObjectId()