diff --git a/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp b/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp index 0c7c0c7a91..20f8f8860a 100644 --- a/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp +++ b/internal/core/src/segcore/ChunkedSegmentSealedImpl.cpp @@ -229,8 +229,10 @@ ChunkedSegmentSealedImpl::LoadScalarIndex(const LoadIndexInfo& info) { set_bit(index_ready_bitset_, field_id, true); update_row_count(row_count); // release field column if the index contains raw data + // only release non-primary field when in pk sorted mode if (scalar_indexings_[field_id]->HasRawData() && - get_bit(field_data_ready_bitset_, field_id)) { + get_bit(field_data_ready_bitset_, field_id) && + (schema_->get_primary_field_id() != field_id || !is_sorted_by_pk_)) { fields_.erase(field_id); set_bit(field_data_ready_bitset_, field_id, false); } diff --git a/internal/core/src/segcore/SegmentSealedImpl.cpp b/internal/core/src/segcore/SegmentSealedImpl.cpp index ec6baab667..d5edeb23c6 100644 --- a/internal/core/src/segcore/SegmentSealedImpl.cpp +++ b/internal/core/src/segcore/SegmentSealedImpl.cpp @@ -266,8 +266,10 @@ SegmentSealedImpl::LoadScalarIndex(const LoadIndexInfo& info) { set_bit(index_ready_bitset_, field_id, true); update_row_count(row_count); // release field column if the index contains raw data + // only release non-primary field if (scalar_indexings_[field_id]->HasRawData() && - get_bit(field_data_ready_bitset_, field_id)) { + get_bit(field_data_ready_bitset_, field_id) && + (schema_->get_primary_field_id() != field_id || !is_sorted_by_pk_)) { fields_.erase(field_id); set_bit(field_data_ready_bitset_, field_id, false); }