Message style improvements
authorPeter Eisentraut
Mon, 16 Jun 2025 09:14:39 +0000 (11:14 +0200)
committerPeter Eisentraut
Mon, 16 Jun 2025 09:14:39 +0000 (11:14 +0200)
Some message style improvements in new code, and some small
refactorings to make translations easier.

16 files changed:
src/bin/pg_basebackup/pg_createsubscriber.c
src/bin/pg_basebackup/pg_recvlogical.c
src/bin/pg_basebackup/t/040_pg_createsubscriber.pl
src/bin/pg_dump/pg_dump.c
src/bin/pg_dump/pg_dumpall.c
src/bin/pg_dump/pg_restore.c
src/bin/pg_dump/t/001_basic.pl
src/bin/pg_dump/t/006_pg_dumpall.pl
src/bin/pg_upgrade/check.c
src/bin/pg_upgrade/relfilenumber.c
src/bin/pg_upgrade/t/005_char_signedness.pl
src/bin/pg_upgrade/task.c
src/bin/psql/command.c
src/bin/psql/describe.c
src/bin/psql/help.c
src/bin/psql/variables.c

index f65acc7cb1141294701e64703ecc4046bb289394..c43c0cbbba5a65769af6d4c454bfc7cbc97ceac1 100644 (file)
@@ -247,14 +247,14 @@ usage(void)
    printf(_("  %s [OPTION]...\n"), progname);
    printf(_("\nOptions:\n"));
    printf(_("  -a, --all                       create subscriptions for all databases except template\n"
-            "                                  databases or databases that don't allow connections\n"));
+            "                                  databases and databases that don't allow connections\n"));
    printf(_("  -d, --database=DBNAME           database in which 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 %s)\n"), DEFAULT_SUB_PORT);
    printf(_("  -P, --publisher-server=CONNSTR  publisher connection string\n"));
    printf(_("  -R, --remove=OBJECTTYPE         remove all objects of the specified type from specified\n"
-            "                                  databases on the subscriber; accepts: publications\n"));
+            "                                  databases on the subscriber; accepts: \"%s\"\n"), "publications");
    printf(_("  -s, --socketdir=DIR             socket directory to use (default current dir.)\n"));
    printf(_("  -t, --recovery-timeout=SECS     seconds to wait for recovery to end\n"));
    printf(_("  -T, --enable-two-phase          enable two-phase commit for all subscriptions\n"));
@@ -973,7 +973,7 @@ check_publisher(const struct LogicalRepInfo *dbinfo)
        pg_log_warning("two_phase option will not be enabled for replication slots");
        pg_log_warning_detail("Subscriptions will be created with the two_phase option disabled.  "
                              "Prepared transactions will be replicated at COMMIT PREPARED.");
