0002-Move-MOVE-FETCH-command-tag-formatting-to-ProcessUti.patch
text/x-patch
Filename: 0002-Move-MOVE-FETCH-command-tag-formatting-to-ProcessUti.patch
Type: text/x-patch
Part: 1
Patch
Same data as JSON:
GET /api/v1/attachments/:id/patch
the parsed metadata as JSON — format, series position, per-file stats; never the diff bytes.
API reference →
Format: format-patch
Series: patch 0002
Subject: Move MOVE/FETCH command tag formatting to ProcessUtility.
| File | + | − |
|---|---|---|
| src/backend/commands/portalcmds.c | 4 | 16 |
| src/backend/tcop/utility.c | 11 | 2 |
| src/include/commands/portalcmds.h | 1 | 2 |
From d11dc0f652277874e79a6eee4ece346e6978eea0 Mon Sep 17 00:00:00 2001
From: Marti Raudsepp <marti@juffo.org>
Date: Sat, 15 Jan 2011 22:55:28 +0200
Subject: [PATCH 2/2] Move MOVE/FETCH command tag formatting to ProcessUtility.
---
src/backend/commands/portalcmds.c | 20 ++++----------------
src/backend/tcop/utility.c | 13 +++++++++++--
src/include/commands/portalcmds.h | 3 +--
3 files changed, 16 insertions(+), 20 deletions(-)
diff --git a/src/backend/commands/portalcmds.c b/src/backend/commands/portalcmds.c
index dda592c..80b581d 100644
--- a/src/backend/commands/portalcmds.c
+++ b/src/backend/commands/portalcmds.c
@@ -137,15 +137,12 @@ PerformCursorOpen(PlannedStmt *stmt, ParamListInfo params,
*
* stmt: parsetree node for command
* dest: where to send results
- * completionTag: points to a buffer of size COMPLETION_TAG_BUFSIZE
- * in which to store a command completion status string.
*
- * completionTag may be NULL if caller doesn't want a status string.
+ * Returns number of rows processed.
*/
-void
+long
PerformPortalFetch(FetchStmt *stmt,
- DestReceiver *dest,
- char *completionTag)
+ DestReceiver *dest)
{
Portal portal;
long nprocessed;
@@ -174,16 +171,7 @@ PerformPortalFetch(FetchStmt *stmt,
dest = None_Receiver;
/* Do it */
- nprocessed = PortalRunFetch(portal,
- stmt->direction,
- stmt->howMany,
- dest);
-
- /* Return command status if wanted */
- if (completionTag)
- snprintf(completionTag, COMPLETION_TAG_BUFSIZE, "%s %ld",
- stmt->ismove ? "MOVE" : "FETCH",
- nprocessed);
+ return PortalRunFetch(portal, stmt->direction, stmt->howMany, dest);
}
/*
diff --git a/src/backend/tcop/utility.c b/src/backend/tcop/utility.c
index b1120d0..40c9a02 100644
--- a/src/backend/tcop/utility.c
+++ b/src/backend/tcop/utility.c
@@ -482,8 +482,17 @@ standard_ProcessUtility(Node *parsetree,
break;
case T_FetchStmt:
- PerformPortalFetch((FetchStmt *) parsetree, dest,
- completionTag);
+ {
+ FetchStmt *stmt = (FetchStmt *) parsetree;
+ long nprocessed;
+
+ nprocessed = PerformPortalFetch(stmt, dest);
+
+ if (completionTag)
+ snprintf(completionTag, COMPLETION_TAG_BUFSIZE,
+ stmt->ismove ? "MOVE %ld" : "FETCH %ld",
+ nprocessed);
+ }
break;
/*
diff --git a/src/include/commands/portalcmds.h b/src/include/commands/portalcmds.h
index c64aabf..6afd737 100644
--- a/src/include/commands/portalcmds.h
+++ b/src/include/commands/portalcmds.h
@@ -22,8 +22,7 @@
extern void PerformCursorOpen(PlannedStmt *stmt, ParamListInfo params,
const char *queryString, bool isTopLevel);
-extern void PerformPortalFetch(FetchStmt *stmt, DestReceiver *dest,
- char *completionTag);
+extern long PerformPortalFetch(FetchStmt *stmt, DestReceiver *dest);
extern void PerformPortalClose(const char *name);
--
1.7.3.5