QSqlDatabase / QSqlQuery прекращает выполнение запроса?

Я использую QSqlDatabase и пытаюсь найти способ убить запущенный запрос (вид необходимой функции клиента sql, который я пишу)

Есть ли способ получить идентификатор для запущенного запроса? (план состоит в том, чтобы просто выполнить команду kill / pg_cancel_backend в другом соединении — необходимо поддерживать PostgreSQL + MySQL)

Я рассмотрел отслеживание списка процессов для идентичного запроса, но что, если причина, по которой он завершается, заключается в том, что он выполняется дважды, а пользователь просто хочет убить определенный? (это сделало бы этот метод не совсем точным, а также было бы супер хакерским)

Редактировать: я не привязан к QSqlDatabase (кроме того, что он является частью фреймворка, который я использую), поэтому я не возражаю против использования чего-то другого, если это единственный способ, но было бы неплохо иметь возможность использовать Это.

У меня нет абсолютно никаких идей, поэтому все будет очень цениться!

1

Решение

В Postgres вы можете определить свой бэкэнд-процесс id выполняя

select pg_backend_pid();

только после того, как соединение установлено. id остается неизменным, пока вы не закроете соединение.

MySQL эквивалент этой функции CONNECTION_ID (),

1

Другие решения


По вопросам рекламы [email protected]