Simplest C function – return (a + b)
Let's start with a simple function, which takes two integer arguments and returns the sum of these. We first present the source code and then will move on to show you how to compile it, load it into PostgreSQL, and then use it as any native function.
add_func.c
A C source file implementing add(int, int) returns int
function looks like the following code snippet:
#include "postgres.h" #include "fmgr.h" PG_MODULE_MAGIC; PG_FUNCTION_INFO_V1(add_ab); Datum add_ab(PG_FUNCTION_ARGS) { int32 arg_a = PG_GETARG_INT32(0); int32 arg_b = PG_GETARG_INT32(1); PG_RETURN_INT32(arg_a + arg_b); }
Let's go over the code explaining the use of each segment:
#include "postgres.h"
: This includes most of the basic definitions and declarations needed for writing any C code for running in PostgreSQL.#include "fmgr.h"
: This includes the definitions forPG_*
macros used in this code.PG_MODULE_MAGIC;
: This is a "magic block" defined infmgr.h
. This block is used by...