Передача массива массива в заполнитель условия IN с go sql
Вступление
Я сталкиваюсь с проблемой, когда пытаюсь передать несколько пар значений в состоянии IN. Когда я пытаюсь выполнить запрос в консоли postgres, он работает нормально, но не выполняется при выполнении в go.
Ситуация
Запрос, который я пытаюсь выполнить, имеет следующую форму:
select *
from someTable
where (someTable.colA, someTable.colB) in ($1)
В консоли пытаюсь
select *
from someTable
where (someTable.colA, someTable.colB) in ((val1a, val1b), (val2a, val2b))
работает без нареканий, но не когда
Что я пробовал
Единственное, что заставило меня где-то использовать pq.Array
,
query := "select * from someTable where (someTable.colA, someTable.colB) in ($1)"
pgDb.Query(query, pq.Array([][]interface{}{{"030043B", 49}, {"030002B", 49}}))
Ошибка, которую я получаю, написана на французском языке, но в грубом переводе она, вероятно, соответствует input of composite type columns is not implemented
(Оригинал сообщения l'ajout de colonnes ayant un type composé n'est pas implémenté
).
Последнее решение, которое я мог бы сделать, это вручную заменить в запросе мои параметры, но я бы предпочел избежать. Если дело доходит до того, что все в порядке, это данные, поступающие из БД без ввода данных пользователем, здесь нет возможности для инъекции.
Спасибо за ваше время