Re: Error message inconsistency - Mailing list pgsql-hackers

From Tom Lane
Subject Re: Error message inconsistency
Date
Msg-id 6929.1579706307@sss.pgh.pa.us
Whole thread Raw
In response to Re: Error message inconsistency  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: Error message inconsistency  (Amit Kapila <amit.kapila16@gmail.com>)
List pgsql-hackers
Alvaro Herrera <alvherre@2ndquadrant.com> writes:
> I wonder if we shouldn't be using errtablecol() here instead of (in
> addition to?) patching the errmsg() to include the table name.

> Discussion: If we really like having the table names in errtable(), then
> we should have psql display it by default, and other tools will follow
> suit; in that case we should remove the table name from error messages,
> or at least not add it to even more messages.

> If we instead think that errtable() is there just for programmatically
> knowing the affected table, then we should add the table name to all
> errmsg() where relevant, as in the patch under discussion.

> What do others think?

I believe that the intended use of errtable() and friends is so that
applications don't have to parse those names out of a human-friendly
message.  We should add calls to them in cases where (a) an application
can tell from the SQLSTATE that some particular table is involved
and (b) it's likely that the app would wish to know which table that is.
I don't feel a need to sprinkle every single ereport() in the backend
with errtable(), just ones where there's a plausible use-case for the
extra cycles that will be spent.

On the other side of the coin, whether we use errtable() is not directly
a factor in deciding what the human-friendly messages should say.
I do find it hard to envision a case where we'd want to use errtable()
and *not* put the table name in the error message, just because if
applications need to know something then humans probably do too.  But
saying that we can make the messages omit info because it's available
from these program-friendly fields seems 100% wrong to me, even if one
turns a blind eye to the fact that existing client code likely won't
show those fields to users.

            regards, tom lane



pgsql-hackers by date:

Previous
From: Thomas Kellerer
Date:
Subject: Re: Do we need to handle orphaned prepared transactions in theserver?
Next
From: Tom Lane
Date:
Subject: Re: Do we need to handle orphaned prepared transactions in the server?