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.