7.9 Dil sunucusu (LSP) kipi: open mode: "lsp"

<< İç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 &lt;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"}