- let sth =
- let qs = Dbi.placeholders (List.length msgs) in
- dbh#prepare_cached ("select message_id, inet_message_id, ordering
- from msg_references
- where message_id in " ^ qs ^ "
- order by message_id, ordering") in
- sth#execute (List.map (fun (id, _) -> `Int id) msgs);
- sth#map (function [`Int id; `String inet_message_id; _] ->
- id, inet_message_id
- | _ -> assert false)
+ let ids = List.map fst msgs in
+ let rows =
+ PGSQL(dbh)
+ "select message_id, inet_message_id, ordering
+ from msg_references
+ where message_id in $@ids
+ order by message_id, ordering" in
+ List.map (
+ fun (id, inet_message_id, _) ->
+ id, inet_message_id
+ ) rows