İSİM¶
CREATE OPERATOR - yeni bir işleç tanımlar
KULLANIM¶
CREATE OPERATOR isim (
PROCEDURE = işlev_ismi
[, LEFTARG = soltaraf_türü ] [, RIGHTARG = sağtaraf_türü ]
[, COMMUTATOR = eşittir_işleci ] [, NEGATOR = değil_işleci ]
[, RESTRICT = sınırlama_işlevi ] [, JOIN = katılım_işlevi ]
[, HASHES ] [, MERGES ]
[, SORT1 = sol_sıralama_işleci ] [, SORT2 = sağ_sıralama_işleci ]
[, LTCMP = küçüktür_işleci ] [, GTCMP = büyüktür_işleci ]
)
AÇIKLAMA¶
CREATE OPERATOR isim adında yeni bir işleç
tanımlar. İşlecin sahibi komutu çalıştıran
kullanıcı olacaktır. Eğer bir şema ismi
belirtilmişse, işleç belirtilen şemada oluşturulur.
Aksi takdirde o an geçerli olan şemada oluşturulur.
İşlecin ismi en fazla NAMEDATALEN-1 (öntanımlı 63)
karakter içerebilir ve sadece şu karakterlere izin verilir:
+ - * / < > = ~ ! @ # % ^ & | ` ?
İsim seçimi ile ilgili bir kaç sınırlama daha
vardır:
- ·
- -- ve /* dizgeleri açıklama
başlangıcını gösterdiğinden, işleç
isminde bulunamazlar.
- ·
- Aşağıdaki karakterlerden en az birini
içermedikçe, bir çok karakterli işleç ismi + veya
- ile bitemez.
-
Örneğin, @- bir işleç ismi olabilirken, *- bir
işleç ismi olamaz. Bu sınırlama sayesinde,
işleç ve terimler arasında boşluk
bırakılmasa bile PostgreSQL, SQL uyumlu komutları
çözümleyebilir.
!= işleci girdide, <> işleci olarak ele alınır,
dolayısıyla bu iki isim daima eşdeğerdir.
En azından
LEFTARG ve
RIGHTARG'dan biri
tanımlanmalıdır. İki terimliler için her ikisi de
tanımlanmalıdır. Artçıl tekterimlilerde sadece
LEFTARG, öncül tekterimlilerde sadece
RIGHTARG
tanımlanmalıdır.
işlev_ismi işlevi
CREATE FUNCTION kullanılarak
evvelce türleri belirtilerek doğru sayıda argümanla (bir
ya da iki) tanımlanmış olmalıdır.
Diğer deyimler isteğe bağlı işleç eniyileme
deyimleridir.
http://www.postgresql.org/uygulamalar/pgsql/xoper-optimization.html adresinde
bunların anlamları ayrıntılı olarak
anlatılmıştır.
PARAMETRELER¶
- isim
- Tanımlanacak işlecin ismi. İzin verilen
karakterler yukarıda açıklanmıştı.
İsim, CREATE OPERATOR myschema.+ (...) örneğinde
olduğu gibi şema nitelemeli olabilir. Değilse,
işleç o anki şemada oluluşturulur. Aynı şema
içinde, farklı veri türleri ile işlem yapan iki
işlecin ismi aynı olabilir.
- işlev_ismi
- Bu işleci gerçeklemede kullanılan
işlev.
- soltaraf_türü
- İşlecin sol tarafındaki terimin veri
türü. Bu seçenek öncül tekterimlilerde
atlanır.
- sağtaraf_türü
- İşlecin sağ tarafındaki terimin veri
türü. Bu seçenek artçıl tekterimlilerde
atlanır.
- öndeç_işleç
- Bu işlecin öndeci.
- değil_işleci
- Bu işlecin olumsuzlayıcısı.
- sınırlama_işlevi
- Bu işleç için sınırlama
seçici işlev.
- katılım_işlevi
- Bu işleç için katılım seçici
işlev.
- HASHES
- Bu işlecin bir çırpılamalı
katılımı desteklediğini belirtir.
- MERGES
- Bu işlecin katıştırmalı
katılımı desteklediğini belirtir.
- sol_sıralama_işleci
- Bu işleç katılımı destekliyorsa,
küçüktür işleci bu işlecin sol taraf veri
türünü sıralar.
- sağ_sıralama_işleci
- Bu işleç katılımı destekliyorsa,
küçüktür işleci bu işlecin sağ taraf
veri türünü sıralar.
- küçüktür_işleci
- Bu işleç katılımı destekliyorsa,
küçüktür işleci bu işlecin girdi veri
türlerini karşılaştırır.
- büyüktür_işleci
- Bu işleç katılımı destekliyorsa,
büyüktür işleci bu işlecin girdi veri
türlerini karşılaştırır.
İsteğe bağlı başka bir argüman ya da
eşittir_işleci'inde bir şema nitelemeli isim belirtmek
için
OPERATOR() sözdizimini kullanın. Örnek:
COMMUTATOR = OPERATOR(myschema.===) ,
EK BİLGݶ
Daha fazla bilgi için:
http://www.postgresql.org/uygulamalar/pgsql/xoper.html
Bir veritabanındaki kullanıcı tanımlı
işleçleri silmek için
DROP OPERATOR [
drop_operator(7)]
kullanılır. Bir veritabanındaki işleçlerde
değişiklik yapmak için
ALTER OPERATOR
[
alter_operator(7)] kullanılır.
ÖRNEKLER¶
Aşağıdaki örnekte, box veri türü için alan
eşitliği ile ilgili yeni bir işleç
tanımlanmaktadır.
CREATE OPERATOR === (
LEFTARG = box,
RIGHTARG = box,
PROCEDURE = area_equal_procedure,
COMMUTATOR = ===,
NEGATOR = !==,
RESTRICT = area_restriction_procedure,
JOIN = area_join_procedure,
HASHES,
SORT1 = <<<,
SORT2 = <<<
-- Sıralama işleçleri verildiğinden, MERGES uygulanır.
-- LTCMP için < ve GTCMP için > varsayılmıştır.
);
UYUMLULUK¶
CREATE OPERATOR bir PostgreSQL oluşumudur. SQL standardında
kullanıcı tanımlı işleçler için bir bahis
yoktur.
İLGİLİ BELGELER¶
ALTER OPERATOR [
alter_operator(7)],
CREATE OPERATOR CLASS [
create_operator_class(7)],
DROP OPERATOR [
drop_operator(7)].
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>,
Nisan 2005