Skip to content

Commit 230fa79

Browse files
committed
rebase to trunk
1 parent 4151639 commit 230fa79

File tree

5 files changed

+87
-36
lines changed

5 files changed

+87
-36
lines changed

clickhouse/columns/geo.cpp

Lines changed: 36 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,13 @@ namespace clickhouse {
3434

3535
template <typename NestedColumnType, Type::Code type_code>
3636
ColumnGeo<NestedColumnType, type_code>::ColumnGeo()
37-
: Column(std::move(CreateGeoType<type_code>())),
37+
: Column(std::move(CreateGeoType<type_code>()), Serialization::MakeDefault(this)),
3838
data_(std::move(CreateColumn<NestedColumnType>())) {
3939
}
4040

4141
template <typename NestedColumnType, Type::Code type_code>
4242
ColumnGeo<NestedColumnType, type_code>::ColumnGeo(ColumnRef data)
43-
: Column(std::move(CreateGeoType<type_code>()))
43+
: Column(std::move(CreateGeoType<type_code>()), Serialization::MakeDefault(this))
4444
, data_(std::move(WrapColumn<NestedColumnType>(std::move(data)))) {
4545
}
4646

@@ -66,16 +66,6 @@ void ColumnGeo<NestedColumnType, type_code>::Append(ColumnRef column) {
6666
}
6767
}
6868

