mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-30 19:42:00 +00:00
Inject default column
This commit is contained in:
parent
23aa6595cd
commit
d4059ba507
@ -1,4 +1,5 @@
|
|||||||
#include <Storages/MergeTree/MergeTreeSequentialBlockInputStream.h>
|
#include <Storages/MergeTree/MergeTreeSequentialBlockInputStream.h>
|
||||||
|
#include <Storages/MergeTree/MergeTreeBlockReadUtils.h>
|
||||||
|
|
||||||
namespace DB
|
namespace DB
|
||||||
{
|
{
|
||||||
@ -28,14 +29,15 @@ MergeTreeSequentialBlockInputStream::MergeTreeSequentialBlockInputStream(
|
|||||||
addTotalRowsApprox(data_part->rows_count);
|
addTotalRowsApprox(data_part->rows_count);
|
||||||
|
|
||||||
header = storage.getSampleBlockForColumns(columns_to_read);
|
header = storage.getSampleBlockForColumns(columns_to_read);
|
||||||
LOG_INFO(log, "Reading columns:" << header.dumpNames());
|
|
||||||
|
|
||||||
fixHeader(header);
|
fixHeader(header);
|
||||||
|
|
||||||
LOG_INFO(log, "Reading columns(after fix):" << header.dumpNames());
|
const NamesAndTypesList & physical_columns = storage.getColumns().getAllPhysical();
|
||||||
|
auto column_names_with_helper_columns = columns_to_read;
|
||||||
|
injectRequiredColumns(storage, data_part, column_names_with_helper_columns);
|
||||||
|
|
||||||
reader = std::make_unique<MergeTreeReader>(
|
reader = std::make_unique<MergeTreeReader>(
|
||||||
data_part->getFullPath(), data_part, header.getNamesAndTypesList(), /* uncompressed_cache = */ nullptr,
|
data_part->getFullPath(), data_part, physical_columns.addTypes(column_names_with_helper_columns), /* uncompressed_cache = */ nullptr,
|
||||||
mark_cache.get(), /* save_marks_in_cache = */ false, storage,
|
mark_cache.get(), /* save_marks_in_cache = */ false, storage,
|
||||||
MarkRanges{MarkRange(0, data_part->marks_count)},
|
MarkRanges{MarkRange(0, data_part->marks_count)},
|
||||||
/* bytes to use AIO */ read_with_direct_io ? 1UL : std::numeric_limits<size_t>::max(),
|
/* bytes to use AIO */ read_with_direct_io ? 1UL : std::numeric_limits<size_t>::max(),
|
||||||
@ -46,7 +48,6 @@ MergeTreeSequentialBlockInputStream::MergeTreeSequentialBlockInputStream(
|
|||||||
void MergeTreeSequentialBlockInputStream::fixHeader(Block & header_block) const
|
void MergeTreeSequentialBlockInputStream::fixHeader(Block & header_block) const
|
||||||
{
|
{
|
||||||
/// Types may be different during ALTER (when this stream is used to perform an ALTER).
|
/// Types may be different during ALTER (when this stream is used to perform an ALTER).
|
||||||
/// NOTE: We may use similar code to implement non blocking ALTERs.
|
|
||||||
for (const auto & name_type : data_part->columns)
|
for (const auto & name_type : data_part->columns)
|
||||||
{
|
{
|
||||||
if (header_block.has(name_type.name))
|
if (header_block.has(name_type.name))
|
||||||
@ -80,7 +81,6 @@ try
|
|||||||
current_row += rows_readed;
|
current_row += rows_readed;
|
||||||
current_mark += (rows_readed / storage.index_granularity);
|
current_mark += (rows_readed / storage.index_granularity);
|
||||||
bool should_reorder = false, should_evaluate_missing_defaults = false;
|
bool should_reorder = false, should_evaluate_missing_defaults = false;
|
||||||
LOG_INFO(log, "Block before filling: " << res.dumpStructure());
|
|
||||||
reader->fillMissingColumns(res, should_reorder, should_evaluate_missing_defaults, res.rows());
|
reader->fillMissingColumns(res, should_reorder, should_evaluate_missing_defaults, res.rows());
|
||||||
|
|
||||||
if (res && should_evaluate_missing_defaults)
|
if (res && should_evaluate_missing_defaults)
|
||||||
|
Loading…
Reference in New Issue
Block a user