|
17 | 17 | #include <Common/WeakHash.h> |
18 | 18 | #include <Common/HashTable/Hash.h> |
19 | 19 | #include <cstring> // memcpy |
| 20 | +#include <IO/ReadHelpers.h> |
20 | 21 |
|
21 | 22 |
|
22 | 23 | namespace DB |
@@ -296,39 +297,35 @@ std::optional<size_t> ColumnArray::getSerializedValueSize(size_t n) const |
296 | 297 | } |
297 | 298 |
|
298 | 299 |
|
299 | | -const char * ColumnArray::deserializeAndInsertFromArena(const char * pos) |
| 300 | +void ColumnArray::deserializeAndInsertFromArena(ReadBuffer & in) |
300 | 301 | { |
301 | | - size_t array_size = unalignedLoad<size_t>(pos); |
302 | | - pos += sizeof(array_size); |
| 302 | + size_t array_size; |
| 303 | + readBinaryLittleEndian<size_t>(array_size, in); |
303 | 304 |
|
304 | 305 | for (size_t i = 0; i < array_size; ++i) |
305 | | - pos = getData().deserializeAndInsertFromArena(pos); |
| 306 | + getData().deserializeAndInsertFromArena(in); |
306 | 307 |
|
307 | 308 | getOffsets().push_back(getOffsets().back() + array_size); |
308 | | - return pos; |
309 | 309 | } |
310 | 310 |
|
311 | | -const char * ColumnArray::deserializeAndInsertAggregationStateValueFromArena(const char * pos) |
| 311 | +void ColumnArray::deserializeAndInsertAggregationStateValueFromArena(ReadBuffer & in) |
312 | 312 | { |
313 | | - size_t array_size = unalignedLoad<size_t>(pos); |
314 | | - pos += sizeof(array_size); |
| 313 | + size_t array_size; |
| 314 | + readBinaryLittleEndian<size_t>(array_size, in); |
315 | 315 |
|
316 | 316 | for (size_t i = 0; i < array_size; ++i) |
317 | | - pos = getData().deserializeAndInsertAggregationStateValueFromArena(pos); |
| 317 | + getData().deserializeAndInsertAggregationStateValueFromArena(in); |
318 | 318 |
|
319 | 319 | getOffsets().push_back(getOffsets().back() + array_size); |
320 | | - return pos; |
321 | 320 | } |
322 | 321 |
|
323 | | -const char * ColumnArray::skipSerializedInArena(const char * pos) const |
| 322 | +void ColumnArray::skipSerializedInArena(ReadBuffer & in) const |
324 | 323 | { |
325 | | - size_t array_size = unalignedLoad<size_t>(pos); |
326 | | - pos += sizeof(array_size); |
| 324 | + size_t array_size; |
| 325 | + readBinaryLittleEndian<size_t>(array_size, in); |
327 | 326 |
|
328 | 327 | for (size_t i = 0; i < array_size; ++i) |
329 | | - pos = getData().skipSerializedInArena(pos); |
330 | | - |
331 | | - return pos; |
| 328 | + getData().skipSerializedInArena(in); |
332 | 329 | } |
333 | 330 |
|
334 | 331 | void ColumnArray::updateHashWithValue(size_t n, SipHash & hash) const |
|
0 commit comments