From 45e7d26b01d39ecf819153a540dd67e34d55cd2c Mon Sep 17 00:00:00 2001 From: yukun Date: Sat, 5 Jun 2021 10:57:34 +0800 Subject: [PATCH] Fix retrieve when output_fields is nil (#5623) Signed-off-by: fishpenguin --- internal/proxynode/task.go | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/internal/proxynode/task.go b/internal/proxynode/task.go index 6816cf6d4c..3b64111bbe 100644 --- a/internal/proxynode/task.go +++ b/internal/proxynode/task.go @@ -1481,8 +1481,22 @@ func (rt *RetrieveTask) PreExecute(ctx context.Context) error { zap.Any("requestID", rt.Base.MsgID), zap.Any("requestType", "retrieve")) rt.Base.MsgType = commonpb.MsgType_Retrieve + if rt.retrieve.Ids == nil { + errMsg := "Retrieve ids is nil" + return errors.New(errMsg) + } rt.Ids = rt.retrieve.Ids - rt.OutputFields = rt.retrieve.OutputFields + if len(rt.retrieve.OutputFields) == 0 { + schema, err := globalMetaCache.GetCollectionSchema(ctx, collectionName) + if err != nil { + return err + } + for _, field := range schema.Fields { + rt.OutputFields = append(rt.OutputFields, field.Name) + } + } else { + rt.OutputFields = rt.retrieve.OutputFields + } rt.ResultChannelID = Params.RetrieveChannelNames[0] rt.DbID = 0 // todo(yukun)