Message style improvements

This commit is contained in:
Peter Eisentraut 2022-09-24 18:38:35 -04:00
parent a6bc330192
commit 26f7802beb
29 changed files with 64 additions and 68 deletions

View File

@ -1089,7 +1089,7 @@ check_recovery_prefetch(int *new_value, void **extra, GucSource source)
#ifndef USE_PREFETCH #ifndef USE_PREFETCH
if (*new_value == RECOVERY_PREFETCH_ON) if (*new_value == RECOVERY_PREFETCH_ON)
{ {
GUC_check_errdetail("recovery_prefetch not supported on platforms that lack posix_fadvise()."); GUC_check_errdetail("recovery_prefetch is not supported on platforms that lack posix_fadvise().");
return false; return false;
} }
#endif #endif

View File

@ -1963,10 +1963,10 @@ XLogRecGetBlockTag(XLogReaderState *record, uint8 block_id,
blknum, NULL)) blknum, NULL))
{ {
#ifndef FRONTEND #ifndef FRONTEND
elog(ERROR, "failed to locate backup block with ID %d in WAL record", elog(ERROR, "could not locate backup block with ID %d in WAL record",
block_id); block_id);
#else #else
pg_fatal("failed to locate backup block with ID %d in WAL record", pg_fatal("could not locate backup block with ID %d in WAL record",
block_id); block_id);
#endif #endif
} }

View File

@ -863,7 +863,7 @@ parse_basebackup_options(List *options, basebackup_options *opt)
if (!parse_compress_algorithm(optval, &opt->compression)) if (!parse_compress_algorithm(optval, &opt->compression))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR), (errcode(ERRCODE_SYNTAX_ERROR),
errmsg("unrecognized compression algorithm \"%s\"", errmsg("unrecognized compression algorithm: \"%s\"",
optval))); optval)));
o_compression = true; o_compression = true;
} }
@ -919,7 +919,7 @@ parse_basebackup_options(List *options, basebackup_options *opt)
if (o_compression_detail && !o_compression) if (o_compression_detail && !o_compression)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_SYNTAX_ERROR), (errcode(ERRCODE_SYNTAX_ERROR),
errmsg("compression detail requires compression"))); errmsg("compression detail cannot be specified unless compression is enabled")));
if (o_compression) if (o_compression)
{ {

View File

@ -72,7 +72,7 @@ bbsink_server_new(bbsink *next, char *pathname)
if (!has_privs_of_role(GetUserId(), ROLE_PG_WRITE_SERVER_FILES)) if (!has_privs_of_role(GetUserId(), ROLE_PG_WRITE_SERVER_FILES))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INSUFFICIENT_PRIVILEGE), (errcode(ERRCODE_INSUFFICIENT_PRIVILEGE),
errmsg("must be superuser or a role with privileges of the pg_write_server_files role to create server backup"))); errmsg("must be superuser or a role with privileges of the pg_write_server_files role to create backup stored on server")));
CommitTransactionCommand(); CommitTransactionCommand();
/* /*
@ -86,7 +86,7 @@ bbsink_server_new(bbsink *next, char *pathname)
if (!is_absolute_path(pathname)) if (!is_absolute_path(pathname))
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_NAME), (errcode(ERRCODE_INVALID_NAME),
errmsg("relative path not allowed for server backup"))); errmsg("relative path not allowed for backup stored on server")));
switch (pg_check_dir(pathname)) switch (pg_check_dir(pathname))
{ {

View File

@ -513,13 +513,13 @@ publication_translate_columns(Relation targetrel, List *columns,
if (!AttrNumberIsForUserDefinedAttr(attnum)) if (!AttrNumberIsForUserDefinedAttr(attnum))
ereport(ERROR, ereport(ERROR,
errcode(ERRCODE_INVALID_COLUMN_REFERENCE), errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
errmsg("cannot reference system column \"%s\" in publication column list", errmsg("cannot use system column \"%s\" in publication column list",
colname)); colname));
if (TupleDescAttr(tupdesc, attnum - 1)->attgenerated) if (TupleDescAttr(tupdesc, attnum - 1)->attgenerated)
ereport(ERROR, ereport(ERROR,
errcode(ERRCODE_INVALID_COLUMN_REFERENCE), errcode(ERRCODE_INVALID_COLUMN_REFERENCE),
errmsg("cannot reference generated column \"%s\" in publication column list", errmsg("cannot use generated column \"%s\" in publication column list",
colname)); colname));
if (bms_is_member(attnum, set)) if (bms_is_member(attnum, set))

View File

@ -992,7 +992,7 @@ createdb(ParseState *pstate, const CreatedbStmt *stmt)
else else
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_INVALID_PARAMETER_VALUE), (errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("invalid create database strategy %s", strategy), errmsg("invalid create database strategy \"%s\"", strategy),
errhint("Valid strategies are \"wal_log\", and \"file_copy\"."))); errhint("Valid strategies are \"wal_log\", and \"file_copy\".")));
} }

View File

@ -575,7 +575,7 @@ check_simple_rowfilter_expr_walker(Node *node, ParseState *pstate)
/* OK, supported */ /* OK, supported */
break; break;
default: default:
errdetail_msg = _("Expressions only allow columns, constants, built-in operators, built-in data types, built-in collations, and immutable built-in functions."); errdetail_msg = _("Only columns, constants, built-in operators, built-in data types, built-in collations, and immutable built-in functions are allowed.");
break; break;
} }
@ -1359,7 +1359,7 @@ CheckAlterPublication(AlterPublicationStmt *stmt, HeapTuple tup,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("publication \"%s\" is defined as FOR ALL TABLES", errmsg("publication \"%s\" is defined as FOR ALL TABLES",
NameStr(pubform->pubname)), NameStr(pubform->pubname)),
errdetail("Tables from schema cannot be added to, dropped from, or set on FOR ALL TABLES publications."))); errdetail("Schemas cannot be added to or dropped from FOR ALL TABLES publications.")));
/* Check that user is allowed to manipulate the publication tables. */ /* Check that user is allowed to manipulate the publication tables. */
if (tables && pubform->puballtables) if (tables && pubform->puballtables)

