From: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
---|---|
To: | Ümran Kamar <umrankamar(at)gmail(dot)com> |
Cc: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: alter |
Date: | 2006-07-14 11:03:23 |
Message-ID: | 20060714110323.GC1585@alamut.tdm.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
On Jul 14 12:58, Ümran Kamar wrote:
> mySQL'de denedim, daha database'imi postgreSQL'e gecirmedim. Dogrudur, o
> kadar ayrintili bilmiyorum.
>
> On 7/14/06, Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> wrote:
> >
> >On Jul 14 12:29, Ümran Kamar wrote:
> >> ALTER TABLE table_name CONVERT TO CHARACTER SET utf8 COLLATE
> >> utf8_general_ci ile tekbir tabloda degisiklik yapabiliyorken
> >
> >Bunu gerçekten yapabiliyor olmanız oldukça şaşırtıcı. Bildiğim kadarı
> >ile PostgreSQL tablo bazlı harf sıralama (COLLATE) işlemlerini henüz
> >desteklemiyor, ya da ben bir şeyler kaçırıyorum.
Yine de her tablo için farklı harf sıralaması kullanmak isteyenler
olabilir diye, ufak bir yöntem yazayım:
1. Kullanılmak istenen COLLATE için gerekli locale'yi ayarlayıp, bu
locale altında strcmp() (ve türevleri) çağrısında bulunacak bir
prosedür yazılır (C dili kullanılması tavsiye olunur fakat PL/perl,
PL/python ile de mümkün) ve IMMUTABLE olarak işaretlenir.
(Farzedelim ki utf8_general_ci() prosedürünü geliştirdik.)
2. Ardından ilgili tablolarda ORDER BY çağrıları esnasında ORDER BY
col yerine ORDER BY utf8_general_ci(col) kullanılır.
Bu yöntemde tabloların ilgili sütunları için utf8_general_ci()
kullanılarak INDEX oluşturulmasının gerekliliği neredeyse olmazsa
olmaz.
Ayrıca 1. adım çoğunuza zor gelebilir fakat oldukça kolaydır. Hatta
kolaylığı bir yana, bir kere tek bir locale için yazıldıktan sonra
diğerleri için de geliştirilmesi tek bir satırı değiştirmekten ibaret
olacaktır.
İyi çalışmalar.
P.S. Evet bu çok hoş bir çözüm değil, ama en azından şu an için tek.
Konu hakkında daha fazla bilgi için ilgili tartışmanın bulunduğu
mesajlara -hacker e-posta listesinden ulaşabilirsiniz.
From | Date | Subject | |
---|---|---|---|
Next Message | AL ELK | 2006-07-21 12:36:06 | could not access status of transaction |
Previous Message | Volkan YAZICI | 2006-07-14 09:51:06 | Re: alter |