In a version-1 function, each actual argument is fetched using a
PG_GETARG_xxx()
- macro that corresponds to the argument's data type. In non-strict
+ macro that corresponds to the argument's data type. (In non-strict
functions there needs to be a previous check about argument null-ness
- using PG_ARGNULL_xxx().
+ using PG_ARGISNULL(); see below.)
The result is returned using a
PG_RETURN_xxx()
macro for the return type.
explicitly, using PG_ARGISNULL().
- At first glance, the version-1 coding conventions might appear to be just
- pointless obscurantism, over using plain C calling
- conventions. They do however allow to deal with NULLable
- arguments/return values, and toasted
(compressed or
- out-of-line) values.
-
-
The macro PG_ARGISNULL(n)
allows a function to test whether each input is null. (Of course, doing
this works in both strict and nonstrict functions.
+ At first glance, the version-1 coding conventions might appear
+ to be just pointless obscurantism, compared to using
+ plain C calling conventions. They do however allow
+ us to deal with NULLable arguments/return values,
+ and toasted
(compressed or out-of-line) values.
+
+
Other options provided by the version-1 interface are two
variants of the