diff --git a/doc/src/sgml/xfunc.sgml b/doc/src/sgml/xfunc.sgml index 3f3d46414c..c2433748c8 100644 --- a/doc/src/sgml/xfunc.sgml +++ b/doc/src/sgml/xfunc.sgml @@ -2259,9 +2259,9 @@ PG_FUNCTION_INFO_V1(funcname); 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. @@ -2423,14 +2423,6 @@ CREATE FUNCTION concat_text(text, text) RETURNS text 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 @@ -2445,6 +2437,14 @@ CREATE FUNCTION concat_text(text, text) RETURNS text 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