Merge pull request #21434 from azat/dist-query-SIGSEGV-on-exception-fix

Fix SIGSEGV for distributed queries on failures
This commit is contained in:
Nikolai Kochetov 2021-03-04 11:32:17 +03:00 committed by GitHub
commit b985e33294
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 2 deletions

View File

@ -110,8 +110,7 @@ bool PullingAsyncPipelineExecutor::pull(Chunk & chunk, uint64_t milliseconds)
data->thread = ThreadFromGlobalPool(std::move(func));
}
if (data->has_exception)
std::rethrow_exception(std::move(data->exception));
data->rethrowExceptionIfHas();
bool is_execution_finished = lazy_format ? lazy_format->isFinished()
: data->is_finished.load();

View File

@ -0,0 +1,8 @@
-- this is enough to trigger the regression
SELECT throwIf(dummy = 0) FROM remote('127.1', system.one); -- { serverError 395 }
-- these are just in case
SELECT throwIf(dummy = 0) FROM remote('127.{1,2}', system.one); -- { serverError 395 }
SELECT throwIf(dummy = 0) FROM remote('127.{1,2}', system.one) SETTINGS prefer_localhost_replica=0; -- { serverError 395 }
SELECT throwIf(dummy = 0) FROM remote('127.{1,2}', system.one) SETTINGS prefer_localhost_replica=0, distributed_group_by_no_merge=1; -- { serverError 395 }
SELECT throwIf(dummy = 0) FROM remote('127.{1,2}', system.one) SETTINGS prefer_localhost_replica=0, distributed_group_by_no_merge=2; -- { serverError 395 }