L'exécution de SQL ne fonctionne pas dans psql

J’essaie d’exécuter :

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

mais je reçois une erreur sur :backfill. Quelqu’un peut-il me dire pourquoi ?

Je sais que ce SQL fonctionnait auparavant lors de la création de badges.

Tout ce qui commence par : est un paramètre nommé destiné à être remplacé par mini_sql avant d’être envoyé au SGBD ; ce n’est pas un SQL valide en soi.

Par exemple, voir [2] ci-dessous :

[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

Merci. C’est clair.