@@ -34,13 +34,13 @@ namespace clickhouse {
3434
3535template <typename NestedColumnType, Type::Code type_code>
3636ColumnGeo<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
4141template <typename NestedColumnType, Type::Code type_code>
4242ColumnGeo<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-
7969template <typename NestedColumnType, Type::Code type_code>
8070size_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+
100124template class ColumnGeo <ColumnTupleT<ColumnFloat64, ColumnFloat64>, Type::Code::Point>;
101125
102126template class ColumnGeo <ColumnArrayT<ColumnPoint>, Type::Code::Ring>;
0 commit comments