69-
template <typename NestedColumnType, Type::Code type_code>
70-
bool ColumnGeo<NestedColumnType, type_code>::LoadBody(InputStream* input, size_t rows) {
71-
return data_->LoadBody(input, rows);
72-
}
73-
74-
template <typename NestedColumnType, Type::Code type_code>
75-
void ColumnGeo<NestedColumnType, type_code>::SaveBody(OutputStream* output) {
76-
data_->SaveBody(output);
77-
}
78-
7969
template <typename NestedColumnType, Type::Code type_code>
8070
size_t ColumnGeo<NestedColumnType, type_code>::Size() const {
8171
return data_->Size();
@@ -97,6 +87,40 @@ void ColumnGeo<NestedColumnType, type_code>::Swap(Column& other) {
9787
data_.swap(col.data_);
9888
}
9989

90+
template <typename NestedColumnType, Type::Code type_code>
91+
void ColumnGeo<NestedColumnType, type_code>::SetSerializationKind(Serialization::Kind kind) {
92+
switch (kind)
93+
{
94+
case Serialization::Kind::DEFAULT:
95+
serialization_ = Serialization::MakeDefault(this);
96+
break;
97+
default:
98+
throw UnimplementedError("Serialization kind:" + std::to_string(static_cast<int>(kind))
99+
+ " is not supported for column of " + type_->GetName());
100+
}
101+
}
102+
103+
template <typename NestedColumnType, Type::Code type_code>
104+
bool ColumnGeo<NestedColumnType, type_code>::LoadPrefix(InputStream* input, size_t rows) {
105+
return data_->GetSerialization()->LoadPrefix(data_.get(), input, rows);
106+
}
107+
108+
template <typename NestedColumnType, Type::Code type_code>
109+
bool ColumnGeo<NestedColumnType, type_code>::LoadBody(InputStream* input, size_t rows) {
110+
return data_->GetSerialization()->LoadBody(data_.get(), input, rows);
111+
}
112+
113+
template <typename NestedColumnType, Type::Code type_code>
114+
void ColumnGeo<NestedColumnType, type_code>::SavePrefix(OutputStream* output) {
115+
data_->GetSerialization()->SavePrefix(data_.get(), output);
116+
}
117+
118+
template <typename NestedColumnType, Type::Code type_code>
119+
void ColumnGeo<NestedColumnType, type_code>::SaveBody(OutputStream* output) {
120+
data_->GetSerialization()->SaveBody(data_.get(), output);
121+
}
122+
123+
100124
template class ColumnGeo<ColumnTupleT<ColumnFloat64, ColumnFloat64>, Type::Code::Point>;
101125

102126
template class ColumnGeo<ColumnArrayT<ColumnPoint>, Type::Code::Ring>;

clickhouse/columns/geo.h

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,6 @@ class ColumnGeo : public Column {
3232
/// Appends content of given column to the end of current one.
3333
void Append(ColumnRef column) override;
3434

35-
/// Loads column data from input stream.
36-
bool LoadBody(InputStream* input, size_t rows) override;
37-
38-
/// Saves column data to output stream.
39-
void SaveBody(OutputStream* output) override;
40-
4135
/// Clear column data .
4236
void Clear() override;
4337

@@ -49,7 +43,23 @@ class ColumnGeo : public Column {
4943
ColumnRef CloneEmpty() const override;
5044
void Swap(Column& other) override;
5145

46+
void SetSerializationKind(Serialization::Kind kind) override;
47+
5248
private:
49+
/// Loads column prefix from input stream.
50+
bool LoadPrefix(InputStream* input, size_t rows);
51+
52+
/// Loads column data from input stream.
53+
bool LoadBody(InputStream* input, size_t rows);
54+
55+
/// Saves column prefix to output stream.
56+
void SavePrefix(OutputStream* output);
57+
58+
/// Saves column data to output stream.
59+
void SaveBody(OutputStream* output);
60+
61+
friend SerializationDefault<ColumnGeo<NestedColumnType, type_code>>;
62+
5363
std::shared_ptr<NestedColumnType> data_;
5464
};
5565

clickhouse/columns/map.cpp

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@ TypeRef GetMapType(const Type& data_type) {
3030
namespace clickhouse {
3131

3232
ColumnMap::ColumnMap(ColumnRef data)
33-
: Column(GetMapType(data->GetType())), data_(data->As<ColumnArray>()) {
33+
: Column(GetMapType(data->GetType()), Serialization::MakeDefault(this))
34+
, data_(data->As<ColumnArray>()) {
3435
}
3536

3637
void ColumnMap::Clear() {
@@ -44,19 +45,19 @@ void ColumnMap::Append(ColumnRef column) {
4445
}
4546

4647
bool ColumnMap::LoadPrefix(InputStream* input, size_t rows) {
47-
return data_->LoadPrefix(input, rows);
48+
return data_->GetSerialization()->LoadPrefix(data_.get(), input, rows);
4849
}
4950

5051
bool ColumnMap::LoadBody(InputStream* input, size_t rows) {
51-
return data_->LoadBody(input, rows);
52+
return data_->GetSerialization()->LoadBody(data_.get(),input, rows);
5253
}
5354

5455
void ColumnMap::SavePrefix(OutputStream* output) {
55-
data_->SavePrefix(output);
56+
data_->GetSerialization()->SavePrefix(data_.get(), output);
5657
}
5758

5859
void ColumnMap::SaveBody(OutputStream* output) {
59-
data_->SaveBody(output);
60+
data_->GetSerialization()->SaveBody(data_.get(), output);
6061
}
6162

6263
size_t ColumnMap::Size() const {
@@ -76,6 +77,18 @@ void ColumnMap::Swap(Column& other) {
7677
data_.swap(col.data_);
7778
}
7879

80+
void ColumnMap::SetSerializationKind(Serialization::Kind kind) {
81+
switch (kind)
82+
{
83+
case Serialization::Kind::DEFAULT:
84+
serialization_ = Serialization::MakeDefault(this);
85+
break;
86+
default:
87+
throw UnimplementedError("Serialization kind:" + std::to_string(static_cast<int>(kind))
88+
+ " is not supported for column of " + type_->GetName());
89+
}
90+
}
91+
7992
ColumnRef ColumnMap::GetAsColumn(size_t n) const {
8093
return data_->GetAsColumn(n);
8194
}

clickhouse/columns/map.h

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -28,18 +28,6 @@ class ColumnMap : public Column {
2828
/// Appends content of given column to the end of current one.
2929
void Append(ColumnRef column) override;
3030

31-
/// Loads column prefix from input stream.
32-
bool LoadPrefix(InputStream* input, size_t rows) override;
33-
34-
/// Loads column data from input stream.
35-
bool LoadBody(InputStream* input, size_t rows) override;
36-
37-
/// Saves column prefix to output stream.
38-
void SavePrefix(OutputStream* output) override;
39-
40-
/// Saves column data to output stream.
41-
void SaveBody(OutputStream* output) override;
42-
4331
/// Clear column data .
4432
void Clear() override;
4533

@@ -51,6 +39,8 @@ class ColumnMap : public Column {
5139
ColumnRef CloneEmpty() const override;
5240
void Swap(Column&) override;
5341

42+
void SetSerializationKind(Serialization::Kind kind) override;
43+
5444
/// Converts map at pos n to column.
5545
/// Type of row is tuple {key, value}.
5646
ColumnRef GetAsColumn(size_t n) const;
@@ -62,6 +52,20 @@ class ColumnMap : public Column {
6252
ColumnMap(ColumnMap&& map);
6353

6454
private:
55+
/// Loads column prefix from input stream.
56+
bool LoadPrefix(InputStream* input, size_t rows);
57+
58+
/// Loads column data from input stream.
59+
bool LoadBody(InputStream* input, size_t rows);
60+
61+
/// Saves column prefix to output stream.
62+
void SavePrefix(OutputStream* output);
63+
64+
/// Saves column data to output stream.
65+
void SaveBody(OutputStream* output);
66+
67+
friend SerializationDefault<ColumnMap>;
68+
6569
std::shared_ptr<ColumnArray> data_;
6670
};
6771

clickhouse/columns/string.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ ColumnString::ColumnString()
177177
}
178178

179179
ColumnString::ColumnString(size_t element_count)
180-
: Column(Type::CreateString())
180+
: Column(Type::CreateString(), Serialization::MakeDefault(this))
181181
{
182182
items_.reserve(element_count);
183183
// 100 is arbitrary number, assumption that string values are about ~40 bytes long.

0 commit comments

Comments
 (0)