-       pg_log_warning_hint("You can use --enable-two-phase switch to enable two_phase.");
+       pg_log_warning_hint("You can use the command-line option --enable-two-phase to enable two_phase.");
    }
 
    /*
@@ -2143,7 +2143,7 @@ main(int argc, char **argv)
                if (!simple_string_list_member(&opt.objecttypes_to_remove, optarg))
                    simple_string_list_append(&opt.objecttypes_to_remove, optarg);
                else
-                   pg_fatal("object type \"%s\" is specified more than once for -R/--remove", optarg);
+                   pg_fatal("object type \"%s\" specified more than once for -R/--remove", optarg);
                break;
            case 's':
                opt.socket_dir = pg_strdup(optarg);
@@ -2214,7 +2214,7 @@ main(int argc, char **argv)
 
        if (bad_switch)
        {
-           pg_log_error("%s cannot be used with -a/--all", bad_switch);
+           pg_log_error("options %s and -a/--all cannot be used together", bad_switch);
            pg_log_error_hint("Try \"%s --help\" for more information.", progname);
            exit(1);
        }
@@ -2341,7 +2341,7 @@ main(int argc, char **argv)
        else
        {
            pg_log_error("invalid object type \"%s\" specified for -R/--remove", cell->val);
-           pg_log_error_hint("The valid option is: \"publications\"");
+           pg_log_error_hint("The valid value is: \"%s\"", "publications");
            exit(1);
        }
    }
index e6810efe5f0d7acea71b0e5fbd1764a4ebefb5cc..4b4b545917d7dbc3449f3cac071ab4b0a49c99e9 100644 (file)
@@ -91,7 +91,7 @@ usage(void)
    printf(_("\nOptions:\n"));
    printf(_("  -E, --endpos=LSN       exit after receiving the specified LSN\n"));
    printf(_("      --failover         enable replication slot synchronization to standby servers when\n"
-            "                         creating a slot\n"));
+            "                         creating a replication slot\n"));
    printf(_("  -f, --file=FILE        receive log into this file, - for stdout\n"));
    printf(_("  -F  --fsync-interval=SECS\n"
             "                         time between fsyncs to the output file (default: %d)\n"), (fsync_interval / 1000));
index 2d532fee567dd20ec2eaf080532b81d261ecdfdf..df4924023fdf2493e78132e8e8f028821cffdc91 100644 (file)
@@ -399,7 +399,7 @@ command_fails_like(
        '--database' => $db1,
        '--all',
    ],
-   qr/--database cannot be used with -a\/--all/,
+   qr/options --database and -a\/--all cannot be used together/,
    'fail if --database is used with --all');
 
 # run pg_createsubscriber with '--publication' and '--all' and verify
@@ -416,7 +416,7 @@ command_fails_like(
        '--all',
        '--publication' => 'pub1',
    ],
-   qr/--publication cannot be used with -a\/--all/,
+   qr/options --publication and -a\/--all cannot be used together/,
    'fail if --publication is used with --all');
 
 # run pg_createsubscriber with '--all' option
index 37432e66efd7cc92412b642aa6e95c9483da4c0c..7bc0724cd301f50386a9e4b0a3ca63cb781e78f2 100644 (file)
@@ -6936,7 +6936,7 @@ getRelationStatistics(Archive *fout, DumpableObject *rel, int32 relpages,
                info->section = SECTION_POST_DATA;
                break;
            default:
-               pg_fatal("cannot dump statistics for relation kind '%c'",
+               pg_fatal("cannot dump statistics for relation kind \"%c\"",
                         info->relkind);
        }
 
@@ -9461,7 +9461,7 @@ getTableAttrs(Archive *fout, TableInfo *tblinfo, int numTables)
        int         i_consrc;
        int         i_conislocal;
 
-       pg_log_info("finding invalid not null constraints");
+       pg_log_info("finding invalid not-null constraints");
 
        resetPQExpBuffer(q);
        appendPQExpBuffer(q,
@@ -10855,7 +10855,7 @@ dumpRelationStats_dumper(Archive *fout, const void *userArg, const TocEntry *te)
        expected_te = expected_te->next;
 
    if (te != expected_te)
-       pg_fatal("stats dumped out of order (current: %d %s %s) (expected: %d %s %s)",
+       pg_fatal("statistics dumped out of order (current: %d %s %s, expected: %d %s %s)",
                 te->dumpId, te->desc, te->tag,
                 expected_te->dumpId, expected_te->desc, expected_te->tag);
 
@@ -10996,7 +10996,7 @@ dumpRelationStats_dumper(Archive *fout, const void *userArg, const TocEntry *te)
        appendStringLiteralAH(out, rsinfo->dobj.name, fout);
 
        if (PQgetisnull(res, rownum, i_attname))
-           pg_fatal("attname cannot be NULL");
+           pg_fatal("unexpected null attname");
        attname = PQgetvalue(res, rownum, i_attname);
 
        /*
index 7f9c302b719ec41ff896cc19ac883f1e2449be33..b1f388cb391609f1a48b5801c4ce7e96f88d7d7c 100644 (file)
@@ -525,7 +525,7 @@ main(int argc, char *argv[])
 
        OPF = fopen(global_path, PG_BINARY_W);
        if (!OPF)
-           pg_fatal("could not open \"%s\": %m", global_path);
+           pg_fatal("could not open file \"%s\": %m", global_path);
    }
    else if (filename)
    {
@@ -1659,14 +1659,14 @@ dumpDatabases(PGconn *conn, ArchiveFormat archDumpFormat)
 
        /* Create a subdirectory with 'databases' name under main directory. */
        if (mkdir(db_subdir, pg_dir_create_mode) != 0)
