Я использую Python с psycopg2
2.8.6 против Postgres 11.6 (также пробовал на 11.9)
Когда я выполняю запрос
CREATE TABLE tbl AS (SELECT (row_number() over())::integer "id", "col" FROM tbl2)
Код застревание (cursor.execute
никогда не возвращается), завершение транзакции с помощью pg_terminate_backend
удаляет запрос с сервера, но код не освобождается. Однако в этом случае целевая таблица создается.
Ничто не блокирует транзакцию. Внутренний запрос SELECT сам по себе был протестирован, и он работает хорошо.
Я попытался проанализировать подсказки на сервере и обнаружил внутри pg_stat_activity
следующее:
- Транзакция
state
is idle in transaction
wait_event_type
is Client
wait_event
is ClientRead
Тот же эффект происходит, когда я запускаю запрос из редактора SQL (pgModeler), но в этом случае запрос зависает в состоянии «Ожидание» и создается целевая таблица.
Я не уверен, что не так и как действовать дальше . Спасибо!