From d245b6bd9f55f33f851f6501f02a6e9cb1305e75 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Wed, 17 Mar 2004 01:05:10 +0000
Subject: [PATCH] Document SPI_push() and SPI_pop().

---
 doc/src/sgml/spi.sgml      | 64 +++++++++++++++++++++++++++++++++++++-
 src/backend/executor/spi.c |  4 ++-
 src/include/executor/spi.h |  6 ++--
 3 files changed, 69 insertions(+), 5 deletions(-)

diff --git a/doc/src/sgml/spi.sgml b/doc/src/sgml/spi.sgml
index ad8a5f084f9..c87a136bdd4 100644
--- a/doc/src/sgml/spi.sgml
+++ b/doc/src/sgml/spi.sgml
@@ -1,5 +1,5 @@
 <!--
-$PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.32 2004/03/05 01:00:45 momjian Exp $
+$PostgreSQL: pgsql/doc/src/sgml/spi.sgml,v 1.33 2004/03/17 01:05:10 momjian Exp $
 -->
 
 <chapter id="spi">
@@ -199,6 +199,68 @@ int SPI_finish(void)
 
 <!-- *********************************************** -->
 
+<refentry id="spi-spi-push">
+ <refmeta>
+  <refentrytitle>SPI_push</refentrytitle>
+ </refmeta>
+
+ <refnamediv>
+  <refname>SPI_push</refname>
+  <refpurpose>pushes SPI stack to allow recursive SPI calls</refpurpose>
+ </refnamediv>
+
+ <indexterm><primary>SPI_push</primary></indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+void SPI_push(void)
+</synopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+  <title>Description</title>
+
+  <para>
+   <function>SPI_push</function> pushes a new environment on to the 
+   SPI call stack, allowing recursive calls to use a new environment.
+  </para>
+ </refsect1>
+
+</refentry>
+
+<!-- *********************************************** -->
+
+<refentry id="spi-spi-pop">
+ <refmeta>
+  <refentrytitle>SPI_pop</refentrytitle>
+ </refmeta>
+
+ <refnamediv>
+  <refname>SPI_pop</refname>
+  <refpurpose>pops SPI stack to allow recursive SPI calls</refpurpose>
+ </refnamediv>
+
+ <indexterm><primary>SPI_pop</primary></indexterm>
+
+ <refsynopsisdiv>
+<synopsis>
+void SPI_pop(void)
+</synopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+  <title>Description</title>
+
+  <para>
+   <function>SPI_pop</function> pops the previous environment from the 
+   SPI call stack.  For use when returning from recursive SPI calls.
+  </para>
+ </refsect1>
+
+</refentry>
+
+<!-- *********************************************** -->
+
 <refentry id="spi-spi-exec">
  <refmeta>
   <refentrytitle>SPI_exec</refentrytitle>
diff --git a/src/backend/executor/spi.c b/src/backend/executor/spi.c
index 128a063f3c6..fb44d9d56fd 100644
--- a/src/backend/executor/spi.c
+++ b/src/backend/executor/spi.c
@@ -8,7 +8,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.110 2004/03/05 00:47:01 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/executor/spi.c,v 1.111 2004/03/17 01:05:10 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -201,12 +201,14 @@ AtEOXact_SPI(bool isCommit)
 	SPI_tuptable = NULL;
 }
 
+/* Pushes SPI stack to allow recursive SPI calls */
 void
 SPI_push(void)
 {
 	_SPI_curid++;
 }
 
+/* Pops SPI stack to allow recursive SPI calls */
 void
 SPI_pop(void)
 {
diff --git a/src/include/executor/spi.h b/src/include/executor/spi.h
index 6d0ce059a20..ac2b494b532 100644
--- a/src/include/executor/spi.h
+++ b/src/include/executor/spi.h
@@ -2,7 +2,7 @@
  *
  * spi.h
  *
- * $PostgreSQL: pgsql/src/include/executor/spi.h,v 1.42 2004/03/05 00:47:01 momjian Exp $
+ * $PostgreSQL: pgsql/src/include/executor/spi.h,v 1.43 2004/03/17 01:05:10 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -81,8 +81,8 @@ extern int	SPI_connect(void);
 extern int	SPI_finish(void);
 extern void SPI_push(void);
 extern void SPI_pop(void);
-extern int	SPI_exec(const char *src, int tcount);
-extern int SPI_execp(void *plan, Datum *values, const char *Nulls,
+extern int  SPI_exec(const char *src, int tcount);
+extern int  SPI_execp(void *plan, Datum *values, const char *Nulls,
 		  int tcount);
 extern int SPI_execp_current(void *plan, Datum *values, const char *Nulls,
 							 bool useCurrentSnapshot, int tcount);
-- 
GitLab