Re: c language functions

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Rodrigo Barboza <rodrigombufrj(at)gmail(dot)com>
Cc: Robert Haas <robertmhaas(at)gmail(dot)com>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: c language functions
Date: 2013-04-03 18:39:39
Message-ID: 20716.1365014379@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Rodrigo Barboza <rodrigombufrj(at)gmail(dot)com> writes:
> Why not useful?
> If I don't make it receive anyelement, I will have to create an add
> function for each type.

If you make it anyelement, then you're contracting to be able to add
any datatype whatsoever to a my_uint. This is nonsensical.

You'd be better off declaring several specific addition functions,
one for each other type. This will be an order of magnitude easier
to write, and probably run an order of magnitude faster too, because
just checking to see what type you got would already be significantly
more expensive than adding a couple of integers ought to be.

Look at the built-in types and functions for precedent. There are
indeed separate functions for int2 + int2, int2 + int4, int4 + int2,
int4 + int4, etc etc. If we were starting from scratch, we might reduce
that to just int4 + int4 and rely on the implicit coercion from int2 to
int4 to handle the other cases; but there's no way we'd put in run-time
type determination.

regards, tom lane

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Alvaro Herrera 2013-04-03 18:41:05 Re: CREATE EXTENSION BLOCKS
Previous Message Kevin Grittner 2013-04-03 18:28:15 Re: [PATCH] Exorcise "zero-dimensional" arrays (Was: Re: Should array_length() Return NULL)