From: | Flaris Feller <flaris(dot)feller(at)gmail(dot)com> |
---|---|
To: | pgsql-interfaces(at)lists(dot)postgresql(dot)org |
Subject: | Transaction control in a C language function |
Date: | 2023-03-06 10:36:32 |
Message-ID: | CANNsrHt-3wC-nGG_owzfKfx+N-sHWFuJQ=QEivGrXGK2_ne0xA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-interfaces |
Hello all,
I would like to implement transaction control in a function implemented in
C language. Currently I'm using SPI to do the job.
When calling SPI_commit() it returns this error message:
SQL Error [XX000]: ERROR: portal snapshots (0) did not account for all
active snapshots (1)
Below, there is an example.
PG_FUNCTION_INFO_V1(my_commit);
Datum my_commit(PG_FUNCTION_ARGS)
{
SPIExecuteOptions execopts;
SPI_connect_ext(SPI_OPT_NONATOMIC);
memset(&execopts, 0, sizeof(execopts));
execopts.params = NULL;
execopts.read_only = false;
execopts.allow_nonatomic = true;
execopts.must_return_tuples = false;
execopts.tcount = 0;
execopts.dest = NULL;
execopts.owner = NULL;
/* Execute some SQL commands */
SPI_execute_extended("UPDATE mytable SET name = 'done'", &execopts);
/* Commit the transaction */
SPI_commit();
SPI_finish();
PG_RETURN_NULL();
}
Thanks in advance,
Flaris Feller
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2023-03-06 15:21:30 | Re: Transaction control in a C language function |
Previous Message | Трофимов Иван | 2023-03-05 02:42:06 | About default inBufSize (connection read buffer size) in libpq |