message style

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Pg Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org>
Subject: message style
Date: 2019-04-30 14:58:13
Message-ID: 20190430145813.GA29872@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I have this two message patches that I've been debating with myself
about:

--- a/src/backend/access/heap/heapam.c
+++ b/src/backend/access/heap/heapam.c
@@ -1282,7 +1282,7 @@ heap_getnext(TableScanDesc sscan, ScanDirection direction)
if (unlikely(sscan->rs_rd->rd_tableam != GetHeapamTableAmRoutine()))
ereport(ERROR,
(errcode(ERRCODE_FEATURE_NOT_SUPPORTED),
- errmsg("only heap AM is supported")));
+ errmsg("only heap table access method is supported")));

I think the original is not great, but I'm not sure that the new is much
better either. I think this message says "only AMs that behave using
the heapam routines are supported"; we cannot say use the literal
"heapam" AM name because, as the comment two lines above says, it's
possible to copy the AM with a different name and it would be
acceptable. OTOH maybe this code will not survive for long, so it
doesn't matter much that the message is 100% correct; perhaps we should
just change errmsg() to errmsg_internal() and be done with it.

diff --git a/src/backend/access/table/tableamapi.c b/src/backend/access/table/tableamapi.c
index 0053dc95cab..c8b7598f785 100644
--- a/src/backend/access/table/tableamapi.c
+++ b/src/backend/access/table/tableamapi.c
@@ -103,7 +103,8 @@ check_default_table_access_method(char **newval, void **extra, GucSource source)
{
if (**newval == '\0')
{
- GUC_check_errdetail("default_table_access_method may not be empty.");
+ GUC_check_errdetail("%s may not be empty.",
+ "default_table_access_method");
return false;
}

My problem here is not really the replacement of the name to %s, but the
"may not be" part of it. We don't use "may not be" anywhere else; most
places seem to use "foo cannot be X" and a small number of other places
use "foo must not be Y". I'm not able to judge which of the two is
better (so change all messages to use that form), or if there's a
semantic difference and if so which one to use in this case.

I do notice that there's no place where we would benefit from changing
the "foo" part to %s --that is, there are no duplicate strings-- but I'd
change it anyway to reduce the chance of typos in translations.

git grep -E 'err[a-z]*\(.* (can|must |may )not be ' -- *.c

contrib/amcheck/verify_nbtree.c: errmsg("index \"%s\" cannot be verified using transaction snapshot",
contrib/fuzzystrmatch/fuzzystrmatch.c: errmsg("output cannot be empty string")));
contrib/jsonb_plpython/jsonb_plpython.c: (errmsg("Python type \"%s\" cannot be transformed to jsonb",
contrib/pg_prewarm/pg_prewarm.c: errmsg("relation cannot be null")));
contrib/pg_prewarm/pg_prewarm.c: (errmsg("prewarm type cannot be null"))));
contrib/pg_prewarm/pg_prewarm.c: (errmsg("relation fork cannot be null"))));
contrib/tcn/tcn.c: errmsg("triggered_change_notification: must not be called with more than one parameter")));
contrib/tsm_system_rows/tsm_system_rows.c: errmsg("sample size must not be negative")));
contrib/tsm_system_time/tsm_system_time.c: errmsg("sample collection time must not be negative")));
src/backend/access/brin/brin.c: errhint("BRIN control functions cannot be executed during recovery.")));
src/backend/access/brin/brin.c: errhint("BRIN control functions cannot be executed during recovery.")));
src/backend/access/common/tupdesc.c: errmsg("column \"%s\" cannot be declared SETOF",
src/backend/access/gin/ginfast.c: errhint("GIN pending list cannot be cleaned up during recovery.")));
src/backend/access/hash/hashinsert.c: errhint("Values larger than a buffer page cannot be indexed.")));
src/backend/access/nbtree/nbtutils.c: errhint("Values larger than 1/3 of a buffer page cannot be indexed.\n"
src/backend/access/spgist/spgdoinsert.c: errhint("Values larger than a buffer page cannot be indexed.")));
src/backend/access/spgist/spgutils.c: errhint("Values larger than a buffer page cannot be indexed.")));
src/backend/access/table/tableamapi.c: GUC_check_errdetail("%s may not be empty.",
src/backend/access/transam/xact.c: errmsg("%s cannot be executed from a function", stmtType)));
src/backend/access/transam/xlog.c: errhint("WAL control functions cannot be executed during recovery.")));
src/backend/access/transam/xlog.c: errhint("WAL control functions cannot be executed during recovery.")));
src/backend/access/transam/xlogfuncs.c: errhint("WAL control functions cannot be executed during recovery.")));
src/backend/access/transam/xlogfuncs.c: errhint("WAL control functions cannot be executed during recovery."))));
src/backend/access/transam/xlogfuncs.c: errhint("WAL control functions cannot be executed during recovery.")));
src/backend/access/transam/xlogfuncs.c: errhint("WAL control functions cannot be executed during recovery.")));
src/backend/access/transam/xlogfuncs.c: errhint("WAL control functions cannot be executed during recovery.")));
src/backend/access/transam/xlogfuncs.c: errhint("%s cannot be executed during recovery.",
src/backend/access/transam/xlogfuncs.c: errhint("%s cannot be executed during recovery.",
src/backend/access/transam/xlogfuncs.c: errmsg("\"wait_seconds\" cannot be negative or equal zero")));
src/backend/catalog/aclchk.c: errmsg("default privileges cannot be set for columns")));
src/backend/catalog/dependency.c: errmsg("constant of the type %s cannot be used here",
src/backend/catalog/heap.c: errmsg("composite type %s cannot be made a member of itself",
src/backend/catalog/index.c: errmsg("primary keys cannot be expressions")));
src/backend/catalog/index.c: errmsg("shared indexes cannot be created after initdb")));
src/backend/catalog/objectaddress.c: errmsg("large object OID may not be null")));
src/backend/catalog/pg_aggregate.c: errmsg("final function with extra arguments must not be declared STRICT")));
src/backend/catalog/pg_aggregate.c: errmsg("combine function with transition type %s must not be declared STRICT",
src/backend/catalog/pg_aggregate.c: errmsg("final function with extra arguments must not be declared STRICT")));
src/backend/catalog/pg_operator.c: errmsg("operator cannot be its own negator or sort operator")));
src/backend/catalog/pg_publication.c: errdetail("System tables cannot be added to publications.")));
src/backend/catalog/pg_publication.c: errmsg("table \"%s\" cannot be replicated",
src/backend/catalog/pg_publication.c: errdetail("Temporary and unlogged relations cannot be replicated.")));
src/backend/commands/aggregatecmds.c: errmsg("aggregate msfunc must not be specified without mstype")));
src/backend/commands/aggregatecmds.c: errmsg("aggregate minvfunc must not be specified without mstype")));
src/backend/commands/aggregatecmds.c: errmsg("aggregate mfinalfunc must not be specified without mstype")));
src/backend/commands/aggregatecmds.c: errmsg("aggregate msspace must not be specified without mstype")));
src/backend/commands/aggregatecmds.c: errmsg("aggregate minitcond must not be specified without mstype")));
src/backend/commands/aggregatecmds.c: errmsg("aggregate transition data type cannot be %s",
src/backend/commands/aggregatecmds.c: errmsg("aggregate transition data type cannot be %s",
src/backend/commands/async.c: errmsg("channel name cannot be empty")));
src/backend/commands/async.c: errhint("The NOTIFY queue cannot be emptied until that process ends its current transaction.")
src/backend/commands/cluster.c: errdetail("%.0f dead row versions cannot be removed yet.\n"
src/backend/commands/collationcmds.c: errmsg("collation \"default\" cannot be copied")));
src/backend/commands/copy.c: errmsg("COPY delimiter cannot be newline or carriage return")));
src/backend/commands/copy.c: errmsg("COPY delimiter cannot be \"%s\"", cstate->delim)));
src/backend/commands/copy.c: errdetail("Generated columns cannot be used in COPY.")));
src/backend/commands/dbcommands.c: errmsg("pg_global cannot be used as default tablespace")));
src/backend/commands/dbcommands.c: errmsg("current database cannot be renamed")));
src/backend/commands/dbcommands.c: errmsg("pg_global cannot be used as default tablespace")));
src/backend/commands/dbcommands.c: errmsg("option \"%s\" cannot be specified with other options",
src/backend/commands/extension.c: errdetail("Extension names must not be empty.")));
src/backend/commands/extension.c: errdetail("Version names must not be empty.")));
src/backend/commands/extension.c: errmsg("parameter \"%s\" cannot be set in a secondary extension control file",
src/backend/commands/extension.c: errmsg("parameter \"%s\" cannot be set in a secondary extension control file",
src/backend/commands/extension.c: errmsg("parameter \"schema\" cannot be specified when \"relocatable\" is true")));
src/backend/commands/functioncmds.c: errmsg("type modifier cannot be specified for shell type \"%s\"",
src/backend/commands/functioncmds.c: errmsg("cast function must not be volatile")));
src/backend/commands/functioncmds.c: errmsg("domain data types must not be marked binary-compatible")));
src/backend/commands/functioncmds.c: errmsg("transform function must not be volatile")));
src/backend/commands/indexcmds.c: errdetail("%s constraints cannot be used when partition keys include expressions.",
src/backend/commands/matview.c: errmsg("CONCURRENTLY cannot be used when the materialized view is not populated")));
src/backend/commands/matview.c: errmsg("CONCURRENTLY and WITH NO DATA options cannot be used together")));
src/backend/commands/opclasscmds.c: errmsg("storage type cannot be different from data type for access method \"%s\"",
src/backend/commands/opclasscmds.c: errmsg("STORAGE cannot be specified in ALTER OPERATOR FAMILY")));
src/backend/commands/operatorcmds.c: errmsg("operator attribute \"%s\" cannot be changed",
src/backend/commands/policy.c: errmsg("WITH CHECK cannot be applied to SELECT or DELETE")));
src/backend/commands/portalcmds.c: errmsg("invalid cursor name: must not be empty")));
src/backend/commands/portalcmds.c: errmsg("invalid cursor name: must not be empty")));
src/backend/commands/portalcmds.c: errmsg("invalid cursor name: must not be empty")));
src/backend/commands/prepare.c: errmsg("invalid statement name: must not be empty")));
src/backend/commands/prepare.c: errmsg("utility statements cannot be prepared")));
src/backend/commands/prepare.c: errmsg("parameter $%d of type %s cannot be coerced to the expected type %s",
src/backend/commands/publicationcmds.c: errdetail("Tables cannot be added to or dropped from FOR ALL TABLES publications.")));
src/backend/commands/sequence.c: errmsg("INCREMENT must not be zero")));
src/backend/commands/sequence.c: errmsg("START value (%s) cannot be less than MINVALUE (%s)",
src/backend/commands/sequence.c: errmsg("START value (%s) cannot be greater than MAXVALUE (%s)",
src/backend/commands/sequence.c: errmsg("RESTART value (%s) cannot be less than MINVALUE (%s)",
src/backend/commands/sequence.c: errmsg("RESTART value (%s) cannot be greater than MAXVALUE (%s)",
src/backend/commands/statscmds.c: errmsg("column \"%s\" cannot be used in statistics because its type %s has no default btree operator class",
src/backend/commands/tablecmds.c: errmsg("foreign key constraint \"%s\" cannot be implemented",
src/backend/commands/tablecmds.c: errmsg("column \"%s\" cannot be cast automatically to type %s",
src/backend/commands/tablecmds.c: errmsg("generation expression for column \"%s\" cannot be cast automatically to type %s",
src/backend/commands/tablecmds.c: errmsg("default for column \"%s\" cannot be cast automatically to type %s",
src/backend/commands/tablecmds.c: errmsg("index \"%s\" cannot be used as replica identity because column %d is a system column",
src/backend/commands/tablecmds.c: errmsg("index \"%s\" cannot be used as replica identity because column \"%s\" is nullable",
src/backend/commands/tablecmds.c: errdetail("Unlogged relations cannot be replicated.")));
src/backend/commands/trigger.c: errmsg("transition tables cannot be specified for triggers with more than one event")));
src/backend/commands/trigger.c: errmsg("transition tables cannot be specified for triggers with column lists")));
src/backend/commands/trigger.c: errmsg("NEW TABLE cannot be specified multiple times")));
src/backend/commands/trigger.c: errmsg("OLD TABLE cannot be specified multiple times")));
src/backend/commands/trigger.c: errmsg("OLD TABLE name and NEW TABLE name cannot be the same")));
src/backend/commands/typecmds.c: errmsg("array element type cannot be %s",
src/backend/commands/typecmds.c: errmsg("check constraints for domains cannot be marked NO INHERIT")));
src/backend/commands/typecmds.c: errmsg("range subtype cannot be %s",
src/backend/commands/user.c: errmsg("current user cannot be dropped")));
src/backend/commands/user.c: errmsg("current user cannot be dropped")));
src/backend/commands/user.c: errmsg("session user cannot be dropped")));
src/backend/commands/user.c: errmsg("role \"%s\" cannot be dropped because some objects depend on it",
src/backend/commands/user.c: errmsg("session user cannot be renamed")));
src/backend/commands/user.c: errmsg("current user cannot be renamed")));
src/backend/commands/user.c: errmsg("column names cannot be included in GRANT/REVOKE ROLE")));
src/backend/commands/vacuum.c: errmsg("%s cannot be executed from VACUUM or ANALYZE",
src/backend/commands/vacuum.c: errmsg("VACUUM option DISABLE_PAGE_SKIPPING cannot be used with FULL")));
src/backend/commands/variable.c: GUC_check_errmsg("SET TRANSACTION ISOLATION LEVEL must not be called in a subtransaction");
src/backend/commands/variable.c: GUC_check_errmsg("SET TRANSACTION [NOT] DEFERRABLE cannot be called within a subtransaction");
src/backend/commands/view.c: errmsg("views cannot be unlogged because they do not have storage")));
src/backend/executor/execExpr.c: errmsg("window function calls cannot be nested")));
src/backend/executor/execExprInterp.c: errdetail("Array with element type %s cannot be "
src/backend/executor/execExprInterp.c: errmsg("array subscript in assignment must not be null")));
src/backend/executor/nodeAgg.c: errmsg("aggregate function calls cannot be nested")));
src/backend/executor/nodeAgg.c: errmsg("combine function with transition type %s must not be declared STRICT",
src/backend/executor/nodeLimit.c: errmsg("OFFSET must not be negative")));
src/backend/executor/nodeLimit.c: errmsg("LIMIT must not be negative")));
src/backend/executor/nodeSamplescan.c: errmsg("TABLESAMPLE parameter cannot be null")));
src/backend/executor/nodeSamplescan.c: errmsg("TABLESAMPLE REPEATABLE parameter cannot be null")));
src/backend/executor/nodeTableFuncscan.c: errmsg("namespace URI must not be null")));
src/backend/executor/nodeTableFuncscan.c: errmsg("row filter expression must not be null")));
src/backend/executor/nodeTableFuncscan.c: errmsg("column filter expression must not be null"),
src/backend/executor/nodeWindowAgg.c: errmsg("frame starting offset must not be null")));
src/backend/executor/nodeWindowAgg.c: errmsg("frame starting offset must not be negative")));
src/backend/executor/nodeWindowAgg.c: errmsg("frame ending offset must not be null")));
src/backend/executor/nodeWindowAgg.c: errmsg("frame ending offset must not be negative")));
src/backend/libpq/be-fsstubs.c: errmsg("requested length cannot be negative")));
src/backend/libpq/be-secure-openssl.c: errmsg("private key file \"%s\" cannot be reloaded because it requires a passphrase",
src/backend/libpq/hba.c: errmsg("list of RADIUS servers cannot be empty"),
src/backend/libpq/hba.c: errmsg("list of RADIUS secrets cannot be empty"),
src/backend/optimizer/plan/initsplan.c: errmsg("%s cannot be applied to the nullable side of an outer join",
src/backend/parser/analyze.c: errmsg("%s cannot be applied to VALUES",
src/backend/parser/analyze.c: errmsg("materialized views may not be defined using bound parameters")));
src/backend/parser/analyze.c: errmsg("materialized views cannot be UNLOGGED")));
src/backend/parser/analyze.c: errmsg("%s cannot be applied to a join",
src/backend/parser/analyze.c: errmsg("%s cannot be applied to a function",
src/backend/parser/analyze.c: errmsg("%s cannot be applied to a table function",
src/backend/parser/analyze.c: errmsg("%s cannot be applied to VALUES",
src/backend/parser/analyze.c: errmsg("%s cannot be applied to a WITH query",
src/backend/parser/analyze.c: errmsg("%s cannot be applied to a named tuplestore",
src/backend/parser/gram.y: errmsg("current database cannot be changed"),
src/backend/parser/gram.y: errmsg("frame start cannot be UNBOUNDED FOLLOWING"),
src/backend/parser/gram.y: errmsg("frame start cannot be UNBOUNDED FOLLOWING"),
src/backend/parser/gram.y: errmsg("frame end cannot be UNBOUNDED PRECEDING"),
src/backend/parser/gram.y: errmsg("%s cannot be used as a role name here",
src/backend/parser/gram.y: errmsg("%s cannot be used as a role name here",
src/backend/parser/gram.y: errmsg("%s constraints cannot be marked DEFERRABLE",
src/backend/parser/gram.y: errmsg("%s constraints cannot be marked DEFERRABLE",
src/backend/parser/gram.y: errmsg("%s constraints cannot be marked NOT VALID",
src/backend/parser/gram.y: errmsg("%s constraints cannot be marked NO INHERIT",
src/backend/parser/parse_agg.c: errmsg("aggregate function calls cannot be nested"),
src/backend/parser/parse_agg.c: errmsg("aggregate function calls cannot be nested"),
src/backend/parser/parse_agg.c: errmsg("window function calls cannot be nested"),
src/backend/parser/parse_clause.c: errmsg("relation \"%s\" cannot be the target of a modifying statement",
src/backend/parser/parse_clause.c: errmsg("WITH ORDINALITY cannot be used with a column definition list"),
src/backend/parser/parse_clause.c: errmsg("column \"%s\" cannot be declared SETOF",
src/backend/parser/parse_coerce.c: errmsg("%s types %s and %s cannot be matched",
src/backend/parser/parse_relation.c: errhint("There is an entry for table \"%s\", but it cannot be referenced from this part of the query.",
src/backend/parser/parse_relation.c: errdetail("There is a WITH item named \"%s\", but it cannot be referenced from this part of the query.",
src/backend/parser/parse_relation.c: errmsg("column \"%s\" cannot be declared SETOF",
src/backend/parser/parse_relation.c: errhint("There is an entry for table \"%s\", but it cannot be referenced from this part of the query.",
src/backend/parser/parse_relation.c: errhint("There is a column named \"%s\" in table \"%s\", but it cannot be referenced from this part of the query.",
src/backend/parser/parse_type.c: errmsg("type modifier cannot be specified for shell type \"%s\"",
src/backend/parser/parse_utilcmd.c: errmsg("specified value cannot be cast to type %s for column \"%s\"",
src/backend/parser/scan.l: errdetail("String constants with Unicode escapes cannot be used when standard_conforming_strings is off."),
src/backend/parser/scan.l: yyerror("Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8");
src/backend/parser/scan.l: yyerror("Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8");
src/backend/postmaster/bgworker.c: errmsg("background worker \"%s\": parallel workers may not be configured for restart",
src/backend/postmaster/postmaster.c: (errmsg("WAL archival cannot be enabled when wal_level is \"minimal\"")));
src/backend/replication/logical/logical.c: errmsg("logical decoding cannot be used while in recovery")));
src/backend/replication/logical/logicalfuncs.c: errmsg("slot name must not be null")));
src/backend/replication/logical/logicalfuncs.c: errmsg("options array must not be null")));
src/backend/rewrite/rewriteDefine.c: errhint("In particular, the table cannot be involved in any foreign key relationships.")));
src/backend/rewrite/rewriteHandler.c: errmsg("INSERT with ON CONFLICT clause cannot be used with table that has INSERT or UPDATE rules")));
src/backend/rewrite/rewriteHandler.c: errmsg("WITH cannot be used in a query that is rewritten by rules into multiple queries")));
src/backend/storage/lmgr/predicate.c: errmsg("a snapshot-importing transaction must not be READ ONLY DEFERRABLE")));
src/backend/utils/adt/acl.c: errmsg("grant options cannot be granted back to your own grantor")));
src/backend/utils/adt/array_userfuncs.c: errmsg("initial position must not be null")));
src/backend/utils/adt/arrayfuncs.c: errmsg("upper bound cannot be less than lower bound")));
src/backend/utils/adt/arrayfuncs.c: errmsg("upper bound cannot be less than lower bound")));
src/backend/utils/adt/arrayfuncs.c: errmsg("upper bound cannot be less than lower bound")));
src/backend/utils/adt/arrayfuncs.c: errmsg("upper bound cannot be less than lower bound")));
src/backend/utils/adt/arrayfuncs.c: errmsg("dimension array or low bound array cannot be null")));
src/backend/utils/adt/arrayfuncs.c: errmsg("dimension array or low bound array cannot be null")));
src/backend/utils/adt/arrayfuncs.c: errmsg("dimension values cannot be null")));
src/backend/utils/adt/arrayfuncs.c: errmsg("dimension values cannot be null")));
src/backend/utils/adt/date.c: errmsg("TIME(%d)%s precision must not be negative",
src/backend/utils/adt/float.c: errmsg("operand, lower bound, and upper bound cannot be NaN")));
src/backend/utils/adt/genfile.c: errmsg("requested length cannot be negative")));
src/backend/utils/adt/genfile.c: errmsg("requested length cannot be negative")));
src/backend/utils/adt/genfile.c: errmsg("requested length cannot be negative")));
src/backend/utils/adt/geo_ops.c: errmsg("open path cannot be converted to polygon")));
src/backend/utils/adt/json.c: errdetail("\\u0000 cannot be converted to text."),
src/backend/utils/adt/json.c: errdetail("Unicode escape values cannot be used for code point values above 007F when the server encoding is not UTF8."),
src/backend/utils/adt/json.c: errmsg("field name must not be null")));
src/backend/utils/adt/json.c: errmsg("argument %d cannot be null", i + 1),
src/backend/utils/adt/jsonb.c: errmsg("argument %d: key must not be null", i + 1)));
src/backend/utils/adt/jsonb.c: errmsg("field name must not be null")));
src/backend/utils/adt/jsonpath_scan.l: errdetail("\\u0000 cannot be converted to text.")));
src/backend/utils/adt/jsonpath_scan.l: errdetail("Unicode escape values cannot be used for code "
src/backend/utils/adt/misc.c: errdetail("Quoted identifier must not be empty.")));
src/backend/utils/adt/numeric.c: errmsg("start value cannot be NaN")));
src/backend/utils/adt/numeric.c: errmsg("stop value cannot be NaN")));
src/backend/utils/adt/numeric.c: errmsg("step size cannot be NaN")));
src/backend/utils/adt/numeric.c: errmsg("operand, lower bound, and upper bound cannot be NaN")));
src/backend/utils/adt/rangetypes.c: errmsg("range constructor flags argument must not be null")));
src/backend/utils/adt/timestamp.c: errmsg("TIMESTAMP(%d)%s precision must not be negative",
src/backend/utils/adt/timestamp.c: errmsg("timestamp cannot be NaN")));
src/backend/utils/adt/timestamp.c: errmsg("INTERVAL(%d) precision must not be negative",
src/backend/utils/adt/tsvector_op.c: errmsg("configuration column \"%s\" must not be null",
src/backend/utils/adt/varlena.c: errmsg("null values cannot be formatted as an SQL identifier")));
src/backend/utils/adt/xml.c: errdetail("XML processing instruction target name cannot be \"%s\".", target)));
src/backend/utils/adt/xml.c: errmsg("row path filter must not be empty string")));
src/backend/utils/adt/xml.c: errmsg("column path filter must not be empty string")));
src/backend/utils/misc/guc-file.l: errmsg("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc-file.l: record_config_file_error(psprintf("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed now",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be set after connection start",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed without restarting the server",
src/backend/utils/misc/guc.c: errmsg("parameter \"%s\" cannot be changed",
src/backend/utils/misc/guc.c: GUC_check_errdetail("\"temp_buffers\" cannot be changed after any temporary tables have been accessed in the session.");
src/backend/utils/mmgr/portalmem.c: errmsg("portal \"%s\" cannot be run", portal->name)));
src/bin/initdb/initdb.c: pg_log_error("password prompt and password file cannot be specified together");
src/bin/pg_basebackup/pg_basebackup.c: pg_log_error("--no-slot cannot be used with slot name");
src/bin/pg_ctl/pg_ctl.c: write_stderr(_("%s: cannot be run as root\n"
src/bin/pg_dump/pg_dump.c: pg_log_error("options -s/--schema-only and -a/--data-only cannot be used together");
src/bin/pg_dump/pg_dump.c: pg_log_error("options -c/--clean and -a/--data-only cannot be used together");
src/bin/pg_dump/pg_dumpall.c: pg_log_error("option --exclude-database cannot be used together with -g/--globals-only, -r/--roles-only or -t/--tablespaces-only");
src/bin/pg_dump/pg_dumpall.c: pg_log_error("options -g/--globals-only and -r/--roles-only cannot be used together");
src/bin/pg_dump/pg_dumpall.c: pg_log_error("options -g/--globals-only and -t/--tablespaces-only cannot be used together");
src/bin/pg_dump/pg_dumpall.c: pg_log_error("options -r/--roles-only and -t/--tablespaces-only cannot be used together");
src/bin/pg_dump/pg_restore.c: pg_log_error("options -d/--dbname and -f/--file cannot be used together");
src/bin/pg_dump/pg_restore.c: pg_log_error("options -s/--schema-only and -a/--data-only cannot be used together");
src/bin/pg_dump/pg_restore.c: pg_log_error("options -c/--clean and -a/--data-only cannot be used together");
src/bin/pg_dump/pg_restore.c: pg_log_error("options -C/--create and -1/--single-transaction cannot be used together");
src/bin/pg_resetwal/pg_resetwal.c: pg_log_error("transaction ID epoch (-e) must not be -1");
src/bin/pg_resetwal/pg_resetwal.c: pg_log_error("transaction ID (-x) must not be 0");
src/bin/pg_resetwal/pg_resetwal.c: pg_log_error("OID (-o) must not be 0");
src/bin/pg_resetwal/pg_resetwal.c: pg_log_error("multitransaction ID (-m) must not be 0");
src/bin/pg_resetwal/pg_resetwal.c: pg_log_error("oldest multitransaction ID (-m) must not be 0");
src/bin/pg_resetwal/pg_resetwal.c: pg_log_error("multitransaction offset (-O) must not be -1");
src/bin/psql/command.c: pg_log_error("\\pset: csv_fieldsep cannot be a double quote, a newline, or a carriage return");
src/bin/psql/command.c: pg_log_error("\\watch cannot be used with an empty query");
src/bin/psql/common.c: pg_log_error("\\watch cannot be used with an empty query");
src/bin/psql/common.c: pg_log_error("\\watch cannot be used with COPY");
src/pl/plpgsql/src/pl_exec.c: errmsg("GET STACKED DIAGNOSTICS cannot be used outside an exception handler")));
src/pl/plpgsql/src/pl_exec.c: errmsg("lower bound of FOR loop cannot be null")));
src/pl/plpgsql/src/pl_exec.c: errmsg("upper bound of FOR loop cannot be null")));
src/pl/plpgsql/src/pl_exec.c: errmsg("BY value of FOR loop cannot be null")));
src/pl/plpgsql/src/pl_exec.c: errmsg("FOREACH expression must not be null")));
src/pl/plpgsql/src/pl_exec.c: errmsg("FOREACH loop variable must not be of an array type")));
src/pl/plpgsql/src/pl_exec.c: errmsg("RAISE without parameters cannot be used outside an exception handler")));
src/pl/plpgsql/src/pl_exec.c: errmsg("RAISE statement option cannot be null")));
src/pl/plpgsql/src/pl_exec.c: errmsg("null value cannot be assigned to variable \"%s\" declared NOT NULL",
src/pl/plpgsql/src/pl_exec.c: errmsg("null value cannot be assigned to variable \"%s\" declared NOT NULL",
src/pl/plpgsql/src/pl_exec.c: errmsg("array subscript in assignment must not be null")));
src/pl/plpgsql/src/pl_gram.y: errmsg("block label \"%s\" cannot be used in CONTINUE",
src/pl/plpgsql/src/pl_gram.y: errmsg("EXIT cannot be used outside a loop, unless it has a label") :
src/pl/plpgsql/src/pl_gram.y: errmsg("CONTINUE cannot be used outside a loop"),
src/pl/plpgsql/src/pl_gram.y: errmsg("record variable cannot be part of multiple-item INTO list"),
src/pl/plpgsql/src/pl_handler.c: GUC_check_errdetail("Key word \"%s\" cannot be combined with other key words.", tok);
src/pl/plpython/plpy_exec.c: errmsg("returned object cannot be iterated"),
src/pl/tcl/pltcl.c: errmsg("function \"%s\" must not be SECURITY DEFINER",

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Andres Freund 2019-04-30 15:09:40 Re: message style
Previous Message Tom Lane 2019-04-30 14:51:23 Re: "long" type is not appropriate for counting tuples