pgsql: Improve plpgsql's ability to handle arguments declared as RECORD

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Improve plpgsql's ability to handle arguments declared as RECORD
Date: 2022-09-16 17:23:20
Message-ID: E1oZF3f-000dNi-V3@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

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

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/bfd6b3bc4e19db19289ae92a17799edae2cdd5f3

Modified Files
--------------
src/pl/plpgsql/src/expected/plpgsql_record.out | 35 ++++++++++++++++++++++++++
src/pl/plpgsql/src/pl_comp.c | 34 ++++++++++++++++++++++---
src/pl/plpgsql/src/sql/plpgsql_record.sql | 11 ++++++++
3 files changed, 76 insertions(+), 4 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Andres Freund 2022-09-16 18:31:35 pgsql: Fix race condition in stats.sql added in 5264add7847
Previous Message Andres Freund 2022-09-16 15:58:08 pgsql: aix: xlc: Use -Wl,-b,expfull for old compiler versions