View File

@ -461,10 +461,8 @@ check_publications(WalReceiverConn *wrconn, List *publications)
if (res->status != WALRCV_OK_TUPLES) if (res->status != WALRCV_OK_TUPLES)
ereport(ERROR, ereport(ERROR,
errmsg_plural("could not receive publication from the publisher: %s", errmsg("could not receive list of publications from the publisher: %s",
"could not receive list of publications from the publisher: %s", res->err));
list_length(publications),
res->err));
publicationsCopy = list_copy(publications); publicationsCopy = list_copy(publications);

View File

@ -1532,7 +1532,7 @@ renametrig(RenameStmt *stmt)
ereport(ERROR, ereport(ERROR,
errmsg("cannot rename trigger \"%s\" on table \"%s\"", errmsg("cannot rename trigger \"%s\" on table \"%s\"",
stmt->subname, RelationGetRelationName(targetrel)), stmt->subname, RelationGetRelationName(targetrel)),
errhint("Rename trigger on partitioned table \"%s\" instead.", errhint("Rename the trigger on the partitioned table \"%s\" instead.",
get_rel_name(get_partition_parent(relid, false)))); get_rel_name(get_partition_parent(relid, false))));

View File

@ -2082,10 +2082,10 @@ ExecCrossPartitionUpdateForeignKey(ModifyTableContext *context,
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot move tuple across partitions when a non-root ancestor of the source partition is directly referenced in a foreign key"), errmsg("cannot move tuple across partitions when a non-root ancestor of the source partition is directly referenced in a foreign key"),
errdetail("A foreign key points to ancestor \"%s\", but not the root ancestor \"%s\".", errdetail("A foreign key points to ancestor \"%s\" but not the root ancestor \"%s\".",
RelationGetRelationName(rInfo->ri_RelationDesc), RelationGetRelationName(rInfo->ri_RelationDesc),
RelationGetRelationName(rootRelInfo->ri_RelationDesc)), RelationGetRelationName(rootRelInfo->ri_RelationDesc)),
errhint("Consider defining the foreign key on \"%s\".", errhint("Consider defining the foreign key on table \"%s\".",
RelationGetRelationName(rootRelInfo->ri_RelationDesc)))); RelationGetRelationName(rootRelInfo->ri_RelationDesc))));
} }

View File

@ -851,7 +851,7 @@ LoadArchiveLibrary(void)
if (archive_init == NULL) if (archive_init == NULL)
ereport(ERROR, ereport(ERROR,
(errmsg("archive modules have to declare the _PG_archive_module_init symbol"))); (errmsg("archive modules have to define the symbol %s", "_PG_archive_module_init")));
(*archive_init) (&ArchiveContext); (*archive_init) (&ArchiveContext);

