From owner-freebsd-database@FreeBSD.ORG Sat Dec 22 17:09:28 2007 Return-Path: Delivered-To: freebsd-database@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 9BB1416A417 for ; Sat, 22 Dec 2007 17:09:28 +0000 (UTC) (envelope-from ismail@EnderUNIX.org) Received: from istanbul.enderunix.org (freefall.marmara.edu.tr [193.140.143.23]) by mx1.freebsd.org (Postfix) with ESMTP id 9072D13C45A for ; Sat, 22 Dec 2007 17:09:26 +0000 (UTC) (envelope-from ismail@EnderUNIX.org) Received: (qmail 90363 invoked by uid 1040); 22 Dec 2007 17:09:48 -0000 Received: from unknown (HELO ISMAIL) (ismail@127.0.0.1) by 0 with ESMTPA; 22 Dec 2007 17:09:46 -0000 Date: Sat, 22 Dec 2007 19:09:10 +0200 From: Ismail YENIGUL X-Mailer: The Bat! (v3.99.3) Professional Organization: EnderUNIX X-Priority: 3 (Normal) Message-ID: <879443695.20071222190910@EnderUNIX.org> To: Ivan Voras In-Reply-To: References: <1605513356.20071219221424@EnderUNIX.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SMTP-Filter: SurGATE SMTP Filter Engine Release 1.0.1 http://www.endersys.com X-SurGATE-Result: Clean (Content eval: -4.40 points) Cc: freebsd-database@freebsd.org, freebsd-questions@freebsd.org Subject: Re[2]: Turkish character sorting on PostgreSQL X-BeenThere: freebsd-database@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Ismail YENIGUL List-Id: Database use and development under FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Dec 2007 17:09:28 -0000 Hello Ivan, Here is the test result. It seems that the problem is on FreeBSD (6.2) . Because =C3=B6 and =C5=9F are before then z in Turkish alphabet. # cat a.c #include int main() { setlocale(LC_COLLATE, "tr_TR.ISO8859-9"); printf("%d\n",strcoll("=C3=B6", "z")); printf("%d\n",strcoll("=C3=BC", "z")); } ftpfreebsd[~]# ./a 124 130 ftpfreebsd[~]#=20 By the way, LC_COLLATE is link to the ../la_LN.US-ASCII/LC_COLLATE in /usr/share/locale/tr_TR.ISO8859-9 directory. Does this mean that LC_COLLATE is missing for tr_TR.ISO8859-9 ? # ls -al /usr/share/locale/tr_TR.ISO8859-9/ total 14 drwxr-xr-x 2 root wheel 512 Jul 9 15:32 . drwxr-xr-x 157 root wheel 4096 Dec 4 2006 .. lrwxr-xr-x 1 root wheel 28 Jul 9 15:32 LC_COLLATE -> ../la_LN.US-AS= CII/LC_COLLATE lrwxr-xr-x 1 root wheel 26 Jul 9 15:32 LC_CTYPE -> ../la_LN.US-ASCI= I/LC_CTYPE -r--r--r-- 1 root wheel 18 Jul 9 15:32 LC_MESSAGES -r--r--r-- 1 root wheel 34 Jul 9 15:32 LC_MONETARY -r--r--r-- 1 root wheel 8 Jul 9 15:32 LC_NUMERIC -r--r--r-- 1 root wheel 352 Jul 9 15:32 LC_TIME and there is no file spesicific to the tr_TR.ISO8859-9 in /usr/src/share= /colldef/ # ls /usr/src/share/colldef/ Makefile el_GR.ISO8859-7.src la_LN.ISO8859-15.src map= .ISO8859-1 ru_RU.CP1251.src README en_DK.example la_LN.ISO8859-2.src map= .ISO8859-13 ru_RU.CP866.src be_BY.CP1131.src es_ES.ISO8859-1.src la_LN.ISO8859-4.src map= .ISO8859-15 ru_RU.ISO8859-5.src be_BY.CP1251.src es_ES.ISO8859-15.src la_LN.US-ASCII.src map= .ISO8859-2 ru_RU.KOI8-R.src be_BY.ISO8859-5.src et_EE.ISO8859-15.src lt_LT.ISO8859-13.src map= .ISO8859-4 sl_SI.ISO8859-2.src bg_BG.CP1251.src hi_IN.ISCII-DEV.src lt_LT.ISO8859-4.src map= .ISO8859-5 sr_YU.ISO8859-5.src ca_ES.ISO8859-1.src hy_AM.ARMSCII-8.src map.ARMSCII-8 map= .ISO8859-7 sv_SE.ISO8859-1.src ca_ES.ISO8859-15.src is_IS.ISO8859-1.src map.CP1131 map= .KOI8-R sv_SE.ISO8859-15.src cs_CZ.ISO8859-2.src is_IS.ISO8859-15.src map.CP1251 map= .KOI8-U uk_UA.CP1251.src de_DE.ISO8859-1.src kk_KZ.PT154.src map.CP866 map= .PT154 uk_UA.ISO8859-5.src de_DE.ISO8859-15.src la_LN.ISO8859-1.src map.ISCII-DEV pl_= PL.ISO8859-2.src uk_UA.KOI8-U.src Thursday, December 20, 2007, 12:44:34 PM, you wrote: > Ismail YENIGUL wrote: >> Hello, >>=20 >> I am using PostgreSQL 8.2.5 on FreeBSD 6.2. But I have a problem with >> sorting Turkish characters. They are listed after "z" character. >> I initialized the PostgreSQL with the following values: >>=20 >> initdb -E UNICODE --locale=3Dtr_TR.UTF-8 and > Unicode (UTF-8) collations (sorting) don't work on FreeBSD. You can use > PostgreSQL 8.1 and the "ICU" patch for it. >> initdb -E LATIN5 --locale tr_TR.ISO8859-9 > This could work, if the locale is properly defined in the system locale > database. Try creating a small C program that sorts your strings using > strcoll() to verify this - if the small C program works, it's a > PostgreSQL problem. --=20 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + http://www.enderunix.org/ismail http://www.endersys.com.tr + + EnderUNIX SDT @ Tr Endersys Consultancy Ltd. + + ismail ~ enderunix.org ismail.yenigul ~ endersys.com.tr + + Volunteer, Core Team Member Project Manager + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TCP/IP ve A=C4=9F g=C3=BCvenli=C4=9Fi kitab=C4=B1n=C4=B1n 2. bask=C4=B1s=C4= =B1 =C3=A7=C4=B1kt=C4=B1! http://dukkan.acikakademi.com