SPI and transactions

From: Konstantin Knizhnik <k(dot)knizhnik(at)postgrespro(dot)ru>
To: pgsql-hackers <pgsql-hackers(at)postgresql(dot)org>
Subject: SPI and transactions
Date: 2015-11-18 10:18:39
Message-ID: 564C507F.4050903@postgrespro.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hello,

SPI was originally developed for execution SQL statements from C user
defined functions in context of existed transaction.
This is why it is not possible to execute any transaction manipulation
statement (BEGIN, COMMIT, PREPARE,...) using
SPI_execute:SPI_ERROR_TRANSACTION is returned.

But now SPI is used not only inside UDFs. It is also used in background
workers. For example in receiver_raw, written by Michael Paquier (I lot
of thanks Michael, understand logical replication without them will be
much more difficult).
Right now transactions have to be started by background worker using
StartTransactionCommand().
So receiver_raw is not able to preserve master's transaction semantic
(certainly it can be implemented).

I wonder whether SPI can be extended now to support transaction
manipulation functions when been called outside transaction context? Or
there are some principle problem with it?

Thanks in advance,
Konstantin

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Dean Rasheed 2015-11-18 10:33:19 Re: Bug in numeric multiplication
Previous Message Maeldron T. 2015-11-18 10:13:43 PostgreSQL super HA (High Availability) conception for 9.5+