package writebuffer import ( "github.com/milvus-io/milvus-proto/go-api/v2/schemapb" "github.com/milvus-io/milvus/internal/storage" "github.com/milvus-io/milvus/pkg/util/typeutil" ) type segmentBuffer struct { segmentID int64 insertBuffer *InsertBuffer deltaBuffer *DeltaBuffer flushing bool } func newSegmentBuffer(segmentID int64, collSchema *schemapb.CollectionSchema) (*segmentBuffer, error) { insertBuffer, err := NewInsertBuffer(collSchema) if err != nil { return nil, err } return &segmentBuffer{ segmentID: segmentID, insertBuffer: insertBuffer, deltaBuffer: NewDeltaBuffer(), }, nil } func (buf *segmentBuffer) IsFull() bool { return buf.insertBuffer.IsFull() || buf.deltaBuffer.IsFull() } func (buf *segmentBuffer) Renew() (insert *storage.InsertData, delete *storage.DeleteData) { return buf.insertBuffer.Renew(), buf.deltaBuffer.Renew() } func (buf *segmentBuffer) SetFlush() { buf.flushing = true } func (buf *segmentBuffer) MinTimestamp() typeutil.Timestamp { insertTs := buf.insertBuffer.MinTimestamp() deltaTs := buf.deltaBuffer.MinTimestamp() if insertTs < deltaTs { return insertTs } return deltaTs } // TimeRange is a range of timestamp contains the min-timestamp and max-timestamp type TimeRange struct { timestampMin typeutil.Timestamp timestampMax typeutil.Timestamp }