From 1e76046c7ca62e30c7446084d13b0bbefaff4e89 Mon Sep 17 00:00:00 2001 From: Srikanth Chekuri Date: Tue, 26 Aug 2025 19:37:25 +0530 Subject: [PATCH] chore: add value search for related values request (#8925) --- pkg/telemetrymetadata/metadata.go | 34 +++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/pkg/telemetrymetadata/metadata.go b/pkg/telemetrymetadata/metadata.go index f5ea2511c066..cd717de526de 100644 --- a/pkg/telemetrymetadata/metadata.go +++ b/pkg/telemetrymetadata/metadata.go @@ -957,6 +957,40 @@ func (t *telemetryMetaStore) getRelatedValues(ctx context.Context, fieldValueSel sb.Where(sb.LE("unix_milli", fieldValueSelector.EndUnixMilli)) } + if fieldValueSelector.Value != "" { + var conds []string + if fieldValueSelector.FieldContext != telemetrytypes.FieldContextAttribute && + fieldValueSelector.FieldContext != telemetrytypes.FieldContextResource { + origContext := key.FieldContext + + // search on attributes + key.FieldContext = telemetrytypes.FieldContextAttribute + cond, err := t.conditionBuilder.ConditionFor(ctx, key, qbtypes.FilterOperatorContains, fieldValueSelector.Value, sb) + if err == nil { + conds = append(conds, cond) + } + + // search on resource + key.FieldContext = telemetrytypes.FieldContextResource + cond, err = t.conditionBuilder.ConditionFor(ctx, key, qbtypes.FilterOperatorContains, fieldValueSelector.Value, sb) + if err == nil { + conds = append(conds, cond) + } + key.FieldContext = origContext + } else { + cond, err := t.conditionBuilder.ConditionFor(ctx, key, qbtypes.FilterOperatorContains, fieldValueSelector.Value, sb) + if err == nil { + conds = append(conds, cond) + } + } + + if len(conds) != 0 { + // see `expr` in condition_builder.go, if key doesn't exist we don't check for value + // hence, this is join of conditions on resource and attributes + sb.Where(sb.And(conds...)) + } + } + limit := fieldValueSelector.Limit if limit == 0 { limit = 50