SerializationDate.cpp 2.7 KB
Newer Older
A
Anton Popov 已提交
1 2
#include <DataTypes/Serializations/SerializationDate.h>

3 4
#include <IO/ReadHelpers.h>
#include <IO/WriteHelpers.h>
5

6
#include <Columns/ColumnsNumber.h>
A
Anton Popov 已提交
7 8
#include <Formats/ProtobufReader.h>
#include <Formats/ProtobufWriter.h>
9

10 11
#include <Common/assert_cast.h>

12 13 14
namespace DB
{

A
Anton Popov 已提交
15
void SerializationDate::serializeText(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings &) const
16
{
17
    writeDateText(DayNum(assert_cast<const ColumnUInt16 &>(column).getData()[row_num]), ostr);
18 19
}

A
Anton Popov 已提交
20
void SerializationDate::deserializeWholeText(IColumn & column, ReadBuffer & istr, const FormatSettings & settings) const
21 22 23 24
{
    deserializeTextEscaped(column, istr, settings);
}

A
Anton Popov 已提交
25
void SerializationDate::deserializeTextEscaped(IColumn & column, ReadBuffer & istr, const FormatSettings &) const
26
{
27
    DayNum x;
28
    readDateText(x, istr);
29
    assert_cast<ColumnUInt16 &>(column).getData().push_back(x);
30 31
}

A
Anton Popov 已提交
32
void SerializationDate::serializeTextEscaped(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const
33
{
34
    serializeText(column, row_num, ostr, settings);
35 36
}

A
Anton Popov 已提交
37
void SerializationDate::serializeTextQuoted(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const
38
{
39
    writeChar('\'', ostr);
40
    serializeText(column, row_num, ostr, settings);
41
    writeChar('\'', ostr);
42 43
}

A
Anton Popov 已提交
44
void SerializationDate::deserializeTextQuoted(IColumn & column, ReadBuffer & istr, const FormatSettings &) const
45
{
46
    DayNum x;
47 48 49
    assertChar('\'', istr);
    readDateText(x, istr);
    assertChar('\'', istr);
50
    assert_cast<ColumnUInt16 &>(column).getData().push_back(x);    /// It's important to do this at the end - for exception safety.
51 52
}

A
Anton Popov 已提交
53
void SerializationDate::serializeTextJSON(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const
54
{
55
    writeChar('"', ostr);
56
    serializeText(column, row_num, ostr, settings);
57
    writeChar('"', ostr);
58 59
}

A
Anton Popov 已提交
60
void SerializationDate::deserializeTextJSON(IColumn & column, ReadBuffer & istr, const FormatSettings &) const
61
{
62
    DayNum x;
63 64 65
    assertChar('"', istr);
    readDateText(x, istr);
    assertChar('"', istr);
66
    assert_cast<ColumnUInt16 &>(column).getData().push_back(x);
67 68
}

A
Anton Popov 已提交
69
void SerializationDate::serializeTextCSV(const IColumn & column, size_t row_num, WriteBuffer & ostr, const FormatSettings & settings) const
70
{
71
    writeChar('"', ostr);
72
    serializeText(column, row_num, ostr, settings);
73
    writeChar('"', ostr);
74 75
}

A
Anton Popov 已提交
76
void SerializationDate::deserializeTextCSV(IColumn & column, ReadBuffer & istr, const FormatSettings &) const
77
{
78 79
    LocalDate value;
    readCSV(value, istr);
80
    assert_cast<ColumnUInt16 &>(column).getData().push_back(value.getDayNum());
81 82 83
}

}