From 914042fe5f7901d0b1ce1a0fceb743deaf5f91dc Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Thu, 22 Apr 2004 02:58:21 +0000
Subject: [PATCH] This patch makes the EXECUTE command's completion tag return
 the completion tag of the actual statement executed.  This allows the correct
 update count to be returned for UPDATE/INSERT/DELETE statements.

Kris Jurka
---
 src/backend/commands/prepare.c | 6 +++---
 src/backend/tcop/utility.c     | 4 ++--
 src/include/commands/prepare.h | 5 +++--
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/backend/commands/prepare.c b/src/backend/commands/prepare.c
index 0f95f3bfc0..d85d41c1ec 100644
--- a/src/backend/commands/prepare.c
+++ b/src/backend/commands/prepare.c
@@ -10,7 +10,7 @@
  * Copyright (c) 2002-2003, PostgreSQL Global Development Group
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.25 2004/01/07 18:56:25 neilc Exp $
+ *	  $PostgreSQL: pgsql/src/backend/commands/prepare.c,v 1.26 2004/04/22 02:58:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -106,7 +106,7 @@ PrepareQuery(PrepareStmt *stmt)
  * Implements the 'EXECUTE' utility statement.
  */
 void
-ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest)
+ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest, char *completionTag)
 {
 	PreparedStatement *entry;
 	char	   *query_string;
@@ -188,7 +188,7 @@ ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest)
 	 */
 	PortalStart(portal, paramLI);
 
-	(void) PortalRun(portal, FETCH_ALL, dest, dest, NULL);
+	(void) PortalRun(portal, FETCH_ALL, dest, dest, completionTag);
 
 	PortalDrop(portal, false);
 
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index 45bf7d0f1c..98c63fd0e6 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -10,7 +10,7 @@
  *
  *
  * IDENTIFICATION
- *	  $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.212 2004/04/19 21:21:33 momjian Exp $
+ *	  $PostgreSQL: pgsql/src/backend/tcop/utility.c,v 1.213 2004/04/22 02:58:20 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -483,7 +483,7 @@ ProcessUtility(Node *parsetree,
 			break;
 
 		case T_ExecuteStmt:
-			ExecuteQuery((ExecuteStmt *) parsetree, dest);
+			ExecuteQuery((ExecuteStmt *) parsetree, dest, completionTag);
 			break;
 
 		case T_DeallocateStmt:
diff --git a/src/include/commands/prepare.h b/src/include/commands/prepare.h
index 90e17b7378..cb2fed06f0 100644
--- a/src/include/commands/prepare.h
+++ b/src/include/commands/prepare.h
@@ -6,7 +6,7 @@
  *
  * Copyright (c) 2002-2003, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/include/commands/prepare.h,v 1.9 2003/11/29 22:40:59 pgsql Exp $
+ * $PostgreSQL: pgsql/src/include/commands/prepare.h,v 1.10 2004/04/22 02:58:21 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -42,7 +42,8 @@ typedef struct
 
 /* Utility statements PREPARE, EXECUTE, DEALLOCATE, EXPLAIN EXECUTE */
 extern void PrepareQuery(PrepareStmt *stmt);
-extern void ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest);
+extern void ExecuteQuery(ExecuteStmt *stmt, DestReceiver *dest,
+					   char *completionTag);
 extern void DeallocateQuery(DeallocateStmt *stmt);
 extern void ExplainExecuteQuery(ExplainStmt *stmt, TupOutputState *tstate);
 
-- 
2.40.0