Adding functionality to add(int, int)
While our function works, it adds nothing in the preceding code just using SELECT A + B
, but functions written in C are capable of so much more. Let's start adding some more functionality to our function.
Smart handling of NULL arguments
Notice the use of STRICT
keyword in the CREATE FUNCTION add(int a, int b)
in the previously mentioned code. This means that the function will not be called if any of the arguments are NULL
, but instead NULL
is returned straight away. This is similar to how most PostgreSQL operators works, including the +
sign when adding two integers—if any of the arguments are NULL
the complete result is NULL
as well.
Next, we will extend our function to be smarter about NULL
inputs and act like PostgreSQL's sum()
aggregate function, which ignores NULL
values in inputs and still produces sum of all non-null values.
For this, we need to do two things:
Make sure that the function is called when either of the arguments are
NULL
.Handle
NULL
...