add more NLS to bin
Here is a series of patches to add NLS to the remaining bin programs,
which were moved from contrib a while ago. (If you're missing pgbench,
I'm skipping that for now because it's more complicated.) I'll add this
to the commit fest.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:
0001-pg_archivecleanup-Add-NLS.patchtext/x-patch; name=0001-pg_archivecleanup-Add-NLS.patchDownload
From 1939efe002fde2cbc2012e7ae1af674e774e82cb Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Fri, 14 Oct 2016 12:00:00 -0400
Subject: [PATCH 1/7] pg_archivecleanup: Add NLS
---
src/bin/pg_archivecleanup/nls.mk | 4 ++
src/bin/pg_archivecleanup/pg_archivecleanup.c | 73 ++++++++++++++-------------
2 files changed, 41 insertions(+), 36 deletions(-)
create mode 100644 src/bin/pg_archivecleanup/nls.mk
diff --git a/src/bin/pg_archivecleanup/nls.mk b/src/bin/pg_archivecleanup/nls.mk
new file mode 100644
index 0000000..fd959a5
--- /dev/null
+++ b/src/bin/pg_archivecleanup/nls.mk
@@ -0,0 +1,4 @@
+# src/bin/pg_archivecleanup/nls.mk
+CATALOG_NAME = pg_archivecleanup
+AVAIL_LANGUAGES =
+GETTEXT_FILES = pg_archivecleanup.c
diff --git a/src/bin/pg_archivecleanup/pg_archivecleanup.c b/src/bin/pg_archivecleanup/pg_archivecleanup.c
index 319038f..f1651d4 100644
--- a/src/bin/pg_archivecleanup/pg_archivecleanup.c
+++ b/src/bin/pg_archivecleanup/pg_archivecleanup.c
@@ -70,7 +70,7 @@ Initialize(void)
if (stat(archiveLocation, &stat_buf) != 0 ||
!S_ISDIR(stat_buf.st_mode))
{
- fprintf(stderr, "%s: archive location \"%s\" does not exist\n",
+ fprintf(stderr, _("%s: archive location \"%s\" does not exist\n"),
progname, archiveLocation);
exit(2);
}
@@ -146,19 +146,19 @@ CleanupPriorWALFiles(void)
printf("%s\n", WALFilePath);
if (debug)
fprintf(stderr,
- "%s: file \"%s\" would be removed\n",
+ _("%s: file \"%s\" would be removed\n"),
progname, WALFilePath);
continue;
}
if (debug)
- fprintf(stderr, "%s: removing file \"%s\"\n",
+ fprintf(stderr, _("%s: removing file \"%s\"\n"),
progname, WALFilePath);
rc = unlink(WALFilePath);
if (rc != 0)
{
- fprintf(stderr, "%s: ERROR: could not remove file \"%s\": %s\n",
+ fprintf(stderr, _("%s: ERROR: could not remove file \"%s\": %s\n"),
progname, WALFilePath, strerror(errno));
break;
}
@@ -166,14 +166,14 @@ CleanupPriorWALFiles(void)
}
if (errno)
- fprintf(stderr, "%s: could not read archive location \"%s\": %s\n",
+ fprintf(stderr, _("%s: could not read archive location \"%s\": %s\n"),
progname, archiveLocation, strerror(errno));
if (closedir(xldir))
- fprintf(stderr, "%s: could not close archive location \"%s\": %s\n",
+ fprintf(stderr, _("%s: could not close archive location \"%s\": %s\n"),
progname, archiveLocation, strerror(errno));
}
else
- fprintf(stderr, "%s: could not open archive location \"%s\": %s\n",
+ fprintf(stderr, _("%s: could not open archive location \"%s\": %s\n"),
progname, archiveLocation, strerror(errno));
}
@@ -246,8 +246,8 @@ SetWALFileNameForCleanup(void)
if (!fnameOK)
{
- fprintf(stderr, "%s: invalid filename input\n", progname);
- fprintf(stderr, "Try \"%s --help\" for more information.\n", progname);
+ fprintf(stderr, _("%s: invalid filename input\n"), progname);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(2);
}
}
@@ -260,25 +260,25 @@ SetWALFileNameForCleanup(void)
static void
usage(void)
{
- printf("%s removes older WAL files from PostgreSQL archives.\n\n", progname);
- printf("Usage:\n");
- printf(" %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n", progname);
- printf("\nOptions:\n");
- printf(" -d generate debug output (verbose mode)\n");
- printf(" -n dry run, show the names of the files that would be removed\n");
- printf(" -V, --version output version information, then exit\n");
- printf(" -x EXT clean up files if they have this extension\n");
- printf(" -?, --help show this help, then exit\n");
- printf("\n"
- "For use as archive_cleanup_command in recovery.conf when standby_mode = on:\n"
- " archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
- "e.g.\n"
- " archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n");
- printf("\n"
- "Or for use as a standalone archive cleaner:\n"
- "e.g.\n"
- " pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n");
- printf("\nReport bugs to <pgsql-bugs@postgresql.org>.\n");
+ printf(_("%s removes older WAL files from PostgreSQL archives.\n\n"), progname);
+ printf(_("Usage:\n"));
+ printf(_(" %s [OPTION]... ARCHIVELOCATION OLDESTKEPTWALFILE\n"), progname);
+ printf(_("\nOptions:\n"));
+ printf(_(" -d generate debug output (verbose mode)\n"));
+ printf(_(" -n dry run, show the names of the files that would be removed\n"));
+ printf(_(" -V, --version output version information, then exit\n"));
+ printf(_(" -x EXT clean up files if they have this extension\n"));
+ printf(_(" -?, --help show this help, then exit\n"));
+ printf(_("\n"
+ "For use as archive_cleanup_command in recovery.conf when standby_mode = on:\n"
+ " archive_cleanup_command = 'pg_archivecleanup [OPTION]... ARCHIVELOCATION %%r'\n"
+ "e.g.\n"
+ " archive_cleanup_command = 'pg_archivecleanup /mnt/server/archiverdir %%r'\n"));
+ printf(_("\n"
+ "Or for use as a standalone archive cleaner:\n"
+ "e.g.\n"
+ " pg_archivecleanup /mnt/server/archiverdir 000000010000000000000010.00000020.backup\n"));
+ printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
}
/*------------ MAIN ----------------------------------------*/
@@ -287,6 +287,7 @@ main(int argc, char **argv)
{
int c;
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_archivecleanup"));
progname = get_progname(argv[0]);
if (argc > 1)
@@ -318,7 +319,7 @@ main(int argc, char **argv)
* from xlogfile names */
break;
default:
- fprintf(stderr, "Try \"%s --help\" for more information.\n", progname);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(2);
break;
}
@@ -338,8 +339,8 @@ main(int argc, char **argv)
}
else
{
- fprintf(stderr, "%s: must specify archive location\n", progname);
- fprintf(stderr, "Try \"%s --help\" for more information.\n", progname);
+ fprintf(stderr, _("%s: must specify archive location\n"), progname);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(2);
}
@@ -350,15 +351,15 @@ main(int argc, char **argv)
}
else
{
- fprintf(stderr, "%s: must specify restartfilename\n", progname);
- fprintf(stderr, "Try \"%s --help\" for more information.\n", progname);
+ fprintf(stderr, _("%s: must specify restartfilename\n"), progname);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(2);
}
if (optind < argc)
{
- fprintf(stderr, "%s: too many parameters\n", progname);
- fprintf(stderr, "Try \"%s --help\" for more information.\n", progname);
+ fprintf(stderr, _("%s: too many parameters\n"), progname);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
exit(2);
}
@@ -376,7 +377,7 @@ main(int argc, char **argv)
{
snprintf(WALFilePath, MAXPGPATH, "%s/%s",
archiveLocation, exclusiveCleanupFileName);
- fprintf(stderr, "%s: keep WAL file \"%s\" and later\n",
+ fprintf(stderr, _("%s: keep WAL file \"%s\" and later\n"),
progname, WALFilePath);
}
--
2.10.1
0002-pg_test_fsync-Add-NLS.patchtext/x-patch; name=0002-pg_test_fsync-Add-NLS.patchDownload
From 9a2254f56ad99f4fbc413002a859d7836eb24e90 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Fri, 14 Oct 2016 12:00:00 -0400
Subject: [PATCH 2/7] pg_test_fsync: Add NLS
---
src/bin/pg_test_fsync/nls.mk | 5 +++
src/bin/pg_test_fsync/pg_test_fsync.c | 69 ++++++++++++++++++-----------------
2 files changed, 40 insertions(+), 34 deletions(-)
create mode 100644 src/bin/pg_test_fsync/nls.mk
diff --git a/src/bin/pg_test_fsync/nls.mk b/src/bin/pg_test_fsync/nls.mk
new file mode 100644
index 0000000..6c95731
--- /dev/null
+++ b/src/bin/pg_test_fsync/nls.mk
@@ -0,0 +1,5 @@
+# src/bin/pg_test_fsync/nls.mk
+CATALOG_NAME = pg_test_fsync
+AVAIL_LANGUAGES =
+GETTEXT_FILES = pg_test_fsync.c
+GETTEXT_TRIGGERS = die
diff --git a/src/bin/pg_test_fsync/pg_test_fsync.c b/src/bin/pg_test_fsync/pg_test_fsync.c
index c842762..daee4a8 100644
--- a/src/bin/pg_test_fsync/pg_test_fsync.c
+++ b/src/bin/pg_test_fsync/pg_test_fsync.c
@@ -44,7 +44,7 @@ do { \
if (CreateThread(NULL, 0, process_alarm, NULL, 0, NULL) == \
INVALID_HANDLE_VALUE) \
{ \
- fprintf(stderr, "Cannot create thread for alarm\n"); \
+ fprintf(stderr, _("Cannot create thread for alarm\n")); \
exit(1); \
} \
gettimeofday(&start_t, NULL); \
@@ -96,6 +96,7 @@ static void die(const char *str);
int
main(int argc, char *argv[])
{
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_test_fsync"));
progname = get_progname(argv[0]);
handle_args(argc, argv);
@@ -148,7 +149,7 @@ handle_args(int argc, char *argv[])
{
if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0)
{
- printf("Usage: %s [-f FILENAME] [-s SECS-PER-TEST]\n", progname);
+ printf(_("Usage: %s [-f FILENAME] [-s SECS-PER-TEST]\n"), progname);
exit(0);
}
if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
@@ -172,7 +173,7 @@ handle_args(int argc, char *argv[])
break;
default:
- fprintf(stderr, "Try \"%s --help\" for more information.\n",
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
progname);
exit(1);
break;
@@ -182,18 +183,18 @@ handle_args(int argc, char *argv[])
if (argc > optind)
{
fprintf(stderr,
- "%s: too many command-line arguments (first is \"%s\")\n",
+ _("%s: too many command-line arguments (first is \"%s\")\n"),
progname, argv[optind]);
- fprintf(stderr, "Try \"%s --help\" for more information.\n",
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
progname);
exit(1);
}
- printf("%d seconds per test\n", secs_per_test);
+ printf(_("%d seconds per test\n"), secs_per_test);
#if PG_O_DIRECT != 0
- printf("O_DIRECT supported on this platform for open_datasync and open_sync.\n");
+ printf(_("O_DIRECT supported on this platform for open_datasync and open_sync.\n"));
#else
- printf("Direct I/O is not supported on this platform.\n");
+ printf(_("Direct I/O is not supported on this platform.\n"));
#endif
}
@@ -239,10 +240,10 @@ test_sync(int writes_per_op)
bool fs_warning = false;
if (writes_per_op == 1)
- printf("\nCompare file sync methods using one %dkB write:\n", XLOG_BLCKSZ_K);
+ printf(_("\nCompare file sync methods using one %dkB write:\n"), XLOG_BLCKSZ_K);
else
- printf("\nCompare file sync methods using two %dkB writes:\n", XLOG_BLCKSZ_K);
- printf("(in wal_sync_method preference order, except fdatasync is Linux's default)\n");
+ printf(_("\nCompare file sync methods using two %dkB writes:\n"), XLOG_BLCKSZ_K);
+ printf(_("(in wal_sync_method preference order, except fdatasync is Linux's default)\n"));
/*
* Test open_datasync if available
@@ -271,7 +272,7 @@ test_sync(int writes_per_op)
close(tmpfile);
}
#else
- printf(NA_FORMAT, "n/a\n");
+ printf(NA_FORMAT, _("n/a\n"));
#endif
/*
@@ -296,7 +297,7 @@ test_sync(int writes_per_op)
STOP_TIMER;
close(tmpfile);
#else
- printf(NA_FORMAT, "n/a\n");
+ printf(NA_FORMAT, _("n/a\n"));
#endif
/*
@@ -344,7 +345,7 @@ test_sync(int writes_per_op)
STOP_TIMER;
close(tmpfile);
#else
- printf(NA_FORMAT, "n/a\n");
+ printf(NA_FORMAT, _("n/a\n"));
#endif
/*
@@ -356,7 +357,7 @@ test_sync(int writes_per_op)
#ifdef OPEN_SYNC_FLAG
if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG | PG_O_DIRECT, 0)) == -1)
{
- printf(NA_FORMAT, "n/a*\n");
+ printf(NA_FORMAT, _("n/a*\n"));
fs_warning = true;
}
else
@@ -381,28 +382,28 @@ test_sync(int writes_per_op)
close(tmpfile);
}
#else
- printf(NA_FORMAT, "n/a\n");
+ printf(NA_FORMAT, _("n/a\n"));
#endif
if (fs_warning)
{
- printf("* This file system and its mount options do not support direct\n");
- printf("I/O, e.g. ext4 in journaled mode.\n");
+ printf(_("* This file system and its mount options do not support direct\n"
+ " I/O, e.g. ext4 in journaled mode.\n"));
}
}
static void
test_open_syncs(void)
{
- printf("\nCompare open_sync with different write sizes:\n");
- printf("(This is designed to compare the cost of writing 16kB in different write\n"
- "open_sync sizes.)\n");
-
- test_open_sync(" 1 * 16kB open_sync write", 16);
- test_open_sync(" 2 * 8kB open_sync writes", 8);
- test_open_sync(" 4 * 4kB open_sync writes", 4);
- test_open_sync(" 8 * 2kB open_sync writes", 2);
- test_open_sync("16 * 1kB open_sync writes", 1);
+ printf(_("\nCompare open_sync with different write sizes:\n"));
+ printf(_("(This is designed to compare the cost of writing 16kB in different write\n"
+ "open_sync sizes.)\n"));
+
+ test_open_sync(_(" 1 * 16kB open_sync write"), 16);
+ test_open_sync(_(" 2 * 8kB open_sync writes"), 8);
+ test_open_sync(_(" 4 * 4kB open_sync writes"), 4);
+ test_open_sync(_(" 8 * 2kB open_sync writes"), 2);
+ test_open_sync(_("16 * 1kB open_sync writes"), 1);
}
/*
@@ -422,7 +423,7 @@ test_open_sync(const char *msg, int writes_size)
#ifdef OPEN_SYNC_FLAG
if ((tmpfile = open(filename, O_RDWR | OPEN_SYNC_FLAG | PG_O_DIRECT, 0)) == -1)
- printf(NA_FORMAT, "n/a*\n");
+ printf(NA_FORMAT, _("n/a*\n"));
else
{
START_TIMER;
@@ -439,7 +440,7 @@ test_open_sync(const char *msg, int writes_size)
close(tmpfile);
}
#else
- printf(NA_FORMAT, "n/a\n");
+ printf(NA_FORMAT, _("n/a\n"));
#endif
}
@@ -455,9 +456,9 @@ test_file_descriptor_sync(void)
* against the same file. Possibly this should be done with writethrough
* on platforms which support it.
*/
- printf("\nTest if fsync on non-write file descriptor is honored:\n");
- printf("(If the times are similar, fsync() can sync data written on a different\n"
- "descriptor.)\n");
+ printf(_("\nTest if fsync on non-write file descriptor is honored:\n"));
+ printf(_("(If the times are similar, fsync() can sync data written on a different\n"
+ "descriptor.)\n"));
/*
* first write, fsync and close, which is the normal behavior without
@@ -521,7 +522,7 @@ test_non_sync(void)
/*
* Test a simple write without fsync
*/
- printf("\nNon-sync'ed %dkB writes:\n", XLOG_BLCKSZ_K);
+ printf(_("\nNon-sync'ed %dkB writes:\n"), XLOG_BLCKSZ_K);
printf(LABEL_FORMAT, "write");
fflush(stdout);
@@ -598,6 +599,6 @@ process_alarm(LPVOID param)
static void
die(const char *str)
{
- fprintf(stderr, "%s: %s\n", str, strerror(errno));
+ fprintf(stderr, _("%s: %s\n"), _(str), strerror(errno));
exit(1);
}
--
2.10.1
0003-pg_test_timing-Add-NLS.patchtext/x-patch; name=0003-pg_test_timing-Add-NLS.patchDownload
From 793b52b88dff818fa41e7c4c1180292e49681fcc Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Fri, 14 Oct 2016 12:00:00 -0400
Subject: [PATCH 3/7] pg_test_timing: Add NLS
---
doc/src/sgml/ref/pgtesttiming.sgml | 16 ++++++++--------
src/bin/pg_test_timing/nls.mk | 4 ++++
src/bin/pg_test_timing/pg_test_timing.c | 28 ++++++++++++++++------------
3 files changed, 28 insertions(+), 20 deletions(-)
create mode 100644 src/bin/pg_test_timing/nls.mk
diff --git a/doc/src/sgml/ref/pgtesttiming.sgml b/doc/src/sgml/ref/pgtesttiming.sgml
index f07a060..e3539cf 100644
--- a/doc/src/sgml/ref/pgtesttiming.sgml
+++ b/doc/src/sgml/ref/pgtesttiming.sgml
@@ -96,9 +96,9 @@ <title>Interpreting results</title>
<screen>
Testing timing overhead for 3 seconds.
-Per loop time including overhead: 35.96 nsec
+Per loop time including overhead: 35.96 ns
Histogram of timing durations:
-< usec % of total count
+ < us % of total count
1 96.40465 80435604
2 3.59518 2999652
4 0.00015 126
@@ -109,9 +109,9 @@ <title>Interpreting results</title>
<para>
Note that different units are used for the per loop time than the
- histogram. The loop can have resolution within a few nanoseconds (nsec),
+ histogram. The loop can have resolution within a few nanoseconds (ns),
while the individual timing calls can only resolve down to one microsecond
- (usec).
+ (us).
</para>
</refsect2>
@@ -157,9 +157,9 @@ <title>Changing time sources</title>
tsc hpet acpi_pm
# echo acpi_pm > /sys/devices/system/clocksource/clocksource0/current_clocksource
# pg_test_timing
-Per loop time including overhead: 722.92 nsec
+Per loop time including overhead: 722.92 ns
Histogram of timing durations:
-< usec % of total count
+ < us % of total count
1 27.84870 1155682
2 72.05956 2990371
4 0.07810 3241
@@ -170,7 +170,7 @@ <title>Changing time sources</title>
<para>
In this configuration, the sample <command>EXPLAIN ANALYZE</command> above
- takes 115.9 ms. That's 1061 nsec of timing overhead, again a small multiple
+ takes 115.9 ms. That's 1061 ns of timing overhead, again a small multiple
of what's measured directly by this utility. That much timing overhead
means the actual query itself is only taking a tiny fraction of the
accounted for time, most of it is being consumed in overhead instead. In
@@ -211,7 +211,7 @@ <title>Changing time sources</title>
Testing timing overhead for 3 seconds.
Per timing duration including loop overhead: 97.75 ns
Histogram of timing durations:
-< usec % of total count
+ < us % of total count
1 90.23734 27694571
2 9.75277 2993204
4 0.00981 3010
diff --git a/src/bin/pg_test_timing/nls.mk b/src/bin/pg_test_timing/nls.mk
new file mode 100644
index 0000000..e12ea5c
--- /dev/null
+++ b/src/bin/pg_test_timing/nls.mk
@@ -0,0 +1,4 @@
+# src/bin/pg_test_timing/nls.mk
+CATALOG_NAME = pg_test_timing
+AVAIL_LANGUAGES =
+GETTEXT_FILES = pg_test_timing.c
diff --git a/src/bin/pg_test_timing/pg_test_timing.c b/src/bin/pg_test_timing/pg_test_timing.c
index e5c11de..2f1ab7c 100644
--- a/src/bin/pg_test_timing/pg_test_timing.c
+++ b/src/bin/pg_test_timing/pg_test_timing.c
@@ -25,6 +25,7 @@ main(int argc, char *argv[])
{
uint64 loop_count;
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_test_timing"));
progname = get_progname(argv[0]);
handle_args(argc, argv);
@@ -51,7 +52,7 @@ handle_args(int argc, char *argv[])
{
if (strcmp(argv[1], "--help") == 0 || strcmp(argv[1], "-?") == 0)
{
- printf("Usage: %s [-d DURATION]\n", progname);
+ printf(_("Usage: %s [-d DURATION]\n"), progname);
exit(0);
}
if (strcmp(argv[1], "--version") == 0 || strcmp(argv[1], "-V") == 0)
@@ -71,7 +72,7 @@ handle_args(int argc, char *argv[])
break;
default:
- fprintf(stderr, "Try \"%s --help\" for more information.\n",
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
progname);
exit(1);
break;
@@ -81,23 +82,26 @@ handle_args(int argc, char *argv[])
if (argc > optind)
{
fprintf(stderr,
- "%s: too many command-line arguments (first is \"%s\")\n",
+ _("%s: too many command-line arguments (first is \"%s\")\n"),
progname, argv[optind]);
- fprintf(stderr, "Try \"%s --help\" for more information.\n",
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
progname);
exit(1);
}
if (test_duration > 0)
{
- printf("Testing timing overhead for %d seconds.\n", test_duration);
+ printf(ngettext("Testing timing overhead for %d second.\n",
+ "Testing timing overhead for %d seconds.\n",
+ test_duration),
+ test_duration);
}
else
{
fprintf(stderr,
- "%s: duration must be a positive integer (duration is \"%d\")\n",
+ _("%s: duration must be a positive integer (duration is \"%d\")\n"),
progname, test_duration);
- fprintf(stderr, "Try \"%s --help\" for more information.\n",
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"),
progname);
exit(1);
}
@@ -133,8 +137,8 @@ test_timing(int32 duration)
/* Did time go backwards? */
if (diff < 0)
{
- printf("Detected clock going backwards in time.\n");
- printf("Time warp: %d microseconds\n", diff);
+ fprintf(stderr, _("Detected clock going backwards in time.\n"));
+ fprintf(stderr, _("Time warp: %d ms\n"), diff);
exit(1);
}
@@ -157,7 +161,7 @@ test_timing(int32 duration)
INSTR_TIME_SUBTRACT(end_time, start_time);
- printf("Per loop time including overhead: %0.2f nsec\n",
+ printf(_("Per loop time including overhead: %0.2f ns\n"),
INSTR_TIME_GET_DOUBLE(end_time) * 1e9 / loop_count);
return loop_count;
@@ -173,8 +177,8 @@ output(uint64 loop_count)
while (max_bit > 0 && histogram[max_bit] == 0)
max_bit--;
- printf("Histogram of timing durations:\n");
- printf("%6s %10s %10s\n", "< usec", "% of total", "count");
+ printf(_("Histogram of timing durations:\n"));
+ printf("%6s %10s %10s\n", _("< us"), _("% of total"), _("count"));
for (i = 0; i <= max_bit; i++)
{
--
2.10.1
0004-pg_upgrade-Add-NLS.patchtext/x-patch; name=0004-pg_upgrade-Add-NLS.patchDownload
From 36ddce4817502758fb82c86a26e8c1113be508d1 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Fri, 14 Oct 2016 12:00:00 -0400
Subject: [PATCH 4/7] pg_upgrade: Add NLS
---
src/bin/pg_upgrade/function.c | 2 +-
src/bin/pg_upgrade/nls.mk | 12 +++++
src/bin/pg_upgrade/option.c | 101 +++++++++++++++++++--------------------
src/bin/pg_upgrade/pg_upgrade.c | 1 +
src/bin/pg_upgrade/relfilenode.c | 6 ++-
src/bin/pg_upgrade/server.c | 4 +-
src/bin/pg_upgrade/util.c | 4 +-
7 files changed, 71 insertions(+), 59 deletions(-)
create mode 100644 src/bin/pg_upgrade/nls.mk
diff --git a/src/bin/pg_upgrade/function.c b/src/bin/pg_upgrade/function.c
index 3009340..5b60f9f 100644
--- a/src/bin/pg_upgrade/function.c
+++ b/src/bin/pg_upgrade/function.c
@@ -252,7 +252,7 @@ check_loadable_libraries(void)
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
pg_fatal("could not open file \"%s\": %s\n",
output_path, strerror(errno));
- fprintf(script, "could not load library \"%s\":\n%s\n",
+ fprintf(script, _("could not load library \"%s\":\n%s\n"),
lib,
PQerrorMessage(conn));
}
diff --git a/src/bin/pg_upgrade/nls.mk b/src/bin/pg_upgrade/nls.mk
new file mode 100644
index 0000000..9c468f8
--- /dev/null
+++ b/src/bin/pg_upgrade/nls.mk
@@ -0,0 +1,12 @@
+# src/bin/pg_upgrade/nls.mk
+CATALOG_NAME = pg_upgrade
+AVAIL_LANGUAGES =
+GETTEXT_FILES = check.c controldata.c dump.c exec.c file.c function.c \
+ info.c option.c parallel.c pg_upgrade.c relfilenode.c \
+ server.c tablespace.c util.c version.c
+GETTEXT_TRIGGERS = pg_fatal pg_log:2 prep_status report_status:2
+GETTEXT_FLAGS = \
+ pg_fatal:1:c-format \
+ pg_log:2:c-format \
+ prep_status:1:c-format \
+ report_stats:2:c-format
diff --git a/src/bin/pg_upgrade/option.c b/src/bin/pg_upgrade/option.c
index 2e9a40c..12a49ff 100644
--- a/src/bin/pg_upgrade/option.c
+++ b/src/bin/pg_upgrade/option.c
@@ -240,13 +240,13 @@ parseCommandLine(int argc, char *argv[])
/* Get values from env if not already set */
check_required_directory(&old_cluster.bindir, NULL, "PGBINOLD", "-b",
- "old cluster binaries reside");
+ _("old cluster binaries reside"));
check_required_directory(&new_cluster.bindir, NULL, "PGBINNEW", "-B",
- "new cluster binaries reside");
+ _("new cluster binaries reside"));
check_required_directory(&old_cluster.pgdata, &old_cluster.pgconfig,
- "PGDATAOLD", "-d", "old cluster data resides");
+ "PGDATAOLD", "-d", _("old cluster data resides"));
check_required_directory(&new_cluster.pgdata, &new_cluster.pgconfig,
- "PGDATANEW", "-D", "new cluster data resides");
+ "PGDATANEW", "-D", _("new cluster data resides"));
#ifdef WIN32
@@ -275,56 +275,53 @@ parseCommandLine(int argc, char *argv[])
static void
usage(void)
{
- printf(_("pg_upgrade upgrades a PostgreSQL cluster to a different major version.\n\
-\nUsage:\n\
- pg_upgrade [OPTION]...\n\
-\n\
-Options:\n\
- -b, --old-bindir=BINDIR old cluster executable directory\n\
- -B, --new-bindir=BINDIR new cluster executable directory\n\
- -c, --check check clusters only, don't change any data\n\
- -d, --old-datadir=DATADIR old cluster data directory\n\
- -D, --new-datadir=DATADIR new cluster data directory\n\
- -j, --jobs number of simultaneous processes or threads to use\n\
- -k, --link link instead of copying files to new cluster\n\
- -o, --old-options=OPTIONS old cluster options to pass to the server\n\
- -O, --new-options=OPTIONS new cluster options to pass to the server\n\
- -p, --old-port=PORT old cluster port number (default %d)\n\
- -P, --new-port=PORT new cluster port number (default %d)\n\
- -r, --retain retain SQL and log files after success\n\
- -U, --username=NAME cluster superuser (default \"%s\")\n\
- -v, --verbose enable verbose internal logging\n\
- -V, --version display version information, then exit\n\
- -?, --help show this help, then exit\n\
-\n\
-Before running pg_upgrade you must:\n\
- create a new database cluster (using the new version of initdb)\n\
- shutdown the postmaster servicing the old cluster\n\
- shutdown the postmaster servicing the new cluster\n\
-\n\
-When you run pg_upgrade, you must provide the following information:\n\
- the data directory for the old cluster (-d DATADIR)\n\
- the data directory for the new cluster (-D DATADIR)\n\
- the \"bin\" directory for the old version (-b BINDIR)\n\
- the \"bin\" directory for the new version (-B BINDIR)\n\
-\n\
-For example:\n\
- pg_upgrade -d oldCluster/data -D newCluster/data -b oldCluster/bin -B newCluster/bin\n\
-or\n"), old_cluster.port, new_cluster.port, os_info.user);
+ printf(_("pg_upgrade upgrades a PostgreSQL cluster to a different major version.\n\n"));
+ printf(_("Usage:\n"));
+ printf(_(" pg_upgrade [OPTION]...\n\n"));
+ printf(_("Options:\n"));
+ printf(_(" -b, --old-bindir=BINDIR old cluster executable directory\n"));
+ printf(_(" -B, --new-bindir=BINDIR new cluster executable directory\n"));
+ printf(_(" -c, --check check clusters only, don't change any data\n"));
+ printf(_(" -d, --old-datadir=DATADIR old cluster data directory\n"));
+ printf(_(" -D, --new-datadir=DATADIR new cluster data directory\n"));
+ printf(_(" -j, --jobs number of simultaneous processes or threads to use\n"));
+ printf(_(" -k, --link link instead of copying files to new cluster\n"));
+ printf(_(" -o, --old-options=OPTIONS old cluster options to pass to the server\n"));
+ printf(_(" -O, --new-options=OPTIONS new cluster options to pass to the server\n"));
+ printf(_(" -p, --old-port=PORT old cluster port number (default %d)\n"), old_cluster.port);
+ printf(_(" -P, --new-port=PORT new cluster port number (default %d)\n"), new_cluster.port);
+ printf(_(" -r, --retain retain SQL and log files after success\n"));
+ printf(_(" -U, --username=NAME cluster superuser (default \"%s\")\n"), os_info.user);
+ printf(_(" -v, --verbose enable verbose internal logging\n"));
+ printf(_(" -V, --version display version information, then exit\n"));
+ printf(_(" -?, --help show this help, then exit\n"));
+ printf(_("\n"
+ "Before running pg_upgrade you must:\n"
+ " create a new database cluster (using the new version of initdb)\n"
+ " shutdown the postmaster servicing the old cluster\n"
+ " shutdown the postmaster servicing the new cluster\n"));
+ printf(_("\n"
+ "When you run pg_upgrade, you must provide the following information:\n"
+ " the data directory for the old cluster (-d DATADIR)\n"
+ " the data directory for the new cluster (-D DATADIR)\n"
+ " the \"bin\" directory for the old version (-b BINDIR)\n"
+ " the \"bin\" directory for the new version (-B BINDIR)\n"));
+ printf(_("\n"
+ "For example:\n"
+ " pg_upgrade -d oldCluster/data -D newCluster/data -b oldCluster/bin -B newCluster/bin\n"
+ "or\n"));
#ifndef WIN32
- printf(_("\
- $ export PGDATAOLD=oldCluster/data\n\
- $ export PGDATANEW=newCluster/data\n\
- $ export PGBINOLD=oldCluster/bin\n\
- $ export PGBINNEW=newCluster/bin\n\
- $ pg_upgrade\n"));
+ printf(_(" $ export PGDATAOLD=oldCluster/data\n"
+ " $ export PGDATANEW=newCluster/data\n"
+ " $ export PGBINOLD=oldCluster/bin\n"
+ " $ export PGBINNEW=newCluster/bin\n"
+ " $ pg_upgrade\n"));
#else
- printf(_("\
- C:\\> set PGDATAOLD=oldCluster/data\n\
- C:\\> set PGDATANEW=newCluster/data\n\
- C:\\> set PGBINOLD=oldCluster/bin\n\
- C:\\> set PGBINNEW=newCluster/bin\n\
- C:\\> pg_upgrade\n"));
+ printf(_(" C:\\> set PGDATAOLD=oldCluster/data\n"
+ " C:\\> set PGDATANEW=newCluster/data\n"
+ " C:\\> set PGBINOLD=oldCluster/bin\n"
+ " C:\\> set PGBINNEW=newCluster/bin\n"
+ " C:\\> pg_upgrade\n"));
#endif
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
}
diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c
index 90c0720..0207d85 100644
--- a/src/bin/pg_upgrade/pg_upgrade.c
+++ b/src/bin/pg_upgrade/pg_upgrade.c
@@ -75,6 +75,7 @@ main(int argc, char **argv)
char *deletion_script_file_name = NULL;
bool live_check = false;
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_upgrade"));
parseCommandLine(argc, argv);
get_restricted_token(os_info.progname);
diff --git a/src/bin/pg_upgrade/relfilenode.c b/src/bin/pg_upgrade/relfilenode.c
index c8c2a28..79e41d1 100644
--- a/src/bin/pg_upgrade/relfilenode.c
+++ b/src/bin/pg_upgrade/relfilenode.c
@@ -30,8 +30,10 @@ void
transfer_all_new_tablespaces(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
char *old_pgdata, char *new_pgdata)
{
- pg_log(PG_REPORT, "%s user relation files\n",
- user_opts.transfer_mode == TRANSFER_MODE_LINK ? "Linking" : "Copying");
+ if (user_opts.transfer_mode == TRANSFER_MODE_LINK)
+ pg_log(PG_REPORT, "Linking user relation files\n");
+ else
+ pg_log(PG_REPORT, "Copying user relation files\n");
/*
* Transferring files by tablespace is tricky because a single database
diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c
index 12432bb..4892934 100644
--- a/src/bin/pg_upgrade/server.c
+++ b/src/bin/pg_upgrade/server.c
@@ -36,7 +36,7 @@ connectToServer(ClusterInfo *cluster, const char *db_name)
if (conn)
PQfinish(conn);
- printf("Failure, exiting\n");
+ printf(_("Failure, exiting\n"));
exit(1);
}
@@ -136,7 +136,7 @@ executeQueryOrDie(PGconn *conn, const char *fmt,...)
PQerrorMessage(conn));
PQclear(result);
PQfinish(conn);
- printf("Failure, exiting\n");
+ printf(_("Failure, exiting\n"));
exit(1);
}
else
diff --git a/src/bin/pg_upgrade/util.c b/src/bin/pg_upgrade/util.c
index aadc1cd..b261fd6 100644
--- a/src/bin/pg_upgrade/util.c
+++ b/src/bin/pg_upgrade/util.c
@@ -133,7 +133,7 @@ pg_log_v(eLogType type, const char *fmt, va_list ap)
case PG_FATAL:
printf("\n%s", _(message));
- printf("Failure, exiting\n");
+ printf(_("Failure, exiting\n"));
exit(1);
break;
@@ -163,7 +163,7 @@ pg_fatal(const char *fmt,...)
va_start(args, fmt);
pg_log_v(PG_FATAL, fmt, args);
va_end(args);
- printf("Failure, exiting\n");
+ printf(_("Failure, exiting\n"));
exit(1);
}
--
2.10.1
0005-pg_xlogdump-Add-NLS.patchtext/x-patch; name=0005-pg_xlogdump-Add-NLS.patchDownload
From 6d6c6c51251893bcbfc72edc6002580278b59c5b Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Sat, 15 Oct 2016 12:00:00 -0400
Subject: [PATCH 5/7] pg_xlogdump: Add NLS
---
src/bin/pg_xlogdump/nls.mk | 6 ++++
src/bin/pg_xlogdump/pg_xlogdump.c | 75 ++++++++++++++++++++-------------------
2 files changed, 44 insertions(+), 37 deletions(-)
create mode 100644 src/bin/pg_xlogdump/nls.mk
diff --git a/src/bin/pg_xlogdump/nls.mk b/src/bin/pg_xlogdump/nls.mk
new file mode 100644
index 0000000..2b254c3
--- /dev/null
+++ b/src/bin/pg_xlogdump/nls.mk
@@ -0,0 +1,6 @@
+# src/bin/pg_xlogdump/nls.mk
+CATALOG_NAME = pg_xlogdump
+AVAIL_LANGUAGES =
+GETTEXT_FILES = pg_xlogdump.c
+GETTEXT_TRIGGERS = fatal_error
+GETTEXT_FLAGS = fatal_error:1:c-format
diff --git a/src/bin/pg_xlogdump/pg_xlogdump.c b/src/bin/pg_xlogdump/pg_xlogdump.c
index 7490398..d070312 100644
--- a/src/bin/pg_xlogdump/pg_xlogdump.c
+++ b/src/bin/pg_xlogdump/pg_xlogdump.c
@@ -79,9 +79,9 @@ fatal_error(const char *fmt,...)
fflush(stdout);
- fprintf(stderr, "%s: FATAL: ", progname);
+ fprintf(stderr, _("%s: FATAL: "), progname);
va_start(args, fmt);
- vfprintf(stderr, fmt, args);
+ vfprintf(stderr, _(fmt), args);
va_end(args);
fputc('\n', stderr);
@@ -670,27 +670,27 @@ XLogDumpDisplayStats(XLogDumpConfig *config, XLogDumpStats *stats)
static void
usage(void)
{
- printf("%s decodes and displays PostgreSQL transaction logs for debugging.\n\n",
+ printf(_("%s decodes and displays PostgreSQL transaction logs for debugging.\n\n"),
progname);
- printf("Usage:\n");
- printf(" %s [OPTION]... [STARTSEG [ENDSEG]] \n", progname);
- printf("\nOptions:\n");
- printf(" -b, --bkp-details output detailed information about backup blocks\n");
- printf(" -e, --end=RECPTR stop reading at log position RECPTR\n");
- printf(" -f, --follow keep retrying after reaching end of WAL\n");
- printf(" -n, --limit=N number of records to display\n");
- printf(" -p, --path=PATH directory in which to find log segment files\n");
- printf(" (default: ./pg_wal)\n");
- printf(" -r, --rmgr=RMGR only show records generated by resource manager RMGR\n");
- printf(" use --rmgr=list to list valid resource manager names\n");
- printf(" -s, --start=RECPTR start reading at log position RECPTR\n");
- printf(" -t, --timeline=TLI timeline from which to read log records\n");
- printf(" (default: 1 or the value used in STARTSEG)\n");
- printf(" -V, --version output version information, then exit\n");
- printf(" -x, --xid=XID only show records with TransactionId XID\n");
- printf(" -z, --stats[=record] show statistics instead of records\n");
- printf(" (optionally, show per-record statistics)\n");
- printf(" -?, --help show this help, then exit\n");
+ printf(_("Usage:\n"));
+ printf(_(" %s [OPTION]... [STARTSEG [ENDSEG]] \n"), progname);
+ printf(_("\nOptions:\n"));
+ printf(_(" -b, --bkp-details output detailed information about backup blocks\n"));
+ printf(_(" -e, --end=RECPTR stop reading at log position RECPTR\n"));
+ printf(_(" -f, --follow keep retrying after reaching end of WAL\n"));
+ printf(_(" -n, --limit=N number of records to display\n"));
+ printf(_(" -p, --path=PATH directory in which to find log segment files\n"
+ " (default: ./pg_wal)\n"));
+ printf(_(" -r, --rmgr=RMGR only show records generated by resource manager RMGR\n"
+ " use --rmgr=list to list valid resource manager names\n"));
+ printf(_(" -s, --start=RECPTR start reading at log position RECPTR\n"));
+ printf(_(" -t, --timeline=TLI timeline from which to read log records\n"
+ " (default: 1 or the value used in STARTSEG)\n"));
+ printf(_(" -V, --version output version information, then exit\n"));
+ printf(_(" -x, --xid=XID only show records with TransactionId XID\n"));
+ printf(_(" -z, --stats[=record] show statistics instead of records\n"
+ " (optionally, show per-record statistics)\n"));
+ printf(_(" -?, --help show this help, then exit\n"));
}
int
@@ -725,6 +725,7 @@ main(int argc, char **argv)
int option;
int optindex = 0;
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_xlogdump"));
progname = get_progname(argv[0]);
memset(&private, 0, sizeof(XLogDumpPrivate));
@@ -748,7 +749,7 @@ main(int argc, char **argv)
if (argc <= 1)
{
- fprintf(stderr, "%s: no arguments specified\n", progname);
+ fprintf(stderr, _("%s: no arguments specified\n"), progname);
goto bad_argument;
}
@@ -763,7 +764,7 @@ main(int argc, char **argv)
case 'e':
if (sscanf(optarg, "%X/%X", &xlogid, &xrecoff) != 2)
{
- fprintf(stderr, "%s: could not parse end log position \"%s\"\n",
+ fprintf(stderr, _("%s: could not parse end log position \"%s\"\n"),
progname, optarg);
goto bad_argument;
}
@@ -779,7 +780,7 @@ main(int argc, char **argv)
case 'n':
if (sscanf(optarg, "%d", &config.stop_after_records) != 1)
{
- fprintf(stderr, "%s: could not parse limit \"%s\"\n",
+ fprintf(stderr, _("%s: could not parse limit \"%s\"\n"),
progname, optarg);
goto bad_argument;
}
@@ -808,7 +809,7 @@ main(int argc, char **argv)
if (config.filter_by_rmgr == -1)
{
- fprintf(stderr, "%s: resource manager \"%s\" does not exist\n",
+ fprintf(stderr, _("%s: resource manager \"%s\" does not exist\n"),
progname, optarg);
goto bad_argument;
}
@@ -817,7 +818,7 @@ main(int argc, char **argv)
case 's':
if (sscanf(optarg, "%X/%X", &xlogid, &xrecoff) != 2)
{
- fprintf(stderr, "%s: could not parse start log position \"%s\"\n",
+ fprintf(stderr, _("%s: could not parse start log position \"%s\"\n"),
progname, optarg);
goto bad_argument;
}
@@ -827,7 +828,7 @@ main(int argc, char **argv)
case 't':
if (sscanf(optarg, "%d", &private.timeline) != 1)
{
- fprintf(stderr, "%s: could not parse timeline \"%s\"\n",
+ fprintf(stderr, _("%s: could not parse timeline \"%s\"\n"),
progname, optarg);
goto bad_argument;
}
@@ -839,7 +840,7 @@ main(int argc, char **argv)
case 'x':
if (sscanf(optarg, "%u", &config.filter_by_xid) != 1)
{
- fprintf(stderr, "%s: could not parse \"%s\" as a valid xid\n",
+ fprintf(stderr, _("%s: could not parse \"%s\" as a valid xid\n"),
progname, optarg);
goto bad_argument;
}
@@ -854,7 +855,7 @@ main(int argc, char **argv)
config.stats_per_record = true;
else if (strcmp(optarg, "rmgr") != 0)
{
- fprintf(stderr, "%s: unrecognised argument to --stats: %s\n",
+ fprintf(stderr, _("%s: unrecognised argument to --stats: %s\n"),
progname, optarg);
goto bad_argument;
}
@@ -868,7 +869,7 @@ main(int argc, char **argv)
if ((optind + 2) < argc)
{
fprintf(stderr,
- "%s: too many command-line arguments (first is \"%s\")\n",
+ _("%s: too many command-line arguments (first is \"%s\")\n"),
progname, argv[optind + 2]);
goto bad_argument;
}
@@ -879,7 +880,7 @@ main(int argc, char **argv)
if (!verify_directory(private.inpath))
{
fprintf(stderr,
- "%s: path \"%s\" cannot be opened: %s\n",
+ _("%s: path \"%s\" cannot be opened: %s\n"),
progname, private.inpath, strerror(errno));
goto bad_argument;
}
@@ -917,7 +918,7 @@ main(int argc, char **argv)
else if (!XLByteInSeg(private.startptr, segno))
{
fprintf(stderr,
- "%s: start log position %X/%X is not inside file \"%s\"\n",
+ _("%s: start log position %X/%X is not inside file \"%s\"\n"),
progname,
(uint32) (private.startptr >> 32),
(uint32) private.startptr,
@@ -961,7 +962,7 @@ main(int argc, char **argv)
private.endptr != (segno + 1) * XLogSegSize)
{
fprintf(stderr,
- "%s: end log position %X/%X is not inside file \"%s\"\n",
+ _("%s: end log position %X/%X is not inside file \"%s\"\n"),
progname,
(uint32) (private.endptr >> 32),
(uint32) private.endptr,
@@ -973,7 +974,7 @@ main(int argc, char **argv)
/* we don't know what to print */
if (XLogRecPtrIsInvalid(private.startptr))
{
- fprintf(stderr, "%s: no start log position given.\n", progname);
+ fprintf(stderr, _("%s: no start log position given.\n"), progname);
goto bad_argument;
}
@@ -998,7 +999,7 @@ main(int argc, char **argv)
* a segment (e.g. we were used in file mode).
*/
if (first_record != private.startptr && (private.startptr % XLogSegSize) != 0)
- printf("first record is after %X/%X, at %X/%X, skipping over %u bytes\n",
+ printf(_("first record is after %X/%X, at %X/%X, skipping over %u bytes\n"),
(uint32) (private.startptr >> 32), (uint32) private.startptr,
(uint32) (first_record >> 32), (uint32) first_record,
(uint32) (first_record - private.startptr));
@@ -1057,6 +1058,6 @@ main(int argc, char **argv)
return EXIT_SUCCESS;
bad_argument:
- fprintf(stderr, "Try \"%s --help\" for more information.\n", progname);
+ fprintf(stderr, _("Try \"%s --help\" for more information.\n"), progname);
return EXIT_FAILURE;
}
--
2.10.1
On Thu, Oct 27, 2016 at 10:02 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:
Here is a series of patches to add NLS to the remaining bin programs,
which were moved from contrib a while ago. (If you're missing pgbench,
I'm skipping that for now because it's more complicated.) I'll add this
to the commit fest.
+1.
Side question just for curiosity: when is AVAIL_LANGUAGES filled? Once
the translations are added to the tree?
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 10/26/16 9:18 PM, Michael Paquier wrote:
Side question just for curiosity: when is AVAIL_LANGUAGES filled? Once
the translations are added to the tree?
Yes, that happens when the translations are copied in before a release.
See here for the script that is normally used:
https://git.postgresql.org/gitweb/?p=pgtranslation/admin.git;a=blob;f=cp-po;h=5b569a43e39a7c1fd5e28ba00a6708995df1b445;hb=57f0390ed14ecb974d2bde6242ce7b268e8261d2#l216
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Thu, Oct 27, 2016 at 10:27 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:
On 10/26/16 9:18 PM, Michael Paquier wrote:
Side question just for curiosity: when is AVAIL_LANGUAGES filled? Once
the translations are added to the tree?Yes, that happens when the translations are copied in before a release.
See here for the script that is normally used:
https://git.postgresql.org/gitweb/?p=pgtranslation/admin.git;a=blob;f=cp-po;h=5b569a43e39a7c1fd5e28ba00a6708995df1b445;hb=57f0390ed14ecb974d2bde6242ce7b268e8261d2#l216
Ah, thanks. That explains the whole thing!
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Thu, Oct 27, 2016 at 10:02 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:
Here is a series of patches to add NLS to the remaining bin programs,
which were moved from contrib a while ago. (If you're missing pgbench,
I'm skipping that for now because it's more complicated.) I'll add this
to the commit fest.
I have been looking at this patch set, and that's definitely a good
idea to do this change.
1) 0001 for pg_archivecleanup is missing nothing.
2) For 0002 and pg_test_fsync, I am seeing a missing entry:
printf(NA_FORMAT, "n/a*\n");
3) For pg_test_timing, the doc changes could be into a separate
change, but that's fine to group them as well. I am seeing no missing
strings for translations.
4) 0004 and pg_upgrade... In check.c, three places like that:
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
db_used = true;
}
In exec.c:
#endif
fprintf(log, "command: %s\n", cmd);
#ifdef WIN32
+GETTEXT_FLAGS = \
+ pg_fatal:1:c-format \
+ pg_log:2:c-format \
+ prep_status:1:c-format \
+ report_stats:2:c-forma
s/report_stats/report_status/
In info.c, missing some entries in report_unmatched_relation() when
reporting unmatching relations?
In parseCommandLine() of option.c, the "pg_upgrade run on" string
needs to be handled.
In util.c, doesn't pg_log_v() need to handle strings used in fprintf?
In version.c, this one:
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
db_used = true;
}
5) 0005 and pg_xlogdump, I am not seeing a missing entry.
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 10/31/16 1:58 AM, Michael Paquier wrote:
2) For 0002 and pg_test_fsync, I am seeing a missing entry:
printf(NA_FORMAT, "n/a*\n");
ok
4) 0004 and pg_upgrade... In check.c, three places like that:
if (!db_used)
{
fprintf(script, "Database: %s\n", active_db->db_name);
db_used = true;
}In exec.c:
#endif
fprintf(log, "command: %s\n", cmd);
#ifdef WIN32
These and several of the other places write into log or script files. I
have chosen not to do anything about those for now. That might be a
future change, or we just leave them.
+GETTEXT_FLAGS = \ + pg_fatal:1:c-format \ + pg_log:2:c-format \ + prep_status:1:c-format \ + report_stats:2:c-forma s/report_stats/report_status/
ok
In info.c, missing some entries in report_unmatched_relation() when
reporting unmatching relations?
Yeah, that will need a bit of a rewrite, so FIXME later?
In util.c, doesn't pg_log_v() need to handle strings used in fprintf?
Which specific lines do you have in mind?
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Fri, Nov 4, 2016 at 1:44 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:
On 10/31/16 1:58 AM, Michael Paquier wrote:
In info.c, missing some entries in report_unmatched_relation() when
reporting unmatching relations?Yeah, that will need a bit of a rewrite, so FIXME later?
This patch not being complicated, so I would vote for those being
addressed now so as they are not forgotten even if there is a FIXME
flag added. Perhaps you don't think so, and as that's a minor issue
I'll be fine with your judgement as well.
In util.c, doesn't pg_log_v() need to handle strings used in fprintf?
Which specific lines do you have in mind?
The verbose logs at the top. In pg_rewind for example those logs are
getting translated via the pg_log() calls used with PG_DEBUG.
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 11/3/16 7:17 PM, Michael Paquier wrote:
This patch not being complicated, so I would vote for those being
addressed now so as they are not forgotten even if there is a FIXME
flag added. Perhaps you don't think so, and as that's a minor issue
I'll be fine with your judgement as well.
OK, I just wrapped it in translation markers as is, which should work
well enough.
In util.c, doesn't pg_log_v() need to handle strings used in fprintf?
Which specific lines do you have in mind?
The verbose logs at the top. In pg_rewind for example those logs are
getting translated via the pg_log() calls used with PG_DEBUG.
Yeah that was wrong anyway. The previously existing translation markers
were wrong. We want to translate the fmt, not the formatted message.
New patch attached.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Attachments:
v2-0001-pg_upgrade-Add-NLS.patchtext/x-patch; name=v2-0001-pg_upgrade-Add-NLS.patchDownload
From 91a5d23f1d8a188d11de2f2dfc6d455ebf04cfc5 Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Fri, 14 Oct 2016 12:00:00 -0400
Subject: [PATCH v2 1/3] pg_upgrade: Add NLS
---
src/bin/pg_upgrade/function.c | 2 +-
src/bin/pg_upgrade/info.c | 8 ++--
src/bin/pg_upgrade/nls.mk | 12 +++++
src/bin/pg_upgrade/option.c | 101 +++++++++++++++++++--------------------
src/bin/pg_upgrade/pg_upgrade.c | 1 +
src/bin/pg_upgrade/relfilenode.c | 6 ++-
src/bin/pg_upgrade/server.c | 4 +-
src/bin/pg_upgrade/util.c | 14 +++---
8 files changed, 80 insertions(+), 68 deletions(-)
create mode 100644 src/bin/pg_upgrade/nls.mk
diff --git a/src/bin/pg_upgrade/function.c b/src/bin/pg_upgrade/function.c
index 3009340..5b60f9f 100644
--- a/src/bin/pg_upgrade/function.c
+++ b/src/bin/pg_upgrade/function.c
@@ -252,7 +252,7 @@ check_loadable_libraries(void)
if (script == NULL && (script = fopen_priv(output_path, "w")) == NULL)
pg_fatal("could not open file \"%s\": %s\n",
output_path, strerror(errno));
- fprintf(script, "could not load library \"%s\":\n%s\n",
+ fprintf(script, _("could not load library \"%s\":\n%s\n"),
lib,
PQerrorMessage(conn));
}
diff --git a/src/bin/pg_upgrade/info.c b/src/bin/pg_upgrade/info.c
index 1200c7f..8af9eac 100644
--- a/src/bin/pg_upgrade/info.c
+++ b/src/bin/pg_upgrade/info.c
@@ -238,7 +238,7 @@ report_unmatched_relation(const RelInfo *rel, const DbInfo *db, bool is_new_db)
{
snprintf(reldesc + strlen(reldesc),
sizeof(reldesc) - strlen(reldesc),
- " which is an index on \"%s.%s\"",
+ _(" which is an index on \"%s.%s\""),
hrel->nspname, hrel->relname);
/* Shift attention to index's table for toast check */
rel = hrel;
@@ -248,7 +248,7 @@ report_unmatched_relation(const RelInfo *rel, const DbInfo *db, bool is_new_db)
if (i >= db->rel_arr.nrels)
snprintf(reldesc + strlen(reldesc),
sizeof(reldesc) - strlen(reldesc),
- " which is an index on OID %u", rel->indtable);
+ _(" which is an index on OID %u"), rel->indtable);
}
if (rel->toastheap)
{
@@ -260,7 +260,7 @@ report_unmatched_relation(const RelInfo *rel, const DbInfo *db, bool is_new_db)
{
snprintf(reldesc + strlen(reldesc),
sizeof(reldesc) - strlen(reldesc),
- " which is the TOAST table for \"%s.%s\"",
+ _(" which is the TOAST table for \"%s.%s\""),
brel->nspname, brel->relname);
break;
}
@@ -268,7 +268,7 @@ report_unmatched_relation(const RelInfo *rel, const DbInfo *db, bool is_new_db)
if (i >= db->rel_arr.nrels)
snprintf(reldesc + strlen(reldesc),
sizeof(reldesc) - strlen(reldesc),
- " which is the TOAST table for OID %u", rel->toastheap);
+ _(" which is the TOAST table for OID %u"), rel->toastheap);
}
if (is_new_db)
diff --git a/src/bin/pg_upgrade/nls.mk b/src/bin/pg_upgrade/nls.mk
new file mode 100644
index 0000000..a0c846d
--- /dev/null
+++ b/src/bin/pg_upgrade/nls.mk
@@ -0,0 +1,12 @@
+# src/bin/pg_upgrade/nls.mk
+CATALOG_NAME = pg_upgrade
+AVAIL_LANGUAGES =
+GETTEXT_FILES = check.c controldata.c dump.c exec.c file.c function.c \
+ info.c option.c parallel.c pg_upgrade.c relfilenode.c \
+ server.c tablespace.c util.c version.c
+GETTEXT_TRIGGERS = pg_fatal pg_log:2 prep_status report_status:2
+GETTEXT_FLAGS = \
+ pg_fatal:1:c-format \
+ pg_log:2:c-format \
+ prep_status:1:c-format \
+ report_status:2:c-format
diff --git a/src/bin/pg_upgrade/option.c b/src/bin/pg_upgrade/option.c
index 2e9a40c..12a49ff 100644
--- a/src/bin/pg_upgrade/option.c
+++ b/src/bin/pg_upgrade/option.c
@@ -240,13 +240,13 @@ parseCommandLine(int argc, char *argv[])
/* Get values from env if not already set */
check_required_directory(&old_cluster.bindir, NULL, "PGBINOLD", "-b",
- "old cluster binaries reside");
+ _("old cluster binaries reside"));
check_required_directory(&new_cluster.bindir, NULL, "PGBINNEW", "-B",
- "new cluster binaries reside");
+ _("new cluster binaries reside"));
check_required_directory(&old_cluster.pgdata, &old_cluster.pgconfig,
- "PGDATAOLD", "-d", "old cluster data resides");
+ "PGDATAOLD", "-d", _("old cluster data resides"));
check_required_directory(&new_cluster.pgdata, &new_cluster.pgconfig,
- "PGDATANEW", "-D", "new cluster data resides");
+ "PGDATANEW", "-D", _("new cluster data resides"));
#ifdef WIN32
@@ -275,56 +275,53 @@ parseCommandLine(int argc, char *argv[])
static void
usage(void)
{
- printf(_("pg_upgrade upgrades a PostgreSQL cluster to a different major version.\n\
-\nUsage:\n\
- pg_upgrade [OPTION]...\n\
-\n\
-Options:\n\
- -b, --old-bindir=BINDIR old cluster executable directory\n\
- -B, --new-bindir=BINDIR new cluster executable directory\n\
- -c, --check check clusters only, don't change any data\n\
- -d, --old-datadir=DATADIR old cluster data directory\n\
- -D, --new-datadir=DATADIR new cluster data directory\n\
- -j, --jobs number of simultaneous processes or threads to use\n\
- -k, --link link instead of copying files to new cluster\n\
- -o, --old-options=OPTIONS old cluster options to pass to the server\n\
- -O, --new-options=OPTIONS new cluster options to pass to the server\n\
- -p, --old-port=PORT old cluster port number (default %d)\n\
- -P, --new-port=PORT new cluster port number (default %d)\n\
- -r, --retain retain SQL and log files after success\n\
- -U, --username=NAME cluster superuser (default \"%s\")\n\
- -v, --verbose enable verbose internal logging\n\
- -V, --version display version information, then exit\n\
- -?, --help show this help, then exit\n\
-\n\
-Before running pg_upgrade you must:\n\
- create a new database cluster (using the new version of initdb)\n\
- shutdown the postmaster servicing the old cluster\n\
- shutdown the postmaster servicing the new cluster\n\
-\n\
-When you run pg_upgrade, you must provide the following information:\n\
- the data directory for the old cluster (-d DATADIR)\n\
- the data directory for the new cluster (-D DATADIR)\n\
- the \"bin\" directory for the old version (-b BINDIR)\n\
- the \"bin\" directory for the new version (-B BINDIR)\n\
-\n\
-For example:\n\
- pg_upgrade -d oldCluster/data -D newCluster/data -b oldCluster/bin -B newCluster/bin\n\
-or\n"), old_cluster.port, new_cluster.port, os_info.user);
+ printf(_("pg_upgrade upgrades a PostgreSQL cluster to a different major version.\n\n"));
+ printf(_("Usage:\n"));
+ printf(_(" pg_upgrade [OPTION]...\n\n"));
+ printf(_("Options:\n"));
+ printf(_(" -b, --old-bindir=BINDIR old cluster executable directory\n"));
+ printf(_(" -B, --new-bindir=BINDIR new cluster executable directory\n"));
+ printf(_(" -c, --check check clusters only, don't change any data\n"));
+ printf(_(" -d, --old-datadir=DATADIR old cluster data directory\n"));
+ printf(_(" -D, --new-datadir=DATADIR new cluster data directory\n"));
+ printf(_(" -j, --jobs number of simultaneous processes or threads to use\n"));
+ printf(_(" -k, --link link instead of copying files to new cluster\n"));
+ printf(_(" -o, --old-options=OPTIONS old cluster options to pass to the server\n"));
+ printf(_(" -O, --new-options=OPTIONS new cluster options to pass to the server\n"));
+ printf(_(" -p, --old-port=PORT old cluster port number (default %d)\n"), old_cluster.port);
+ printf(_(" -P, --new-port=PORT new cluster port number (default %d)\n"), new_cluster.port);
+ printf(_(" -r, --retain retain SQL and log files after success\n"));
+ printf(_(" -U, --username=NAME cluster superuser (default \"%s\")\n"), os_info.user);
+ printf(_(" -v, --verbose enable verbose internal logging\n"));
+ printf(_(" -V, --version display version information, then exit\n"));
+ printf(_(" -?, --help show this help, then exit\n"));
+ printf(_("\n"
+ "Before running pg_upgrade you must:\n"
+ " create a new database cluster (using the new version of initdb)\n"
+ " shutdown the postmaster servicing the old cluster\n"
+ " shutdown the postmaster servicing the new cluster\n"));
+ printf(_("\n"
+ "When you run pg_upgrade, you must provide the following information:\n"
+ " the data directory for the old cluster (-d DATADIR)\n"
+ " the data directory for the new cluster (-D DATADIR)\n"
+ " the \"bin\" directory for the old version (-b BINDIR)\n"
+ " the \"bin\" directory for the new version (-B BINDIR)\n"));
+ printf(_("\n"
+ "For example:\n"
+ " pg_upgrade -d oldCluster/data -D newCluster/data -b oldCluster/bin -B newCluster/bin\n"
+ "or\n"));
#ifndef WIN32
- printf(_("\
- $ export PGDATAOLD=oldCluster/data\n\
- $ export PGDATANEW=newCluster/data\n\
- $ export PGBINOLD=oldCluster/bin\n\
- $ export PGBINNEW=newCluster/bin\n\
- $ pg_upgrade\n"));
+ printf(_(" $ export PGDATAOLD=oldCluster/data\n"
+ " $ export PGDATANEW=newCluster/data\n"
+ " $ export PGBINOLD=oldCluster/bin\n"
+ " $ export PGBINNEW=newCluster/bin\n"
+ " $ pg_upgrade\n"));
#else
- printf(_("\
- C:\\> set PGDATAOLD=oldCluster/data\n\
- C:\\> set PGDATANEW=newCluster/data\n\
- C:\\> set PGBINOLD=oldCluster/bin\n\
- C:\\> set PGBINNEW=newCluster/bin\n\
- C:\\> pg_upgrade\n"));
+ printf(_(" C:\\> set PGDATAOLD=oldCluster/data\n"
+ " C:\\> set PGDATANEW=newCluster/data\n"
+ " C:\\> set PGBINOLD=oldCluster/bin\n"
+ " C:\\> set PGBINNEW=newCluster/bin\n"
+ " C:\\> pg_upgrade\n"));
#endif
printf(_("\nReport bugs to <pgsql-bugs@postgresql.org>.\n"));
}
diff --git a/src/bin/pg_upgrade/pg_upgrade.c b/src/bin/pg_upgrade/pg_upgrade.c
index 90c0720..0207d85 100644
--- a/src/bin/pg_upgrade/pg_upgrade.c
+++ b/src/bin/pg_upgrade/pg_upgrade.c
@@ -75,6 +75,7 @@ main(int argc, char **argv)
char *deletion_script_file_name = NULL;
bool live_check = false;
+ set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("pg_upgrade"));
parseCommandLine(argc, argv);
get_restricted_token(os_info.progname);
diff --git a/src/bin/pg_upgrade/relfilenode.c b/src/bin/pg_upgrade/relfilenode.c
index c8c2a28..79e41d1 100644
--- a/src/bin/pg_upgrade/relfilenode.c
+++ b/src/bin/pg_upgrade/relfilenode.c
@@ -30,8 +30,10 @@ void
transfer_all_new_tablespaces(DbInfoArr *old_db_arr, DbInfoArr *new_db_arr,
char *old_pgdata, char *new_pgdata)
{
- pg_log(PG_REPORT, "%s user relation files\n",
- user_opts.transfer_mode == TRANSFER_MODE_LINK ? "Linking" : "Copying");
+ if (user_opts.transfer_mode == TRANSFER_MODE_LINK)
+ pg_log(PG_REPORT, "Linking user relation files\n");
+ else
+ pg_log(PG_REPORT, "Copying user relation files\n");
/*
* Transferring files by tablespace is tricky because a single database
diff --git a/src/bin/pg_upgrade/server.c b/src/bin/pg_upgrade/server.c
index 12432bb..4892934 100644
--- a/src/bin/pg_upgrade/server.c
+++ b/src/bin/pg_upgrade/server.c
@@ -36,7 +36,7 @@ connectToServer(ClusterInfo *cluster, const char *db_name)
if (conn)
PQfinish(conn);
- printf("Failure, exiting\n");
+ printf(_("Failure, exiting\n"));
exit(1);
}
@@ -136,7 +136,7 @@ executeQueryOrDie(PGconn *conn, const char *fmt,...)
PQerrorMessage(conn));
PQclear(result);
PQfinish(conn);
- printf("Failure, exiting\n");
+ printf(_("Failure, exiting\n"));
exit(1);
}
else
diff --git a/src/bin/pg_upgrade/util.c b/src/bin/pg_upgrade/util.c
index aadc1cd..4f27c72 100644
--- a/src/bin/pg_upgrade/util.c
+++ b/src/bin/pg_upgrade/util.c
@@ -89,7 +89,7 @@ pg_log_v(eLogType type, const char *fmt, va_list ap)
{
char message[QUERY_ALLOC];
- vsnprintf(message, sizeof(message), fmt, ap);
+ vsnprintf(message, sizeof(message), _(fmt), ap);
/* PG_VERBOSE and PG_STATUS are only output in verbose mode */
/* fopen() on log_opts.internal might have failed, so check it */
@@ -108,7 +108,7 @@ pg_log_v(eLogType type, const char *fmt, va_list ap)
{
case PG_VERBOSE:
if (log_opts.verbose)
- printf("%s", _(message));
+ printf("%s", message);
break;
case PG_STATUS:
@@ -123,17 +123,17 @@ pg_log_v(eLogType type, const char *fmt, va_list ap)
strlen(message) <= MESSAGE_WIDTH - 2 ? message :
message + strlen(message) - MESSAGE_WIDTH + 3 + 2);
else
- printf(" %s\n", _(message));
+ printf(" %s\n", message);
break;
case PG_REPORT:
case PG_WARNING:
- printf("%s", _(message));
+ printf("%s", message);
break;
case PG_FATAL:
- printf("\n%s", _(message));
- printf("Failure, exiting\n");
+ printf("\n%s", message);
+ printf(_("Failure, exiting\n"));
exit(1);
break;
@@ -163,7 +163,7 @@ pg_fatal(const char *fmt,...)
va_start(args, fmt);
pg_log_v(PG_FATAL, fmt, args);
va_end(args);
- printf("Failure, exiting\n");
+ printf(_("Failure, exiting\n"));
exit(1);
}
--
2.10.2
On Sat, Nov 5, 2016 at 9:17 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:
On 11/3/16 7:17 PM, Michael Paquier wrote:
This patch not being complicated, so I would vote for those being
addressed now so as they are not forgotten even if there is a FIXME
flag added. Perhaps you don't think so, and as that's a minor issue
I'll be fine with your judgement as well.OK, I just wrapped it in translation markers as is, which should work
well enough.
Agreed. I don't see anything wrong with that.
In util.c, doesn't pg_log_v() need to handle strings used in fprintf?
Which specific lines do you have in mind?
The verbose logs at the top. In pg_rewind for example those logs are
getting translated via the pg_log() calls used with PG_DEBUG.Yeah that was wrong anyway. The previously existing translation markers
were wrong. We want to translate the fmt, not the formatted message.
Does using one way or the other actually change something? Because
pg_rewind/logging.c is not marking fmt but the message, the opposite
of your v2 patch. One way or the other, having consistency for both
would be nice.
The patch looks good to me, the instructions for the script could be
changed... But you are right let's not mess up with non-ASCII
characters in it, like from some Asian language translation.
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 11/5/16 8:03 AM, Michael Paquier wrote:
Yeah that was wrong anyway. The previously existing translation markers
were wrong. We want to translate the fmt, not the formatted message.Does using one way or the other actually change something? Because
pg_rewind/logging.c is not marking fmt but the message, the opposite
of your v2 patch. One way or the other, having consistency for both
would be nice.
Consider the following for example:
pg_log(PG_DEBUG, "fetched file \"%s\", length %d\n", filename, len);
If you pass fmt to gettext(), then it will look up the string that you
see in the code. If you pass the formatted message to gettext(), then
it will look up something like
"fetched file \"foo\", length 12\n"
which it will not find, unless you provide translations for all
combinations of file names and lengths.
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On 11/5/16 8:03 AM, Michael Paquier wrote:
On Sat, Nov 5, 2016 at 9:17 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:On 11/3/16 7:17 PM, Michael Paquier wrote:
This patch not being complicated, so I would vote for those being
addressed now so as they are not forgotten even if there is a FIXME
flag added. Perhaps you don't think so, and as that's a minor issue
I'll be fine with your judgement as well.OK, I just wrapped it in translation markers as is, which should work
well enough.Agreed. I don't see anything wrong with that.
committed and closed the patch
--
Peter Eisentraut http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers
On Tue, Nov 8, 2016 at 12:13 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:
On 11/5/16 8:03 AM, Michael Paquier wrote:
On Sat, Nov 5, 2016 at 9:17 AM, Peter Eisentraut
<peter.eisentraut@2ndquadrant.com> wrote:On 11/3/16 7:17 PM, Michael Paquier wrote:
This patch not being complicated, so I would vote for those being
addressed now so as they are not forgotten even if there is a FIXME
flag added. Perhaps you don't think so, and as that's a minor issue
I'll be fine with your judgement as well.OK, I just wrapped it in translation markers as is, which should work
well enough.Agreed. I don't see anything wrong with that.
committed and closed the patch
Thanks for adjusting pg_rewind as well.
--
Michael
--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers