Hi,
PostgresMain() has the following blurb for fastpath functions:
/* * Note: we may at this point be inside an aborted * transaction. We can't throw
errorfor that until we've * finished reading the function-call message, so *
HandleFunctionRequest()must check for it after doing so. * Be careful not to do anything that assumes we're
insidea * valid transaction here. */
and in HandleFunctionRequest() there's:
* INPUT:* In protocol version 3, postgres.c has already read the message body* and will pass it in
msgBuf.* In old protocol, the passed msgBuf is empty and we must read the* message here.
which is not true anymore. Followed by:
/* * Now that we've eaten the input message, check to see if we actually * want to do the function call or not. It's
nowsafe to ereport(); we * won't lose sync with the frontend. */
which is also not really meaningful, because there's no previous code in
the function.
This largely seems to be damage from
commit 2b3a8b20c2da9f39ffecae25ab7c66974fbc0d3b
Author: Heikki Linnakangas <heikki.linnakangas@iki.fi>
Date: 2015-02-02 17:08:45 +0200
Be more careful to not lose sync in the FE/BE protocol.
Heikki?
- Andres