İSİM¶
CREATE OPERATOR CLASS - yeni bir işleç sınıfı
tanımlar
KULLANIM¶
CREATE OPERATOR CLASS isim [ DEFAULT ] FOR TYPE veri_türü
USING indeksleme_yöntemi
AS { OPERATOR strateji_numarası
işleç_ismi [ ( işleç_türü, işleç_türü ) ]
[ RECHECK ]
| FUNCTION destek_numarası işlev_ismi ( arg_türü [, ...] )
| STORAGE saklama_türü
} [, ... ]
AÇIKLAMA¶
CREATE OPERATOR CLASS yeni bir işleç sınıfı
oluşturur. Bir işleç sınıfı belli bir veri
türünün bir indeks ile nasıl kullanılabileceğini
tanımlar. İşleç sınıfı bu veri
türü ya da indeksleme yöntemi için bazı roller alacak
veya stratejileri üstlenecek işleçleri belirler. Ayrıca,
işleç sınıfı bir indeks sütunu için
seçildiğinde indeksleme yöntemi tarafından
kullanılacak destek yordamlarını da belirtir. Bir
işleç sınıfı tarafından kullanılacak
bütün işleçler ve işlevler işleç
sınıfı oluşturulmadan önce
tanımlanmalıdır.
Bir şema ismi verilmişse, işleç sınıfı
belirtilen şemada oluşturulur. Aksi takdirde o anki şemada
oluşturulur. Aynı şema içinde iki işleç
sınıfı, sadece farklı indeksleme yöntemleri
içinseler aynı isimde olabilirler.
İşleç sınıfını tanımlayan
kullanıcı işleç sınıfının sahibi olur.
Şimdilik, bu kullanıcı ayrıcalıklı
kullanıcı olmak zorundadır. (Bir hatalı işleç
sınıfı tanımının
karışıklığa yol açması ve hatta sunucunun
çökmesine sebep olması nedeniyle bu kısıtlama
konmuştur.)
CREATE OPERATOR CLASS şimdilik işleç sınıfı
tanımının içerdiği tüm işleçlerin ve
işlevlerin indeksleme yöntemi için gerekli olup
olmadığına bakmamaktadır. Geçerli bir işleç
sınıfı tanımlamak kullanıcının
sorumluluğundadır.
Daha fazla bilgi için,
http://www.postgresql.org/uygulamalar/pgsql/xindex.html adresine
bakınız.
PARAMETRELER¶
- isim
- Oluşturulacak işleç
sınıfının ismi (şema nitelemeli olabilir).
- DEFAULT
- Belirtilmişse, işleç sınıfı
kendi veri türü için öntanımlı hale gelir.
Bir veri türü ve indeksleme yöntemi için en fazla bir
işleç sınıfı öntanımlı olabilir.
- veri_türü
- İşleç sınıfının
kullanılacağı sütunun veri türü.
- indeksleme_yöntemi
- İşleç sınıfının
kullanılacağı indeksleme yönteminin ismi.
- strateji_numarası
- İşleç sınıfı ile ilgili bir
işleç için indeksleme yönteminin strateji
numarası
- işleç_ismi
- İşleç sınıfı ile ilgili bir
işlecin ismi (şema nitelemeli olabilir).
- işleç_türü
- Bir işlecin terim veri türü ya da
türleri. İşleç tekterimli ise bunu belirtmek için
NONE. İşleç veri türü işleç
sınıfının veri türü ile aynıysa
belirtilmeyebilir.
- RECHECK
- Belirtilmişse, bu işleç için indeks
kaybolmuş demektir ve dolayısıyla alınan
satırlar, indeks kullanılarak doğrulamak için ve
dolaylı olarak aslında bu işlecin yeterlik deyimine
sokulmasını sağlamak için yeniden
sınanmalıdır.
- destek_numarası
- İşleç sınıfı ile
ilişkili bir işlev için indeksleme yönteminin destek
yordamı numarası.
- işlev_ismi
- İndeksleme yönteminin işleç
sınıfı için destek yordamı olan işlevin ismi
(şema nitelemeli olabilir).
- arg_türü
- İşlev argümanlarının veri
türleri.
- saklama_türü
- Aslında indekste saklanan verinin türü.
Normalde, bu sütun veri türü ile aynıdır, ama
bazı indeksleme yöntemleri farklı bir tür
kullanımına izin verir (şimdilik sadece GiST).
İndeksleme yöntemi farklı bir türün
kullanımına izin vermiyorsa, STORAGE deyimi
kullanılmamalıdır.
OPERATOR,
FUNCTION ve
STORAGE deyimleri herhangi bir
sırada belirtilebilir.
EK BİLGݶ
İşleçler SQL işlevleri tarafından
tanımlanmamalıdır. Bir SQL işlevi çağrılan
sorgu içinde satıriçi işlev gibidir ve eniyileyicinin bu
sorgunun bir indeksle eşleştiğini saptamasını
engelleyecektir.
ÖRNEKLER¶
Aşağıdaki örnekte, _int4 (int4 dizisi) türü
için bir GiST indeksi işleç sınıfı
tanımlanmaktadır. Tam bir örnek için contrib/intarray/
dizinine bakınız.
CREATE OPERATOR CLASS gist__int_ops
DEFAULT FOR TYPE _int4 USING gist AS
OPERATOR 3 &&,
OPERATOR 6 = RECHECK,
OPERATOR 7 @,
OPERATOR 8 ~,
OPERATOR 20 @@ (_int4, query_int),
FUNCTION 1 g_int_consistent (internal, _int4, int4),
FUNCTION 2 g_int_union (bytea, internal),
FUNCTION 3 g_int_compress (internal),
FUNCTION 4 g_int_decompress (internal),
FUNCTION 5 g_int_penalty (internal, internal, internal),
FUNCTION 6 g_int_picksplit (internal, internal),
FUNCTION 7 g_int_same (_int4, _int4, internal);
UYUMLULUK¶
CREATE OPERATOR CLASS bir PostgreSQL oluşumudur. SQL
standardında
CREATE OPERATOR CLASS diye bir deyim yoktur.
İLGİLİ BELGELER¶
ALTER OPERATOR CLASS [
alter_operator_class(7)],
DROP OPERATOR CLASS [
drop_operator_class(7)].
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>,
Nisan 2005