Я пытаюсь выполнить этот запрос с помощью pg-обещания версии 9.2.1, связываясь с Postgres 9.5
Все следующие запросы работают, когда я запускаю его через psql
CLI или Postico,только когда я запускаю его из pg-обещания.
Я начал с этого запроса (я знаю, использование ключевых слов pg для полей - это плохо, но для устаревшего):
await db.many(
`SELECT * FROM "${schemaName}".versions
UNION
SELECT * FROM "${schemaName}".z_transfer_metadata
UNION
SELECT 'version' AS key, "version"::varchar AS value FROM "${schemaName}".modules WHERE parent_id IS NULL`)
Я получил бы эту ошибку от узла:
error: syntax error at or near " SELECT"
at Connection.parseE (/app/node_modules/pg/lib/connection.js:604:11)
at Connection.parseMessage (/app/node_modules/pg/lib/connection.js:401:19)
и от PG:
ERROR: UNION types character varying and bigint cannot be matched at character 133
STATEMENT: SELECT * FROM "the_schema".versions
UNION
SELECT * FROM "the_schema".z_transfer_metadata
UNION
SELECT "version" as key, version::varchar as value FROM "the_schema".modules WHERE parent_id IS NULL
Запрос работал до того, как я добавил этот выбор третьего объединения, поэтому я сократил его доэтот запрос:
`SELECT 'version' AS key, "version"::varchar AS value FROM "${schemaName}".modules WHERE parent_id IS NULL`
, но затем PG выдает мне эту ошибку:
ERROR: syntax error at or near "::" at character 35
STATEMENT: SELECT 'version' AS key, "version"::varchar AS value FROM "the_schema".modules WHERE parent_id IS NULL
Я пробовал несколько вариантов, включая использование CAST
и экранирование кавычек вокруг 'version'
,и большинство экранирующих вариантов работают изначально, но не через pg-обещание.
ERROR: syntax error at or near "AS" at character 41
STATEMENT: SELECT 'version' AS key, CAST("version" AS TEXT) AS value FROM "the_schema".modules WHERE parent_id IS NULL
Как выполнить этот запрос из pg-обещания?