"David E. Wheeler" <david(at)kineticode(dot)com> writes:
> I really need case-insensitive string comparison in my database.
Okay ... according to whose locale?
> Ideally there'd be a nice ITEXT data type (and friends, ichar,
> ivarchar, etc.). But of course there isn't, and for years I've just
> used LOWER() on indexes and queries to get the same result.
> Only it turns out that I'm of course not getting the same result.
I think that means you're not using the right locale.
> 1. Does the use of the tolower() C function in the citext data type on
> pgfoundry basically give me the same results as using lower() in my
> SQL has for all these years?
[ broken record... ] Kinda depends on your locale. However, tolower()
is 100% guaranteed not to work for multibyte encodings, so citext is
quite useless if you're using UTF8. This is fixable, no doubt, but
it's not fixed in the project as it stands.
> 2. Isn't the ICU library distributed with PostgreSQL?
Nope, it is not, and we have already pretty much determined that we
do not want to make Postgres depend on ICU. See the archives.
regards, tom lane