MCPcopy Create free account
hub / github.com/LadybugDB/ladybug / writeSegment

Method writeSegment

src/storage/table/string_column.cpp:79–110  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

77}
78
79void StringColumn::writeSegment(ColumnChunkData& persistentChunk, SegmentState& state,
80 offset_t dstOffsetInSegment, const ColumnChunkData& data, offset_t srcOffset,
81 length_t numValues) const {
82 auto& stringPersistentChunk = persistentChunk.cast<StringChunkData>();
83 numValues = std::min(numValues, data.getNumValues() - srcOffset);
84 auto& strChunkToWriteFrom = data.cast<StringChunkData>();
85 std::vector<string_index_t> indices;
86 indices.resize(numValues);
87 for (auto i = 0u; i < numValues; i++) {
88 if (strChunkToWriteFrom.getNullData()->isNull(i + srcOffset)) {
89 indices[i] = 0;
90 continue;
91 }
92 const auto strVal = strChunkToWriteFrom.getValue<std::string_view>(i + srcOffset);
93 indices[i] = dictionary.append(persistentChunk.cast<StringChunkData>().getDictionaryChunk(),
94 state, strVal);
95 }
96 NullMask nullMask(numValues);
97 nullMask.copyFromNullBits(data.getNullData()->getNullMask().getData(), srcOffset,
98 0 /*dstOffset*/, numValues);
99 // Write index to main column
100 indexColumn->writeValuesInternal(getChildState(state, ChildStateIndex::INDEX),
101 dstOffsetInSegment, reinterpret_cast<const uint8_t*>(&indices[0]), &nullMask,
102 0 /*srcOffset*/, numValues);
103 auto [min, max] = std::minmax_element(indices.begin(), indices.end());
104 auto minWritten = StorageValue(*min);
105 auto maxWritten = StorageValue(*max);
106 updateStatistics(persistentChunk.getMetadata(), dstOffsetInSegment + numValues - 1, minWritten,
107 maxWritten);
108 indexColumn->updateStatistics(stringPersistentChunk.getIndexColumnChunk()->getMetadata(),
109 dstOffsetInSegment + numValues - 1, minWritten, maxWritten);
110}
111
112std::vector<std::unique_ptr<ColumnChunkData>> StringColumn::checkpointSegment(
113 ColumnCheckpointState&& checkpointState, PageAllocator& pageAllocator,

Callers

nothing calls this directly

Calls 14

StorageValueFunction · 0.85
copyFromNullBitsMethod · 0.80
getNullMaskMethod · 0.80
writeValuesInternalMethod · 0.80
getMetadataMethod · 0.80
updateStatisticsMethod · 0.80
getIndexColumnChunkMethod · 0.80
getNumValuesMethod · 0.45
resizeMethod · 0.45
isNullMethod · 0.45
appendMethod · 0.45
getDataMethod · 0.45

Tested by

no test coverage detected