## Name

SPI_push — push SPI stack to allow recursive SPI usage

## Synopsis

    void SPI_push(void)

## Description

`SPI_push` should be called before executing another procedure that might itself wish to use SPI. After `SPI_push`, SPI is no longer in a “connected” state, and SPI function calls will be rejected unless a fresh `SPI_connect` is done. This ensures a clean separation between your procedure's SPI state and that of another procedure you call. After the other procedure returns, call `SPI_pop` to restore access to your own SPI state.

Note that `SPI_execute` and related functions automatically do the equivalent of `SPI_push` before passing control back to the SQL execution engine, so it is not necessary for you to worry about this when using those functions. Only when you are directly calling arbitrary code that might contain `SPI_connect` calls do you need to issue `SPI_push` and `SPI_pop`.