Tom Lane wrote:
> You'd have to reference the underlying function.
That's what I thought, but I thought maybe I was missing something.
> I think what Peter is really asking is whether the implementation
> function for || will serve for this purpose, rather than making an
> additional one.
But, as I said in my other post a moment ago, that then implies (at
least to me) that the underlying function needs to be documented as an
"end user" function, rather than an "internal" one.
> That particular manifestation is not relevant; I think you mean this
> one:
>
> regression=# select '{}'::int4[] || 2; ERROR: Arrays greater than
> one-dimension are not supported
I just wanted to show that the issue pre-existed the new functions. I
think they are both caused by the fact that an empty array has *no*
dimensions (clearly the error message in the new array functions could
be better).
> In both cases I think it's mostly a matter of defining a defensible
> behavior, which is probably not that hard, but no one's yet gotten
> annoyed enough to try to fix it.
It is probably easy enough to work around in the array concatenation
functions. Would it be defensible to say that ('{}'::int4[] || 2) should
produce ('{2}'::int4[]), i.e. a one-dimensional integer array with one
element?
Joe