mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-12-01 12:01:58 +00:00
39 lines
1.3 KiB
C++
39 lines
1.3 KiB
C++
#pragma once
|
|
|
|
#include <DataStreams/IBlockInputStream.h>
|
|
#include <Storages/ColumnDefault.h>
|
|
#include <Interpreters/Context.h>
|
|
|
|
|
|
namespace DB
|
|
{
|
|
|
|
/// Adds defaults to columns using BlockDelayedDefaults bitmask attached to Block by child InputStream.
|
|
class AddingDefaultsBlockInputStream : public IBlockInputStream
|
|
{
|
|
public:
|
|
AddingDefaultsBlockInputStream(
|
|
const BlockInputStreamPtr & input,
|
|
const ColumnDefaults & column_defaults_,
|
|
const Context & context_);
|
|
|
|
String getName() const override { return "AddingDefaults"; }
|
|
Block getHeader() const override { return header; }
|
|
|
|
protected:
|
|
Block readImpl() override;
|
|
|
|
private:
|
|
Block header;
|
|
const ColumnDefaults column_defaults;
|
|
const Context & context;
|
|
|
|
void checkCalculated(const ColumnWithTypeAndName & col_read, const ColumnWithTypeAndName & col_defaults, size_t needed) const;
|
|
MutableColumnPtr mixColumns(const ColumnWithTypeAndName & col_read, const ColumnWithTypeAndName & col_defaults,
|
|
const BlockMissingValues::RowsBitMask & defaults_mask) const;
|
|
void mixNumberColumns(TypeIndex type_idx, MutableColumnPtr & col_mixed, const ColumnPtr & col_defaults,
|
|
const BlockMissingValues::RowsBitMask & defaults_mask) const;
|
|
};
|
|
|
|
}
|