Re: Allow SQL/plpgsql functions to accept record

From: Jim Nasby <Jim(dot)Nasby(at)BlueTreble(dot)com>
To: Andrew Dunstan <andrew(at)dunslane(dot)net>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Robert Haas" <robertmhaas(at)gmail(dot)com>
Cc: Merlin Moncure <mmoncure(at)gmail(dot)com>, "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: Allow SQL/plpgsql functions to accept record
Date: 2015-04-28 17:44:04
Message-ID: 553FC6E4.6070703@BlueTreble.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On 4/27/15 10:06 PM, Andrew Dunstan wrote:
> My point remains that we really need methods of a) getting the field
> names from generic records and b) using text values to access fields of
> generic records, both as lvalues and rvalues. Without those this feature
> will be of comparatively little value, IMNSHO. With them it will be much
> more useful and powerful.

Sure, and if I had some pointers on what was necessary there I'd take a
look at it. But I'm not very familiar with plpgsql (let alone what we'd
need to do this in SQL), so I'd just be fumbling around. As a reminder,
one of the big issues there seems to be that while plSQL knows what the
underlying type is, plpgsql has no idea, which seriously limits the use
of passing it a record.

In the meantime I've got a patch that definitely works for plSQL and
allows you to handle a record and pass it on to other functions (such as
json_from_record()). Since that's my original motivation for looking at
this, I'd like that patch to be considered unless there's a big drawback
to it that I'm missing. (For 9.6, of course.)
--
Jim Nasby, Data Architect, Blue Treble Consulting
Data in Trouble? Get it in Treble! http://BlueTreble.com

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Jim Nasby 2015-04-28 17:44:44 Re: PL/pgSQL, RAISE and error context
Previous Message Robert Haas 2015-04-28 17:43:49 cache invalidation for PL/pgsql functions