summaryrefslogtreecommitdiff
path: root/databases/pgcluster/files/patch-libpq:replicate.c
blob: 51d9d2e550a0369209d19df55dbbad802c325151 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
--- src/backend/libpq/replicate.c	17 Apr 2004 14:41:22 -0000	1.1.1.11
+++ src/backend/libpq/replicate.c	17 Apr 2004 14:44:29 -0000	1.6
@@ -635,6 +635,7 @@
 		return NULL;
 	}
 	sock = get_replicate_server_socket( sp , socket_type);
+	elog(DEBUG1, "get_replicate_server_socket() returns %d", sock);
 	if (sock < 0)
 	{
 		if (Debug_pretty_print)
@@ -2067,6 +2068,30 @@
 		return 1;
 	}
 	return 0;
+}
+
+extern Datum pgr_current_replicator(PG_FUNCTION_ARGS);
+PG_FUNCTION_INFO_V1(pgr_current_replicator);
+
+Datum
+pgr_current_replicator(PG_FUNCTION_ARGS)
+{
+	int	len;
+	char	buf[HOSTNAME_MAX_LENGTH + 6];
+	text	*result;
+	ReplicateServerInfo	*sp;
+
+	sp = PGR_get_replicate_server_info();
+	if (sp == NULL) {
+		PG_RETURN_NULL();
+	}
+	len = snprintf(buf, sizeof(buf), "%s:%d",
+		       sp->hostName, sp->portNumber);
+	result = palloc(VARHDRSZ + len);
+	VARATT_SIZEP(result) = VARHDRSZ + len;
+	memcpy(VARDATA(result), buf, len);
+
+	PG_RETURN_TEXT_P(result);
 }
 
 #endif /* USE_REPLICATION */