diff --git a/contrib/pg_walinspect/pg_walinspect.c b/contrib/pg_walinspect/pg_walinspect.c index ee2918726d6..9e3e05e398a 100644 --- a/contrib/pg_walinspect/pg_walinspect.c +++ b/contrib/pg_walinspect/pg_walinspect.c @@ -101,7 +101,8 @@ InitXLogReaderState(XLogRecPtr lsn) */ if (lsn < XLOG_BLCKSZ) ereport(ERROR, - (errmsg("could not read WAL at LSN %X/%X", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not read WAL at LSN %X/%X", LSN_FORMAT_ARGS(lsn)))); private_data = (ReadLocalXLogPageNoWaitPrivate *) diff --git a/src/backend/access/transam/xlogrecovery.c b/src/backend/access/transam/xlogrecovery.c index b45b8331720..2ed3ea2b45b 100644 --- a/src/backend/access/transam/xlogrecovery.c +++ b/src/backend/access/transam/xlogrecovery.c @@ -1898,7 +1898,8 @@ PerformWalRecovery(void) recoveryTarget != RECOVERY_TARGET_UNSET && !reachedRecoveryTarget) ereport(FATAL, - (errmsg("recovery ended before configured recovery target was reached"))); + (errcode(ERRCODE_CONFIG_FILE_ERROR), + errmsg("recovery ended before configured recovery target was reached"))); } /* diff --git a/src/backend/backup/basebackup.c b/src/backend/backup/basebackup.c index 9a2bf59e84e..01b35e26bda 100644 --- a/src/backend/backup/basebackup.c +++ b/src/backend/backup/basebackup.c @@ -2045,12 +2045,14 @@ _tarWriteHeader(bbsink *sink, const char *filename, const char *linktarget, break; case TAR_NAME_TOO_LONG: ereport(ERROR, - (errmsg("file name too long for tar format: \"%s\"", + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("file name too long for tar format: \"%s\"", filename))); break; case TAR_SYMLINK_TOO_LONG: ereport(ERROR, - (errmsg("symbolic link target too long for tar format: " + (errcode(ERRCODE_PROGRAM_LIMIT_EXCEEDED), + errmsg("symbolic link target too long for tar format: " "file name \"%s\", target \"%s\"", filename, linktarget))); break; diff --git a/src/backend/commands/matview.c b/src/backend/commands/matview.c index 6d09b755564..ea05d4b224f 100644 --- a/src/backend/commands/matview.c +++ b/src/backend/commands/matview.c @@ -803,7 +803,9 @@ refresh_by_match_merge(Oid matviewOid, Oid tempOid, Oid relowner, * That's a pretty silly thing to do.) */ if (!foundUniqueIndex) - elog(ERROR, "could not find suitable unique index on materialized view"); + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("could not find suitable unique index on materialized view")); appendStringInfoString(&querybuf, " AND newdata.* OPERATOR(pg_catalog.*=) mv.*) " diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 9e9dc5c2c13..dbfe0d6b1c1 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -11363,7 +11363,8 @@ ATExecAlterConstraint(Relation rel, AlterTableCmd *cmd, bool recurse, } ereport(ERROR, - (errmsg("cannot alter constraint \"%s\" on relation \"%s\"", + (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE), + errmsg("cannot alter constraint \"%s\" on relation \"%s\"", cmdcon->conname, RelationGetRelationName(rel)), ancestorname && ancestortable ? errdetail("Constraint \"%s\" is derived from constraint \"%s\" of relation \"%s\".", diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 58b7fc5bbd5..170360edda8 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -1519,6 +1519,7 @@ renametrig(RenameStmt *stmt) */ if (OidIsValid(trigform->tgparentid)) ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("cannot rename trigger \"%s\" on table \"%s\"", stmt->subname, RelationGetRelationName(targetrel)), errhint("Rename the trigger on the partitioned table \"%s\" instead.", diff --git a/src/backend/commands/user.c b/src/backend/commands/user.c index 104b66e4b43..e7ade898a47 100644 --- a/src/backend/commands/user.c +++ b/src/backend/commands/user.c @@ -1730,6 +1730,7 @@ AddRoleMems(Oid currentUserId, const char *rolename, Oid roleid, */ if (memberid == ROLE_PG_DATABASE_OWNER) ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("role \"%s\" cannot be a member of any role", get_rolespec_name(memberRole))); @@ -2121,6 +2122,7 @@ check_role_membership_authorization(Oid currentUserId, Oid roleid, */ if (is_grant && roleid == ROLE_PG_DATABASE_OWNER) ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), errmsg("role \"%s\" cannot have explicit members", GetUserNameFromId(roleid, false))); diff --git a/src/backend/libpq/be-secure-openssl.c b/src/backend/libpq/be-secure-openssl.c index 39b1a66236b..387f30cdaa8 100644 --- a/src/backend/libpq/be-secure-openssl.c +++ b/src/backend/libpq/be-secure-openssl.c @@ -250,7 +250,8 @@ be_tls_init(bool isServerStart) if (ssl_ver_min > ssl_ver_max) { ereport(isServerStart ? FATAL : LOG, - (errmsg("could not set SSL protocol version range"), + (errcode(ERRCODE_CONFIG_FILE_ERROR), + errmsg("could not set SSL protocol version range"), errdetail("\"%s\" cannot be higher than \"%s\"", "ssl_min_protocol_version", "ssl_max_protocol_version"))); diff --git a/src/backend/optimizer/util/appendinfo.c b/src/backend/optimizer/util/appendinfo.c index 6ba4eba224a..49897226371 100644 --- a/src/backend/optimizer/util/appendinfo.c +++ b/src/backend/optimizer/util/appendinfo.c @@ -160,11 +160,15 @@ make_inh_translation_list(Relation oldrelation, Relation newrelation, /* Found it, check type and collation match */ if (atttypid != att->atttypid || atttypmod != att->atttypmod) - elog(ERROR, "attribute \"%s\" of relation \"%s\" does not match parent's type", - attname, RelationGetRelationName(newrelation)); + ereport(ERROR, + (errcode(ERRCODE_INVALID_COLUMN_DEFINITION), + errmsg("attribute \"%s\" of relation \"%s\" does not match parent's type", + attname, RelationGetRelationName(newrelation)))); if (attcollation != att->attcollation) - elog(ERROR, "attribute \"%s\" of relation \"%s\" does not match parent's collation", - attname, RelationGetRelationName(newrelation)); + ereport(ERROR, + (errcode(ERRCODE_INVALID_COLUMN_DEFINITION), + errmsg("attribute \"%s\" of relation \"%s\" does not match parent's collation", + attname, RelationGetRelationName(newrelation)))); vars = lappend(vars, makeVar(newvarno, (AttrNumber) (new_attno + 1), diff --git a/src/backend/replication/slotfuncs.c b/src/backend/replication/slotfuncs.c index dd6c1d5a7e3..38595b3a472 100644 --- a/src/backend/replication/slotfuncs.c +++ b/src/backend/replication/slotfuncs.c @@ -523,7 +523,8 @@ pg_replication_slot_advance(PG_FUNCTION_ARGS) if (XLogRecPtrIsInvalid(moveto)) ereport(ERROR, - (errmsg("invalid target WAL LSN"))); + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("invalid target WAL LSN"))); /* Build a tuple descriptor for our result type */ if (get_call_result_type(fcinfo, NULL, &tupdesc) != TYPEFUNC_COMPOSITE) diff --git a/src/backend/utils/adt/pg_locale.c b/src/backend/utils/adt/pg_locale.c index 7e5bb2b703a..2673bafe60a 100644 --- a/src/backend/utils/adt/pg_locale.c +++ b/src/backend/utils/adt/pg_locale.c @@ -1481,7 +1481,8 @@ make_icu_collator(const char *iculocstr, UCOL_DEFAULT, UCOL_DEFAULT_STRENGTH, NULL, &status); if (U_FAILURE(status)) ereport(ERROR, - (errmsg("could not open collator for locale \"%s\" with rules \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not open collator for locale \"%s\" with rules \"%s\": %s", iculocstr, icurules, u_errorName(status)))); } @@ -2609,7 +2610,8 @@ pg_ucol_open(const char *loc_str) if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) { ereport(ERROR, - (errmsg("could not get language from locale \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not get language from locale \"%s\": %s", loc_str, u_errorName(status)))); } @@ -2630,7 +2632,8 @@ pg_ucol_open(const char *loc_str) if (U_FAILURE(status)) ereport(ERROR, /* use original string for error report */ - (errmsg("could not open collator for locale \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not open collator for locale \"%s\": %s", orig_str, u_errorName(status)))); if (U_ICU_VERSION_MAJOR_NUM < 54) @@ -2646,7 +2649,8 @@ pg_ucol_open(const char *loc_str) { ucol_close(collator); ereport(ERROR, - (errmsg("could not open collator for locale \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not open collator for locale \"%s\": %s", orig_str, u_errorName(status)))); } } @@ -2957,7 +2961,8 @@ icu_language_tag(const char *loc_str, int elevel) if (elevel > 0) ereport(elevel, - (errmsg("could not convert locale name \"%s\" to language tag: %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not convert locale name \"%s\" to language tag: %s", loc_str, u_errorName(status)))); return NULL; } @@ -2998,7 +3003,8 @@ icu_validate_locale(const char *loc_str) if (U_FAILURE(status) || status == U_STRING_NOT_TERMINATED_WARNING) { ereport(elevel, - (errmsg("could not get language from ICU locale \"%s\": %s", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("could not get language from ICU locale \"%s\": %s", loc_str, u_errorName(status)), errhint("To disable ICU locale validation, set the parameter \"%s\" to \"%s\".", "icu_validation_level", "disabled"))); @@ -3027,7 +3033,8 @@ icu_validate_locale(const char *loc_str) if (!found) ereport(elevel, - (errmsg("ICU locale \"%s\" has unknown language \"%s\"", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("ICU locale \"%s\" has unknown language \"%s\"", loc_str, lang), errhint("To disable ICU locale validation, set the parameter \"%s\" to \"%s\".", "icu_validation_level", "disabled"))); diff --git a/src/backend/utils/adt/tid.c b/src/backend/utils/adt/tid.c index 8cff1e7a12e..dd46001a4eb 100644 --- a/src/backend/utils/adt/tid.c +++ b/src/backend/utils/adt/tid.c @@ -312,9 +312,11 @@ currtid_internal(Relation rel, ItemPointer tid) return currtid_for_view(rel, tid); if (!RELKIND_HAS_STORAGE(rel->rd_rel->relkind)) - elog(ERROR, "cannot look at latest visible tid for relation \"%s.%s\"", - get_namespace_name(RelationGetNamespace(rel)), - RelationGetRelationName(rel)); + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("cannot look at latest visible tid for relation \"%s.%s\"", + get_namespace_name(RelationGetNamespace(rel)), + RelationGetRelationName(rel))); ItemPointerCopy(tid, result); @@ -349,16 +351,22 @@ currtid_for_view(Relation viewrel, ItemPointer tid) if (strcmp(NameStr(attr->attname), "ctid") == 0) { if (attr->atttypid != TIDOID) - elog(ERROR, "ctid isn't of type TID"); + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("ctid isn't of type TID")); tididx = i; break; } } if (tididx < 0) - elog(ERROR, "currtid cannot handle views with no CTID"); + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("currtid cannot handle views with no CTID")); rulelock = viewrel->rd_rules; if (!rulelock) - elog(ERROR, "the view has no rules"); + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("the view has no rules")); for (i = 0; i < rulelock->numLocks; i++) { rewrite = rulelock->rules[i]; @@ -368,7 +376,9 @@ currtid_for_view(Relation viewrel, ItemPointer tid) TargetEntry *tle; if (list_length(rewrite->actions) != 1) - elog(ERROR, "only one select rule is allowed in views"); + ereport(ERROR, + errcode(ERRCODE_FEATURE_NOT_SUPPORTED), + errmsg("only one select rule is allowed in views")); query = (Query *) linitial(rewrite->actions); tle = get_tle_by_resno(query->targetList, tididx + 1); if (tle && tle->expr && IsA(tle->expr, Var))