Re: SPI isolation changes
От | Seino Yuki |
---|---|
Тема | Re: SPI isolation changes |
Дата | |
Msg-id | aada2d0c68fc3eefa7c5a9889aba7df3@oss.nttdata.com обсуждение исходный текст |
Ответ на | Re: SPI isolation changes (Tom Lane <tgl@sss.pgh.pa.us>) |
Ответы |
Re: SPI isolation changes
|
Список | pgsql-hackers |
On 2023-07-01 00:06, Tom Lane wrote: > Seino Yuki <seinoyu@oss.nttdata.com> writes: >> I also thought that using SPI_start_transaction would be more readable >> than using SPI_commit/SPI_rollback to implicitly start a transaction. >> What do you think? > > I think you're trying to get us to undo commit 2e517818f, which > is not going to happen. See the threads that led up to that: > > Discussion: > https://postgr.es/m/3375ffd8-d71c-2565-e348-a597d6e739e3@enterprisedb.com > Discussion: https://postgr.es/m/17416-ed8fe5d7213d6c25@postgresql.org > > It looks to me like you can just change the transaction property > settings immediately after SPI_start_transaction if you want to. > Compare this bit in SnapBuildExportSnapshot: > > StartTransactionCommand(); > > /* There doesn't seem to a nice API to set these */ > XactIsoLevel = XACT_REPEATABLE_READ; > XactReadOnly = true; > > Also look at the implementation of SPI_commit_and_chain, > particularly RestoreTransactionCharacteristics. > > regards, tom lane Thanks for sharing past threads. I was understand how SPI_start_transaction went no-operation. I also understand how to set the transaction property. However, it was a little disappointing that the transaction property could not be changed only by SPI commands. Of course, executing SET TRANSACTION ISOLATION LEVEL with SPI_execute will result in error. --- SPI_execute("SET TRANSACTION ISOLATION LEVEL SERIALIZABLE", false, 0); (Log Output) ERROR: SET TRANSACTION ISOLATION LEVEL must be called before any query CONTEXT: SQL statement "SET TRANSACTION ISOLATION LEVEL SERIALIZABLE" --- Thanks for answering.
В списке pgsql-hackers по дате отправления: