Thread: Text comparison suddenly can't find collation?

Text comparison suddenly can't find collation?

From
"Johann 'Myrkraverk' Oskarsson"
Date:
Hi all,

Why would a string comparison work in one case and not another?  In
the following example, it works to compare a and b, but not a and d.

This is in a C module which calls
 DirectFunctionCall2( text_le, d1, d2 );

DEBUG:  Comparing a == b
DEBUG:  Comparing a == d
ERROR: could not determine which collation to use for string
comparison

I'll try and see if I can come up with a minimal example in a bit.


--   Johann Oskarsson                http://www.2ndquadrant.com/    |[]  PostgreSQL Development, 24x7 Support, Training
andServices  --+--                                                                 |  Blog:
http://my.opera.com/myrkraverk/blog/


Re: Text comparison suddenly can't find collation?

From
Tom Lane
Date:
"Johann 'Myrkraverk' Oskarsson" <johann@2ndquadrant.com> writes:
> Why would a string comparison work in one case and not another?  In
> the following example, it works to compare a and b, but not a and d.

> This is in a C module which calls
>   DirectFunctionCall2( text_le, d1, d2 );

As of 9.1, I'd expect that coding to fail every time.  text_le needs to
be passed a collation, and you aren't doing so.  You need to be using
DirectFunctionCall2Coll.

Where to get the collation from might be an interesting question too,
but without more context it's hard to guess what will be appropriate for
you.
        regards, tom lane