View File

@ -1361,7 +1361,7 @@ LogicalRepSyncTableStart(XLogRecPtr *origin_startpos)
if (check_enable_rls(RelationGetRelid(rel), InvalidOid, false) == RLS_ENABLED) if (check_enable_rls(RelationGetRelid(rel), InvalidOid, false) == RLS_ENABLED)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("\"%s\" cannot replicate into relation with row-level security enabled: \"%s\"", errmsg("user \"%s\" cannot replicate into relation with row-level security enabled: \"%s\"",
GetUserNameFromId(GetUserId(), true), GetUserNameFromId(GetUserId(), true),
RelationGetRelationName(rel)))); RelationGetRelationName(rel))));

View File

@ -1632,7 +1632,7 @@ TargetPrivilegesCheck(Relation rel, AclMode mode)
if (check_enable_rls(relid, InvalidOid, false) == RLS_ENABLED) if (check_enable_rls(relid, InvalidOid, false) == RLS_ENABLED)
ereport(ERROR, ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED), (errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("\"%s\" cannot replicate into relation with row-level security enabled: \"%s\"", errmsg("user \"%s\" cannot replicate into relation with row-level security enabled: \"%s\"",
GetUserNameFromId(GetUserId(), true), GetUserNameFromId(GetUserId(), true),
RelationGetRelationName(rel)))); RelationGetRelationName(rel))));
} }
@ -3791,7 +3791,7 @@ ApplyWorkerMain(Datum main_arg)
} }
ereport(DEBUG1, ereport(DEBUG1,
(errmsg("logical replication apply worker for subscription \"%s\" two_phase is %s", (errmsg_internal("logical replication apply worker for subscription \"%s\" two_phase is %s",
MySubscription->name, MySubscription->name,
MySubscription->twophasestate == LOGICALREP_TWOPHASE_STATE_DISABLED ? "DISABLED" : MySubscription->twophasestate == LOGICALREP_TWOPHASE_STATE_DISABLED ? "DISABLED" :
MySubscription->twophasestate == LOGICALREP_TWOPHASE_STATE_PENDING ? "PENDING" : MySubscription->twophasestate == LOGICALREP_TWOPHASE_STATE_PENDING ? "PENDING" :
@ -3840,7 +3840,7 @@ DisableSubscriptionAndExit(void)
/* Notify the subscription has been disabled and exit */ /* Notify the subscription has been disabled and exit */
ereport(LOG, ereport(LOG,
errmsg("logical replication subscription \"%s\" has been disabled due to an error", errmsg("subscription \"%s\" has been disabled because of an error",
MySubscription->name)); MySubscription->name));
proc_exit(0); proc_exit(0);
@ -3975,7 +3975,7 @@ clear_subscription_skip_lsn(XLogRecPtr finish_lsn)
if (myskiplsn != finish_lsn) if (myskiplsn != finish_lsn)
ereport(WARNING, ereport(WARNING,
errmsg("skip-LSN of logical replication subscription \"%s\" cleared", MySubscription->name), errmsg("skip-LSN of subscription \"%s\" cleared", MySubscription->name),
errdetail("Remote transaction's finish WAL location (LSN) %X/%X did not match skip-LSN %X/%X.", errdetail("Remote transaction's finish WAL location (LSN) %X/%X did not match skip-LSN %X/%X.",
LSN_FORMAT_ARGS(finish_lsn), LSN_FORMAT_ARGS(finish_lsn),
LSN_FORMAT_ARGS(myskiplsn))); LSN_FORMAT_ARGS(myskiplsn)));
@ -4002,23 +4002,23 @@ apply_error_callback(void *arg)
if (errarg->rel == NULL) if (errarg->rel == NULL)
{ {
if (!TransactionIdIsValid(errarg->remote_xid)) if (!TransactionIdIsValid(errarg->remote_xid))
errcontext("processing remote data for replication origin \"%s\" during \"%s\"", errcontext("processing remote data for replication origin \"%s\" during message type \"%s\"",
errarg->origin_name, errarg->origin_name,
logicalrep_message_type(errarg->command)); logicalrep_message_type(errarg->command));
else if (XLogRecPtrIsInvalid(errarg->finish_lsn)) else if (XLogRecPtrIsInvalid(errarg->finish_lsn))
errcontext("processing remote data for replication origin \"%s\" during \"%s\" in transaction %u", errcontext("processing remote data for replication origin \"%s\" during message type \"%s\" in transaction %u",
errarg->origin_name, errarg->origin_name,
logicalrep_message_type(errarg->command), logicalrep_message_type(errarg->command),
errarg->remote_xid); errarg->remote_xid);
else else
errcontext("processing remote data for replication origin \"%s\" during \"%s\" in transaction %u finished at %X/%X", errcontext("processing remote data for replication origin \"%s\" during message type \"%s\" in transaction %u, finished at %X/%X",
errarg->origin_name, errarg->origin_name,
logicalrep_message_type(errarg->command), logicalrep_message_type(errarg->command),
errarg->remote_xid, errarg->remote_xid,
LSN_FORMAT_ARGS(errarg->finish_lsn)); LSN_FORMAT_ARGS(errarg->finish_lsn));
} }
else if (errarg->remote_attnum < 0) else if (errarg->remote_attnum < 0)
errcontext("processing remote data for replication origin \"%s\" during \"%s\" for replication target relation \"%s.%s\" in transaction %u finished at %X/%X", errcontext("processing remote data for replication origin \"%s\" during message type \"%s\" for replication target relation \"%s.%s\" in transaction %u, finished at %X/%X",
errarg->origin_name, errarg->origin_name,
logicalrep_message_type(errarg->command), logicalrep_message_type(errarg->command),
errarg->rel->remoterel.nspname, errarg->rel->remoterel.nspname,
@ -4026,7 +4026,7 @@ apply_error_callback(void *arg)
errarg->remote_xid, errarg->remote_xid,
LSN_FORMAT_ARGS(errarg->finish_lsn)); LSN_FORMAT_ARGS(errarg->finish_lsn));
else else
errcontext("processing remote data for replication origin \"%s\" during \"%s\" for replication target relation \"%s.%s\" column \"%s\" in transaction %u finished at %X/%X", errcontext("processing remote data for replication origin \"%s\" during message type \"%s\" for replication target relation \"%s.%s\" column \"%s\" in transaction %u, finished at %X/%X",
errarg->origin_name, errarg->origin_name,
logicalrep_message_type(errarg->command), logicalrep_message_type(errarg->command),
errarg->rel->remoterel.nspname, errarg->rel->remoterel.nspname,

View File

@ -516,9 +516,8 @@ ReadReplicationSlot(ReadReplicationSlotCmd *cmd)
if (OidIsValid(slot_contents.data.database)) if (OidIsValid(slot_contents.data.database))
ereport(ERROR, ereport(ERROR,
errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot use \"%s\" with logical replication slot \"%s\"", errmsg("cannot use %s with a logical replication slot",
"READ_REPLICATION_SLOT", "READ_REPLICATION_SLOT"));
NameStr(slot_contents.data.name)));
/* slot type */ /* slot type */
values[i] = CStringGetTextDatum("physical"); values[i] = CStringGetTextDatum("physical");

View File

@ -425,7 +425,7 @@ pgstat_discard_stats(void)
{ {
ereport(DEBUG2, ereport(DEBUG2,
(errcode_for_file_access(), (errcode_for_file_access(),
errmsg("unlinked permanent statistics file \"%s\"", errmsg_internal("unlinked permanent statistics file \"%s\"",
PGSTAT_STAT_PERMANENT_FILENAME))); PGSTAT_STAT_PERMANENT_FILENAME)));
} }

View File

@ -368,7 +368,7 @@ pgstat_create_transactional(PgStat_Kind kind, Oid dboid, Oid objoid)
if (pgstat_get_entry_ref(kind, dboid, objoid, false, NULL)) if (pgstat_get_entry_ref(kind, dboid, objoid, false, NULL))
{ {
ereport(WARNING, ereport(WARNING,
errmsg("resetting existing stats for type %s, db=%u, oid=%u", errmsg("resetting existing statistics for kind %s, db=%u, oid=%u",
(pgstat_get_kind_info(kind))->name, dboid, objoid)); (pgstat_get_kind_info(kind))->name, dboid, objoid));
pgstat_reset(kind, dboid, objoid); pgstat_reset(kind, dboid, objoid);

View File

@ -1108,8 +1108,9 @@ CreateBackupStreamer(char *archive_name, char *spclocation,
*/ */
if (inject_manifest && is_compressed_tar) if (inject_manifest && is_compressed_tar)
{ {
pg_log_error("cannot inject manifest into a compressed tarfile"); pg_log_error("cannot inject manifest into a compressed tar file");
pg_log_info("use client-side compression, send the output to a directory rather than standard output, or use --no-manifest"); pg_log_error_hint("Use client-side compression, send the output to a directory rather than standard output, or use %s.",
"--no-manifest");
exit(1); exit(1);
} }
@ -1124,7 +1125,7 @@ CreateBackupStreamer(char *archive_name, char *spclocation,
/* At present, we only know how to parse tar archives. */ /* At present, we only know how to parse tar archives. */
if (must_parse_archive && !is_tar && !is_compressed_tar) if (must_parse_archive && !is_tar && !is_compressed_tar)
{ {
pg_log_error("unable to parse archive: %s", archive_name); pg_log_error("cannot parse archive \"%s\"", archive_name);
pg_log_error_detail("Only tar archives can be parsed."); pg_log_error_detail("Only tar archives can be parsed.");
if (format == 'p') if (format == 'p')
pg_log_error_detail("Plain format requires pg_basebackup to parse the archive."); pg_log_error_detail("Plain format requires pg_basebackup to parse the archive.");
@ -1342,7 +1343,7 @@ ReceiveArchiveStreamChunk(size_t r, char *copybuf, void *callback_data)
/* Sanity check. */ /* Sanity check. */
if (state->manifest_buffer != NULL || if (state->manifest_buffer != NULL ||
state->manifest_file !=NULL) state->manifest_file !=NULL)
pg_fatal("archives should precede manifest"); pg_fatal("archives must precede manifest");
/* Parse the rest of the CopyData message. */ /* Parse the rest of the CopyData message. */
archive_name = GetCopyDataString(r, copybuf, &cursor); archive_name = GetCopyDataString(r, copybuf, &cursor);
@ -1788,7 +1789,7 @@ BaseBackup(char *compression_algorithm, char *compression_detail,
* Error message already written in CheckServerVersionForStreaming(), * Error message already written in CheckServerVersionForStreaming(),
* but add a hint about using -X none. * but add a hint about using -X none.
*/ */
pg_log_info("HINT: use -X none or -X fetch to disable log streaming"); pg_log_error_hint("Use -X none or -X fetch to disable log streaming.");
exit(1); exit(1);
} }
@ -1900,7 +1901,7 @@ BaseBackup(char *compression_algorithm, char *compression_detail,
if (showprogress && !verbose) if (showprogress && !verbose)
{ {
fprintf(stderr, "waiting for checkpoint"); fprintf(stderr, _("waiting for checkpoint"));
if (isatty(fileno(stderr))) if (isatty(fileno(stderr)))
fprintf(stderr, "\r"); fprintf(stderr, "\r");
else else
@ -2541,7 +2542,7 @@ main(int argc, char **argv)
char *error_detail; char *error_detail;
if (!parse_compress_algorithm(compression_algorithm, &alg)) if (!parse_compress_algorithm(compression_algorithm, &alg))
pg_fatal("unrecognized compression algorithm \"%s\"", pg_fatal("unrecognized compression algorithm: \"%s\"",
compression_algorithm); compression_algorithm);
parse_compress_specification(alg, compression_detail, &client_compress); parse_compress_specification(alg, compression_detail, &client_compress);

View File

@ -511,10 +511,8 @@ FindStreamingStart(uint32 *tli)
continue; continue;
} }
#else #else
pg_log_error("could not check file \"%s\"", pg_log_error("cannot check file \"%s\": compression with %s not supported by this build",
dirent->d_name); dirent->d_name, "LZ4");
pg_log_error_detail("This build does not support compression with %s.",
"LZ4");
exit(1); exit(1);
#endif #endif
} }
@ -863,7 +861,7 @@ main(int argc, char **argv)
*/ */
if (!parse_compress_algorithm(compression_algorithm_str, if (!parse_compress_algorithm(compression_algorithm_str,
&compression_algorithm)) &compression_algorithm))
pg_fatal("unrecognized compression algorithm \"%s\"", pg_fatal("unrecognized compression algorithm: \"%s\"",
compression_algorithm_str); compression_algorithm_str);
parse_compress_specification(compression_algorithm, compression_detail, parse_compress_specification(compression_algorithm, compression_detail,

View File

@ -519,7 +519,7 @@ GetSlotInformation(PGconn *conn, const char *slot_name,
*/ */
if (PQgetisnull(res, 0, 0)) if (PQgetisnull(res, 0, 0))
{ {
pg_log_error("could not find replication slot \"%s\"", slot_name); pg_log_error("replication slot \"%s\" does not exist", slot_name);
PQclear(res); PQclear(res);
return false; return false;
} }

View File

@ -44,7 +44,7 @@ $node->command_fails_like(
'failure if method "none" specified with compression level'); 'failure if method "none" specified with compression level');
$node->command_fails_like( $node->command_fails_like(
[ 'pg_basebackup', '-D', "$tempdir/backup", '--compress', 'none+' ], [ 'pg_basebackup', '-D', "$tempdir/backup", '--compress', 'none+' ],
qr/\Qunrecognized compression algorithm "none+"/, qr/\Qunrecognized compression algorithm: "none+"/,
'failure on incorrect separator to define compression level'); 'failure on incorrect separator to define compression level');
# Some Windows ANSI code pages may reject this filename, in which case we # Some Windows ANSI code pages may reject this filename, in which case we
@ -97,7 +97,7 @@ SKIP:
my @compression_failure_tests = ( my @compression_failure_tests = (
[ [
'extrasquishy', 'extrasquishy',
'unrecognized compression algorithm "extrasquishy"', 'unrecognized compression algorithm: "extrasquishy"',
'failure on invalid compression algorithm' 'failure on invalid compression algorithm'
], ],
[ [
@ -107,7 +107,7 @@ SKIP:
], ],
[ [
'gzip:thunk', 'gzip:thunk',
'invalid compression specification: unknown compression option "thunk"', 'invalid compression specification: unrecognized compression option: "thunk"',
'failure on unknown compression option' 'failure on unknown compression option'
], ],
[ [

View File

@ -251,7 +251,7 @@ $primary->command_fails_like(
'nonexistentslot', '-n', '--no-sync', '--verbose', 'nonexistentslot', '-n', '--no-sync', '--verbose',
'--endpos', $nextlsn '--endpos', $nextlsn
], ],
qr/pg_receivewal: error: could not find replication slot "nonexistentslot"/, qr/pg_receivewal: error: replication slot "nonexistentslot" does not exist/,
'pg_receivewal fails with non-existing slot'); 'pg_receivewal fails with non-existing slot');
$primary->command_ok( $primary->command_ok(
[ [

View File

@ -143,7 +143,7 @@ $node->command_checks_all(
1, 1,
[qr/^$/], [qr/^$/],
[ [
qr/^createdb: error: database creation failed: ERROR: invalid create database strategy foo/s qr/^createdb: error: database creation failed: ERROR: invalid create database strategy "foo"/s
], ],
'createdb with incorrect --strategy'); 'createdb with incorrect --strategy');

View File

@ -234,7 +234,7 @@ parse_compress_specification(pg_compress_algorithm algorithm, char *specificatio
} }
else else
result->parse_error = result->parse_error =
psprintf(_("unknown compression option \"%s\""), keyword); psprintf(_("unrecognized compression option: \"%s\""), keyword);
/* Release memory, just to be tidy. */ /* Release memory, just to be tidy. */
pfree(keyword); pfree(keyword);

View File

@ -45,7 +45,7 @@ ok( $stderr =~
replication => 'database'); replication => 'database');
like( like(
$stderr, $stderr,
qr/cannot use "READ_REPLICATION_SLOT" with logical replication slot "test_slot"/, qr/cannot use READ_REPLICATION_SLOT with a logical replication slot/,
'READ_REPLICATION_SLOT not supported for logical slots'); 'READ_REPLICATION_SLOT not supported for logical slots');
# Check case of walsender not using a database connection. Logical # Check case of walsender not using a database connection. Logical

View File

@ -2761,8 +2761,8 @@ DELETE FROM fkpart11.fk WHERE a = 4;
ALTER TABLE fkpart11.fk ADD CONSTRAINT fkey FOREIGN KEY (a) REFERENCES fkpart11.pk1 (a) ON UPDATE CASCADE ON DELETE CASCADE; ALTER TABLE fkpart11.fk ADD CONSTRAINT fkey FOREIGN KEY (a) REFERENCES fkpart11.pk1 (a) ON UPDATE CASCADE ON DELETE CASCADE;
UPDATE fkpart11.pk SET a = a - 1; UPDATE fkpart11.pk SET a = a - 1;
ERROR: cannot move tuple across partitions when a non-root ancestor of the source partition is directly referenced in a foreign key ERROR: cannot move tuple across partitions when a non-root ancestor of the source partition is directly referenced in a foreign key
DETAIL: A foreign key points to ancestor "pk1", but not the root ancestor "pk". DETAIL: A foreign key points to ancestor "pk1" but not the root ancestor "pk".
HINT: Consider defining the foreign key on "pk". HINT: Consider defining the foreign key on table "pk".
-- it's okay though if the non-leaf partition is updated directly -- it's okay though if the non-leaf partition is updated directly
UPDATE fkpart11.pk1 SET a = a - 1; UPDATE fkpart11.pk1 SET a = a - 1;
SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.pk; SELECT tableoid::pg_catalog.regclass, * FROM fkpart11.pk;

View File

@ -72,15 +72,15 @@ DETAIL: Tables cannot be added to or dropped from FOR ALL TABLES publications.
-- fail - can't add schema to 'FOR ALL TABLES' publication -- fail - can't add schema to 'FOR ALL TABLES' publication
ALTER PUBLICATION testpub_foralltables ADD TABLES IN SCHEMA pub_test; ALTER PUBLICATION testpub_foralltables ADD TABLES IN SCHEMA pub_test;
ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES
DETAIL: Tables from schema cannot be added to, dropped from, or set on FOR ALL TABLES publications. DETAIL: Schemas cannot be added to or dropped from FOR ALL TABLES publications.
-- fail - can't drop schema from 'FOR ALL TABLES' publication -- fail - can't drop schema from 'FOR ALL TABLES' publication
ALTER PUBLICATION testpub_foralltables DROP TABLES IN SCHEMA pub_test; ALTER PUBLICATION testpub_foralltables DROP TABLES IN SCHEMA pub_test;
ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES
DETAIL: Tables from schema cannot be added to, dropped from, or set on FOR ALL TABLES publications. DETAIL: Schemas cannot be added to or dropped from FOR ALL TABLES publications.
-- fail - can't set schema to 'FOR ALL TABLES' publication -- fail - can't set schema to 'FOR ALL TABLES' publication
ALTER PUBLICATION testpub_foralltables SET TABLES IN SCHEMA pub_test; ALTER PUBLICATION testpub_foralltables SET TABLES IN SCHEMA pub_test;
ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES ERROR: publication "testpub_foralltables" is defined as FOR ALL TABLES
DETAIL: Tables from schema cannot be added to, dropped from, or set on FOR ALL TABLES publications. DETAIL: Schemas cannot be added to or dropped from FOR ALL TABLES publications.
SET client_min_messages = 'ERROR'; SET client_min_messages = 'ERROR';
CREATE PUBLICATION testpub_fortable FOR TABLE testpub_tbl1; CREATE PUBLICATION testpub_fortable FOR TABLE testpub_tbl1;
RESET client_min_messages; RESET client_min_messages;
@ -470,7 +470,7 @@ CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE (a IN (SELECT genera
ERROR: invalid publication WHERE expression ERROR: invalid publication WHERE expression
LINE 1: ...ICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE (a IN (SELE... LINE 1: ...ICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE (a IN (SELE...
^ ^
DETAIL: Expressions only allow columns, constants, built-in operators, built-in data types, built-in collations, and immutable built-in functions. DETAIL: Only columns, constants, built-in operators, built-in data types, built-in collations, and immutable built-in functions are allowed.
-- fail - system columns are not allowed -- fail - system columns are not allowed
CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE ('(0,1)'::tid = ctid); CREATE PUBLICATION testpub6 FOR TABLE testpub_rf_tbl1 WHERE ('(0,1)'::tid = ctid);
ERROR: invalid publication WHERE expression ERROR: invalid publication WHERE expression
@ -680,10 +680,10 @@ DETAIL: Column list used by the publication does not cover the replica identity
ALTER PUBLICATION testpub_fortable DROP TABLE testpub_tbl5; ALTER PUBLICATION testpub_fortable DROP TABLE testpub_tbl5;
-- error: generated column "d" can't be in list -- error: generated column "d" can't be in list
ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, d); ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, d);
ERROR: cannot reference generated column "d" in publication column list ERROR: cannot use generated column "d" in publication column list
-- error: system attributes "ctid" not allowed in column list -- error: system attributes "ctid" not allowed in column list
ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, ctid); ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, ctid);
ERROR: cannot reference system column "ctid" in publication column list ERROR: cannot use system column "ctid" in publication column list
-- ok -- ok
ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, c); ALTER PUBLICATION testpub_fortable ADD TABLE testpub_tbl5 (a, c);
ALTER TABLE testpub_tbl5 DROP COLUMN c; -- no dice ALTER TABLE testpub_tbl5 DROP COLUMN c; -- no dice

View File

@ -3546,7 +3546,7 @@ LINE 1: alter trigger a on only grandparent rename to b;
^ ^
alter trigger b on middle rename to c; -- can't rename trigger on partition alter trigger b on middle rename to c; -- can't rename trigger on partition
ERROR: cannot rename trigger "b" on table "middle" ERROR: cannot rename trigger "b" on table "middle"
HINT: Rename trigger on partitioned table "grandparent" instead. HINT: Rename the trigger on the partitioned table "grandparent" instead.
create trigger c after insert on middle create trigger c after insert on middle
for each row execute procedure f(); for each row execute procedure f();
alter trigger b on grandparent rename to c; alter trigger b on grandparent rename to c;

View File

@ -260,7 +260,7 @@ expect_failure(
2, 2,
11, 11,
13, 13,
qr/ERROR: ( [A-Z0-9]+:)? "regress_admin" cannot replicate into relation with row-level security enabled: "unpartitioned\w*"/msi, qr/ERROR: ( [A-Z0-9]+:)? user "regress_admin" cannot replicate into relation with row-level security enabled: "unpartitioned\w*"/msi,
"non-superuser admin fails to replicate insert into rls enabled table"); "non-superuser admin fails to replicate insert into rls enabled table");
grant_superuser("regress_admin"); grant_superuser("regress_admin");
expect_replication("alice.unpartitioned", 3, 11, 15, expect_replication("alice.unpartitioned", 3, 11, 15,
@ -274,7 +274,7 @@ expect_failure(
3, 3,
11, 11,
15, 15,
qr/ERROR: ( [A-Z0-9]+:)? "regress_admin" cannot replicate into relation with row-level security enabled: "unpartitioned\w*"/msi, qr/ERROR: ( [A-Z0-9]+:)? user "regress_admin" cannot replicate into relation with row-level security enabled: "unpartitioned\w*"/msi,
"non-superuser admin fails to replicate update into rls enabled unpartitioned" "non-superuser admin fails to replicate update into rls enabled unpartitioned"
); );
@ -289,7 +289,7 @@ expect_failure(
3, 3,
13, 13,
17, 17,
qr/ERROR: ( [A-Z0-9]+:)? "regress_admin" cannot replicate into relation with row-level security enabled: "unpartitioned\w*"/msi, qr/ERROR: ( [A-Z0-9]+:)? user "regress_admin" cannot replicate into relation with row-level security enabled: "unpartitioned\w*"/msi,
"non-superuser admin without bypassrls fails to replicate delete into rls enabled unpartitioned" "non-superuser admin without bypassrls fails to replicate delete into rls enabled unpartitioned"
); );
grant_bypassrls("regress_admin"); grant_bypassrls("regress_admin");

View File

@ -29,7 +29,7 @@ sub test_skip_lsn
# Get the finish LSN of the error transaction. # Get the finish LSN of the error transaction.
my $contents = slurp_file($node_subscriber->logfile, $offset); my $contents = slurp_file($node_subscriber->logfile, $offset);
$contents =~ $contents =~
qr/processing remote data for replication origin \"pg_\d+\" during "INSERT" for replication target relation "public.tbl" in transaction \d+ finished at ([[:xdigit:]]+\/[[:xdigit:]]+)/ qr/processing remote data for replication origin \"pg_\d+\" during message type "INSERT" for replication target relation "public.tbl" in transaction \d+, finished at ([[:xdigit:]]+\/[[:xdigit:]]+)/
or die "could not get error-LSN"; or die "could not get error-LSN";
my $lsn = $1; my $lsn = $1;