Re: How to get column, table or parameter name reporting when violating DOMAIN type constraint

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
Cc: Valerio Battaglia <vabatta(at)gmail(dot)com>, "pgsql-novice(at)lists(dot)postgresql(dot)org" <pgsql-novice(at)lists(dot)postgresql(dot)org>
Subject: Re: How to get column, table or parameter name reporting when violating DOMAIN type constraint
Date: 2023-03-26 16:00:05
Message-ID: 2914598.1679846405@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

"David G. Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com> writes:
> On Sunday, March 26, 2023, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>> More to the point, you have the wrong mental model: a domain constraint
>> violation might not be associated with a table column at all.

> I disagree that the mental model is wrong.

The OP is asking for action-at-a-distance. There are probably cases
where the distance is short enough that we could associate the runtime
error with a particular insertion target column, but I don't think it
could possibly be made to work for every sort of insert/select query.
In any case, the possibility of a hypothetical future feature (which
nobody is actively working on AFAIK) doesn't seem like a very useful
answer here.

> There are existing threads that I may hunt later. IIRC, you (Tom) even
> suggested a possible way forward on this last time it came up.

I recall proposing that we try to produce syntax-error-like error
cursors for runtime errors, but it's not apparent to me that that'd
be tremendously applicable to the OP's problem. The output would
look something like

ERROR: value for domain my_domain violates check constraint "value_min"
LINE 1: SELECT my_function(100, -100);
^

which might be helpful for a human, but probably not very much so
for a program. (BTW, this illustrates another issue: I'm pretty
sure that in the given case, the error is thrown while evaluating
my_function's arguments, long before we get within hailing distance
of any INSERT at all.)

regards, tom lane

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message Valerio Battaglia 2023-03-27 00:37:59 Re: How to get column, table or parameter name reporting when violating DOMAIN type constraint
Previous Message David G. Johnston 2023-03-26 15:36:58 Re: How to get column, table or parameter name reporting when violating DOMAIN type constraint