@@ -34,13 +34,13 @@ namespace clickhouse {
34
34
35
35
template <typename NestedColumnType, Type::Code type_code>
36
36
ColumnGeo<NestedColumnType, type_code>::ColumnGeo()
37
- : Column(std::move(CreateGeoType<type_code>())),
37
+ : Column(std::move(CreateGeoType<type_code>()), Serialization::MakeDefault( this ) ),
38
38
data_ (std::move(CreateColumn<NestedColumnType>())) {
39
39
}
40
40
41
41
template <typename NestedColumnType, Type::Code type_code>
42
42
ColumnGeo<NestedColumnType, type_code>::ColumnGeo(ColumnRef data)
43
- : Column(std::move(CreateGeoType<type_code>()))
43
+ : Column(std::move(CreateGeoType<type_code>()), Serialization::MakeDefault( this ) )
44
44
, data_(std::move(WrapColumn<NestedColumnType>(std::move(data)))) {
45
45
}
46
46
@@ -66,16 +66,6 @@ void ColumnGeo<NestedColumnType, type_code>::Append(ColumnRef column) {
66
66
}
67
67
}
68
68
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
-
79
69
template <typename NestedColumnType, Type::Code type_code>
80
70
size_t ColumnGeo<NestedColumnType, type_code>::Size() const {
81
71
return data_->Size ();
@@ -97,6 +87,40 @@ void ColumnGeo<NestedColumnType, type_code>::Swap(Column& other) {
97
87
data_.swap (col.data_ );
98
88
}
99
89
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
+
100
124
template class ColumnGeo <ColumnTupleT<ColumnFloat64, ColumnFloat64>, Type::Code::Point>;
101
125
102
126
template class ColumnGeo <ColumnArrayT<ColumnPoint>, Type::Code::Ring>;
0 commit comments