A quick comment on the patch
v43-0005-Add-UPDATE-DELETE-FOR-PORTION-OF.patch
regarding the code in transformForPortionOfClause() and the additions
you made to lsyscache.c:
What you are doing is taking a type OID and a function OID and then
converting them back to name and namespace and then building a node and
then feeding that node back through the parse analysis transformation.
This all seems quite fishy and cumbersome. I think instead of building
a FuncCall and transforming it, try to build a FuncExpr directly. Then
you wouldn't need these new helper functions, which would also reduce
the surface area of your patch.
Additional mini-comment:
#include "utils/rangetypes.h"
in src/include/nodes/execnodes.h appears to be unnecessary (but it is
then required in src/backend/commands/trigger.c).