v27-0003-port-replace-int-with-string.patch

application/x-patch

Filename: v27-0003-port-replace-int-with-string.patch
Type: application/x-patch
Part: 2
Message: Re: speed up a logical replica setup

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 v27-0003
Subject: port: replace int with string
File+
src/bin/pg_basebackup/pg_createsubscriber.c 10 9
From 7ed803615fdbebf2054b5cbd783fb667465e7998 Mon Sep 17 00:00:00 2001
From: Euler Taveira <euler@eulerto.com>
Date: Wed, 6 Mar 2024 22:00:23 -0300
Subject: [PATCH v27 3/4] port: replace int with string

---
 src/bin/pg_basebackup/pg_createsubscriber.c | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/src/bin/pg_basebackup/pg_createsubscriber.c b/src/bin/pg_basebackup/pg_createsubscriber.c
index d9797ed8f4..85bbc3ba8f 100644
--- a/src/bin/pg_basebackup/pg_createsubscriber.c
+++ b/src/bin/pg_basebackup/pg_createsubscriber.c
@@ -28,7 +28,7 @@
 #include "fe_utils/simple_list.h"
 #include "getopt_long.h"
 
-#define	DEFAULT_SUB_PORT	50432
+#define	DEFAULT_SUB_PORT	"50432"
 #define	BASE_OUTPUT_DIR		"pg_createsubscriber_output.d"
 
 /* Command-line options */
@@ -37,7 +37,7 @@ struct CreateSubscriberOptions
 	char	   *subscriber_dir; /* standby/subscriber data directory */
 	char	   *pub_conninfo_str;	/* publisher connection string */
 	char	   *socket_dir;		/* directory for Unix-domain socket, if any */
-	unsigned short sub_port;	/* subscriber port number */
+	char	   *sub_port;		/* subscriber port number */
 	const char *sub_username;	/* subscriber username */
 	SimpleStringList database_names;	/* list of database names */
 	bool		retain;			/* retain log file? */
@@ -200,7 +200,7 @@ usage(void)
 	printf(_(" -d, --database=DBNAME               database to create a subscription\n"));
 	printf(_(" -D, --pgdata=DATADIR                location for the subscriber data directory\n"));
 	printf(_(" -n, --dry-run                       dry run, just show what would be done\n"));
-	printf(_(" -p, --subscriber-port=PORT          subscriber port number (default %d)\n"), DEFAULT_SUB_PORT);
+	printf(_(" -p, --subscriber-port=PORT          subscriber port number (default %s)\n"), DEFAULT_SUB_PORT);
 	printf(_(" -P, --publisher-server=CONNSTR      publisher connection string\n"));
 	printf(_(" -r, --retain                        retain log file after success\n"));
 	printf(_(" -s, --socket-directory=DIR          socket directory to use (default current directory)\n"));
@@ -1295,7 +1295,7 @@ start_standby_server(struct CreateSubscriberOptions *opt, const char *pg_ctl_pat
 		 */
 		if (!dry_run)
 			appendPQExpBuffer(pg_ctl_cmd, " -l \"%s\"", logfile);
-		appendPQExpBuffer(pg_ctl_cmd, " -o \"-p %u%s\"",
+		appendPQExpBuffer(pg_ctl_cmd, " -o \"-p %s%s\"",
 						  opt->sub_port, socket_string);
 	}
 	pg_log_debug("pg_ctl command is: %s", pg_ctl_cmd->data);
@@ -1336,7 +1336,7 @@ wait_for_end_recovery(const char *conninfo, const char *pg_ctl_path,
 
 #define NUM_CONN_ATTEMPTS	5
 
-	pg_log_info("waiting the target server to reach the consistent state");
+	pg_log_info("waiting for the target server to reach the consistent state");
 
 	conn = connect_database(conninfo, true);
 
@@ -1743,7 +1743,8 @@ main(int argc, char **argv)
 	opt.subscriber_dir = NULL;
 	opt.pub_conninfo_str = NULL;
 	opt.socket_dir = NULL;
-	opt.sub_port = DEFAULT_SUB_PORT;
+	opt.sub_port = palloc(16);
+	strcpy(opt.sub_port, DEFAULT_SUB_PORT);
 	opt.sub_username = NULL;
 	opt.database_names = (SimpleStringList)
 	{
@@ -1789,8 +1790,8 @@ main(int argc, char **argv)
 				dry_run = true;
 				break;
 			case 'p':
-				if ((opt.sub_port = atoi(optarg)) <= 0)
-					pg_fatal("invalid subscriber port number");
+				pg_free(opt.sub_port);
+				opt.sub_port = pg_strdup(optarg);
 				break;
 			case 'P':
 				opt.pub_conninfo_str = pg_strdup(optarg);
@@ -1890,7 +1891,7 @@ main(int argc, char **argv)
 		exit(1);
 
 	pg_log_info("validating connection string on subscriber");
-	sub_base_conninfo = psprintf("host=%s port=%u user=%s fallback_application_name=%s",
+	sub_base_conninfo = psprintf("host=%s port=%s user=%s fallback_application_name=%s",
 								 opt.socket_dir, opt.sub_port, opt.sub_username, progname);
 
 	if (opt.database_names.head == NULL)
-- 
2.34.1