Julian Satchell <j(dot)satchell(at)eris(dot)qinetiq(dot)com> writes:
> The implementations of lower and upper in
> src/backend/utils/adt/oracle_compat.c use the single byte macros from
> ctype.h to alter individual bytes in the text string.
> If the text is UTF-8 encoded this is totally wrong, and will result in
> an invalid string that is no longer UTF-8.
Only if you use a locale that is assuming a character set that is not
UTF8 but does have characters with the high bit set. I'm not sure that
we can do anything to defend against locale/charset mismatch.
regards, tom lane