İSİM¶
CREATE LANGUAGE - yeni bir yordamsal dil tanımlar
KULLANIM¶
CREATE [ TRUSTED ] [ PROCEDURAL ] LANGUAGE isim
HANDLER eylemci [ VALIDATOR doğrulama_işlevi ]
AÇIKLAMA¶
CREATE LANGUAGE kullanarak, bir PostgreSQL
kulanıcısı bir PostgreSQL veritabanı için
yeni bir yordamsal dil kaydı yapabilir. Bundan sonra bu yeni dilde
işlevler ve tetik yordamları tanımlanabilir. Yeni bir dil
kaydı yapabilmek için kullanıcı, PostgreSQL
ayrıcalıklı kullanıcısı yetkilerine
sahip olmalıdır.
CREATE LANGUAGE aslında, bir dilde yazılmış
işlevlerin çalıştırılmasından
sorumlu bir eylemci ile bu dili ilişkilendirir. Dil eylemcileri
hakkında ayrıntılı bilgi edinmek için
http://www.postgresql.org/uygulamalar/pgsql/xplang.html adresine
bakınız.
Yordamsal dil kaydı her veritabanına ayrı ayrı
yapılmalıdır. Bir dilin bütün
veritabanlarında öntanımlı olması
için, bu dil template1 veritabanında kayıtlı
olmalıdır.
PARAMETRELER¶
- TRUSTED
- Eylemcinin dil için gövenli olduğunu belirtir. Bu,
bir yetkisiz kullanıcı erişim
kısıtlamalarını aşacak herhangi bir
işlevselliği kullanmayacak demektir. Belirtilmezse, sadece
PostgreSQL ayrıcalıklı
kullanıcısının yetkilerine sahip
kullanıcılar bu dili yeni bir işlev tanımlamak
için kullanabilecektir.
- PROCEDURAL
- Gereksizdir (etkisi yoktur).
- isim
- Yeni yordamsal dilin ismi. Dil ismi harf
büyüklüğüne duyarlıdır.
İsim veritabanındaki dil isimleri arasında
eşsiz olmalıdır.
Geriye uyumluluk için isim tek tırnak içine
alınabilir.
- HANDLER eylemci
- eylemci yordamsal dilin işlevlerini
çalıştırmak için
çağrılacak, evvelce kaydedilmiş bir
işlevin ismidir. Bir yordamsal dilin eylemci işlevi C gibi
bir derlenen dilin 1. sürüm çağrı
uzlaşımı ile yazılmış
olmalı ve argüman almayan ve dönüş
türü language_handler olan bir işlev olarak
kaydedilmiş olmalıdır. language_handler
dönüş türü, işlevi bir eylemci
işlev olarak tanımlamakta kullanılan bir yer tutucu
türdür.
- VALIDATOR doğrulama_işlevi
- doğrulama_işlevi yeni dilde yeni bir işlev
oluşturulduğunda yeni işlevi doğrulamak
için çağrılacak evvelce kaydedilimiş
bir işlevin ismidir. Böyle bir işlev belirtilmezse,
yeni bir işlev oluşturulduğunda
sınanmayacaktır. Doğrulama işlevi, yeni
oluşturulacak işlevin nesne kimliği için oid
türünde bir argüman almalıdır.
İşlev genellikle void döndürecek
şekilde tasarlanır.
Bir doğrulama işlevi genellikle işlev gövdesini
sözdizimsel doğruluk bakımından inceler, ama
işlevin diğer özelliklerine de (dilin
desteklemediği bir argüman türü
kullanılmış mı, acaba; gibi) bakar. Bir
hatayı sinyallemek için, doğrulama işlevi
ereport() işlevini kullanmalıdır.
İşlevin dönüş değeri yok
sayılır.
EK BİLGݶ
Bu komut normalde doğrudan kullanıcılar tarafından
çalıştırılmaz. Yordamsal diler için
PostgreSQL dağıtımında bulunan
createlang(1) aracı kullanılmalıdır. Bu
araç ayrıca, doğru eylemciyi de kuracaktır. (
createlang yerine
CREATE LANGUAGE'de kullanılabilir.)
PostgreSQL'in 7.3 sürümünden önce, eylemci
işlevin language_handler türünde değil, opaque
türde yer tutucu döndürmesi gerekirdi. Eski
döküm dosyalarını desteklemek için
CREATE LANGUAGE opaque türde değer döndüren
bir işlevi kabul edecektir, ama işlevin,
dönüş türü language_handler olacak
şekilde bildirilmesinin gerektiğini bildiren bir uyarı
gösterecektir.
Yeni bir işlev oluşturmak için
CREATE FUNCTION
[
create_function(7)] kullanılır.
Bir yordamsal dili veritabanından kaldırmak için
DROP
LANGUAGE [
drop_language(7)] ya da daha iyisi
droplang(1)
aracını kullanın.
Sistem kataloğu pg_language (bkz.
http://www.postgresql.org/uygulamalar/pgsql/catalog-pg-language.html), o an
kurulu olan diller hakkındaki bilgileri kaydeder. Ayrıca,
createlang kurulu dilleri listelemek için bir
seçeneğe sahiptir.
Bir kullanıcının bir yordamsal dili kullanabilmesi
için,
USAGE yetkisi olması gerekir. Eğer dilin
güvenilir olduğu biliniyorsa,
createlang herkese bu izni
özdevinimli olarak verir.
ÖRNEKLER¶
Aşağıdaki iki komut sırayla
çalıtırılarak yeni bir dilin ve eylemcisinin
kaydını yapacaktır.
CREATE FUNCTION plsample_call_handler() RETURNS language_handler
AS '$libdir/plsample'
LANGUAGE C;
CREATE LANGUAGE plsample
HANDLER plsample_call_handler;
UYUMLULUK¶
CREATE LANGUAGE bir PostgreSQL oluşumudur.
İLGİLİ BELGELER¶
ALTER LANGUAGE [
alter_language(7)],
CREATE FUNCTION [
create_function(7)],
DROP LANGUAGE [
drop_language(7)],
GRANT [
grant(7)],
REVOKE [
revoke(7)],
createlang(1),
droplang(1).
ÇEVİREN¶
Nilgün Belma Bugüner <nilgun (at)
belgeler·gen·tr>, Nisan 2005