Hello, With PostgreSQL 8.3.0 the following bug has been introduced with the ILIKE or ~~* operator:
In a database with single-byte encoding as LATIN1 the expression SELECT 'aü' ILIKE '%ü'; returns false. This error is true for every pattern, where a % is followed by a char with a decimal value between 128 and 255. I was able to track down the error to the file src/backend/utils/adt/like_match.c For the single-byte case there are some places where a (signed) char value is compared to the return value auf tolower() which is an int. The 'ü' in Latin1 is -4 as signed char and 252 as int as returned by tolower() which is obviously not equal. It could be fixed, with the appended patch. cu Rolf Jentsch Entwicklung Mitglieder-Systeme Dezentral ElectronicPartner GmbH Mündelheimer Weg 40 40472 Düsseldorf phone: +49-(0)211-4156-0 fax: +49-(0)211-4156-6865 eMail: [EMAIL PROTECTED] Sitz der Gesellschaft Düsseldorf Amtsgericht - Registergericht Düsseldorf - HRB 4078 Geschäftsführer: Oliver Haubrich, Dr. Sven-Olaf Krauß, Karl Trautman --- src/backend/utils/adt/like_match.c 2008-02-28 18:19:30.000000000 +0100 +++ src/backend/utils/adt/like_match.c 2008-02-28 18:19:43.000000000 +0100 @@ -71,7 +71,7 @@ */ #ifdef MATCH_LOWER -#define TCHAR(t) tolower((t)) +#define TCHAR(t) ((char)tolower((t))) #else #define TCHAR(t) (t) #endif ---------------------------(end of broadcast)--------------------------- TIP 1: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly