From: | Japin Li <japinli(at)hotmail(dot)com> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | mjurca(at)centrum(dot)cz, pgsql-bugs(at)lists(dot)postgresql(dot)org |
Subject: | Re: BUG #17610: Use of multiple composite types incompatible with record-typed function parameter |
Date: | 2022-09-09 01:07:04 |
Message-ID: | MEYP282MB16698A279FEBE7967E5B299DB6439@MEYP282MB1669.AUSP282.PROD.OUTLOOK.COM |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs |
On Fri, 09 Sep 2022 at 02:36, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> wrote:
>
> The reason is that the core parser's callback APIs allow plpgsql
> to deal with the "x.f1" construct as a unit, and it can handle
> the varying actual type of "x" internally. However, the callback
> APIs are not equivalently intelligent about "$N" references.
> Those get resolved as Params of type RECORD (with a separate
> FieldSelect on top, in this case), and then we don't have enough
> context to figure out which record type is involved, or indeed
> that different record types could be involved.
>
> My proposed patch fixes things for the case where the caller
> passes a named composite type, but not for passing an anonymous
> record, as you can see in the test cases in the attached.
> (If you don't apply the code patch, the last getf2() call also
> fails, matching the OP's complaint. But the getf1() calls
> still work.)
>
> So really the way we ought to fix this is to upgrade the parser
> APIs so that plpgsql could deal with "$1.f1" as a unit. But
> that seems like a lot of work, and it would certainly not be
> back-patchable.
>
Tested and looks good!
> In the meantime, I'm uncertain whether we want this change or not.
> Duplicating the function cache entry for each composite type
> that gets passed during a session is a pretty expensive solution,
> especially if it only fixes cases that are being written in a
> semi-deprecated fashion.
>
Yeah, maybe we can document it. Or is there any way for the user to
discard the cache entry?
--
Regrads,
Japin Li.
ChengDu WenWu Information Technology Co.,Ltd.
From | Date | Subject | |
---|---|---|---|
Next Message | Kyotaro Horiguchi | 2022-09-09 02:42:16 | Re: BUG #17611: SJIS conversion rule about duplicated characters differ from Windows |
Previous Message | David Rowley | 2022-09-08 21:42:19 | Re: huge memory of Postgresql backend process |