如何在clojure中使用yesql插入和更新postgres数组?

Chi*_*365 5 postgresql clojure

我试过传递一个clojure矢量,也尝试了以下格式:

-- name: insert-into-sometable<!
-- inserts in the sometable the lid and uids
INSERT INTO sometable
(lid, uids) values(:lid, ARRAY[:uids])
Run Code Online (Sandbox Code Playgroud)

但这两种方法都会引发数据不匹配错误.

我想如果我可以从查询文件中调用postgres数组函数,那么更新和插入可以很容易地完成.请帮忙.

提前致谢

Eri*_*erg 4

第二次尝试的错误消息给出了微妙的提示:

AssertionError Assert failed: Query argument mismatch.
Expected keys: (:uids])
Actual keys: (:uids)
Missing keys: (:uids])
Run Code Online (Sandbox Code Playgroud)

显然,当 yesql 尝试解析:uids键(因为它附加了数组定义的右括号)时,事情就出问题了。让我们尝试一下其他的东西:

-- name: insert-into-sometable<!
-- inserts in the sometable the lid and uids
INSERT INTO sometable
(lid, uids) values(:lid, ARRAY[ :uids ])
Run Code Online (Sandbox Code Playgroud)

:uids请注意数组括号之间的额外空格。

=> (insert-into-sometable<! {:lid 1, :uids [1 2 42])
;; => 1
Run Code Online (Sandbox Code Playgroud)

对我来说,这像是 yesql 中的一个错误,:uid]永远不应该被解析为有效的密钥。

编辑:本来打算用 yesql 提交一个错误,但它已经在最近发布的 0.5.2 版本中修复了。