On ons, 2011-03-09 at 18:07 -0500, Tom Lane wrote:
> The first of these errors is OK, but surely the second is not, because
> ||
> doesn't give a fig about collations. I think instead of this:
>
> /* XXX: If we knew which functions required collation
> information,
> * we could selectively set the last argument to true here. */
> funccollid = select_common_collation(pstate, fargs, false);
>
> we need:
>
> /*
> * If we knew which functions required collation information,
> * we could selectively set the last argument to false here,
> * allowing the error to be reported at parse time not
> runtime.
> */
> funccollid = select_common_collation(pstate, fargs, true);
>
> Now the downside of that is that a runtime failure won't give you an
> parse error pointer to indicate which function is having trouble ...
> but having an error pointer for an error that shouldn't be thrown in
> the first place is small consolation.
Sounds reasonable.
Btw., the ultimate plan here was that functions or operators that would
care about collation would be marked as such in pg_proc. That plan
basically just ran out of time, but if you think it'd be useful, maybe
we could reactivate it quickly.