From d0c787628b8455595502466cb62982f206d99a6d Mon Sep 17 00:00:00 2001 From: sunby <bingyi.sun@zilliz.com> Date: Tue, 5 Jan 2021 16:09:14 +0800 Subject: [PATCH] Pass type params when building index Signed-off-by: sunby <bingyi.sun@zilliz.com> --- internal/master/index_builder_scheduler.go | 10 +++++++++- internal/master/meta_table.go | 16 ++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/internal/master/index_builder_scheduler.go b/internal/master/index_builder_scheduler.go index a67d92c8a..745e4b336 100644 --- a/internal/master/index_builder_scheduler.go +++ b/internal/master/index_builder_scheduler.go @@ -58,16 +58,24 @@ func (scheduler *IndexBuildScheduler) schedule(info interface{}) error { } // parse index params + typeParams, err := scheduler.metaTable.GetFieldTypeParams(segMeta.CollectionID, indexBuildInfo.fieldID) + if err != nil { + return err + } indexParams, err := scheduler.metaTable.GetFieldIndexParams(segMeta.CollectionID, indexBuildInfo.fieldID) if err != nil { return err } + typeParamsMap := make(map[string]string) indexParamsMap := make(map[string]string) + for _, kv := range typeParams { + typeParamsMap[kv.Key] = kv.Value + } for _, kv := range indexParams { indexParamsMap[kv.Key] = kv.Value } - indexID, err := scheduler.client.BuildIndexWithoutID(indexBuildInfo.binlogFilePath, nil, indexParamsMap) + indexID, err := scheduler.client.BuildIndexWithoutID(indexBuildInfo.binlogFilePath, typeParamsMap, indexParamsMap) log.Printf("build index for segment %d field %d", indexBuildInfo.segmentID, indexBuildInfo.fieldID) if err != nil { return err diff --git a/internal/master/meta_table.go b/internal/master/meta_table.go index 94c75cf95..ff3cc711a 100644 --- a/internal/master/meta_table.go +++ b/internal/master/meta_table.go @@ -638,6 +638,22 @@ func (mt *metaTable) removeSegmentIndexMeta(segID UniqueID) error { return nil } +func (mt *metaTable) GetFieldTypeParams(collID UniqueID, fieldID UniqueID) ([]*commonpb.KeyValuePair, error) { + mt.ddLock.RLock() + defer mt.ddLock.RUnlock() + + if _, ok := mt.collID2Meta[collID]; !ok { + return nil, fmt.Errorf("can not find collection with id %d", collID) + } + + for _, fieldSchema := range mt.collID2Meta[collID].Schema.Fields { + if fieldSchema.FieldID == fieldID { + return fieldSchema.TypeParams, nil + } + } + return nil, fmt.Errorf("can not find field %d in collection %d", fieldID, collID) +} + func (mt *metaTable) GetFieldIndexParams(collID UniqueID, fieldID UniqueID) ([]*commonpb.KeyValuePair, error) { mt.ddLock.RLock() defer mt.ddLock.RUnlock() -- GitLab