diff --git a/doc/src/sgml/spi.sgml b/doc/src/sgml/spi.sgml index ad8a5f084f929e613fa488c5fa92fdedc248201f..c87a136bdd471fe89a8a1e4ef6595fdf45ecdd84 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 128a063f3c60fcc1edd2b7cd5dd1b3fd6d457666..fb44d9d56fd02922ded6acbce74025a1736cf10d 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 6d0ce059a20a7140a2c9072356ba1c9458d84b3a..ac2b494b53231fa3d2a561c650ce426396784730 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);