YesQL/pgsql "could not determine data type of parameter "

YesQL/pgsql "could not determine data type of parameter $1"

我正在尝试使用 NULL 为特定搜索和返回索引重用查询(基本上实现了此处讨论的想法 http://dev.solita.fi/2015/12/29/SQL-in-applications.html)。但是,每当我尝试将函数体与 [] 参数一起使用时,我都会得到 ERROR: could not determine data type of parameter

这是 clojure

(defn get-ips
  "Get a list of IPs and their User Ids"
  ([] (ip-addresses {:uids nil}))
  ([uids] (ip-addresses {:uids uids})))

这是sql

-- name: ip-addresses
SELECT ipo.ip_address_id::varchar as address, ipo.user_id
FROM ip_ownerships AS ipo
WHERE :uids IS NULL OR ipo.user_id IN (:uids)

所以我刚刚找到了答案。解决方案是手动转换参数的类型:

-- name: ip-addresses
SELECT ipo.ip_address_id::varchar as address, ipo.user_id
FROM ip_ownerships AS ipo
WHERE :uids::int IS NULL OR ipo.user_id IN (:uids)