diff --git a/internal/querynode/search_service.go b/internal/querynode/search_service.go index c89d1e03414c1a18558489786d6bf815db8a6ad9..4aea33c90be67a621f22f534fe3e76136ed8ed69 100644 --- a/internal/querynode/search_service.go +++ b/internal/querynode/search_service.go @@ -4,7 +4,6 @@ import "C" import ( "context" "errors" - "regexp" "strconv" "strings" "sync" @@ -250,16 +249,22 @@ func (ss *searchService) search(msg msgstream.TsMsg) error { var searchPartitionIDs []UniqueID partitionIDsInQuery := searchMsg.PartitionIDs if len(partitionIDsInQuery) == 0 { + if len(partitionIDsInCol) == 0 { + return errors.New("can't find any partition in this collection on query node") + } searchPartitionIDs = partitionIDsInCol } else { - for _, id := range partitionIDsInCol { - for _, toMatchID := range partitionIDsInQuery { - re := regexp.MustCompile("^" + strconv.FormatInt(toMatchID, 10) + "$") - if re.MatchString(strconv.FormatInt(id, 10)) { - searchPartitionIDs = append(searchPartitionIDs, id) - } + findPartition := false + for _, id := range partitionIDsInQuery { + _, err := ss.replica.getPartitionByID(id) + if err == nil { + searchPartitionIDs = append(searchPartitionIDs, id) + findPartition = true } } + if !findPartition { + return errors.New("partition to be searched not exist in query node") + } } for _, partitionID := range searchPartitionIDs {