From ecc2d809158e778643ec96ef5746b25ba590edd1 Mon Sep 17 00:00:00 2001 From: "zhenshan.cao" Date: Wed, 9 Apr 2025 10:48:25 +0800 Subject: [PATCH] enhance: Add primary field name in SearchResult and QueryResults (#39220) issue: https://github.com/milvus-io/milvus/issues/39219 Signed-off-by: zhenshan.cao --- client/go.mod | 4 ++-- internal/proxy/task_query.go | 6 ++++++ internal/proxy/task_search.go | 1 + 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/client/go.mod b/client/go.mod index 6e33a97ada..70cfc4e38c 100644 --- a/client/go.mod +++ b/client/go.mod @@ -12,9 +12,7 @@ require ( github.com/samber/lo v1.27.0 github.com/stretchr/testify v1.9.0 github.com/tidwall/gjson v1.17.1 - go.opentelemetry.io/otel v1.28.0 go.uber.org/atomic v1.11.0 - golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 google.golang.org/grpc v1.65.0 google.golang.org/protobuf v1.34.2 ) @@ -89,6 +87,7 @@ require ( go.etcd.io/etcd/raft/v3 v3.5.5 // indirect go.etcd.io/etcd/server/v3 v3.5.5 // indirect go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.49.0 // indirect + go.opentelemetry.io/otel v1.28.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect go.opentelemetry.io/otel/metric v1.28.0 // indirect @@ -99,6 +98,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.27.0 // indirect golang.org/x/crypto v0.31.0 // indirect + golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect golang.org/x/net v0.33.0 // indirect golang.org/x/sync v0.10.0 // indirect golang.org/x/sys v0.28.0 // indirect diff --git a/internal/proxy/task_query.go b/internal/proxy/task_query.go index ec44c59abd..6c45f6b656 100644 --- a/internal/proxy/task_query.go +++ b/internal/proxy/task_query.go @@ -562,6 +562,12 @@ func (t *queryTask) PostExecute(ctx context.Context) error { return err } t.result.OutputFields = t.userOutputFields + primaryFieldSchema, err := t.schema.GetPkField() + if err != nil { + log.Warn("failed to get primary field schema", zap.Error(err)) + return err + } + t.result.PrimaryFieldName = primaryFieldSchema.GetName() metrics.ProxyReduceResultLatency.WithLabelValues(strconv.FormatInt(paramtable.GetNodeID(), 10), metrics.QueryLabel).Observe(float64(tr.RecordSpan().Milliseconds())) if t.queryParams.isIterator && t.request.GetGuaranteeTimestamp() == 0 { diff --git a/internal/proxy/task_search.go b/internal/proxy/task_search.go index 7fce606b35..00540bc4db 100644 --- a/internal/proxy/task_search.go +++ b/internal/proxy/task_search.go @@ -849,6 +849,7 @@ func (t *searchTask) PostExecute(ctx context.Context) error { } t.result.Results.FieldsData = append(t.result.Results.FieldsData, pkFieldData) } + t.result.Results.PrimaryFieldName = primaryFieldSchema.GetName() if t.isIterator && len(t.queryInfos) == 1 && t.queryInfos[0] != nil { if iterInfo := t.queryInfos[0].GetSearchIteratorV2Info(); iterInfo != nil { t.result.Results.SearchIteratorV2Results = &schemapb.SearchIteratorV2Results{