Re: Better error messages for %TYPE and %ROWTYPE in plpgsql - Mailing list pgsql-hackers

From Pavel Stehule
Subject Re: Better error messages for %TYPE and %ROWTYPE in plpgsql
Date
Msg-id CAFj8pRCxOPgdaY=x0P8YxMGSn-md6NFQe9b4RFegoNAh1fNDfQ@mail.gmail.com
Whole thread Raw
In response to Better error messages for %TYPE and %ROWTYPE in plpgsql  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-hackers


po 26. 2. 2024 v 21:02 odesílatel Tom Lane <tgl@sss.pgh.pa.us> napsal:
Per recent discussion[1], plpgsql returns fairly unhelpful "syntax
error" messages when a %TYPE or %ROWTYPE construct references a
nonexistent object.  Here's a quick little finger exercise to try
to improve that.

The basic point is that plpgsql_parse_wordtype and friends are
designed to return NULL rather than failing (at least when it's
easy to do so), but that leaves the caller without enough info
to deliver a good error message.  There is only one caller,
and it has no use at all for this behavior, so let's just
change those functions to throw appropriate errors.  Amusingly,
plpgsql_parse_wordrowtype was already behaving that way, and
plpgsql_parse_cwordrowtype did so in more cases than not,
so we didn't even have a consistent "return NULL" story.

Along the way I got rid of plpgsql_parse_cwordtype's restriction
on what relkinds can be referenced.  I don't really see the
point of that --- as long as the relation has the desired
column, the column's type is surely well-defined.

+1

Pavel


                        regards, tom lane

[1] https://www.postgresql.org/message-id/flat/88b574f4-cc08-46c5-826b-020849e5a356%40gelassene-pferde.biz

pgsql-hackers by date:

Previous
From: Tom Lane
Date:
Subject: Better error messages for %TYPE and %ROWTYPE in plpgsql
Next
From: Tom Lane
Date:
Subject: Re: libpq: PQfnumber overload for not null-terminated strings