v13-0001-minor-coesmetic-change-based-on-v13.no-cfbot

application/octet-stream

Filename: v13-0001-minor-coesmetic-change-based-on-v13.no-cfbot
Type: application/octet-stream
Part: 0
Message: Re: Non-text mode for pg_dumpall
From cae95a1db4caf35e68697383ab0416dc86173c38 Mon Sep 17 00:00:00 2001
From: jian he <jian.universality@gmail.com>
Date: Fri, 31 Jan 2025 11:51:30 +0800
Subject: [PATCH v13 1/1] minor coesmetic change based on v13

---
 doc/src/sgml/ref/pg_dumpall.sgml         |  2 +-
 src/bin/pg_dump/common_dumpall_restore.h |  2 ++
 src/bin/pg_dump/pg_backup_utils.c        |  4 +--
 src/bin/pg_dump/pg_dumpall.c             |  2 +-
 src/bin/pg_dump/pg_restore.c             | 46 ++++++++++++++----------
 5 files changed, 32 insertions(+), 24 deletions(-)

diff --git a/doc/src/sgml/ref/pg_dumpall.sgml b/doc/src/sgml/ref/pg_dumpall.sgml
index 429808373b..508d5ac57a 100644
--- a/doc/src/sgml/ref/pg_dumpall.sgml
+++ b/doc/src/sgml/ref/pg_dumpall.sgml
@@ -126,7 +126,7 @@ PostgreSQL documentation
       </listitem>
      </varlistentry>
 
-<varlistentry>
+     <varlistentry>
       <term><option>-F <replaceable class="parameter">format</replaceable></option></term>
       <term><option>--format=<replaceable class="parameter">format</replaceable></option></term>
       <listitem>
diff --git a/src/bin/pg_dump/common_dumpall_restore.h b/src/bin/pg_dump/common_dumpall_restore.h
index 7fe1c00ab7..a0dcdbe080 100644
--- a/src/bin/pg_dump/common_dumpall_restore.h
+++ b/src/bin/pg_dump/common_dumpall_restore.h
@@ -16,6 +16,8 @@
 
 #include "pg_backup.h"
 
+/* TODO: increasing this to keep 100 db restoring by single pg_restore command. */
+#define MAX_ON_EXIT_NICELY				100
 extern PGconn *connectDatabase(const char *dbname, const char *connection_string, const char *pghost,
 							   const char *pgport, const char *pguser,
 							   trivalue prompt_password, bool fail_on_error,
diff --git a/src/bin/pg_dump/pg_backup_utils.c b/src/bin/pg_dump/pg_backup_utils.c
index f70ea9233f..47589cca90 100644
--- a/src/bin/pg_dump/pg_backup_utils.c
+++ b/src/bin/pg_dump/pg_backup_utils.c
@@ -13,6 +13,7 @@
  */
 #include "postgres_fe.h"
 
+#include "common_dumpall_restore.h"
 #ifdef WIN32
 #include "parallel.h"
 #endif
@@ -21,9 +22,6 @@
 /* Globals exported by this file */
 const char *progname = NULL;
 
-/* TODO: increasing this to keep 100 db restoring by single pg_restore command. */
-#define MAX_ON_EXIT_NICELY				100
-
 static struct
 {
 	on_exit_nicely_callback function;
diff --git a/src/bin/pg_dump/pg_dumpall.c b/src/bin/pg_dump/pg_dumpall.c
index 3e022ecdeb..09b61dab00 100644
--- a/src/bin/pg_dump/pg_dumpall.c
+++ b/src/bin/pg_dump/pg_dumpall.c
@@ -674,7 +674,7 @@ help(void)
 	printf(_("\nGeneral options:\n"));
 	printf(_("  -f, --file=FILENAME          output file name\n"));
 	printf(_("  -F, --format=c|d|t|p         output file format (custom, directory, tar,\n"
-			 "                                plain text (default))\n"));
+			 "                               plain text (default))\n"));
 	printf(_("  -v, --verbose                verbose mode\n"));
 	printf(_("  -V, --version                output version information, then exit\n"));
 	printf(_("  --lock-wait-timeout=TIMEOUT  fail after waiting TIMEOUT for a table lock\n"));
