在 q 中为 .z.pg 处理程序编写逻辑

writing a logic for .z.pg handler in q

我喜欢为 .z.pg 编写逻辑,因此当远程客户端从端口登录时,我的 table 会填充某些信息,例如:

.ipc.history:enlist`time`handle`user`query`result!(0Np;0Ni;`;::;::)

所以我写出如下逻辑:

.z.pg:{[x] r:value x;`.ipc.history insert (.z.p;.z.w;.z.u;value x;r);r}

基于:

     .z.pg:{[x]0N!(`zpg;x);value x  }

我假设 x 是像“1+1”这样的查询。

所以当我监听端口时:

q queryHistory1.q -p 5000

客户端在 handle:hopen 5000 上做了一些查询 (r);我的 table .ipc.history 被填充了它包含的字段。

虽然我没有收到错误,但我的 table 是空的。

在我自己的测试中,您所拥有的似乎按预期工作。最初,在不更改您的代码的情况下,我的 table 在查询 h"1+1" 客户端

后填充了以下内容
time                          handle  user             query         result
--------------------------------------------------------------------------
                                                       ::            ::
2019.02.11D17:22:04.976012000 560    Liam McGrenaghan  2             2

您是使用正句柄同步查询,还是使用负句柄异步查询? .z.pg 适用于前者,而 .z.ps 适用于 latter.There 也是有关使用 .z 函数在以下 link 处进行监视的更有用的信息。 https://code.kx.com/q/cookbook/using-dotz/

此外,您可能希望在 table 中显示原始查询本身,而不是查询的计算结果,如果是这种情况,则只需使用。

.z.pg:{[x] r:value x;`.ipc.history insert (.z.p;.z.w;.z.u;x;r);r}

其中 x 替换了值 x。然后这返回了一个 table,这可能是您正在寻找的更多内容。

time                          handle user             query         result
-------------------------------------------------------------------------

2019.02.11D17:24:25.008643000 560    Liam McGrenaghan "1+1"         2