Thread: BUG #1069: functions "lower()" and "upper()" not characterset-aware
BUG #1069: functions "lower()" and "upper()" not characterset-aware
From
"PostgreSQL Bugs List"
Date:
The following bug has been logged online: Bug reference: 1069 Logged by: Interzone Email address: info@interzone.gr PostgreSQL version: 7.4 Operating system: Linux 2.4.24 Description: functions "lower()" and "upper()" not characterset-aware Details: the functions "lower()" and "upper()" do not seem to work correctly with ISO_8859_7 values Test case: CREATE DATABASE mediagrk WITH TEMPLATE = template0 ENCODING = 'ISO_8859_7'; CREATE TABLE test1 ( code serial NOT NULL, compname character varying(100) NOT NULL ); INSERT INTO test1 VALUES (1, 'ÅËËÇÍÉÊÁ'); SELECT lower(compname) from test1; if there is a problem (there might be) with the greek characters above, just remember that this is a iso-8859-7 encoded text (and I changed the encoding of the form-page to iso-8859-7 before sending).
"PostgreSQL Bugs List" <pgsql-bugs@postgresql.org> writes: > the functions "lower()" and "upper()" do not seem to work correctly with > ISO_8859_7 values > CREATE DATABASE mediagrk WITH TEMPLATE = template0 ENCODING = 'ISO_8859_7'; upper/lower are driven by the database locale, not the encoding. They are presently broken for multi-byte encodings, but I don't think ISO_8859_7 is multi-byte. regards, tom lane
Tom Lane wrote: > "PostgreSQL Bugs List" <pgsql-bugs@postgresql.org> writes: > >>the functions "lower()" and "upper()" do not seem to work correctly with >>ISO_8859_7 values > > >>CREATE DATABASE mediagrk WITH TEMPLATE = template0 ENCODING = 'ISO_8859_7'; > > upper/lower are driven by the database locale, not the encoding. > > They are presently broken for multi-byte encodings, but I don't think > ISO_8859_7 is multi-byte. Well, ISO_8859_7 is not multi-byte, and you're right: I had: LC_COLLATE: C LC_CTYPE: C I tried initdb -E ISO_8859_7 --locale=el_GR data1 and it all worked wonderfully. > > regards, tom lane Thanks a lot and sorry for the false alarm. Regards Interzone