EnderUNIX Team.


EnderUNIX İpucu

Arkadaşıma gönder , Ana Sayfa

[ PostgreSQL ]

"PostgreSQL 8.2 ve Turkce Siralama Sorunu" - Mesut GÜLNAZ - (2007-12-24 14:34:55)   [3612]

PostgreSQL'de 8.2 versiyonunda Turkce Karakter kullanarak database olusturabiliyor ancak bu karakterlerin siralanmasi esnasinda sorunlar ile karsilasiyor ve dogru bir siralama yapamiyorsaniz sorun sizden degil korkmayiniz.

PostgreSQL'de dil destegi icin sistemde tanimli olan locale degeri yerine, initdb komutuna verilen parametreyi dikkate alir. FreeBSD'de UTF8'e gore siralamada sorun varmis. Eger utf8 bir db kullanmak istiyorsaniz Postgresql 8.1 icin ICU yamasi var onu kullanmalisiniz. Bu yamayi da postgresql 8.1 kurarken gelen config ekranda gorebilirsiniz.

Fakat bu yama henuz 8.2 icin uyarlanmamis.

Turkce siralama icin ISO8859-9 (LATIN5) veritabani icin init yapabilirsiniz.
Fakat maalesef "locale" degeri sadece initdb ile pgsql ilklenirken verilebiliyor. (PostgreSQL TODO listesinde bu degerin yeni bir DB olustururken de secebilme ozelligi var)

$ initdb -E LATIN5 --locale tr_TR.ISO8859-9

yapilan testlerde tr_TR.ISO8859-9 icin de siralama sorun oldugunu gorduk.

/usr/share/locale/tr_TR.ISO8859-9/LC_COLLATE dosyasi ../la_LN.US-ASCII/LC_COLLATE baglantili idi. Yani tam tr_TR.ISO8859-9 icin tam bir collate(siralama) destegi yoktu. Bununla ilgili gerekli locale dosyaslari olusturulup FreeBSD'ye gonderildi.

http://www.freebsd.org/cgi/query-pr.cgi?pr=118976

Ilgili dosyalar bugun FreeBSD src altina alindi. Sanirim bugun veya yarin bir cvsup yaparsaniz ilgili dosyalar gelecektir. Tum sistemi make world ile derlemeden asagidaki komutlari vererek de yeni locale degerini sisteme kurabilirsiniz.
# cd /usr/src/share/colldef
# make install clean

Daha sonra /etc/profile ve /etc/rc.conf dosyasinda gerekli Turkce icin gerekli degisiklikleri yapiniz. Bu degisiklikleri daha onceden yaptiysaniz yapmaniza gerek yok.

http://ipucu.enderunix.org/view.php?id=60&lang=tr

Bu komutlardan sonra

$ initdb -E LATIN5 --locale tr_TR.ISO8859-9

komutu ile postgresql db'yi sifirdan olusturabilir ve latin-5 destekli ayni zamanda ISO-8859-9 siralamada sorunu vermeyen bir PostgreSQL servera sahip olabilirsiniz.

Ismail YENIGUL'e tesekkurler...

Arkadaşıma gönder , Ana Sayfa