Moin,
On 2019-10-20 16:27, Tom Lane wrote:
> Tels <nospam-pg-abuse@bloodgate.com> writes:
>> On 2019-10-20 13:30, Andreas Karlsson wrote:
>>> Agreed, this sounds like something useful to do since virtually all
>>> strict functions cannot return NULL, especially the ones which are
>>> used in tight loops. The main design issue seems to be to think up a
>>> name for this new level of strictness which is not too confusing for
>>> end users.
>
>> STRICT NONULL? That way you could do
>
>> CREATE FUNCTION f1 ... STRICT;
>> CREATE FUNCTION f2 ... STRICT NONULL;
>> CREATE FUNCTION f3 ... NONULL;
>
>> and the last wold throw "not implementet yet"? "NEVER RETURNS NULL"
>> would also ryme with the existing "RETURNS NULL ON NULL INPUT", but I
>> find the verbosity too high.
>
> "RETURNS NOT NULL", perhaps? That'd have the advantage of not
> requiring
> any new keyword.
Hm, yes, that would be a good compromise on verbosity and align even
better the other "RETURNS ..." variants.
> I'm a little bit skeptical of the actual value of adding this
> additional
> level of complexity, but I suppose we can't determine that reliably
> without doing most of the work :-(
Maybe it would be possible to simulate the effect somehow? Or at least
we could try to find practical queries where the additional information
results in a much better plan if RETRUNS NOT NULL was set.
Best regards,
Tels