Hi,

PostgresMain() has the following blurb for fastpath functions:

                                /*
                                 * Note: we may at this point be inside an 
aborted
                                 * transaction.  We can't throw error for 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 inside a
                                 * 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 now safe 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.linnakan...@iki.fi>
Date:   2015-02-02 17:08:45 +0200

    Be more careful to not lose sync in the FE/BE protocol.

Heikki?


- Andres


-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to