Shachar Shemesh <[EMAIL PROTECTED]> writes:
> One problem detected during that stage, however, was that the program 
> pretty much relies on the collation being case insensitive. I am now 
> trying to gather the info regarding adding case preserving to 
> Postgresql. I already suggested that we do that by changing the 
> procedures, and the idea was turned down. For example, a column UNIQUE 
> constraint must enforce that only one instance of a string be present, 
> case insensitive.

Is there a reason you can't just do
        create unique index on mytable (upper(mycolumn))
?

> Now, one idea that floated through my mind, and I have not yet looked 
> into how difficult it would be to implement was to define a new system 
> wide collation, called, for example, en_USCI.

I don't know anything about the difficulty of this either.  I suspect
that it would be a bad idea to create a collation in which strcoll could
claim that nonidentical strings are equal --- you would likely find that
surprising things break.  You could try it though and see what happens.

> Assuming that fails, how hard would it be to create a case insensitive 
> PostgreSQL?

It would be a serious mistake to try to make a "case insensitive
PostgreSQL", if by that you mean hacking the system structure to enforce
case insensitivity globally.  You could reasonably think about inventing
a case-insensitive textual datatype, however.  (In fact, I'd not be
surprised if someone did that already.)  All you'd really need is to
write a set of case-insensitive comparison operators and define a btree
opclass with them.  Everything else you might want to do could be
handled by making the type binary-equivalent to text and piggybacking
on the existing functions for text.

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to [EMAIL PROTECTED])

Reply via email to