diff --git a/src/include/storage/store/csr_chunked_node_group.h b/src/include/storage/store/csr_chunked_node_group.h index 8846d1d0b5b..c7a02d68274 100644 --- a/src/include/storage/store/csr_chunked_node_group.h +++ b/src/include/storage/store/csr_chunked_node_group.h @@ -131,6 +131,11 @@ class ChunkedCSRNodeGroup final : public ChunkedNodeGroup { void flush(FileHandle& dataFH) override; + // this does not override ChunkedNodeGroup::merge() since clang-tidy analyzer seems to struggle + // with detecting the std::move of the header in that case + void mergeChunkedCSRGroup(ChunkedCSRNodeGroup& base, + const std::vector& columnsToMergeInto); + private: ChunkedCSRHeader csrHeader; }; diff --git a/src/processor/operator/persistent/rel_batch_insert.cpp b/src/processor/operator/persistent/rel_batch_insert.cpp index ec0d89ce215..5c03f3c9cdf 100644 --- a/src/processor/operator/persistent/rel_batch_insert.cpp +++ b/src/processor/operator/persistent/rel_batch_insert.cpp @@ -91,8 +91,10 @@ static void appendNewChunkedGroup(MemoryManager& mm, transaction::Transaction* t // in the node group) relTable.pushInsertInfo(transaction, direction, nodeGroup, chunkedGroup.getNumRows(), source); if (isNewNodeGroup) { + ChunkedCSRNodeGroup sliceToWriteToDisk{chunkedGroup, columnIDs}; auto flushedChunkedGroup = - chunkedGroup.flushAsNewChunkedNodeGroup(transaction, *relTable.getDataFH()); + sliceToWriteToDisk.flushAsNewChunkedNodeGroup(transaction, *relTable.getDataFH()); + chunkedGroup.mergeChunkedCSRGroup(sliceToWriteToDisk, columnIDs); // If there are deleted columns that haven't been vaccumed yet // we need to add extra columns to the chunked group diff --git a/src/storage/store/csr_chunked_node_group.cpp b/src/storage/store/csr_chunked_node_group.cpp index cbc15fd7871..03238d2da2b 100644 --- a/src/storage/store/csr_chunked_node_group.cpp +++ b/src/storage/store/csr_chunked_node_group.cpp @@ -265,6 +265,12 @@ void ChunkedCSRNodeGroup::flush(FileHandle& dataFH) { } } +void ChunkedCSRNodeGroup::mergeChunkedCSRGroup(ChunkedCSRNodeGroup& base, + const std::vector& columnsToMergeInto) { + ChunkedNodeGroup::merge(base, columnsToMergeInto); + csrHeader = std::move(base.csrHeader); +} + void ChunkedCSRNodeGroup::scanCSRHeader(MemoryManager& memoryManager, CSRNodeGroupCheckpointState& csrState) const { if (!csrState.oldHeader) {