aboutsummaryrefslogtreecommitdiff
path: root/src/backend/executor
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2018-10-08 16:16:36 -0400
committerTom Lane <tgl@sss.pgh.pa.us>2018-10-08 16:16:36 -0400
commit82ff0cc91d9840d1c56ca1beed58bedfde3da9a3 (patch)
tree005702660dc609455ece3fb423e9f74c15d43edb /src/backend/executor
parent6eb3eb577d76b3f58a98f78232af9e86624ce5eb (diff)
downloadpostgresql-82ff0cc91d9840d1c56ca1beed58bedfde3da9a3.tar.gz
postgresql-82ff0cc91d9840d1c56ca1beed58bedfde3da9a3.zip
Advance transaction timestamp for intra-procedure transactions.
Per discussion, this behavior seems less astonishing than not doing so. Peter Eisentraut and Tom Lane Discussion: https://postgr.es/m/20180920234040.GC29981@momjian.us
Diffstat (limited to 'src/backend/executor')
-rw-r--r--src/backend/executor/spi.c13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 11ca800e4cd..fb36e762f28 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -423,6 +423,19 @@ AtEOSubXact_SPI(bool isCommit, SubTransactionId mySubid)
}
}
+/*
+ * Are we executing inside a procedure (that is, a nonatomic SPI context)?
+ */
+bool
+SPI_inside_nonatomic_context(void)
+{
+ if (_SPI_current == NULL)
+ return false; /* not in any SPI context at all */
+ if (_SPI_current->atomic)
+ return false; /* it's atomic (ie function not procedure) */
+ return true;
+}
+
/* Parse, plan, and execute a query string */
int