|
<< İçindekileri Görüntülemek İçin Tıklayın >> Yer: Teknik Kılavuzlar > Netsim System Agent İstemci Protokolü Referansı > 7. IVEDI oturum protokolü (/ivedi) > 7.9 Dil sunucusu (LSP) kipi: open mode: "lsp" |
MQL metnini hedef lehçeye çeviren dil sunucusu aynı oturum protokolünün bir kipidir; bir WebSocket = bir LSP bağlantısı.
open alanları: login + password (MASTER login'i, parola doğrulanır; SYSADMIN şartı yoktur - bağlantı
GUEST kimliğiyle ve kip kilidiyle çalışır, hiçbir şey yürütmez), mode: "lsp", target? (çevrim hedefi, öndeğer
postgresql), database? (üretim kipi: kayıt adı, boş = MASTER), searchPath? (verilmezse netsim, eklenti,
public), timeZone?, development? (aşağıda). Sunucu bağlantıyı SET CATALOG + SET SEARCH_PATH + #define
__LANGUAGE_SERVER__ TRUE + #mode convert to <target> ile kurar, GUEST kimliğini verir ve kipi kilitler
(#mode / __LANGUAGE_SERVER__ metinden değiştirilemez). Yanıt olağan open yanıtı + mode: "lsp", target,
development; user GUESTtir.
script çevirir: results[] öğeleri sql / sqlNative / text / json / xml (text: çevrilmiş deyim),
warning / info / message / hint / debug (text, varsa line / column) ve error (name, code,
sqlState, message, line, column, file (satırın #include zincirindeki dosyası), statement); uyarı öğeleri
de line / column / file taşır. Bootstrap hataları ajan günlüğüne WARNING düşer (ilk hata dosya:satır:sütun
ile), sıradan çevrim hataları DEBUG1. ok yalnız errorCount 0 ise doğrudur ve errorCount > 0
ise çıktı kullanılmamalıdır (üretilmeyen metni var olanın üzerine yazan bir istemci veri kaybeder). Derleme
bayrakları cmfSQLParams + cmfSaveSource (:ad parametreleri geçer). DML / DDL yalnız metne çevrilir.
Geliştirme kipi (development: true; conf lspDevelopmentMode, öndeğer kapalı): kayıtlı hiçbir veritabanına
bağlanılmaz, oturuma özel bir bellek içi katalog (LSP$DEV<bağlantı>) kurulur ve open yanıtının database'i odur
(searchPath verildiyse uygulanır; bootstrap betiği kendi SET SEARCH_PATH'ini de koşturabilir, öndeğer yoktur).
Oturumun ilk scripti bootstrap: true taşıyorsa metin yürütme kipinde koşar ve şemayı kurar (dil sunucusu
bağlantısında DDL yalnız kataloğu yazar; DML çalışmaz; CREATE / DROP / OPEN / CLOSE DATABASE reddedilir); ardından
- hatalı bitse de - bağlantı çevrim kipine geçip kilitlenir, hatasız şema commit edilir. Bootstrap'siz ilk script
önce kilitlenir. Sonraki bootstrap alanları yok sayılır. close (ya da soketin kopması) kataloğu düşürür.
{"id": 1, "cmd": "open", "login": "admin", "password": "admin", "mode": "lsp", "development": true}
{"id": 2, "cmd": "script", "bootstrap": true, "sql": "create schema netsim; create table netsim.T (id integer);"}
{"id": 3, "cmd": "script", "sql": "select id from T where id = :p"}
-> {"id": 3, "ok": true, "errorCount": 0, "warningCount": 0,
"results": [{"type": "sql", "text": "select j0.id from netsim.t as j0 where j0.id = :p;"}], ...}
{"id": 4, "cmd": "close"}