Мы создаем приложение elixir и используем ecto для подключения к нашей базе данных. Одной из ролей приложения является создание отчетов на основе нашего хранилища событий. Мы решили написать код для этих отчетов в формате SQL.
. Мне нужно создать временное представление с некоторыми параметрами. Рассмотрим следующий код:
Ecto.Adapters.SQL.query!(
Repo,
"CREATE VIEW events_view AS SELECT * FROM events WHERE type = $1",
["hello world"]
)
# This will fail with the following error:
# (ArgumentError) parameters must be of length 0 for query [...]
Приведенный выше код с одним параметром не работает (очевидно, на уровне ecto / postgrex). Однако удаление аргумента завершается ошибкой запроса на уровне postgres.
Ecto.Adapters.SQL.query!(
Repo,
"CREATE VIEW events_view AS SELECT * FROM events WHERE type = $1",
[]
)
# And this will fails because Postgres complains about a missing parameter
# (Postgrex.Error) ERROR 42P02 (undefined_parameter) there is no parameter $1
Я использовал этот способ передачи параметров для множества запросов, включая запросы SELECT и CREATE TABLE. Тем не менее, по какой-то причине CREATE VIEW, похоже, не принимает аргументов.
Есть идеи, как мне это исправить?