]> git.ipfire.org Git - thirdparty/postgresql.git/commit
Improve plpgsql's ability to handle arguments declared as RECORD.
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 Sep 2022 17:23:01 +0000 (13:23 -0400)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 16 Sep 2022 17:23:01 +0000 (13:23 -0400)
commitb3b88d7480b81a7622045a88682296c8d4683dbf
tree03c8f0d0a32724cb07f13e2fc81e18fb0929ef72
parent87fd3c9025da2db0f35b3c898126f32ed35bb15c
Improve plpgsql's ability to handle arguments declared as RECORD.

Treat arguments declared as RECORD as if that were a polymorphic type
(which it is, sort of), in that we substitute the actual argument type
while forming the function cache lookup key.  This allows the specific
composite type to be known in some cases where it was not before,
at the cost of making a separate function cache entry for each named
composite type that's passed to the function during a session.  The
particular symptom discussed in bug #17610 could be solved in other
more-efficient ways, but only at the cost of considerable development
work, and there are other cases where we'd still fail without this.

Per bug #17610 from Martin JurĨa.  Back-patch to v11 where we first
allowed plpgsql functions to be declared as taking type RECORD.

Discussion: https://postgr.es/m/17610-fb1eef75bf6c2364@postgresql.org
src/pl/plpgsql/src/expected/plpgsql_record.out
src/pl/plpgsql/src/pl_comp.c
src/pl/plpgsql/src/sql/plpgsql_record.sql