PG_GETARG_xxx()
macro that corresponds to the argument's datatype, and the result
is returned using a
- PG_GETARG_xxx()
+ PG_RETURN_xxx()
macro for the return type.
- Here we show the same functions as above, coded in new style:
+ Here we show the same functions as above, coded in version-1 style:
#include <string.h>
Datum
makepoint(PG_FUNCTION_ARGS)
{
+ /* Here, the pass-by-reference nature of Point is not hidden */
Point *pointx = PG_GETARG_POINT_P(0);
Point *pointy = PG_GETARG_POINT_P(1);
Point *new_point = (Point *) palloc(sizeof(Point));
The CREATE FUNCTION commands are the same as
- for the old-style equivalents.
+ for the version-0 equivalents.
test for NULL inputs to a non-strict function, return a NULL
result (from either strict or non-strict functions), return
set
results, and implement trigger functions and
- procedural-language call handlers. For more details see
+ procedural-language call handlers. Version-1 code is also more
+ portable than version-0, because it does not break ANSI C restrictions
+ on function call protocol. For more details see
src/backend/utils/fmgr/README in the source
distribution.