The docs for creating aggregates for 9.6 and beyond say: "For aggregate functions whose state_data_type is internal, the combinefunc must not be strict. In this case the combinefunc must ensure that null states are handled correctly and that the state being returned is properly stored in the aggregate memory context."
Since combinefunc with an internal type is only useful when serialfunc and deserialfunc are also defined, why can't the built-in machinery just do the right thing when faced with a strict combinefunc? Cheers, Jeff