@@ -38,9 +38,9 @@ class ColumnFixedLengthObject final : public COWHelper<IColumn, ColumnFixedLengt
38
38
39
39
public:
40
40
using Container = PaddedPODArray<uint8_t >;
41
+ ColumnFixedLengthObject () = delete ;
41
42
42
43
private:
43
- ColumnFixedLengthObject () = delete ;
44
44
ColumnFixedLengthObject (const size_t _item_size_) : _item_size(_item_size_), _item_count(0 ) {}
45
45
ColumnFixedLengthObject (const ColumnFixedLengthObject& src)
46
46
: _item_size(src._item_size),
@@ -63,7 +63,7 @@ class ColumnFixedLengthObject final : public COWHelper<IColumn, ColumnFixedLengt
63
63
}
64
64
65
65
MutableColumnPtr clone_resized (size_t size) const override {
66
- auto res = this -> create (_item_size);
66
+ auto res = create (_item_size);
67
67
68
68
if (size > 0 ) {
69
69
auto & new_col = assert_cast<Self&>(*res);
@@ -110,13 +110,13 @@ class ColumnFixedLengthObject final : public COWHelper<IColumn, ColumnFixedLengt
110
110
void get (size_t n, Field& res) const override { LOG (FATAL) << " get not supported" ; }
111
111
112
112
StringRef get_data_at (size_t n) const override {
113
- return StringRef ( reinterpret_cast <const char *>(&_data[n * _item_size]), _item_size) ;
113
+ return { reinterpret_cast <const char *>(&_data[n * _item_size]), _item_size} ;
114
114
}
115
115
116
116
void insert (const Field& x) override { LOG (FATAL) << " insert not supported" ; }
117
117
118
118
void insert_range_from (const IColumn& src, size_t start, size_t length) override {
119
- const ColumnFixedLengthObject & src_col = assert_cast<const ColumnFixedLengthObject&>(src);
119
+ const auto & src_col = assert_cast<const ColumnFixedLengthObject&>(src);
120
120
CHECK_EQ (src_col._item_size , _item_size);
121
121
122
122
if (length == 0 ) {
@@ -137,7 +137,7 @@ class ColumnFixedLengthObject final : public COWHelper<IColumn, ColumnFixedLengt
137
137
}
138
138
139
139
void insert_from (const IColumn& src, size_t n) override {
140
- const ColumnFixedLengthObject & src_col = assert_cast<const ColumnFixedLengthObject&>(src);
140
+ const auto & src_col = assert_cast<const ColumnFixedLengthObject&>(src);
141
141
DCHECK (_item_size == src_col._item_size ) << " dst and src should have the same _item_size "
142
142
<< _item_size << " " << src_col._item_size ;
143
143
size_t old_size = size ();
@@ -146,10 +146,16 @@ class ColumnFixedLengthObject final : public COWHelper<IColumn, ColumnFixedLengt
146
146
}
147
147
148
148
void insert_data (const char * pos, size_t length) override {
149
- LOG (FATAL) << " insert_data not supported" ;
149
+ size_t old_size = size ();
150
+ resize (old_size + 1 );
151
+ memcpy (&_data[old_size * _item_size], pos, _item_size);
150
152
}
151
153
152
- void insert_default () override { LOG (FATAL) << " insert_default not supported" ; }
154
+ void insert_default () override {
155
+ size_t old_size = size ();
156
+ resize (old_size + 1 );
157
+ memset (&_data[old_size * _item_size], 0 , _item_size);
158
+ }
153
159
154
160
void pop_back (size_t n) override { LOG (FATAL) << " pop_back not supported" ; }
155
161
@@ -281,9 +287,9 @@ class ColumnFixedLengthObject final : public COWHelper<IColumn, ColumnFixedLengt
281
287
282
288
size_t old_count = _item_count;
283
289
resize (old_count + num);
284
- auto dst = _data.data () + old_count * _item_size;
290
+ auto * dst = _data.data () + old_count * _item_size;
285
291
for (size_t i = 0 ; i < num; i++) {
286
- auto src = data_array + start_offset_array[i];
292
+ auto * src = data_array + start_offset_array[i];
287
293
uint32_t len = len_array[i];
288
294
dst += i * _item_size;
289
295
memcpy (dst, src, len);
0 commit comments