-           pg_fatal("could not create subdirectory \"%s\": %m", db_subdir);
+           pg_fatal("could not create directory \"%s\": %m", db_subdir);
 
        snprintf(map_file_path, MAXPGPATH, "%s/map.dat", filename);
 
        /* Create a map file (to store dboid and dbname) */
        map_file = fopen(map_file_path, PG_BINARY_W);
        if (!map_file)
-           pg_fatal("could not open map file: %s", strerror(errno));
+           pg_fatal("could not open file \"%s\": %m", map_file_path);
    }
 
    for (i = 0; i < PQntuples(res); i++)
@@ -1976,7 +1976,7 @@ parseDumpFormat(const char *format)
    else if (pg_strcasecmp(format, "tar") == 0)
        archDumpFormat = archTar;
    else
-       pg_fatal("unrecognized archive format \"%s\"; please specify \"c\", \"d\", \"p\", or \"t\"",
+       pg_fatal("unrecognized output format \"%s\"; please specify \"c\", \"d\", \"p\", or \"t\"",
                 format);
 
    return archDumpFormat;
index c4b6214d618cd5bbc79c253ddb1feda4d1c93e14..6ef789cb06d636cc8db7979bc7f674466cb89af2 100644 (file)
@@ -523,7 +523,7 @@ main(int argc, char **argv)
         */
        if (!globals_only && opts->createDB != 1)
        {
-           pg_log_error("-C/--create option should be specified when restoring an archive created by pg_dumpall");
+           pg_log_error("option -C/--create must be specified when restoring an archive created by pg_dumpall");
            pg_log_error_hint("Try \"%s --help\" for more information.", progname);
            pg_log_error_hint("Individual databases can be restored using their specific archives.");
            exit_nicely(1);
@@ -557,7 +557,7 @@ main(int argc, char **argv)
            if (conn)
                PQfinish(conn);
 
-           pg_log_info("database restoring skipped as -g/--globals-only option was specified");
+           pg_log_info("database restoring skipped because option -g/--globals-only was specified");
        }
        else
        {
@@ -725,8 +725,8 @@ usage(const char *progname)
    printf(_("  --role=ROLENAME          do SET ROLE before restore\n"));
 
    printf(_("\n"
-            "The options -I, -n, -N, -P, -t, -T, --section, and --exclude-database can be combined\n"
-            "and specified multiple times to select multiple objects.\n"));
+            "The options -I, -n, -N, -P, -t, -T, --section, and --exclude-database can be\n"
+            "combined and specified multiple times to select multiple objects.\n"));
    printf(_("\nIf no input file name is supplied, then standard input is used.\n\n"));
    printf(_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
    printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL);
