Tom Lane wrote:
Joe Conway <[EMAIL PROTECTED]> writes:
So far so good. But look at this one:
regression=# select dwarray(null,null);
ERROR:  cannot determine ANYARRAY/ANYELEMENT type because input is UNKNOWN

That seems correct to me. What would you expect to happen? There's no type we could assign as the function's actual return type.

I see your point, but mine was that in this case I'd like a NULL returned and I don't really care about the type. ISTM that NULL should be able to morph into any type it needs to.



This call makes it all the way to ExecEvalArray(), which means that dwarray() is getting evaluated even though it is declared STRICT and has been called with NULL inputs. That shouldn't happen, should it?

I think what is happening is that the SQL function is getting inlined, probably because the inlining logic thinks ARRAY[] is strict and so there'd be no change in semantics.

We could probably hack the inlining logic to prevent it from inlining
the function in this scenario, but I wonder whether this doesn't say
that ExecEvalArray is behaving inconsistently.  In other operations, any
NULL in means NULL out.  Shouldn't it simply quietly return a NULL array
if one of the supplied elements is NULL?


That probably makes good sense, at least until we can deal with NULL elements. Would that patch count as a bug fix?

Joe




---------------------------(end of broadcast)--------------------------- TIP 8: explain analyze is your friend

Reply via email to