diff --git a/src/bin/pg_dump/pg_restore.c b/src/bin/pg_dump/pg_restore.c
index fc248a441e..10d1553e48 100644
--- a/src/bin/pg_dump/pg_restore.c
+++ b/src/bin/pg_dump/pg_restore.c
@@ -77,15 +77,16 @@ simple_db_oid_list_append(SimpleDatabaseOidList *list, Oid db_oid, const char *d
 static void usage(const char *progname);
 static void read_restore_filters(const char *filename, RestoreOptions *opts);
 static bool IsFileExistsInDirectory(const char *dir, const char *filename);
-static int restoreOneDatabase(const char *inputFileSpec,
-		RestoreOptions *opts, int numWorkers, bool append_data);
+static int restoreOneDatabase(const char *inputFileSpec, RestoreOptions *opts,
+							  int numWorkers, bool append_data);
 static int ReadOneStatement(StringInfo inBuf, FILE *pfile);
 static int restoreAllDatabases(PGconn *conn, const char *dumpdirpath,
 							   SimpleStringList db_exclude_patterns, RestoreOptions *opts, int numWorkers);
 static void execute_global_sql_commands(PGconn *conn, const char *dumpdirpath,
 										const char *outfile);
 static int filter_dbnames_for_restore(PGconn *conn,
-		SimpleDatabaseOidList *dbname_oid_list, SimpleStringList db_exclude_patterns);
+									  SimpleDatabaseOidList *dbname_oid_list,
+									  SimpleStringList db_exclude_patterns);
 static int get_dbname_oid_list_from_mfile(const char *dumpdirpath,
 										  SimpleDatabaseOidList *dbname_oid_list);
 static void simple_db_oid_list_append(SimpleDatabaseOidList *list, Oid db_oid,
@@ -510,7 +511,9 @@ main(int argc, char **argv)
 			{
 				/* Now restore all the databases from map.dat file. */
 				exit_code = restoreAllDatabases(conn, inputFileSpec,
-						db_exclude_patterns, opts, numWorkers);
+												db_exclude_patterns,
+												opts,
+												numWorkers);
 			}
 
 			/* Free db pattern list. */
@@ -821,8 +824,9 @@ ReadOneStatement(StringInfo inBuf, FILE *pfile)
  * returns number of dbnames those will be restored.
  */
 static int
