I wrote: > aggregate_state would have no other uses in the system, and its input > and output functions would raise an error, so type safety is assured > --- there would be no way to call either the sfunc or ffunc "manually", > except by passing a NULL value, which should be safe because that's what > they'd expect as the aggregate initial condition.
Um, no, I take that back, unless you want to invent a separate pseudotype for each such aggregate. Otherwise you can crash it with my_ffunc(your_sfunc(null, whatever)) because my_ffunc will be expecting a datastructure different from what it gets. Maybe having a check for AggState call context is enough of a defense for that, but I'm not really satisfied. Back to the drawing board ... regards, tom lane ---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster