SqlError из-за одинарных кавычек вокруг параметризованного значения для `CREATE DATABASE`

Я использую библиотеку postgresql-simple и запускаю SqlError со следующим:

_ <- execute con "CREATE DATABASE ?" (Only ("example" :: String))

Приводит к ошибке:

SqlError {sqlState = "42601", sqlExecStatus = FatalError, sqlErrorMsg = "syntax error at or near \"'example'\"", sqlErrorDetail = "", sqlErrorHint = ""}

С журналами db:

[postgres-db-b6f75998b-5qnnx db] 2019-12-28 12:28:40.062 UTC [100] ERROR:  syntax error at or near "'example'" at character 17 
[postgres-db-b6f75998b-5qnnx db] 2019-12-28 12:28:40.062 UTC [100] STATEMENT:  CREATE DATABASE 'example' 

Почему вокруг значения добавляются одинарные кавычки?

Возможно ли это из-за того, что postgresql-simple не использует подготовленные операторы?

1 ответ

Согласно https://nikita-volkov.github.io/hasql-benchmarks/

В отличие от postgresql-simple, библиотека использует подготовленные операторы, что позволяет базе данных анализировать операторы SQL только один раз за соединение.

Поэтому я ошибочно предположил, что postgresql-simple будет использовать подготовленные операторы, и, следовательно, он будет добавлять одинарные кавычки вокруг кажущегося строкового значения.

Другие вопросы по тегам