Re: how to make collation work

From: Havasvölgyi Ottó <h(dot)otto(at)freemail(dot)hu>
To: <pgsql-novice(at)postgresql(dot)org>
Subject: Re: how to make collation work
Date: 2005-05-02 21:01:48
Message-ID: 005c01c54f5a$281d58b0$ab00a8c0@OTTO
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)freemail(dot)hu>
To: "pgsql novice" <pgsql-novice(at)postgresql(dot)org>; "Havasvölgyi Ottó"
<h(dot)otto(at)freemail(dot)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(dot)otto(at)freemail(dot)hu>
> To: <pgsql-novice(at)postgresql(dot)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(dot)yazici(at)gmail(dot)com>
>> To: "tövis" <tovises(at)freemail(dot)hu>
>> Cc: "PostgreSQL Novice" <pgsql-novice(at)postgresql(dot)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(at)freemail(dot)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(at)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(dot)otto(at)freemail(dot)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(at)postgresql(dot)org
>>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 7: don't forget to increase your free space map settings
>
>

In response to

Browse pgsql-novice by date

  From Date Subject
Next Message Keith Worthington 2005-05-02 21:09:48 OIDs
Previous Message DavidF 2005-05-02 20:29:51 Purpose of pgsql/data/global directory? - permissions error