Re: how to make collation work - Mailing list pgsql-novice

From Havasvölgyi Ottó
Subject Re: how to make collation work
Date
Msg-id 005c01c54f5a$281d58b0$ab00a8c0@OTTO
Whole thread Raw
In response to Re: how to make collation work  (Havasvölgyi Ottó <h.otto@freemail.hu>)
List pgsql-novice
Tövis,

Just do this in psql:

\encoding LATIN2 --set client encoding

create table collation_test(c char(1));  --if default encoding is LATIN2

--fill the table
insert into collation_test values('á');
insert into collation_test values('é');
insert into collation_test values('í');
insert into collation_test values('ó');
insert into collation_test values('ö');
insert into collation_test values('ő');
insert into collation_test values('ú');
insert into collation_test values('ü');
insert into collation_test values('ű');
insert into collation_test values('Á');
insert into collation_test values('É');
insert into collation_test values('Í');
insert into collation_test values('Ó');
insert into collation_test values('Ö');
insert into collation_test values('Ő');
insert into collation_test values('Ú');
insert into collation_test values('Ü');
insert into collation_test values('Ű');
insert into collation_test values('A');
insert into collation_test values('g');
insert into collation_test values('k');
insert into collation_test values('S');

select * from collation_test order by c;

select upper('á'); --'á' for me

select lower('Á'); --'Á' for me I guess



I got all characters correctly in the table query, they were just in the
wrong order.

However, the upper() didn't work correctly for me. I did not try lower()
after that.

By the way what glibc version do you use? How did you manage to get
Hungarian collation work correctly?

Üdv / Best Regards,
Otto


----- Original Message -----
From: "tövis" <tovises@freemail.hu>
To: "pgsql novice" <pgsql-novice@postgresql.org>; "Havasvölgyi Ottó"
<h.otto@freemail.hu>
Sent: Monday, May 02, 2005 6:36 PM
Subject: Re: [NOVICE] how to make collation work


> Exciting!
> Unfortunatelly I do not know how to check this quickly on my server;-(
> Could you sent some simple sequence to check this out?
> Üdv
>    Tövis
> ----- Original Message -----
> From: "Havasvölgyi Ottó" <h.otto@freemail.hu>
> To: <pgsql-novice@postgresql.org>
> Sent: Monday, May 02, 2005 6:19 PM
> Subject: Re: [NOVICE] how to make collation work
>
>
>> Volkan,
>>
>> I passed the desired collation and ctype to initdb.
>> The version of gcc is 3.4. Should I upgrade to 4.0 perhaps?
>> As for filling the table, I did it with psql on the server, setting the
>> client encoding to LATIN2, the same as in the database. Initially it was
>> set
>> to WIN1250.
>> Then I tested the upper() function as well, but they worked only with
>> English characters. For example:
>>
>> select upper('á');
>>
>> I expected 'Á', but I got 'á'. So upper() didn't change this Hungarian
>> character.
>>
>> Best Regards,
>> Otto
>>
>>
>>
>>
>> ----- Original Message -----
>> From: "Volkan YAZICI" <volkan.yazici@gmail.com>
>> To: "tövis" <tovises@freemail.hu>
>> Cc: "PostgreSQL Novice" <pgsql-novice@postgresql.org>
>> Sent: Sunday, May 01, 2005 10:28 PM
>> Subject: Re: [NOVICE] how to make collation work
>>
>>
>> Hi,
>>
>> On 5/1/05, tövis <tovises@freemail.hu> wrote:
>>>   This was help me, on Debian Sarge.
>>>   PostgreSQL problems with collation sequence!
>>>   #dpkg-reconfigure locales        - generate - "hu_HU" and NLS hu_UTF8
>>>   #reboot
>>
>> I know it'll be a little bit offtopic (when considered to list
>> caption), but you don't have to (also you shouldn't) reboot your
>> machine after a locale generation. Just login again to take changes
>> effect. (You know, one of the best side of Linux as a server OS is
>> that you don't have to reboot system after every configuration. Please
>> give up your Micros~1 habbits. :)
>>
>>>   #/etc/init.d/postgresql stop
>>>   #su postgres -> postgres@srv02:
>>>
>>>   empty directory /var/lib/postgres/data
>>>
>>>   /usr/lib/postgresql/bin/initdb -U
>>> postgres --locale=hu_HU --lc-collate=hu_HU -E LATIN2 \
>>>  -D /var/lib/postgres/data -W --pwprompt
>>>   ... set same password for "postgres" root
>>
>> -W and --pwprompt is just the same. Just chose one of 'em.
>>
>> On 5/1/05, "Havasvölgyi Ottó" <h.otto@freemail.hu> wrote:
>> So far I have tried the first
>>> and the second with initdb, set the --locale, --lc-collate
>>> and --lc-ctype
>>> to that locale. But after filling a table with Hunagrian characters, and
>>> selecting it all with order by didn't give the result I expected. The
>>> encoding of the database and the client was both LATIN2. Neither worked
>>> the upper() and lower() functions correct with Hungarian characters.
>>
>> As Tövis used above, you can pass collating locale to the database. If
>> there're still problems in sorting, I advice you for checking your
>> compiler version. (Probably gcc.) For instance, there were same
>> problem for Turkish locale too and we found that it's related with the
>> compiler, not with PostgreSQL.
>>
>> And another question. How did you typed your entries to the database?
>> Using psql or any other client. Would you also try to import from a
>> file which has Hungarian characters?
>>
>> Regards.
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 7: don't forget to increase your free space map settings
>>
>>
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 1: subscribe and unsubscribe commands go to majordomo@postgresql.org
>>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>
>



pgsql-novice by date:

Previous
From: DavidF@nhb.org
Date:
Subject: Purpose of pgsql/data/global directory? - permissions error
Next
From: "Keith Worthington"
Date:
Subject: OIDs