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...