I strongly disagree about enforcing /.../ different NULLs on different levels. /.../
I wasn't talking about NULL, I was talking about UNDEFINED. Granted, in the sql case I mentioned, the newly added SqlNull is indeed a NULL and not an UNDEFINED, and that's because there's never any case in sql where a column conditionally exists or not.
However, both UNDEFINED and RXML.nil are of the same nature which is inherently bound to an abstraction level (in hindsight the name RXML.nil I chose was a bit unfortunate; the distinction between an UNDEFINED and a NULL value haven't always been clear to me either).
If a proper NULL value was added to pike, it could indeed be used on different abstraction levels, and this new SqlNull value could be made an alias for it.