diff --git a/internal/core/src/segcore/SegmentGrowingImpl.cpp b/internal/core/src/segcore/SegmentGrowingImpl.cpp index bb361fe5f9..b4cd63b231 100644 --- a/internal/core/src/segcore/SegmentGrowingImpl.cpp +++ b/internal/core/src/segcore/SegmentGrowingImpl.cpp @@ -248,12 +248,10 @@ SegmentGrowingImpl::Delete(int64_t reserved_begin, std::vector uids(size); std::vector timestamps(size); // #pragma omp parallel for - std::cout << "zzzz: " << size << std::endl; for (int index = 0; index < size; ++index) { auto [t, uid] = ordering[index]; timestamps[index] = t; uids[index] = uid; - std::cout << "In Segcore Delete: " << uid << std::endl; } deleted_record_.timestamps_.set_data(reserved_begin, timestamps.data(), size); deleted_record_.uids_.set_data(reserved_begin, uids.data(), size); diff --git a/internal/core/src/segcore/SegmentSealed.h b/internal/core/src/segcore/SegmentSealed.h index 12a3b23a52..11916f881c 100644 --- a/internal/core/src/segcore/SegmentSealed.h +++ b/internal/core/src/segcore/SegmentSealed.h @@ -36,6 +36,8 @@ class SegmentSealed : public SegmentInternalInterface { HasIndex(FieldId field_id) const = 0; virtual bool HasFieldData(FieldId field_id) const = 0; + virtual void + Delete(int64_t row_count, const int64_t* uids_raw, const Timestamp* timestamps_raw) = 0; }; using SegmentSealedPtr = std::unique_ptr; diff --git a/internal/core/src/segcore/SegmentSealedImpl.cpp b/internal/core/src/segcore/SegmentSealedImpl.cpp index 157d7dd5a5..1c8377b454 100644 --- a/internal/core/src/segcore/SegmentSealedImpl.cpp +++ b/internal/core/src/segcore/SegmentSealedImpl.cpp @@ -557,9 +557,10 @@ SegmentSealedImpl::Delete(int64_t row_count, const int64_t* uids_raw, const Time src_timestamps[i] = t; src_uids[i] = uid; } - deleted_record_.timestamps_.set_data(0, src_timestamps.data(), row_count); - deleted_record_.uids_.set_data(0, src_uids.data(), row_count); - deleted_record_.ack_responder_.AddSegment(0, row_count); + auto current_size = deleted_record_.record_size_; + deleted_record_.timestamps_.set_data(current_size, src_timestamps.data(), row_count); + deleted_record_.uids_.set_data(current_size, src_uids.data(), row_count); + deleted_record_.ack_responder_.AddSegment(current_size, row_count); return; } diff --git a/internal/core/src/segcore/SegmentSealedImpl.h b/internal/core/src/segcore/SegmentSealedImpl.h index 3b5ffd7b71..9db3e0affd 100644 --- a/internal/core/src/segcore/SegmentSealedImpl.h +++ b/internal/core/src/segcore/SegmentSealedImpl.h @@ -155,7 +155,7 @@ class SegmentSealedImpl : public SegmentSealed { search_ids(const boost::dynamic_bitset<>& view, Timestamp timestamp) const override; void - Delete(int64_t row_count, const int64_t* uids_raw, const Timestamp* timestamps_raw); + Delete(int64_t row_count, const int64_t* uids_raw, const Timestamp* timestamps_raw) override; // virtual void // build_index_if_primary_key(FieldId field_id); diff --git a/internal/core/unittest/test_sealed.cpp b/internal/core/unittest/test_sealed.cpp index 1412951d5c..253f4d3368 100644 --- a/internal/core/unittest/test_sealed.cpp +++ b/internal/core/unittest/test_sealed.cpp @@ -380,4 +380,9 @@ TEST(Sealed, Delete) { auto view = BitsetView(tmp_block.data(), 10); auto bitset = segment->get_filtered_bitmap(view, 10, 11); ASSERT_EQ(bitset.size(), N); + + int64_t new_count = 3; + std::vector new_pks{6, 7, 8}; + std::vector new_timestamps{10, 10, 10}; + segment->Delete(new_count, reinterpret_cast(new_pks.data()), reinterpret_cast(new_timestamps.data())); }