On 06/29/2011 05:34 PM, Joe Conway wrote:
> The third key passed to SearchSysCache is CStringGetTextDatum(provider).
> Ultimately FunctionCall2Coll gets called with collation == 0 and
> varstr_cmp fails due to the ambiguity.
>
> Is there something new that should be used in place of
> CStringGetTextDatum that would convey a collation here?
(Sorry about replying to myself again...)
In fmgr.h we have:
8<-------------------------
/* These macros allow the collation argument to be omitted (with a
default of* InvalidOid, ie, no collation). They exist mostly for backwards* compatibility of source code.*/
#define DirectFunctionCall1(func, arg1) \DirectFunctionCall1Coll(func, InvalidOid, arg1)
#define DirectFunctionCall2(func, arg1, arg2) \DirectFunctionCall2Coll(func, InvalidOid, arg1, arg2)
#define DirectFunctionCall3(func, arg1, arg2, arg3) \DirectFunctionCall3Coll(func, InvalidOid, arg1, arg2, arg3)
[...]
8<--------------------------
Perhaps instead of InvalidOid here we should be using DEFAULT_COLLATION_OID?
Joe
--
Joe Conway
credativ LLC: http://www.credativ.us
Linux, PostgreSQL, and general Open Source
Training, Service, Consulting, & 24x7 Support