| From: | Álvaro Herrera <alvherre(at)kurilemu(dot)de> |
|---|---|
| To: | Chao Li <li(dot)evan(dot)chao(at)gmail(dot)com> |
| Cc: | jian he <jian(dot)universality(at)gmail(dot)com>, Zsolt Parragi <zsolt(dot)parragi(at)percona(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
| Subject: | Re: Fix bug of CHECK constraint enforceability recursion |
| Date: | 2026-06-08 14:52:49 |
| Message-ID: | aibTqHShlL-DFSbG@alvherre.pgsql |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
On 2026-Jun-08, Chao Li wrote:
> > Keep errmsg() messages on a single line to improve grepability.
G
> I’m not sure this needs to be changed. The message is quite long, and
> there are existing precedents for splitting long errmsg() strings
> across multiple lines. For example:
> ```
> if (getExtensionOfObject(NamespaceRelationId, nspOid) == extensionOid)
> ereport(ERROR,
> (errcode(ERRCODE_OBJECT_NOT_IN_PREREQUISITE_STATE),
> errmsg("cannot move extension \"%s\" into schema \"%s\" "
> "because the extension contains the schema",
> extensionName, newschema)));
> ```
>
> So, this does not seem to be a strict rule. I also don’t think this
> hurts grepability much in practice, since searching for the
> distinctive part of the message still finds it.
Personally I find myself upset whenever I come across messages split in
this way. Kindly do not add more if you can avoid it. It [my dislike
for that] is not strong enough to create a commit to stitch them back,
but I frequently do so in my local editor and later discard the change
when collecting changes to commit via "git add -p".
Greppability is subjective -- you don't know which part is
"distinctive". For instance, when looking for message
refactoring/rewording I grep for things such as "cannot.*schema" or
such, and any arbitrary splitting could potentially thwart that.
Lastly, when the message is in a single line, grammatical mistakes are
easier to see, such as the missing "the" in
errmsg("cannot mark inherited constraint \"%s\" as NOT ENFORCED because [the] matching constraint on parent table \"%s\" is ENFORCED", ...)
In this case I would also move the NOT ENFORCED clause out of the
translatable message and replace it with %s; and I'm wondering whether
the part after "because" should be errdetail or not.
--
Álvaro Herrera Breisgau, Deutschland — https://www.EnterpriseDB.com/
"Having your biases confirmed independently is how scientific progress is
made, and hence made our great society what it is today" (Mary Gardiner)
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Jim Vanns | 2026-06-08 14:56:47 | Re: [PATCH] Add support for SAOP in the optimizer for partial index paths |
| Previous Message | Xuneng Zhou | 2026-06-08 14:34:27 | Re: t/035_standby_logical_decoding.pl might fail on attempt to read wrong timeline |