7.5 İptal

<< İç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.5 İptal

POST /ivedi/cancel gövde {"connectionId": n, "cancelKey": "..."} (ikisi de open yanıtından). Uç kimliksizdir: cancelKey oturumun sırrıdır. Başka bir HTTP bağlantısından (başka bir işçi süreç) gelir, koşan deyimin bağlantısına bir bayrak koyar; motor onu deyim sınırında ve satır döngüsünde yakalar ve deyim QUERY_CANCELED (27021, SQLSTATE 57014) ile biter, oturum kullanılabilir kalır. Yanıt 200 {"result": true}, eşleşmeyen kimlik/anahtar 200 {"result": false}.

Deyim süre sınırı (statementTimeoutMs, oturum ayarı; conf öndeğeri): execute / executePrepared / fetch / script ve durumsuz uç için aynı iptal yolu bir bekçi iş parçacığından tetiklenir. Deyim QUERY_CANCELED (57014) ile biter, iletisinde (statement timeout: N ms) yazar; scriptte betik o deyimde durur ve yanıt timedOut: true taşır. Oturum kullanılabilir kalır.

7.5.1 Olaylar (POST_EVENT)

Motorun POST_EVENT '<ad>' [USING (<değer>, ...)] deyimi (PSQL) COMMIT'te ajanın mesaj kuyruğuna /event/<VERİTABANI>/<ad> konusuyla yayınlanır (ROLLBACK yayınlamaz); gövde {"event", "database", "params": [...]} (parametreler konumsal). Oturum abone olur, teslim sunucu kaynaklı çerçevedir (id yok):

Komut Alanlar Yanıt
subscribe event (ad ya da * = veritabanının bütün olayları), database? (öndeğer oturumun veritabanı) topic, subscribed
unsubscribe aynı topic, changed

Çerçeve: {"notification": "event", "topic", "sequence", "messageId", "event": {"event", "database", "params": [...]}}; olay dışı bir konu (oturum başka bir kanala aboneyse) {"notification": "message", "topic", ..., "message": "<metin>"}. Kodlama open.encoding (öndeğer JSON). Teslim, soket boştayken yapılır: kuyruğa düşen olay istemcinin bir sonraki komutundan (ping yeter) sonra ya da bekleme sırasında gelir. Aynı kuyruk /message ucundan da okunabilir.

7.5.2 SQL izleme (subscribe event: "trace")

Oturum ajanın bütün oturumlarında (/ivedi, POST /ivedi/execute, betik, zamanlayıcı) koşan her üst düzey deyimin olayını canlı alır. Kalıcı değildir; yalnız abone varken üretilir (abone yokken maliyeti bir sayaç okumasıdır). LSP oturumu abone olamaz.

Komut Alanlar Yanıt
subscribe event: "trace", süzgeç: login?, database? (ikisi büyük-küçük harf duyarsız), kind?, minMs? topic: "/trace", subscribed: true
unsubscribe event: "trace" topic, subscribed: false

Yeniden subscribe süzgeci değiştirir. Çerçeve (id yok):

{"notification": "trace", "trace": {"time": "2026-09-27 21:14:03.512", "database": "TZ", "login": "SYSDBA",
 "connectionId": 7, "kind": "query", "text": "select ad from app.t where id = ?", "paramCount": 1,
 "elapsedUs": 338, "fetchUs": 262, "rows": 1, "inserts": 0, "updates": 0, "deletes": 0,
 "storageSql": ["SELECT AD AS F0, ID AS F1, ROWID AS K FROM T WHERE ((ID = ?))"]}}
  • kind: query (sonuç kümesi döndüren deyim ya da PSQL bloğu), command (DML), block (PSQL), ddl, privilege, transaction, compile (derlenemeyen ya da yetki denetiminde reddedilen deyim), other.
  • text en çok 8000 bayt (fazlası ... ile kesilir); parametre değerleri gönderilmez, yalnız paramCount.
  • elapsedUs deyimin süresi; sonuç kümesinde ilk sayfanın okunması da içindedir (fetchUs, rows = ilk sayfadaki satır; ilk sayfası yazılmayan sonuç kümesinde bu iki alan yoktur).
  • storageSql: deyim sırasında depolama motoruna giden SELECT / INSERT / UPDATE / DELETE metinleri (en çok 50; art arda aynı metin bir kez). Bellek motorunda boştur.
  • Hatalı deyimde error (durum adı) ve message.