On Wed, Jan 12, 2011 at 2:16 AM, Martijn van Oosterhout
<klep...@svana.org> wrote:
> On Tue, Jan 11, 2011 at 09:24:08PM -0500, Robert Haas wrote:
>> commit 6c412f0605afeb809014553ff7ad28cf9ed5526b
>> Author: Tom Lane <t...@sss.pgh.pa.us>
>> Date:   Sun May 1 18:56:19 2005 +0000
>>
>>     Change CREATE TYPE to require datatype output and send functions to have
>>     only one argument.  (Per recent discussion, the option to accept multiple
>>     arguments is pretty useless for user-defined types, and would be a likely
>>     source of security holes if it was used.)  Simplify call sites of
>>     output/send functions to not bother passing more than one argument.
>>
>> ...but I don't understand the motivation behind it.
>
> IIRC, the issue is that a type output function has to interpret a
> Datum. Type output functions can also be called by users, so it is not
> guarenteed that the given OID would actually match the type of the
> Datum given. Hence the decision that the output function must be able
> to determine itself what kind of Datum it is dealing with.
>
> Thought experiment: the datum is an integer, but the oid says it's a
> pass-by-ref datum. Now the code may now to use the integer to derefence
> an arbitrary place in memory.

I guess that begs the question of why we need to allow users to call
type output functions directly.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to