Andres Freund <and...@anarazel.de> writes: > On 2016-12-08 17:38:38 -0500, Tom Lane wrote: >> The habit of zero-initializing Datums has got exactly nothing to do with >> V0 functions; it's about ensuring consistent results and avoiding >> heisenbugs from use of uninitialized memory. I do not think we should >> drop it.
> Well, V0 functions don't have a real way to get information about NULL, > and we allow non-strict V0 functions, so? Non-strict V0 functions are pretty fundamentally broken, although IIRC there was some hack whereby they could see the isnull marker for their first argument, which is why we didn't just disallow the case. There was never any expectation that checking for value == 0 was an appropriate coding method for detecting nulls, because it couldn't work for pass-by-value data types. Again, the point of initializing those values is not to support broken tests for nullness. It's to ensure consistent behavior in case of buggy attempts to use null values. It's much like the fact that makeNode zero-fills new node structs: that's mostly wasted work, if you want to look at it in a certain way, but it's good for reproducibility. regards, tom lane -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers