Message style improvements
This commit is contained in:
parent
fdbf7e46a4
commit
f2353dd717
@ -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,
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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")));
|
||||
|
||||
/*
|
||||
|
@ -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))));
|
||||
|
||||
|
@ -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))));
|
||||
|
@ -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."));
|
||||
|
||||
/*
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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"));
|
||||
}
|
||||
|
||||
/*
|
||||
|
@ -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. */
|
||||
|
@ -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."));
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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,
|
||||
|
@ -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();
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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,
|
||||
|
@ -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
|
||||
------------------
|
||||
|
@ -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(
|
||||
|
@ -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
|
||||
------------
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user