aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/backend/tcop/fastpath.c22
-rw-r--r--src/backend/tcop/postgres.c14
-rw-r--r--src/include/tcop/fastpath.h2
3 files changed, 7 insertions, 31 deletions
diff --git a/src/backend/tcop/fastpath.c b/src/backend/tcop/fastpath.c
index 2cd45e642a7..45f81824f64 100644
--- a/src/backend/tcop/fastpath.c
+++ b/src/backend/tcop/fastpath.c
@@ -249,24 +249,15 @@ fetch_fp_info(Oid func_id, struct fp_info * fip)
* This corresponds to the libpq protocol symbol "F".
*
* 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.
- *
- * RETURNS:
- * 0 if successful completion, EOF if frontend connection lost.
- *
- * Note: All ordinary errors result in ereport(ERROR,...). However,
- * if we lose the frontend connection there is no one to ereport to,
- * and no use in proceeding...
+ * postgres.c has already read the message body and will pass it in
+ * msgBuf.
*
* Note: palloc()s done here and in the called function do not need to be
* cleaned up explicitly. We are called from PostgresMain() in the
* MessageContext memory context, which will be automatically reset when
* control returns to PostgresMain.
*/
-int
+void
HandleFunctionRequest(StringInfo msgBuf)
{
Oid fid;
@@ -281,9 +272,8 @@ HandleFunctionRequest(StringInfo msgBuf)
char msec_str[32];
/*
- * 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.
+ * We only accept COMMIT/ABORT if we are in an aborted transaction, and
+ * COMMIT/ABORT cannot be executed through the fastpath interface.
*/
if (IsAbortedTransactionBlockState())
ereport(ERROR,
@@ -406,8 +396,6 @@ HandleFunctionRequest(StringInfo msgBuf)
msec_str, fip->fname, fid)));
break;
}
-
- return 0;
}
/*
diff --git a/src/backend/tcop/postgres.c b/src/backend/tcop/postgres.c
index 6bb8701aa99..f6be98bdd49 100644
--- a/src/backend/tcop/postgres.c
+++ b/src/backend/tcop/postgres.c
@@ -4165,19 +4165,7 @@ PostgresMain(int argc, char *argv[],
/* switch back to message context */
MemoryContextSwitchTo(MessageContext);
- if (HandleFunctionRequest(&input_message) == EOF)
- {
- /* lost frontend connection during F message input */
-
- /*
- * Reset whereToSendOutput to prevent ereport from
- * attempting to send any more messages to client.
- */
- if (whereToSendOutput == DestRemote)
- whereToSendOutput = DestNone;
-
- proc_exit(0);
- }
+ HandleFunctionRequest(&input_message);
/* commit the function-invocation transaction */
finish_xact_command();
diff --git a/src/include/tcop/fastpath.h b/src/include/tcop/fastpath.h
index df6234be896..0aceb8807c6 100644
--- a/src/include/tcop/fastpath.h
+++ b/src/include/tcop/fastpath.h
@@ -16,6 +16,6 @@
#include "lib/stringinfo.h"
extern int GetOldFunctionMessage(StringInfo buf);
-extern int HandleFunctionRequest(StringInfo msgBuf);
+extern void HandleFunctionRequest(StringInfo msgBuf);
#endif /* FASTPATH_H */