aboutsummaryrefslogtreecommitdiffstats
path: root/yt/yt/library/column_converters/null_column_converter.cpp
blob: e581f76157613e95e809ed28b7e61bca9ffc1ce3 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include "null_column_converter.h"

#include <yt/yt/client/table_client/logical_type.h>

namespace NYT::NColumnConverters {

using namespace NTableClient;

////////////////////////////////////////////////////////////////////////////////

class TNullColumnWriterConverter
    : public IColumnConverter
{
public:
    TNullColumnWriterConverter(int columnId)
        : ColumnId_(columnId)
    { }

    TConvertedColumn Convert(TRange<TUnversionedRowValues> rowsValues) override
    {
        auto rowCount = rowsValues.size();

        auto column = std::make_shared<TBatchColumn>();

        column->Id = ColumnId_;
        column->Type = SimpleLogicalType(ESimpleLogicalValueType::Null);
        column->ValueCount = rowCount;

        TOwningColumn owner = {
            .Column = std::move(column),
        };

        return {{owner}, owner.Column.get()};
    }

private:
    const int ColumnId_;
};

////////////////////////////////////////////////////////////////////////////////

IColumnConverterPtr CreateNullConverter(int columnId)
{
    return std::make_unique<TNullColumnWriterConverter>(columnId);
}

////////////////////////////////////////////////////////////////////////////////

} // namespace NYT::NColumnConverters