On Sun, Jun 25, 2023, at 11:42, Joel Jacobson wrote: > SELECT hashset_contains('{}'::int4hashset, NULL::int); > > would be False, according to the General Rules. > ... > Applying the same rules, we'd have to return Unknown (which we represent as > null) for: > > SELECT hashset_contains('{null}'::int4hashset, NULL::int); >
Aha! I just discovered to my surprise that the corresponding array queries gives the same result: SELECT NULL = ANY(ARRAY[]::int[]); ?column? ---------- f (1 row) SELECT NULL = ANY(ARRAY[NULL]::int[]); ?column? ---------- (1 row) I have no more objections; let's stick to the same null semantics as arrays and multisets. /Joel