Я использую QSqlDatabase и пытаюсь найти способ убить запущенный запрос (вид необходимой функции клиента sql, который я пишу)
Есть ли способ получить идентификатор для запущенного запроса? (план состоит в том, чтобы просто выполнить команду kill / pg_cancel_backend в другом соединении — необходимо поддерживать PostgreSQL + MySQL)
Я рассмотрел отслеживание списка процессов для идентичного запроса, но что, если причина, по которой он завершается, заключается в том, что он выполняется дважды, а пользователь просто хочет убить определенный? (это сделало бы этот метод не совсем точным, а также было бы супер хакерским)
Редактировать: я не привязан к QSqlDatabase (кроме того, что он является частью фреймворка, который я использую), поэтому я не возражаю против использования чего-то другого, если это единственный способ, но было бы неплохо иметь возможность использовать Это.
У меня нет абсолютно никаких идей, поэтому все будет очень цениться!
В Postgres вы можете определить свой бэкэнд-процесс id
выполняя
select pg_backend_pid();
только после того, как соединение установлено. id
остается неизменным, пока вы не закроете соединение.
MySQL эквивалент этой функции CONNECTION_ID ()
,