From: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
---|---|
To: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: inet , min/max |
Date: | 2006-08-10 09:06:29 |
Message-ID: | 20060810090629.GF1407@alamut.tdm.local |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
On Aug 10 11:42, Timu EREN wrote:
> İlk olarak ikinci e-postanızda verdiğiniz yanıtı denedim ve açıkcası
> tam olarak istediğim sonucu elde ettim, size yardımlarınızdan dolayı
> çok teşektür ederim,
Timu'cum bu "siz" ayaklarını geçelim istersen. ;-) Ben sana Mecidiyeköy
deyim, Kadıköy otobüs durakları deyim, gece saat 12 sularıydı deyim, sen
anla.
> Şimdi problemin çözümü için kullandığınız yolu anlamak gerekiyor ki
> bir dahaki sefere daha kolay çözülebilinsin. ilk önce bir fonsiyon
> oluşturuyoruz ve inet veri tipi döndürüyor
Doğru.
> iki parametre aldığı
> halde kullanılırken tek parametre ile kullanıyoruz
Hayır. PostgreSQL herhangi bir fonksiyonu çağırdığınızda, onun pg_proc
içinde yer alan fonksiyonlardan hangisi olduğunu şu şekilde karar
veriyor: fonksiyon adı + fonksiyon parametreleri.
Bu durumda max(inet) çağrısında bulunduğumuz zaman, PostgreSQL bizim
oluşturduğumuz max(inet, inet) fonksiyonunu değil, max(inet)
aggregator'ını çağırıyor.
> içerisinde "CASE
> WHEN" ile büyüklük kontrolü yapılıyor ve hangisi büyük ise o geri
> döndürülüyor.
Aynen öyle.
> ancak anlamadığım şey ikinci parametrenin nereden
> geldiği ve "CREATE AGGREGATE" tanımlamasının ne olduğu.
CREATE AGGREGATE, PostgreSQL tarafından sağlanan aggregate oluşturmak
için kullanılan bir (standart olmayan) SQL komutudur. Kendisi hakkında
ayrıntılı bilgi için PostgreSQL dökümantasyonn
Yukarıda CREATE
AGGREGATE max (...); ile ne yaptığımızı kabaca açıklayacak olursam:
CREATE AGGREGATE max (
basetype = inet, -- Diyoruz ki, oluşturulacak aggregator veri tipi
-- olarak inet kabul edecek.[1]
sfunc = max, -- Okunan her bir değerde birinci parametresi
-- <okunan-değer>, ikinci parametresi
-- <bir-önceki-max-çağrısından-dönen-sonuç>
-- olacak şekilde çağrılacak olan fonksiyon.
stype = inet -- Okunan her bir değerde çağrılan fonksiyonun
-- alacağı ikinci parametrenin tipi.
);
Böylece ilgili satırların hepsi max() fonksiyonuna tabi tutulup
üretilen kümülatif sonuçlar ekrana basılıyor.
Umarım anlatabilmişimdir. Ayrıntılı bilgi için PostgreSQL'in kendi
dökümantasyonundan faydalanabilirsin.
İyi çalışmalar.
From | Date | Subject | |
---|---|---|---|
Next Message | Koray Bostancı | 2006-08-10 09:16:41 | Re: postgresql kitap önerisi |
Previous Message | Volkan YAZICI | 2006-08-10 07:09:30 | Re: inet , min/max |