On 2013-01-25 08:49:10 +0000, Magnus Hagander wrote:
> Make pg_dump exclude unlogged table data on hot standby slaves

This missed the fact that there is no ExecuteSqlQueryForSingleRow and
surroundign infrastructure.

Fix attached.

Greetings,

Andres Freund

-- 
 Andres Freund                     http://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training & Services
>From c6a4ffe4c70a861c676a2447dfd3ab518d2e2f2b Mon Sep 17 00:00:00 2001
From: Andres Freund <[email protected]>
Date: Fri, 25 Jan 2013 13:21:03 +0100
Subject: [PATCH] Fix backpatch of unlogged table check for pg_dump

The previous commit used ExecuteSqlQueryForSingleRow which is only there in
9.2+.
---
 src/bin/pg_dump/pg_dump.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c
index bef2b43..964823f 100644
--- a/src/bin/pg_dump/pg_dump.c
+++ b/src/bin/pg_dump/pg_dump.c
@@ -656,9 +656,25 @@ main(int argc, char **argv)
 	 * When running against 9.0 or later, check if we are in recovery mode,
 	 * which means we are on a hot standby.
 	 */
-	if (fout->remoteVersion >= 90000)
+	if (g_fout->remoteVersion >= 90000)
 	{
-		PGresult *res = ExecuteSqlQueryForSingleRow(fout, "SELECT pg_catalog.pg_is_in_recovery()");
+		PGresult *res;
+		const char *query = "SELECT pg_catalog.pg_is_in_recovery()";
+		int ntups;
+
+		res = PQexec(g_conn, query);
+		check_sql_result(res, g_conn, query, PGRES_TUPLES_OK);
+		ntups = PQntuples(res);
+
+		if (ntups != 1)
+		{
+			write_msg(NULL, ngettext("query returned %d row instead of one: %s\n",
+									 "query returned %d rows instead of one: %s\n",
+									 ntups),
+					  ntups, query);
+			exit_nicely();
+		}
+
 		if (strcmp(PQgetvalue(res, 0, 0), "t") == 0)
 		{
 			/*
-- 
1.7.12.289.g0ce9864.dirty

-- 
Sent via pgsql-committers mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-committers

Reply via email to