milvus/internal/metastore/model/index.go

97 lines
1.9 KiB
Go
Raw Normal View History

package model
import (
"github.com/milvus-io/milvus/internal/proto/commonpb"
pb "github.com/milvus-io/milvus/internal/proto/etcdpb"
)
type Index struct {
CollectionID int64
FieldID int64
IndexID int64
IndexName string
IsDeleted bool
CreateTime uint64
IndexParams []*commonpb.KeyValuePair
SegmentIndexes map[int64]SegmentIndex //segmentID -> segmentIndex
Extra map[string]string
}
func UnmarshalIndexModel(indexInfo *pb.IndexInfo) *Index {
if indexInfo == nil {
return nil
}
return &Index{
IndexName: indexInfo.IndexName,
IndexID: indexInfo.IndexID,
IndexParams: indexInfo.IndexParams,
IsDeleted: indexInfo.Deleted,
CreateTime: indexInfo.CreateTime,
}
}
func MarshalIndexModel(index *Index) *pb.IndexInfo {
if index == nil {
return nil
}
return &pb.IndexInfo{
IndexName: index.IndexName,
IndexID: index.IndexID,
IndexParams: index.IndexParams,
Deleted: index.IsDeleted,
CreateTime: index.CreateTime,
}
}
func MergeIndexModel(a *Index, b *Index) *Index {
if a == nil {
return b
}
if b == nil {
return a
}
newIdx := *a
if b.SegmentIndexes != nil {
if newIdx.SegmentIndexes == nil {
newIdx.SegmentIndexes = b.SegmentIndexes
} else {
for segID, segmentIndex := range b.SegmentIndexes {
newIdx.SegmentIndexes[segID] = segmentIndex
}
}
}
if newIdx.CollectionID == 0 && b.CollectionID != 0 {
newIdx.CollectionID = b.CollectionID
}
if newIdx.FieldID == 0 && b.FieldID != 0 {
newIdx.FieldID = b.FieldID
}
if newIdx.IndexID == 0 && b.IndexID != 0 {
newIdx.IndexID = b.IndexID
}
if newIdx.IndexName == "" && b.IndexName != "" {
newIdx.IndexName = b.IndexName
}
if newIdx.IndexParams == nil && b.IndexParams != nil {
newIdx.IndexParams = b.IndexParams
}
newIdx.IsDeleted = b.IsDeleted
newIdx.CreateTime = b.CreateTime
if newIdx.Extra == nil && b.Extra != nil {
newIdx.Extra = b.Extra
}
return &newIdx
}