Message style improvements

This commit is contained in:
Peter Eisentraut 2024-08-29 14:33:18 +02:00
parent fdbf7e46a4
commit f2353dd717
23 changed files with 90 additions and 85 deletions

View File

@ -153,14 +153,14 @@ GetNewTransactionId(bool isSubXact)
if (oldest_datname)
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("database is not accepting commands that assign new XIDs to avoid wraparound data loss in database \"%s\"",
errmsg("database is not accepting commands that assign new transaction IDs to avoid wraparound data loss in database \"%s\"",
oldest_datname),
errhint("Execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
else
ereport(ERROR,
(errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED),
errmsg("database is not accepting commands that assign new XIDs to avoid wraparound data loss in database with OID %u",
errmsg("database is not accepting commands that assign new transaction IDs to avoid wraparound data loss in database with OID %u",
oldest_datoid),
errhint("Execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
@ -175,7 +175,7 @@ GetNewTransactionId(bool isSubXact)
(errmsg("database \"%s\" must be vacuumed within %u transactions",
oldest_datname,
xidWrapLimit - xid),
errhint("To avoid XID assignment failures, execute a database-wide VACUUM in that database.\n"
errhint("To avoid transaction ID assignment failures, execute a database-wide VACUUM in that database.\n"
"You might also need to commit or roll back old prepared transactions, or drop stale replication slots.")));
else
ereport(WARNING,

View File

@ -646,7 +646,7 @@ AssignTransactionId(TransactionState s)
if (IsInParallelMode() || IsParallelWorker())
ereport(ERROR,
(errcode(ERRCODE_INVALID_TRANSACTION_STATE),
errmsg("cannot assign XIDs during a parallel operation")));
errmsg("cannot assign transaction IDs during a parallel operation")));
/*
* Ensure parent(s) have XIDs, so that a child always has an XID later

View File

@ -953,7 +953,7 @@ manifest_process_system_identifier(JsonManifestParseContext *context,
if (manifest_system_identifier != system_identifier)
context->error_cb(context,
"manifest system identifier is %llu, but database system identifier is %llu",
"system identifier in backup manifest is %llu, but database system identifier is %llu",
(unsigned long long) manifest_system_identifier,
(unsigned long long) system_identifier);
}

View File

@ -987,7 +987,7 @@ NextCopyFrom(CopyFromState cstate, ExprContext *econtext,
attval = CopyLimitPrintoutLength(cstate->cur_attval);
ereport(NOTICE,
errmsg("skipping row due to data type incompatibility at line %llu for column %s: \"%s\"",
errmsg("skipping row due to data type incompatibility at line %llu for column \"%s\": \"%s\"",
(unsigned long long) cstate->cur_lineno,
cstate->cur_attname,
attval));
@ -995,7 +995,7 @@ NextCopyFrom(CopyFromState cstate, ExprContext *econtext,
}
else
ereport(NOTICE,
errmsg("skipping row due to data type incompatibility at line %llu for column %s: null input",
errmsg("skipping row due to data type incompatibility at line %llu for column \"%s\": null input",
(unsigned long long) cstate->cur_lineno,
cstate->cur_attname));

View File

@ -1230,7 +1230,7 @@ AlterSubscription(ParseState *pstate, AlterSubscriptionStmt *stmt,
if (!sub->slotname)
ereport(ERROR,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("cannot set %s for a subscription that does not have a slot name",
errmsg("cannot set option \"%s\" for a subscription that does not have a slot name",
"failover")));
/*

View File

@ -10741,7 +10741,7 @@ CloneFkReferencing(List **wqueue, Relation parentRel, Relation partRel)
if (fk->confrelid == RelationGetRelid(partRel))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("can't attach table \"%s\" as a partition which is referenced by foreign key \"%s\"",
errmsg("cannot attach table \"%s\" as a partition because it is referenced by foreign key \"%s\"",
RelationGetRelationName(partRel),
get_constraint_name(fk->conoid))));

View File

@ -752,9 +752,11 @@ WaitForWalSummarization(XLogRecPtr lsn)
current_time) / 1000;
ereport(WARNING,
(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("still waiting for WAL summarization through %X/%X after %ld seconds",
LSN_FORMAT_ARGS(lsn),
elapsed_seconds),
errmsg_plural("still waiting for WAL summarization through %X/%X after %ld second",
"still waiting for WAL summarization through %X/%X after %ld seconds",
elapsed_seconds,
LSN_FORMAT_ARGS(lsn),
elapsed_seconds),
errdetail("Summarization has reached %X/%X on disk and %X/%X in memory.",
LSN_FORMAT_ARGS(summarized_lsn),
LSN_FORMAT_ARGS(pending_lsn))));

View File

@ -539,7 +539,7 @@ CreateDecodingContext(XLogRecPtr start_lsn,
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("cannot use replication slot \"%s\" for logical decoding",
NameStr(slot->data.name)),
errdetail("This slot is being synchronized from the primary server."),
errdetail("This replication slot is being synchronized from the primary server."),
errhint("Specify another replication slot."));
/*

View File

@ -212,9 +212,9 @@ update_local_synced_slot(RemoteSlot *remote_slot, Oid remote_dbid,
* impact the users, so we used DEBUG1 level to log the message.
*/
ereport(slot->data.persistency == RS_TEMPORARY ? LOG : DEBUG1,
errmsg("could not sync slot \"%s\" as remote slot precedes local slot",
errmsg("could not synchronize replication slot \"%s\" because remote slot precedes local slot",
remote_slot->name),
errdetail("Remote slot has LSN %X/%X and catalog xmin %u, but local slot has LSN %X/%X and catalog xmin %u.",
errdetail("The remote slot has LSN %X/%X and catalog xmin %u, but the local slot has LSN %X/%X and catalog xmin %u.",
LSN_FORMAT_ARGS(remote_slot->restart_lsn),
remote_slot->catalog_xmin,
LSN_FORMAT_ARGS(slot->data.restart_lsn),
@ -456,7 +456,7 @@ drop_local_obsolete_slots(List *remote_slot_list)
0, AccessShareLock);
ereport(LOG,
errmsg("dropped replication slot \"%s\" of dbid %u",
errmsg("dropped replication slot \"%s\" of database with OID %u",
NameStr(local_slot->data.name),
local_slot->data.database));
}
@ -576,8 +576,8 @@ update_and_persist_local_synced_slot(RemoteSlot *remote_slot, Oid remote_dbid)
if (!found_consistent_snapshot)
{
ereport(LOG,
errmsg("could not sync slot \"%s\"", remote_slot->name),
errdetail("Logical decoding cannot find consistent point from local slot's LSN %X/%X.",
errmsg("could not synchronize replication slot \"%s\"", remote_slot->name),
errdetail("Logical decoding could not find consistent point from local slot's LSN %X/%X.",
LSN_FORMAT_ARGS(slot->data.restart_lsn)));
return false;
@ -586,7 +586,7 @@ update_and_persist_local_synced_slot(RemoteSlot *remote_slot, Oid remote_dbid)
ReplicationSlotPersist();
ereport(LOG,
errmsg("newly created slot \"%s\" is sync-ready now",
errmsg("newly created replication slot \"%s\" is sync-ready now",
remote_slot->name));
return true;
@ -625,7 +625,7 @@ synchronize_one_slot(RemoteSlot *remote_slot, Oid remote_dbid)
*/
ereport(AmLogicalSlotSyncWorkerProcess() ? LOG : ERROR,
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("skipping slot synchronization as the received slot sync"
errmsg("skipping slot synchronization because the received slot sync"
" LSN %X/%X for slot \"%s\" is ahead of the standby position %X/%X",
LSN_FORMAT_ARGS(remote_slot->confirmed_lsn),
remote_slot->name,
@ -992,10 +992,9 @@ validate_remote_info(WalReceiverConn *wrconn)
if (!primary_slot_valid)
ereport(ERROR,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("slot synchronization requires valid primary_slot_name"),
/* translator: second %s is a GUC variable name */
errdetail("The replication slot \"%s\" specified by %s does not exist on the primary server.",
PrimarySlotName, "primary_slot_name"));
errmsg("replication slot \"%s\" specified by \"%s\" does not exist on primary server",
PrimarySlotName, "primary_slot_name"));
ExecClearTuple(tupslot);
walrcv_clear_result(res);
@ -1022,9 +1021,13 @@ CheckAndGetDbnameFromConninfo(void)
if (dbname == NULL)
ereport(ERROR,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
/* translator: dbname is a specific option; %s is a GUC variable name */
errmsg("slot synchronization requires dbname to be specified in %s",
"primary_conninfo"));
/*
* translator: first %s is a connection option; second %s is a GUC
* variable name
*/
errmsg("replication slot synchronization requires \"%s\" to be specified in \"%s\"",
"dbname", "primary_conninfo"));
return dbname;
}
@ -1044,7 +1047,7 @@ ValidateSlotSyncParams(int elevel)
if (wal_level < WAL_LEVEL_LOGICAL)
ereport(ERROR,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("slot synchronization requires \"wal_level\" >= \"logical\""));
errmsg("replication slot synchronization requires \"wal_level\" >= \"logical\""));
/*
* A physical replication slot(primary_slot_name) is required on the
@ -1057,7 +1060,7 @@ ValidateSlotSyncParams(int elevel)
ereport(elevel,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
/* translator: %s is a GUC variable name */
errmsg("slot synchronization requires %s to be defined", "primary_slot_name"));
errmsg("replication slot synchronization requires \"%s\" to be set", "primary_slot_name"));
return false;
}
@ -1071,7 +1074,7 @@ ValidateSlotSyncParams(int elevel)
ereport(elevel,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
/* translator: %s is a GUC variable name */
errmsg("slot synchronization requires %s to be enabled",
errmsg("replication slot synchronization requires \"%s\" to be enabled",
"hot_standby_feedback"));
return false;
}
@ -1085,7 +1088,7 @@ ValidateSlotSyncParams(int elevel)
ereport(elevel,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
/* translator: %s is a GUC variable name */
errmsg("slot synchronization requires %s to be defined",
errmsg("replication slot synchronization requires \"%s\" to be set",
"primary_conninfo"));
return false;
}
@ -1123,7 +1126,7 @@ slotsync_reread_config(void)
{
ereport(LOG,
/* translator: %s is a GUC variable name */
errmsg("slot sync worker will shutdown because %s is disabled", "sync_replication_slots"));
errmsg("replication slot synchronization worker will shut down because \"%s\" is disabled", "sync_replication_slots"));
proc_exit(0);
}
@ -1132,7 +1135,7 @@ slotsync_reread_config(void)
(old_hot_standby_feedback != hot_standby_feedback))
{
ereport(LOG,
errmsg("slot sync worker will restart because of a parameter change"));
errmsg("replication slot synchronization worker will restart because of a parameter change"));
/*
* Reset the last-start time for this worker so that the postmaster
@ -1156,7 +1159,7 @@ ProcessSlotSyncInterrupts(WalReceiverConn *wrconn)
if (ShutdownRequestPending)
{
ereport(LOG,
errmsg("slot sync worker is shutting down on receiving SIGINT"));
errmsg("replication slot synchronization worker is shutting down on receiving SIGINT"));
proc_exit(0);
}

View File

@ -404,11 +404,11 @@ parse_output_parameters(List *options, PGOutputData *data)
if (!protocol_version_given)
ereport(ERROR,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("proto_version option missing"));
errmsg("option \"%s\" missing", "proto_version"));
if (!publication_names_given)
ereport(ERROR,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("publication_names option missing"));
errmsg("option \"%s\" missing", "publication_names"));
}
/*

View File

@ -795,7 +795,7 @@ ReplicationSlotDrop(const char *name, bool nowait)
ereport(ERROR,
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("cannot drop replication slot \"%s\"", name),
errdetail("This slot is being synced from the primary server."));
errdetail("This replication slot is being synchronized from the primary server."));
ReplicationSlotDropAcquired();
}
@ -826,7 +826,7 @@ ReplicationSlotAlter(const char *name, bool failover)
ereport(ERROR,
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("cannot alter replication slot \"%s\"", name),
errdetail("This slot is being synced from the primary server."));
errdetail("This replication slot is being synchronized from the primary server."));
/*
* Do not allow users to enable failover on the standby as we do not
@ -2635,11 +2635,11 @@ StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel)
*/
ereport(elevel,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("replication slot \"%s\" specified in parameter %s does not exist",
errmsg("replication slot \"%s\" specified in parameter \"%s\" does not exist",
name, "synchronized_standby_slots"),
errdetail("Logical replication is waiting on the standby associated with \"%s\".",
errdetail("Logical replication is waiting on the standby associated with replication slot \"%s\".",
name),
errhint("Consider creating the slot \"%s\" or amend parameter %s.",
errhint("Create the replication slot \"%s\" or amend parameter \"%s\".",
name, "synchronized_standby_slots"));
break;
}
@ -2656,11 +2656,11 @@ StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel)
*/
ereport(elevel,
errcode(ERRCODE_INVALID_PARAMETER_VALUE),
errmsg("cannot have logical replication slot \"%s\" in parameter %s",
errmsg("cannot specify logical replication slot \"%s\" in parameter \"%s\"",
name, "synchronized_standby_slots"),
errdetail("Logical replication is waiting for correction on \"%s\".",
errdetail("Logical replication is waiting for correction on replication slot \"%s\".",
name),
errhint("Consider removing logical slot \"%s\" from parameter %s.",
errhint("Remove the logical replication slot \"%s\" from parameter \"%s\".",
name, "synchronized_standby_slots"));
break;
}
@ -2676,11 +2676,11 @@ StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel)
/* Specified physical slot has been invalidated */
ereport(elevel,
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("physical slot \"%s\" specified in parameter %s has been invalidated",
errmsg("physical replication slot \"%s\" specified in parameter \"%s\" has been invalidated",
name, "synchronized_standby_slots"),
errdetail("Logical replication is waiting on the standby associated with \"%s\".",
errdetail("Logical replication is waiting on the standby associated with replication slot \"%s\".",
name),
errhint("Consider dropping and recreating the slot \"%s\" or amend parameter %s.",
errhint("Drop and recreate the replication slot \"%s\", or amend parameter \"%s\".",
name, "synchronized_standby_slots"));
break;
}
@ -2691,11 +2691,11 @@ StandbySlotsHaveCaughtup(XLogRecPtr wait_for_lsn, int elevel)
if (inactive)
ereport(elevel,
errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
errmsg("replication slot \"%s\" specified in parameter %s does not have active_pid",
errmsg("replication slot \"%s\" specified in parameter \"%s\" does not have active_pid",
name, "synchronized_standby_slots"),
errdetail("Logical replication is waiting on the standby associated with \"%s\".",
errdetail("Logical replication is waiting on the standby associated with replication slot \"%s\".",
name),
errhint("Consider starting standby associated with \"%s\" or amend parameter %s.",
errhint("Start the standby associated with the replication slot \"%s\", or amend parameter \"%s\".",
name, "synchronized_standby_slots"));
/* Continue if the current slot hasn't caught up. */

View File

@ -3362,7 +3362,7 @@ rewriteTargetView(Query *parsetree, Relation view)
errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
errmsg("cannot merge into view \"%s\"",
RelationGetRelationName(view)),
errdetail("MERGE is not supported for views with INSTEAD OF triggers for some actions, but not others."),
errdetail("MERGE is not supported for views with INSTEAD OF triggers for some actions but not all."),
errhint("To enable merging into the view, either provide a full set of INSTEAD OF triggers or drop the existing INSTEAD OF triggers."));
}
}

View File

@ -1382,7 +1382,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
if (res == jperNotFound)
RETURN_ERROR(ereport(ERROR,
(errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
errmsg("jsonpath item method .%s() can only be applied to a bool, string, or numeric value",
errmsg("jsonpath item method .%s() can only be applied to a boolean, string, or numeric value",
jspOperationName(jsp->type)))));
jb = &jbv;
@ -1663,7 +1663,7 @@ executeItemOptUnwrapTarget(JsonPathExecContext *cxt, JsonPathItem *jsp,
case jbvBinary:
RETURN_ERROR(ereport(ERROR,
(errcode(ERRCODE_NON_NUMERIC_SQL_JSON_ITEM),
errmsg("jsonpath item method .%s() can only be applied to a bool, string, numeric, or datetime value",
errmsg("jsonpath item method .%s() can only be applied to a boolean, string, numeric, or datetime value",
jspOperationName(jsp->type)))));
break;
}
@ -3984,12 +3984,12 @@ JsonPathQuery(Datum jb, JsonPath *jp, JsonWrapper wrapper, bool *empty,
(errcode(ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM),
errmsg("JSON path expression for column \"%s\" should return single item without wrapper",
column_name),
errhint("Use WITH WRAPPER clause to wrap SQL/JSON items into array.")));
errhint("Use the WITH WRAPPER clause to wrap SQL/JSON items into an array.")));
else
ereport(ERROR,
(errcode(ERRCODE_MORE_THAN_ONE_SQL_JSON_ITEM),
errmsg("JSON path expression in JSON_QUERY should return single item without wrapper"),
errhint("Use WITH WRAPPER clause to wrap SQL/JSON items into array.")));
errhint("Use the WITH WRAPPER clause to wrap SQL/JSON items into an array.")));
}
if (singleton)

View File

@ -2019,7 +2019,7 @@ struct config_bool ConfigureNamesBool[] =
{
{"sync_replication_slots", PGC_SIGHUP, REPLICATION_STANDBY,
gettext_noop("Enables a physical standby to synchronize logical failover slots from the primary server."),
gettext_noop("Enables a physical standby to synchronize logical failover replication slots from the primary server."),
},
&sync_replication_slots,
false,
@ -2349,7 +2349,7 @@ struct config_int ConfigureNamesInt[] =
{
{"subtransaction_buffers", PGC_POSTMASTER, RESOURCES_MEM,
gettext_noop("Sets the size of the dedicated buffer pool used for the sub-transaction cache."),
gettext_noop("Sets the size of the dedicated buffer pool used for the subtransaction cache."),
gettext_noop("Specify 0 to have this value determined as a fraction of shared_buffers."),
GUC_UNIT_BLOCKS
},
@ -4699,11 +4699,11 @@ struct config_string ConfigureNamesString[] =
{
{"synchronized_standby_slots", PGC_SIGHUP, REPLICATION_PRIMARY,
gettext_noop("Lists streaming replication standby server slot "
gettext_noop("Lists streaming replication standby server replication slot "
"names that logical WAL sender processes will wait for."),
gettext_noop("Logical WAL sender processes will send decoded "
"changes to plugins only after the specified "
"replication slots confirm receiving WAL."),
"changes to output plugins only after the specified "
"replication slots have confirmed receiving WAL."),
GUC_LIST_INPUT
},
&synchronized_standby_slots,

View File

@ -981,7 +981,7 @@ $node2->command_fails_like(
"$tempdir" . '/diff_sysid', '--incremental',
"$backupdir" . '/backup_manifest'
],
qr/manifest system identifier is .*, but database system identifier is/,
qr/system identifier in backup manifest is .*, but database system identifier is/,
"pg_basebackup fails with different database system manifest");
done_testing();

View File

@ -634,7 +634,7 @@ json_manifest_finalize_system_identifier(JsonManifestParseState *parse)
system_identifier = strtou64(parse->manifest_system_identifier, &ep, 10);
if (*ep)
json_manifest_parse_failure(parse->context,
"manifest system identifier not an integer");
"system identifier in manifest not an integer");
/* Invoke the callback for system identifier */
context->system_identifier_cb(context, system_identifier);

View File

@ -280,7 +280,7 @@ $standby1->safe_psql('postgres', "SELECT pg_sync_replication_slots();");
# Confirm that the invalidated slot has been dropped.
$standby1->wait_for_log(
qr/dropped replication slot "lsub1_slot" of dbid [0-9]+/, $log_offset);
qr/dropped replication slot "lsub1_slot" of database with OID [0-9]+/, $log_offset);
# Confirm that the logical slot has been re-created on the standby and is
# flagged as 'synced'
@ -335,7 +335,7 @@ $standby1->reload;
($result, $stdout, $stderr) =
$standby1->psql('postgres', "SELECT pg_sync_replication_slots();");
ok( $stderr =~
/ERROR: slot synchronization requires dbname to be specified in primary_conninfo/,
/ERROR: replication slot synchronization requires "dbname" to be specified in "primary_conninfo"/,
"cannot sync slots if dbname is not specified in primary_conninfo");
# Add the dbname back to the primary_conninfo for further tests
@ -526,10 +526,10 @@ $standby1->reload;
# Confirm that slot sync worker acknowledge the GUC change and logs the msg
# about wrong configuration.
$standby1->wait_for_log(
qr/slot sync worker will restart because of a parameter change/,
qr/slot synchronization worker will restart because of a parameter change/,
$log_offset);
$standby1->wait_for_log(
qr/slot synchronization requires hot_standby_feedback to be enabled/,
qr/slot synchronization requires "hot_standby_feedback" to be enabled/,
$log_offset);
$log_offset = -s $standby1->logfile;
@ -678,7 +678,7 @@ is($result, 't', "subscriber2 gets data from primary");
# Wait until the primary server logs a warning indicating that it is waiting
# for the sb1_slot to catch up.
$primary->wait_for_log(
qr/replication slot \"sb1_slot\" specified in parameter synchronized_standby_slots does not have active_pid/,
qr/replication slot \"sb1_slot\" specified in parameter "synchronized_standby_slots" does not have active_pid/,
$offset);
# The regress_mysub1 was enabled for failover so it doesn't get the data from
@ -757,7 +757,7 @@ $back_q->query_until(
# Wait until the primary server logs a warning indicating that it is waiting
# for the sb1_slot to catch up.
$primary->wait_for_log(
qr/replication slot \"sb1_slot\" specified in parameter synchronized_standby_slots does not have active_pid/,
qr/replication slot \"sb1_slot\" specified in parameter "synchronized_standby_slots" does not have active_pid/,
$offset);
# Remove the standby from the synchronized_standby_slots list and reload the
@ -798,7 +798,7 @@ $primary->safe_psql('postgres',
# Wait until the primary server logs a warning indicating that it is waiting
# for the sb1_slot to catch up.
$primary->wait_for_log(
qr/replication slot \"sb1_slot\" specified in parameter synchronized_standby_slots does not have active_pid/,
qr/replication slot \"sb1_slot\" specified in parameter "synchronized_standby_slots" does not have active_pid/,
$offset);
# The regress_mysub1 doesn't get the data from primary because the specified

View File

@ -740,24 +740,24 @@ CONTEXT: COPY check_ign_err, line 2, column n: "a"
-- want context for notices
\set SHOW_CONTEXT always
COPY check_ign_err FROM STDIN WITH (on_error ignore, log_verbosity verbose);
NOTICE: skipping row due to data type incompatibility at line 2 for column n: "a"
NOTICE: skipping row due to data type incompatibility at line 2 for column "n": "a"
CONTEXT: COPY check_ign_err
NOTICE: skipping row due to data type incompatibility at line 3 for column k: "3333333333"
NOTICE: skipping row due to data type incompatibility at line 3 for column "k": "3333333333"
CONTEXT: COPY check_ign_err
NOTICE: skipping row due to data type incompatibility at line 4 for column m: "{a, 4}"
NOTICE: skipping row due to data type incompatibility at line 4 for column "m": "{a, 4}"
CONTEXT: COPY check_ign_err
NOTICE: skipping row due to data type incompatibility at line 5 for column n: ""
NOTICE: skipping row due to data type incompatibility at line 5 for column "n": ""
CONTEXT: COPY check_ign_err
NOTICE: skipping row due to data type incompatibility at line 7 for column m: "a"
NOTICE: skipping row due to data type incompatibility at line 7 for column "m": "a"
CONTEXT: COPY check_ign_err
NOTICE: skipping row due to data type incompatibility at line 8 for column k: "a"
NOTICE: skipping row due to data type incompatibility at line 8 for column "k": "a"
CONTEXT: COPY check_ign_err
NOTICE: 6 rows were skipped due to data type incompatibility
-- tests for on_error option with log_verbosity and null constraint via domain
CREATE DOMAIN dcheck_ign_err2 varchar(15) NOT NULL;
CREATE TABLE check_ign_err2 (n int, m int[], k int, l dcheck_ign_err2);
COPY check_ign_err2 FROM STDIN WITH (on_error ignore, log_verbosity verbose);
NOTICE: skipping row due to data type incompatibility at line 2 for column l: null input
NOTICE: skipping row due to data type incompatibility at line 2 for column "l": null input
CONTEXT: COPY check_ign_err2
NOTICE: 1 row was skipped due to data type incompatibility
-- reset context choice

View File

@ -1972,7 +1972,7 @@ ALTER TABLE fk_partitioned_fk ATTACH PARTITION fk_partitioned_fk_2
CREATE TABLE fk_partitioned_pk_6 (a int PRIMARY KEY);
CREATE TABLE fk_partitioned_fk_6 (a int REFERENCES fk_partitioned_pk_6) PARTITION BY LIST (a);
ALTER TABLE fk_partitioned_fk_6 ATTACH PARTITION fk_partitioned_pk_6 FOR VALUES IN (1);
ERROR: can't attach table "fk_partitioned_pk_6" as a partition which is referenced by foreign key "fk_partitioned_fk_6_a_fkey"
ERROR: cannot attach table "fk_partitioned_pk_6" as a partition because it is referenced by foreign key "fk_partitioned_fk_6_a_fkey"
DROP TABLE fk_partitioned_pk_6, fk_partitioned_fk_6;
-- This case is similar to above, but the referenced relation is one level
-- lower in the hierarchy. This one fails in a different way as the above,

View File

@ -1856,7 +1856,7 @@ select jsonb_path_query('123', '$.bigint() * 2');
-- Test .boolean()
select jsonb_path_query('null', '$.boolean()');
ERROR: jsonpath item method .boolean() can only be applied to a bool, string, or numeric value
ERROR: jsonpath item method .boolean() can only be applied to a boolean, string, or numeric value
select jsonb_path_query('null', '$.boolean()', silent => true);
jsonb_path_query
------------------
@ -1868,9 +1868,9 @@ select jsonb_path_query('[]', '$.boolean()');
(0 rows)
select jsonb_path_query('[]', 'strict $.boolean()');
ERROR: jsonpath item method .boolean() can only be applied to a bool, string, or numeric value
ERROR: jsonpath item method .boolean() can only be applied to a boolean, string, or numeric value
select jsonb_path_query('{}', '$.boolean()');
ERROR: jsonpath item method .boolean() can only be applied to a bool, string, or numeric value
ERROR: jsonpath item method .boolean() can only be applied to a boolean, string, or numeric value
select jsonb_path_query('[]', 'strict $.boolean()', silent => true);
jsonb_path_query
------------------
@ -2518,7 +2518,7 @@ select jsonb_path_query('12.3', '$.number() * 2');
-- Test .string()
select jsonb_path_query('null', '$.string()');
ERROR: jsonpath item method .string() can only be applied to a bool, string, numeric, or datetime value
ERROR: jsonpath item method .string() can only be applied to a boolean, string, numeric, or datetime value
select jsonb_path_query('null', '$.string()', silent => true);
jsonb_path_query
------------------
@ -2530,9 +2530,9 @@ select jsonb_path_query('[]', '$.string()');
(0 rows)
select jsonb_path_query('[]', 'strict $.string()');
ERROR: jsonpath item method .string() can only be applied to a bool, string, numeric, or datetime value
ERROR: jsonpath item method .string() can only be applied to a boolean, string, numeric, or datetime value
select jsonb_path_query('{}', '$.string()');
ERROR: jsonpath item method .string() can only be applied to a bool, string, numeric, or datetime value
ERROR: jsonpath item method .string() can only be applied to a boolean, string, numeric, or datetime value
select jsonb_path_query('[]', 'strict $.string()', silent => true);
jsonb_path_query
------------------

View File

@ -710,7 +710,7 @@ LINE 1: SELECT * FROM JSON_TABLE(jsonb '{"a": 123}', '$' || '.' || '...
-- JsonPathQuery() error message mentioning column name
SELECT * FROM JSON_TABLE('{"a": [{"b": "1"}, {"b": "2"}]}', '$' COLUMNS (b json path '$.a[*].b' ERROR ON ERROR));
ERROR: JSON path expression for column "b" should return single item without wrapper
HINT: Use WITH WRAPPER clause to wrap SQL/JSON items into array.
HINT: Use the WITH WRAPPER clause to wrap SQL/JSON items into an array.
-- JSON_TABLE: nested paths
-- Duplicate path names
SELECT * FROM JSON_TABLE(

View File

@ -807,7 +807,7 @@ SELECT JSON_QUERY(jsonb '[]', '$[*]' ERROR ON ERROR); -- NULL ON EMPTY
SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' ERROR ON ERROR);
ERROR: JSON path expression in JSON_QUERY should return single item without wrapper
HINT: Use WITH WRAPPER clause to wrap SQL/JSON items into array.
HINT: Use the WITH WRAPPER clause to wrap SQL/JSON items into an array.
SELECT JSON_QUERY(jsonb '[1,2]', '$[*]' DEFAULT '"empty"' ON ERROR);
json_query
------------

View File

@ -1279,7 +1279,7 @@ MERGE INTO rw_view2 t
WHEN MATCHED THEN UPDATE SET b = s.b
WHEN NOT MATCHED AND s.a > 0 THEN INSERT VALUES (s.a, s.b); -- should fail
ERROR: cannot merge into view "rw_view2"
DETAIL: MERGE is not supported for views with INSTEAD OF triggers for some actions, but not others.
DETAIL: MERGE is not supported for views with INSTEAD OF triggers for some actions but not all.
HINT: To enable merging into the view, either provide a full set of INSTEAD OF triggers or drop the existing INSTEAD OF triggers.
MERGE INTO rw_view2 t
USING (SELECT x, 'R'||x FROM generate_series(0,3) x) AS s(a,b) ON t.a = s.a