在 psql 中执行 SQL 不起作用

我正在尝试执行:

SELECT user_id, 0 post_id, current_timestamp granted_at 
FROM badge_posts  
WHERE (:backfill OR user_id IN (:user_ids) OR 0 NOT IN (:post_ids) )
GROUP BY user_id 
HAVING count(*) > 1000

但我收到了关于 :backfill 的错误。有人能告诉我原因吗?

我知道这段 SQL 以前在徽章创建时是可以运行的。

任何以 : 开头的部分都是命名参数,旨在由 mini_sql 在发送给数据库管理系统(DBMS)之前进行替换,其本身并非有效的 SQL 语句。

示例,请参见下方的 [2]:

[1] pry(main)> User.find_by(username: 'anon43915857').id
=> 5

[2] pry(main)> DB.query(
  "SELECT id FROM users WHERE username = :username",
  { username: 'anon43915857' }
).first.id
=> 5

[3] pry(main)> DB.query(
  "SELECT id FROM users WHERE username = ?",
  'anon43915857' 
).first.id
=> 5

谢谢,这很清楚。