Alvaro Herrera <alvherre@alvh.no-ip.org> writes:
> Hmm, see for example [1] which is doing SPI_prepare_my() [2] and then
> SPI_execute_plan_my() ... Does the SPI interface really require that you
> create an ActivePortal in the SPI-calling code?
The expectation is that the calling code is already executing inside
some Portal. If it isn't, it's incumbent on the caller to set up
an adequate substitute environment, in particular a transaction
snapshot. The only thing 84f5c2908 changed is that now you get
a guaranteed failure if you neglect to provide that, rather than
failing only in corner cases.
Possibly we should change that Assert to an elog that tries to
make it clear that the blame is on the caller.
regards, tom lane