-
SPI procedures are always called by some (upper)
-manager uses the Executor to run your queries. Other procedures may be
-called by the Executor running queries from your procedure.
+Procedures which use
SPI are called by the
+Executor. The
SPI calls recursively invoke the
+Executor in turn to run queries. When the Executor is invoked
+recursively, it may itself call procedures which may make
utility SPI functions may be called from un-connected procedures.
- You may get SPI_ERROR_CONNECT error if SPI_connect is
- called from an already connected procedure - e.g. if you directly call one
- procedure from another connected one. Actually, while the child procedure
- will be able to use SPI, your parent procedure will not be able to continue
- to use SPI after the child returns (if SPI_finish is called by the child).
- It's bad practice.
+ If your procedure is already connected,
+ SPI_connect will return an
+ SPI_ERROR_CONNECT error. Note that this
+ may happen if a procedure which has called
+ SPI_connect directly calls another procedure
+ which itself calls SPI_connect. While
+ recursive calls to the
SPI manager are permitted
+ when an
SPI query invokes another function which
+ uses
SPI, directly nested calls to
+ SPI_connect and
+ SPI_finish are forbidden.