mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Message style improvements
This commit is contained in:
		@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -648,7 +648,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));
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -1098,7 +1098,7 @@ CheckAlterSubOption(Subscription *sub, const char *option,
 | 
			
		||||
	if (sub->enabled)
 | 
			
		||||
		ereport(ERROR,
 | 
			
		||||
				(errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
 | 
			
		||||
				 errmsg("cannot set %s for enabled subscription",
 | 
			
		||||
				 errmsg("cannot set option \"%s\" for enabled subscription",
 | 
			
		||||
						option)));
 | 
			
		||||
 | 
			
		||||
	if (slot_needs_update)
 | 
			
		||||
@@ -1112,7 +1112,7 @@ CheckAlterSubOption(Subscription *sub, const char *option,
 | 
			
		||||
		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",
 | 
			
		||||
							option)));
 | 
			
		||||
 | 
			
		||||
		/* The changed option of the slot can't be rolled back. */
 | 
			
		||||
 
 | 
			
		||||
@@ -10713,7 +10713,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();
 | 
			
		||||
}
 | 
			
		||||
@@ -830,7 +830,7 @@ ReplicationSlotAlter(const char *name, const 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
 | 
			
		||||
@@ -2656,11 +2656,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;
 | 
			
		||||
		}
 | 
			
		||||
@@ -2677,11 +2677,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;
 | 
			
		||||
		}
 | 
			
		||||
@@ -2697,11 +2697,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;
 | 
			
		||||
		}
 | 
			
		||||
@@ -2712,11 +2712,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)
 | 
			
		||||
 
 | 
			
		||||
@@ -2069,7 +2069,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,
 | 
			
		||||
@@ -2410,7 +2410,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
 | 
			
		||||
		},
 | 
			
		||||
@@ -4760,11 +4760,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,
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user