Skip to content

Commit 173d5d0

Browse files
committed
Keep parent part alive for read task
1 parent 195ea4e commit 173d5d0

File tree

3 files changed

+21
-1
lines changed

3 files changed

+21
-1
lines changed

src/Storages/MergeTree/MergeTreePrefetchedReadPool.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ MergeTreePrefetchedReadPool::PrefetchedReaders::PrefetchedReaders(
5353
MergeTreePrefetchedReadPool & read_prefetch)
5454
: is_valid(true)
5555
, readers(std::move(readers_))
56-
, prefetch_runner(pool, "Prefetch")
56+
, prefetch_runner(pool, "ReadPrepare")
5757
{
5858
prefetch_runner(read_prefetch.createPrefetchedTask(readers.main.get(), priority_));
5959

src/Storages/MergeTree/MergeTreeReadPoolBase.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,11 @@
66
namespace DB
77
{
88

9+
namespace ErrorCodes
10+
{
11+
extern const int LOGICAL_ERROR;
12+
}
13+
914
MergeTreeReadPoolBase::MergeTreeReadPoolBase(
1015
RangesInDataParts && parts_,
1116
VirtualFields shared_virtual_fields_,
@@ -48,6 +53,19 @@ void MergeTreeReadPoolBase::fillPerPartInfos()
4853
MergeTreeReadTaskInfo read_task_info;
4954

5055
read_task_info.data_part = part_with_ranges.data_part;
56+
57+
const auto & data_part = read_task_info.data_part;
58+
if (data_part->isProjectionPart())
59+
{
60+
read_task_info.parent_part = data_part->storage.getPartIfExists(
61+
data_part->getParentPartName(),
62+
{MergeTreeDataPartState::PreActive, MergeTreeDataPartState::Active, MergeTreeDataPartState::Outdated});
63+
64+
if (!read_task_info.parent_part)
65+
throw Exception(ErrorCodes::LOGICAL_ERROR, "Did not find parent part {} for projection part {}",
66+
data_part->getParentPartName(), data_part->getDataPartStorage().getFullPath());
67+
}
68+
5169
read_task_info.part_index_in_query = part_with_ranges.part_index_in_query;
5270
read_task_info.alter_conversions = part_with_ranges.alter_conversions;
5371

src/Storages/MergeTree/MergeTreeReadTask.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ struct MergeTreeReadTaskInfo
5656
{
5757
/// Data part which should be read while performing this task
5858
DataPartPtr data_part;
59+
/// Parent part of the projection part
60+
DataPartPtr parent_part;
5961
/// For `part_index` virtual column
6062
size_t part_index_in_query;
6163
/// Alter converversionss that should be applied on-fly for part.

0 commit comments

Comments
 (0)