You've already forked mariadb-columnstore-engine
mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-07-30 19:23:07 +03:00
feat(bytestream): serialize long strings in the common way
This commit is contained in:
committed by
Alexey Antipovsky
parent
4bea7e59a0
commit
21ebd1ac20
@ -157,7 +157,14 @@ void StringStore::serialize(ByteStream& bs) const
|
||||
bs.append(mc->data, mc->currentSize);
|
||||
}
|
||||
|
||||
bs.setLongStrings(longStrings);
|
||||
bs << (uint8_t)useOnlyLongStrings();
|
||||
RGDataSizeType sz = longStrings.size();
|
||||
bs << sz;
|
||||
for (const auto& ls : longStrings)
|
||||
{
|
||||
mc = reinterpret_cast<MemChunk*>(ls.get());
|
||||
bs.append(ls.get(), mc->currentSize + sizeof(*mc));
|
||||
}
|
||||
}
|
||||
|
||||
void StringStore::deserialize(ByteStream& bs)
|
||||
@ -194,9 +201,17 @@ void StringStore::deserialize(ByteStream& bs)
|
||||
memcpy(mc->data, buf, size);
|
||||
bs.advance(size);
|
||||
}
|
||||
|
||||
longStrings = bs.getLongStrings();
|
||||
return;
|
||||
bs >> tmp8;
|
||||
useOnlyLongStrings(tmp8);
|
||||
bs >> size;
|
||||
longStrings.resize(size);
|
||||
for (i = 0; i < size; i++)
|
||||
{
|
||||
mc = reinterpret_cast<MemChunk*>(bs.buf());
|
||||
longStrings[i].reset(new uint8_t[mc->currentSize + sizeof(*mc)]);
|
||||
memcpy(longStrings[i].get(), bs.buf(), mc->currentSize + sizeof(*mc));
|
||||
bs.advance(mc->currentSize + sizeof(*mc));
|
||||
}
|
||||
}
|
||||
|
||||
void StringStore::clear()
|
||||
|
Reference in New Issue
Block a user