-filter_dbnames_for_restore(PGconn *conn, SimpleDatabaseOidList *dbname_oid_list,
-		SimpleStringList db_exclude_patterns)
+filter_dbnames_for_restore(PGconn *conn,
+						   SimpleDatabaseOidList *dbname_oid_list,
+						   SimpleStringList db_exclude_patterns)
 {
 	SimpleDatabaseOidListCell	*dboid_cell = dbname_oid_list->head;
 	SimpleDatabaseOidListCell	*dboidprecell = NULL;
@@ -833,6 +837,7 @@ filter_dbnames_for_restore(PGconn *conn, SimpleDatabaseOidList *dbname_oid_list,
 	/* Return 0 if there is no db to restore. */
 	if (dboid_cell == NULL)
 		return 0;
+	Assert(conn);
 
 	query = createPQExpBuffer();
 
@@ -860,7 +865,7 @@ filter_dbnames_for_restore(PGconn *conn, SimpleDatabaseOidList *dbname_oid_list,
 			 * If we don't have db connection, then consider patterns as NAME
 			 * only.
 			 */
-			if (!conn && (pg_strcasecmp(dboid_cell->db_name, celldb->val) == 0))
+			if (pg_strcasecmp(dboid_cell->db_name, celldb->val) == 0)
 			{
 				/*
 				 * As we need to skip this dbname so set flag to remove it from
@@ -875,13 +880,13 @@ filter_dbnames_for_restore(PGconn *conn, SimpleDatabaseOidList *dbname_oid_list,
 
 				appendPQExpBufferStr(query, "SELECT 1 ");
 				processSQLNamePattern(conn, query, celldb->val, false,
-						false, NULL, quote_literal_cstr(dboid_cell->db_name),
-						NULL, NULL, NULL, &dotcnt);
+									  false, NULL, quote_literal_cstr(dboid_cell->db_name),
+									  NULL, NULL, NULL, &dotcnt);
 
 				if (dotcnt > 0)
 				{
 					pg_log_error("improper qualified name (too many dotted names): %s",
-							celldb->val);
+								  celldb->val);
 					PQfinish(conn);
 					exit_nicely(1);
 				}
@@ -891,7 +896,7 @@ filter_dbnames_for_restore(PGconn *conn, SimpleDatabaseOidList *dbname_oid_list,
 				if ((PQresultStatus(res) == PGRES_TUPLES_OK) && PQntuples(res))
 				{
 					skip_db_restore = true;
-					pg_log_info("\"%s\" database is matching with exclude \"%s\" pattern", dboid_cell->db_name, celldb->val);
+					pg_log_info("database \"%s\" is matching with exclude pattern: \"%s\"", dboid_cell->db_name, celldb->val);
 				}
 
 				PQclear(res);
@@ -1000,13 +1005,13 @@ get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimpleDatabaseOidList *d
  */
 static int
 restoreAllDatabases(PGconn *conn, const char *dumpdirpath,
-		SimpleStringList db_exclude_patterns, RestoreOptions *opts,
-		int numWorkers)
+					SimpleStringList db_exclude_patterns, RestoreOptions *opts,
+					int numWorkers)
 {
 	SimpleDatabaseOidList			dbname_oid_list = {NULL, NULL};
 	SimpleDatabaseOidListCell		*dboid_cell;
 	int								exit_code = 0;
-	int								num_db_restore;
+	int								num_db_restore = 0;
 	int								num_total_db;
 
 	num_total_db = get_dbname_oid_list_from_mfile(dumpdirpath, &dbname_oid_list);
@@ -1042,8 +1047,9 @@ restoreAllDatabases(PGconn *conn, const char *dumpdirpath,
 	/*
 	 * processing pg_retsore --exclude-database=PATTERN.
 	 */
-	num_db_restore = filter_dbnames_for_restore(conn, &dbname_oid_list,
-			db_exclude_patterns);
+	if (conn)
+		num_db_restore = filter_dbnames_for_restore(conn, &dbname_oid_list,
+													db_exclude_patterns);
 
 	/* Close the db connection as we are done globals and patterns. */
 	if (conn)
@@ -1063,10 +1069,12 @@ restoreAllDatabases(PGconn *conn, const char *dumpdirpath,
 		pg_log_info("restoring dump of pg_dumpall without -C option, there might be multiple databases in directory.");
 
 	/* TODO: MAX_ON_EXIT_NICELY is 100 now... max AH handle register on exit .*/
-	if (num_db_restore > 100)
+	if (num_db_restore > MAX_ON_EXIT_NICELY)
 	{
 		simple_db_oid_full_list_delete(&dbname_oid_list);
-		pg_fatal("cound not restore more than 100 databases by single pg_restore, here total db:%d", num_db_restore);
+		pg_fatal("cound not restore more than %d databases by single pg_restore, here total db:%d",
+				  MAX_ON_EXIT_NICELY,
+				  num_db_restore);
 	}
 
 	/*
@@ -1102,7 +1110,7 @@ restoreAllDatabases(PGconn *conn, const char *dumpdirpath,
 			exit_code = dbexit_code;
 
 		dboid_cell = dboid_cell->next;
-	} /* end while */
+	}
 
 	/* Log number of processed databases.*/
 	pg_log_info("number of restored databases are %d", num_db_restore);
-- 
2.34.1