Thread: array_cat null reasoning

array_cat null reasoning

From
Kev
Date:
Hi,

I'm a bit confused as to the logic of nulls.  I understand that null
is to represent an unknown value.  So it makes sense that the result
of tacking an unknown value onto a known one is unknown, because you
don't know what exactly you just tacked on.  So


   select null::text || 'hello';


...returning NULL makes sense.  But then why doesn't


   select array_cat(null::integer[], '{3}'::integer[]);


...also return null?  Somehow it's known what the result is when
combining an unknown array with a known one, but not when combining an
unknown text with a known one?  Doesn't this seem inconsistent?  If it
does seem inconsistent, should I be careful how to code because this
might change in the future?

Thanks,
Kev

Re: array_cat null reasoning

From
Tom Lane
Date:
Kev <kevinjamesfield@gmail.com> writes:
> ... should I be careful how to code because this
> might change in the future?

Probably.  We couldn't even handle nulls within arrays until a release
or two ago.  I wouldn't be surprised if someone comes up with a proposal
to make null-array handling a bit more consistent in the future.

            regards, tom lane