@@ -946,7 +946,7 @@ get_dbnames_list_to_restore(PGconn *conn,
    query = createPQExpBuffer();
 
    if (!conn)
-       pg_log_info("considering PATTERN as NAME for --exclude-database option as no db connection while doing pg_restore.");
+       pg_log_info("considering PATTERN as NAME for --exclude-database option as no database connection while doing pg_restore");
 
    /*
     * Process one by one all dbnames and if specified to skip restoring, then
@@ -992,7 +992,7 @@ get_dbnames_list_to_restore(PGconn *conn,
                if ((PQresultStatus(res) == PGRES_TUPLES_OK) && PQntuples(res))
                {
                    skip_db_restore = true;
-                   pg_log_info("database \"%s\" matches exclude pattern: \"%s\"", dbidname->str, pat_cell->val);
+                   pg_log_info("database name \"%s\" matches exclude pattern \"%s\"", dbidname->str, pat_cell->val);
                }
 
                PQclear(res);
@@ -1048,7 +1048,7 @@ get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimplePtrList *dbname_oi
     */
    if (!file_exists_in_directory(dumpdirpath, "map.dat"))
    {
-       pg_log_info("database restoring is skipped as \"map.dat\" is not present in \"%s\"", dumpdirpath);
+       pg_log_info("database restoring is skipped because file \"%s\" does not exist in directory \"%s\"", "map.dat", dumpdirpath);
        return 0;
    }
 
@@ -1058,7 +1058,7 @@ get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimplePtrList *dbname_oi
    pfile = fopen(map_file_path, PG_BINARY_R);
 
    if (pfile == NULL)
-       pg_fatal("could not open \"%s\": %m", map_file_path);
+       pg_fatal("could not open file \"%s\": %m", map_file_path);
 
    initStringInfo(&linebuf);
 
@@ -1086,10 +1086,10 @@ get_dbname_oid_list_from_mfile(const char *dumpdirpath, SimplePtrList *dbname_oi
 
        /* Report error and exit if the file has any corrupted data. */
        if (!OidIsValid(db_oid) || namelen <= 1)
-           pg_fatal("invalid entry in \"%s\" at line: %d", map_file_path,
+           pg_fatal("invalid entry in file \"%s\" on line %d", map_file_path,
                     count + 1);
 
-       pg_log_info("found database \"%s\" (OID: %u) in \"%s\"",
+       pg_log_info("found database \"%s\" (OID: %u) in file \"%s\"",
                    dbname, db_oid, map_file_path);
 
        dbidname = pg_malloc(offsetof(DbOidName, str) + namelen + 1);
@@ -1142,11 +1142,14 @@ restore_all_databases(PGconn *conn, const char *dumpdirpath,
    if (dbname_oid_list.head == NULL)
        return process_global_sql_commands(conn, dumpdirpath, opts->filename);
 
-   pg_log_info("found %d database names in \"map.dat\"", num_total_db);
+   pg_log_info(ngettext("found %d database name in \"%s\"",
+                        "found %d database names in \"%s\"",
+                        num_total_db),
+               num_total_db, "map.dat");
 
    if (!conn)
    {
-       pg_log_info("trying to connect database \"postgres\"");
+       pg_log_info("trying to connect to database \"%s\"", "postgres");
 
        conn = ConnectDatabase("postgres", NULL, opts->cparams.pghost,
                               opts->cparams.pgport, opts->cparams.username, TRI_DEFAULT,
@@ -1155,7 +1158,7 @@ restore_all_databases(PGconn *conn, const char *dumpdirpath,
        /* Try with template1. */
        if (!conn)
        {
-           pg_log_info("trying to connect database \"template1\"");
+           pg_log_info("trying to connect to database \"%s\"", "template1");
 
            conn = ConnectDatabase("template1", NULL, opts->cparams.pghost,
                                   opts->cparams.pgport, opts->cparams.username, TRI_DEFAULT,
@@ -1179,7 +1182,9 @@ restore_all_databases(PGconn *conn, const char *dumpdirpath,
    /* Exit if no db needs to be restored. */
    if (dbname_oid_list.head == NULL || num_db_restore == 0)
    {
-       pg_log_info("no database needs to restore out of %d databases", num_total_db);
+       pg_log_info(ngettext("no database needs restoring out of %d database",
+                            "no database needs restoring out of %d databases", num_total_db),
+                   num_total_db);
        return n_errors_total;
    }
 
@@ -1314,7 +1319,7 @@ process_global_sql_commands(PGconn *conn, const char *dumpdirpath, const char *o
    pfile = fopen(global_file_path, PG_BINARY_R);
 
    if (pfile == NULL)
-       pg_fatal("could not open \"%s\": %m", global_file_path);
+       pg_fatal("could not open file \"%s\": %m", global_file_path);
 
    /*
     * If outfile is given, then just copy all global.dat file data into
@@ -1354,15 +1359,17 @@ process_global_sql_commands(PGconn *conn, const char *dumpdirpath, const char *o
                break;
            default:
                n_errors++;
-               pg_log_error("could not execute query: \"%s\" \nCommand was: \"%s\"", PQerrorMessage(conn), sqlstatement.data);
+               pg_log_error("could not execute query: %s", PQerrorMessage(conn));
+               pg_log_error_detail("Command was: %s", sqlstatement.data);
        }
        PQclear(result);
    }
 
    /* Print a summary of ignored errors during global.dat. */
    if (n_errors)
-       pg_log_warning("ignored %d errors in \"%s\"", n_errors, global_file_path);
-
+       pg_log_warning(ngettext("ignored %d error in file \"%s\"",
+                               "ignored %d errors in file \"%s\"", n_errors),
+                      n_errors, global_file_path);
    fclose(pfile);
 
    return n_errors;
index 84ca25e17d636b027f04fa2e2d1d647d4d3392e5..0be9f6dd538fd5d1e7423436394896cbf8c140ff 100644 (file)
@@ -261,6 +261,6 @@ command_fails_like(
 
 command_fails_like(
    [ 'pg_dumpall', '--format', 'x' ],
-   qr/\Qpg_dumpall: error: unrecognized archive format "x";\E/,
-   'pg_dumpall: unrecognized archive format');
+   qr/\Qpg_dumpall: error: unrecognized output format "x";\E/,
+   'pg_dumpall: unrecognized output format');
 done_testing();
index 5acd49f1559d2cc9cad6df7d74d5d08a14b8fb5c..0ea02a3a4a940816e7e59aeb4d1c4ab8bc9b225c 100644 (file)
@@ -365,7 +365,7 @@ $node->command_fails_like(
     "$tempdir/format_custom",
     '--format' => 'custom',
     '--file' => "$tempdir/error_test.sql", ],
-    qr/\Qpg_restore: error: -C\/--create option should be specified when restoring an archive created by pg_dumpall\E/,
+    qr/\Qpg_restore: error: option -C\/--create must be specified when restoring an archive created by pg_dumpall\E/,
     'When -C is not used in pg_restore with dump of pg_dumpall');
 
 # test case 2: When --list option is used with dump of pg_dumpall
index 940fc77fc2e8cdc0b73aa0f1a10c691e89d246c1..81865cd3e4859cb5ca9121b391536b2d7f3d668f 100644 (file)
@@ -885,7 +885,7 @@ check_cluster_versions(void)
     */
    if (GET_MAJOR_VERSION(old_cluster.major_version) >= 1800 &&
        user_opts.char_signedness != -1)
-       pg_fatal("%s option cannot be used to upgrade from PostgreSQL %s and later.",
+       pg_fatal("The option %s cannot be used for upgrades from PostgreSQL %s and later.",
                 "--set-char-signedness", "18");
 
    check_ok();
@@ -1934,7 +1934,7 @@ check_for_unicode_update(ClusterInfo *cluster)
    {
        fclose(report.file);
        report_status(PG_WARNING, "warning");
-       pg_log(PG_WARNING, "Your installation contains relations that may be affected by a new version of Unicode.\n"
+       pg_log(PG_WARNING, "Your installation contains relations that might be affected by a new version of Unicode.\n"
               "A list of potentially-affected relations is in the file:\n"
               "    %s", report.path);
    }
index 2959c07f0b8d129a3902ba7de28d64e8eeed85bf..8d8e816a01fa497e05f6c0a6ce017ef744b7ec14 100644 (file)
@@ -290,19 +290,19 @@ prepare_for_swap(const char *old_tablespace, Oid db_oid,
 
    /* Create directory for stuff that is moved aside. */
    if (pg_mkdir_p(moved_tblspc, pg_dir_create_mode) != 0 && errno != EEXIST)
-       pg_fatal("could not create directory \"%s\"", moved_tblspc);
+       pg_fatal("could not create directory \"%s\": %m", moved_tblspc);
 
    /* Create directory for old catalog files. */
    if (pg_mkdir_p(old_catalog_dir, pg_dir_create_mode) != 0)
-       pg_fatal("could not create directory \"%s\"", old_catalog_dir);
+       pg_fatal("could not create directory \"%s\": %m", old_catalog_dir);
 
    /* Move the new cluster's database directory aside. */
    if (rename(new_db_dir, moved_db_dir) != 0)
-       pg_fatal("could not rename \"%s\" to \"%s\"", new_db_dir, moved_db_dir);
+       pg_fatal("could not rename directory \"%s\" to \"%s\": %m", new_db_dir, moved_db_dir);
 
    /* Move the old cluster's database directory into place. */
    if (rename(old_db_dir, new_db_dir) != 0)
-       pg_fatal("could not rename \"%s\" to \"%s\"", old_db_dir, new_db_dir);
+       pg_fatal("could not rename directory \"%s\" to \"%s\": %m", old_db_dir, new_db_dir);
 
    return true;
 }
@@ -390,7 +390,7 @@ swap_catalog_files(FileNameMap *maps, int size, const char *old_catalog_dir,
 
        snprintf(dest, sizeof(dest), "%s/%s", old_catalog_dir, de->d_name);
        if (rename(path, dest) != 0)
-           pg_fatal("could not rename \"%s\" to \"%s\": %m", path, dest);
+           pg_fatal("could not rename file \"%s\" to \"%s\": %m", path, dest);
    }
    if (errno)
        pg_fatal("could not read directory \"%s\": %m", new_db_dir);
@@ -417,7 +417,7 @@ swap_catalog_files(FileNameMap *maps, int size, const char *old_catalog_dir,
 
        snprintf(dest, sizeof(dest), "%s/%s", new_db_dir, de->d_name);
        if (rename(path, dest) != 0)
-           pg_fatal("could not rename \"%s\" to \"%s\": %m", path, dest);
+           pg_fatal("could not rename file \"%s\" to \"%s\": %m", path, dest);
 
        /*
         * We don't fsync() the database files in the file synchronization
index 17fa0d48b15c18bfa675024383e06b45575e9583..cd8cff6f5132d78d512da3981499660dbe35a6af 100644 (file)
@@ -65,7 +65,7 @@ command_checks_all(
        $mode
    ],
    1,
-   [qr/--set-char-signedness option cannot be used/],
+   [qr/option --set-char-signedness cannot be used/],
    [],
    '--set-char-signedness option cannot be used for upgrading from v18 or later'
 );
index a48d56913908d2877df509d0581cf2ab2eabe2d5..ee0e24571521590dc749784ecd3cb71941d35e62 100644 (file)
@@ -192,8 +192,7 @@ start_conn(const ClusterInfo *cluster, UpgradeTaskSlot *slot)
    slot->conn = PQconnectStart(conn_opts.data);
 
    if (!slot->conn)
-       pg_fatal("failed to create connection with connection string: \"%s\"",
-                conn_opts.data);
+       pg_fatal("out of memory");
 
    termPQExpBuffer(&conn_opts);
 }
@@ -402,7 +401,7 @@ wait_on_slots(UpgradeTaskSlot *slots, int numslots)
     * If we found socket(s) to wait on, wait.
     */
    if (select_loop(maxFd, &input, &output) == -1)
-       pg_fatal("select() failed: %m");
+       pg_fatal("%s() failed: %m", "select");
 
    /*
     * Mark which sockets appear to be ready.
index e26c010d044ee23d095c5723eaa7221fe29b651e..83e84a778411a80643e403ac1fc8b2afb1819f7e 100644 (file)
@@ -1949,7 +1949,7 @@ exec_command_gexec(PsqlScanState scan_state, bool active_branch)
    {
        if (PQpipelineStatus(pset.db) != PQ_PIPELINE_OFF)
        {
-           pg_log_error("\\gexec not allowed in pipeline mode");
+           pg_log_error("\\%s not allowed in pipeline mode", "gexec");
            clean_extended_state();
            return PSQL_CMD_ERROR;
        }
@@ -1975,7 +1975,7 @@ exec_command_gset(PsqlScanState scan_state, bool active_branch)
 
        if (PQpipelineStatus(pset.db) != PQ_PIPELINE_OFF)
        {
-           pg_log_error("\\gset not allowed in pipeline mode");
+           pg_log_error("\\%s not allowed in pipeline mode", "gset");
            clean_extended_state();
            return PSQL_CMD_ERROR;
        }
@@ -3287,7 +3287,7 @@ exec_command_watch(PsqlScanState scan_state, bool active_branch,
 
        if (PQpipelineStatus(pset.db) != PQ_PIPELINE_OFF)
        {
-           pg_log_error("\\watch not allowed in pipeline mode");
+           pg_log_error("\\%s not allowed in pipeline mode", "watch");
            clean_extended_state();
            success = false;
        }
index 24e0100c9f0a8bd89b2228875d075f866b101ea4..dd25d2fe7b8a7265a86ed447d1a1a826c17d77fd 100644 (file)
@@ -296,6 +296,7 @@ describeFunctions(const char *functypes, const char *func_pattern,
                  char **arg_patterns, int num_arg_patterns,
                  bool verbose, bool showSystem)
 {
+   const char *df_options = "anptwSx+";
    bool        showAggregate = strchr(functypes, 'a') != NULL;
    bool        showNormal = strchr(functypes, 'n') != NULL;
    bool        showProcedure = strchr(functypes, 'p') != NULL;
@@ -310,9 +311,9 @@ describeFunctions(const char *functypes, const char *func_pattern,
    /* No "Parallel" column before 9.6 */
    static const bool translate_columns_pre_96[] = {false, false, false, false, true, true, false, true, true, false, false, false, false};
 
-   if (strlen(functypes) != strspn(functypes, "anptwSx+"))
+   if (strlen(functypes) != strspn(functypes, df_options))
    {
-       pg_log_error("\\df only takes [anptwSx+] as options");
+       pg_log_error("\\df only takes [%s] as options", df_options);
        return true;
    }
 
index ce05b3a5132550c139083171af4dcb8057d65e89..db6adec8b692be75a1c6aa0f61bc70bd5f636515 100644 (file)
@@ -252,7 +252,8 @@ slashUsage(unsigned short int pager)
    HELP0("  \\dO[Sx+] [PATTERN]     list collations\n");
    HELP0("  \\dp[Sx]  [PATTERN]     list table, view, and sequence access privileges\n");
    HELP0("  \\dP[itnx+] [PATTERN]   list [only index/table] partitioned relations [n=nested]\n");
-   HELP0("  \\drds[x] [ROLEPTRN [DBPTRN]] list per-database role settings\n");
+   HELP0("  \\drds[x] [ROLEPTRN [DBPTRN]]\n"
+         "                         list per-database role settings\n");
    HELP0("  \\drg[Sx] [PATTERN]     list role grants\n");
    HELP0("  \\dRp[x+] [PATTERN]     list replication publications\n");
    HELP0("  \\dRs[x+] [PATTERN]     list replication subscriptions\n");
@@ -334,8 +335,7 @@ slashUsage(unsigned short int pager)
    HELP0("  \\endpipeline           exit pipeline mode\n");
    HELP0("  \\flush                 flush output data to the server\n");
    HELP0("  \\flushrequest          send request to the server to flush its output buffer\n");
-   HELP0("  \\getresults [NUM_RES]  read NUM_RES pending results. All pending results are\n"
-         "                         read if no argument is provided\n");
+   HELP0("  \\getresults [NUM_RES]  read NUM_RES pending results, or all if no argument\n");
    HELP0("  \\parse STMT_NAME       create a prepared statement\n");
    HELP0("  \\sendpipeline          send an extended query to an ongoing pipeline\n");
    HELP0("  \\startpipeline         enter pipeline mode\n");
index ae2d0e5ed3f4720be8ea3280d1f76b0ead4eca38..6b64302ebca86830c73dca03602642352e107a72 100644 (file)
@@ -204,7 +204,7 @@ ParseVariableDouble(const char *value, const char *name, double *result, double
    if ((value == NULL) || (*value == '\0'))
    {
        if (name)
-           pg_log_error("invalid input syntax for \"%s\"", name);
+           pg_log_error("invalid input syntax for variable \"%s\"", name);
        return false;
    }
 
@@ -215,14 +215,14 @@ ParseVariableDouble(const char *value, const char *name, double *result, double
        if (dblval < min)
        {
            if (name)
-               pg_log_error("invalid value \"%s\" for \"%s\": must be greater than %.2f",
+               pg_log_error("invalid value \"%s\" for variable \"%s\": must be greater than %.2f",
                             value, name, min);
            return false;
        }
        else if (dblval > max)
        {
            if (name)
-               pg_log_error("invalid value \"%s\" for \"%s\": must be less than %.2f",
+               pg_log_error("invalid value \"%s\" for variable \"%s\": must be less than %.2f",
                             value, name, max);
        }
        *result = dblval;
@@ -238,13 +238,13 @@ ParseVariableDouble(const char *value, const char *name, double *result, double
             (dblval == 0.0 || dblval >= HUGE_VAL || dblval <= -HUGE_VAL))
    {
        if (name)
-           pg_log_error("\"%s\" is out of range for \"%s\"", value, name);
+           pg_log_error("value \"%s\" is out of range for variable \"%s\"", value, name);
        return false;
    }
    else
    {
        if (name)
-           pg_log_error("invalid value \"%s\" for \"%s\"", value, name);
+           pg_log_error("invalid value \"%s\" for variable \"%s\"", value, name);
        return false;
    }
 }