mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 16:12:01 +00:00
dbms: development [#CONV-2944].
This commit is contained in:
parent
957f89f4e3
commit
6b787234ad
@ -98,18 +98,19 @@ public:
|
||||
* - ничего не начинали делать;
|
||||
* - получили все пакеты до EndOfStream;
|
||||
* - получили с сервера эксепшен;
|
||||
* - объект уничтожается из-за эксепшена;
|
||||
* - то больше читать ничего не нужно.
|
||||
*/
|
||||
if (!sent_query || finished || got_exception_from_server)
|
||||
if (!sent_query || finished || got_exception_from_server || std::uncaught_exception())
|
||||
return;
|
||||
|
||||
|
||||
/** Если ещё прочитали не все данные, но они больше не нужны.
|
||||
* Это может быть из-за того, что данных достаточно (например, при использовании LIMIT),
|
||||
* или если на стороне клиента произошло исключение.
|
||||
*/
|
||||
|
||||
/// Отправим просьбу прервать выполнение запроса, если ещё не отправляли.
|
||||
if (!was_cancelled && !std::uncaught_exception())
|
||||
if (!was_cancelled)
|
||||
{
|
||||
LOG_TRACE(log, "Cancelling query because enough data has been read");
|
||||
|
||||
@ -132,16 +133,12 @@ public:
|
||||
return;
|
||||
|
||||
case Protocol::Server::Exception:
|
||||
if (!got_exception_from_server && !std::uncaught_exception())
|
||||
{
|
||||
got_exception_from_server = true;
|
||||
packet.exception->rethrow();
|
||||
}
|
||||
got_exception_from_server = true;
|
||||
packet.exception->rethrow();
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!std::uncaught_exception())
|
||||
throw Exception("Unknown packet from server", ErrorCodes::UNKNOWN_PACKET_FROM_SERVER);
|
||||
throw Exception("Unknown packet from server", ErrorCodes::UNKNOWN_PACKET_FROM_SERVER);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -187,6 +187,7 @@ private:
|
||||
{
|
||||
/// Попросим остальные потоки побыстрее прекратить работу.
|
||||
parent.finish = true;
|
||||
parent.cancel();
|
||||
|
||||
/// Отдаём эксепшен в основной поток.
|
||||
parent.output_queue.push(exception);
|
||||
|
Loading…
Reference in New Issue
Block a user