mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-19 16:20:50 +00:00
better checkpoints for ColumnString
This commit is contained in:
parent
ae1a8393b0
commit
cef9eb80d9
@ -240,6 +240,23 @@ ColumnPtr ColumnString::permute(const Permutation & perm, size_t limit) const
|
|||||||
return permuteImpl(*this, perm, limit);
|
return permuteImpl(*this, perm, limit);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ColumnCheckpointPtr ColumnString::getCheckpoint() const
|
||||||
|
{
|
||||||
|
auto nested = std::make_shared<ColumnCheckpoint>(chars.size());
|
||||||
|
return std::make_shared<ColumnCheckpointWithNested>(size(), std::move(nested));
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColumnString::updateCheckpoint(ColumnCheckpoint & checkpoint) const
|
||||||
|
{
|
||||||
|
checkpoint.size = size();
|
||||||
|
assert_cast<ColumnCheckpointWithNested &>(checkpoint).nested->size = chars.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
void ColumnString::rollback(const ColumnCheckpoint & checkpoint)
|
||||||
|
{
|
||||||
|
offsets.resize_assume_reserved(checkpoint.size);
|
||||||
|
chars.resize_assume_reserved(assert_cast<const ColumnCheckpointWithNested &>(checkpoint).nested->size);
|
||||||
|
}
|
||||||
|
|
||||||
void ColumnString::collectSerializedValueSizes(PaddedPODArray<UInt64> & sizes, const UInt8 * is_null) const
|
void ColumnString::collectSerializedValueSizes(PaddedPODArray<UInt64> & sizes, const UInt8 * is_null) const
|
||||||
{
|
{
|
||||||
|
@ -194,6 +194,10 @@ public:
|
|||||||
offsets.resize_assume_reserved(offsets.size() - n);
|
offsets.resize_assume_reserved(offsets.size() - n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ColumnCheckpointPtr getCheckpoint() const override;
|
||||||
|
void updateCheckpoint(ColumnCheckpoint & checkpoint) const override;
|
||||||
|
void rollback(const ColumnCheckpoint & checkpoint) override;
|
||||||
|
|
||||||
void collectSerializedValueSizes(PaddedPODArray<UInt64> & sizes, const UInt8 * is_null) const override;
|
void collectSerializedValueSizes(PaddedPODArray<UInt64> & sizes, const UInt8 * is_null) const override;
|
||||||
|
|
||||||
StringRef serializeValueIntoArena(size_t n, Arena & arena, char const *& begin) const override;
|
StringRef serializeValueIntoArena(size_t n, Arena & arena, char const *& begin) const override;
|
||||||
|
Loading…
Reference in New Issue
Block a user