İ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