Здравый смысл требует, чтобы строки SQL-запроса никогда не собирались вручную.Таким образом, все интерфейсы базы данных предлагают замену параметров, и все пользователи используют ее без исключений. *
Я использую PostgreSQL v10.5, nodejs v8.12.0, node-postgres 7.6.1.
Подстановка параметров работает как положено для SELECT
утверждений:
> await db.query("select from users where id = 'mic'");
(success, 1 row returned)
> await db.query("select from users where id = $1", ["mic"]);
(success, 1 row returned)
Но не работает для LISTEN
утверждений:
> await db.query("listen topicname");
(success)
> await db.query("listen $1", ["topicname"]);
(error: syntax error at or near "$1")
Название темы, которую я хочуслушать динамично.Это исходит из полу-заслуживающих доверия источников, которые не должны контролироваться пользователем.Но зачем идти против всех установленных лучших практик и рисковать?
К сожалению, из моих тестов я боюсь, что PostgreSQL просто не может выполнить подстановку параметров для LISTEN
запросов.
Есть ли какие-либорешение или обходной путь для этого?
*) Это утверждение может быть верным только в каком-то утопическом будущем обществе.