Gabriel Furstenheim Milerud <furstenheim@gmail.com> writes:
> I'm trying to execute the equivalent to '~' with regexp from within C code.
> text * s = cstring_to_text("aa");
> text * p = cstring_to_text("a");
> return DatumGetBool(DirectFunctionCall2(textregexeq, PointerGetDatum(s),
> PointerGetDatum(p)));
> But I'm getting an error with collate:
> ERROR: could not determine which collation to use for regular expression
> HINT: Use the COLLATE clause to set the collation explicitly.
Yes, you need to use DirectFunctionCall2Coll() if you're trying to invoke
a collation-aware function. It's probably good enough to pass
DEFAULT_COLLATION_OID, although if you're inside a SQL function of
your own, passing down whatever collation was passed to you would
be a better plan.
regards, tom lane