mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-26 09:32:01 +00:00
clickhouse: fixed progress indication and limits checks with PREWHERE. [#METR-9838]
This commit is contained in:
parent
b5923961ad
commit
5fd53300a9
@ -137,6 +137,9 @@ public:
|
||||
}
|
||||
|
||||
protected:
|
||||
/// Будем вызывать progressImpl самостоятельно.
|
||||
void progress(size_t rows, size_t bytes) {}
|
||||
|
||||
Block readImpl()
|
||||
{
|
||||
Block res;
|
||||
@ -172,6 +175,7 @@ protected:
|
||||
if (range.begin == range.end)
|
||||
remaining_mark_ranges.pop_back();
|
||||
}
|
||||
progressImpl(res.rows(), res.bytes());
|
||||
pre_reader->fillMissingColumns(res);
|
||||
|
||||
/// Вычислим выражение в PREWHERE.
|
||||
@ -181,6 +185,8 @@ protected:
|
||||
if (remove_prewhere_column)
|
||||
res.erase(prewhere_column);
|
||||
|
||||
size_t pre_bytes = res.bytes();
|
||||
|
||||
/** Если фильтр - константа (например, написано PREWHERE 1),
|
||||
* то либо вернём пустой блок, либо вернём блок без изменений.
|
||||
*/
|
||||
@ -197,6 +203,8 @@ protected:
|
||||
|
||||
reader->readRange(range.begin, range.end, res);
|
||||
}
|
||||
|
||||
progressImpl(0, res.bytes() - pre_bytes);
|
||||
}
|
||||
else if (ColumnUInt8 * column_vec = dynamic_cast<ColumnUInt8 *>(&*column))
|
||||
{
|
||||
@ -246,6 +254,8 @@ protected:
|
||||
continue;
|
||||
}
|
||||
|
||||
progressImpl(0, res.bytes() - pre_bytes);
|
||||
|
||||
post_filter.resize(post_filter_pos);
|
||||
|
||||
/// Отфильтруем столбцы, относящиеся к PREWHERE, используя pre_filter,
|
||||
@ -287,6 +297,8 @@ protected:
|
||||
remaining_mark_ranges.pop_back();
|
||||
}
|
||||
|
||||
progressImpl(res.rows(), res.bytes());
|
||||
|
||||
reader->fillMissingColumns(res);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user