Re: PG_RETURN_?
От | Richard Huxton |
---|---|
Тема | Re: PG_RETURN_? |
Дата | |
Msg-id | 44578006.9030209@archonet.com обсуждение исходный текст |
Ответ на | Re: PG_RETURN_? (Don Y <pgsql@DakotaCom.Net>) |
Список | pgsql-general |
Don Y wrote: > Richard Huxton wrote: >> Don Y wrote: >>> Hi, >>> >>> I have a set of functions for a data type that return >>> small integers (i.e. [0..12]). I can, of course, represent >>> it as a char, short or long (CHAR, INT16 or INT32). >>> re there any advantages/drawbacks to chosing one particular >>> PG_RETURN_ type over another (realizing that they are >>> effectively just casts)? >> >> If they are integers then an int would be the obvious choice. If you >> are going to treat them as int2 outside the function then int2, >> otherwise just integer. > > Yes, I was more interested in what might be going on "behind the > scenes" inside the server that could bias my choice of WHICH > integer type to use. E.g., if arguments are marshalled as > byte arrays vs. as Datum arrays, etc. (I would suspect the > latter). Since I could use something as small as a char to > represent the values, the choice is more interested in how > OTHER things would be affected... I must admit I've never tested, but I strongly suspect any differences will be below the level you can accurately measure. Certainly from the point of view of 8/16/32 bit integers I'd guess they'd all time the same (they should all end up as a Datum). With a 64-bit CPU I'd guess that would extend to 64 bits too. Hmm - looking at comments it seems int64 is a reference type regardless of CPU (include/postgres.h) > > Oh, it's int2/int4 not int16/int32. > > The *data type* is int2/int4 but the PG_RETURN_? macro is > PG_RETURN_INT16 or PG_RETURN_INT32 -- hence the reason > I referred to them as "CHAR, INT16 or INT32" instead of > "char, int2 or int4" :> You're quite right. I was thinking from the other side. -- Richard Huxton Archonet Ltd
В списке pgsql-general по дате отправления: