This is an automated email from the ASF dual-hosted git repository.

hanahmily pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb.git


The following commit(s) were added to refs/heads/main by this push:
     new ff23851d Remove redundant filterTagProjection and 
filterFieldProjection operations (#917)
ff23851d is described below

commit ff23851da193345b803492a9d5ed1575cd0e2c40
Author: Huang Youliang <[email protected]>
AuthorDate: Sat Dec 27 18:18:52 2025 +0800

    Remove redundant filterTagProjection and filterFieldProjection operations 
(#917)
---
 banyand/measure/query.go | 66 ------------------------------------------------
 banyand/stream/query.go  | 45 ---------------------------------
 banyand/trace/query.go   | 36 --------------------------
 3 files changed, 147 deletions(-)

diff --git a/banyand/measure/query.go b/banyand/measure/query.go
index ef3ef64d..426c5963 100644
--- a/banyand/measure/query.go
+++ b/banyand/measure/query.go
@@ -75,8 +75,6 @@ func (m *measure) Query(ctx context.Context, mqo 
model.MeasureQueryOptions) (mqr
        if mqo.TimeRange == nil {
                return nil, errors.New("invalid query options: timeRange are 
required")
        }
-       mqo.TagProjection = m.filterTagProjection(mqo.TagProjection)
-       mqo.FieldProjection = m.filterFieldProjection(mqo.FieldProjection)
        if len(mqo.TagProjection) == 0 && len(mqo.FieldProjection) == 0 {
                return nil, errors.New("invalid query options: tagProjection or 
fieldProjection is required")
        }
@@ -195,70 +193,6 @@ func (m *measure) Query(ctx context.Context, mqo 
model.MeasureQueryOptions) (mqr
        return &result, nil
 }
 
-func (m *measure) filterTagProjection(tagProjection []model.TagProjection) 
[]model.TagProjection {
-       is := m.indexSchema.Load()
-       if is == nil {
-               return tagProjection
-       }
-       tagMap := is.(indexSchema).indexTagMap
-       if len(tagMap) == 0 {
-               return tagProjection
-       }
-
-       schemaTagFamilies := make(map[string]map[string]struct{})
-       for _, tf := range m.schema.GetTagFamilies() {
-               tagNames := make(map[string]struct{})
-               for _, tag := range tf.GetTags() {
-                       tagNames[tag.GetName()] = struct{}{}
-               }
-               schemaTagFamilies[tf.GetName()] = tagNames
-       }
-
-       result := make([]model.TagProjection, 0, len(tagProjection))
-       for _, tp := range tagProjection {
-               schemaTags, familyExists := schemaTagFamilies[tp.Family]
-               if !familyExists {
-                       continue
-               }
-
-               filteredNames := make([]string, 0, len(tp.Names))
-               for _, name := range tp.Names {
-                       if _, tagExists := schemaTags[name]; tagExists {
-                               filteredNames = append(filteredNames, name)
-                       }
-               }
-
-               if len(filteredNames) > 0 {
-                       result = append(result, model.TagProjection{
-                               Family: tp.Family,
-                               Names:  filteredNames,
-                       })
-               }
-       }
-
-       return result
-}
-
-func (m *measure) filterFieldProjection(fieldProjection []string) []string {
-       if len(fieldProjection) == 0 {
-               return fieldProjection
-       }
-
-       schemaFields := make(map[string]struct{})
-       for _, field := range m.schema.GetFields() {
-               schemaFields[field.GetName()] = struct{}{}
-       }
-
-       result := make([]string, 0, len(fieldProjection))
-       for _, name := range fieldProjection {
-               if _, exists := schemaFields[name]; exists {
-                       result = append(result, name)
-               }
-       }
-
-       return result
-}
-
 type tagNameWithType struct {
        fieldName string
        typ       pbv1.ValueType
diff --git a/banyand/stream/query.go b/banyand/stream/query.go
index 5359fc7f..b42e2c2b 100644
--- a/banyand/stream/query.go
+++ b/banyand/stream/query.go
@@ -43,7 +43,6 @@ import (
 const checkDoneEvery = 128
 
 func (s *stream) Query(ctx context.Context, sqo model.StreamQueryOptions) (sqr 
model.StreamQueryResult, err error) {
-       sqo.TagProjection = s.filterTagProjection(sqo.TagProjection)
        if err = validateQueryInput(sqo); err != nil {
                return nil, err
        }
@@ -99,50 +98,6 @@ func validateQueryInput(sqo model.StreamQueryOptions) error {
        return nil
 }
 
-func (s *stream) filterTagProjection(tagProjection []model.TagProjection) 
[]model.TagProjection {
-       is := s.indexSchema.Load()
-       if is == nil {
-               return tagProjection
-       }
-       tagMap := is.(indexSchema).tagMap
-       if len(tagMap) == 0 {
-               return tagProjection
-       }
-
-       schemaTagFamilies := make(map[string]map[string]struct{})
-       for _, tf := range s.schema.GetTagFamilies() {
-               tagNames := make(map[string]struct{})
-               for _, tag := range tf.GetTags() {
-                       tagNames[tag.GetName()] = struct{}{}
-               }
-               schemaTagFamilies[tf.GetName()] = tagNames
-       }
-
-       result := make([]model.TagProjection, 0, len(tagProjection))
-       for _, tp := range tagProjection {
-               schemaTags, familyExists := schemaTagFamilies[tp.Family]
-               if !familyExists {
-                       continue
-               }
-
-               filteredNames := make([]string, 0, len(tp.Names))
-               for _, name := range tp.Names {
-                       if _, tagExists := schemaTags[name]; tagExists {
-                               filteredNames = append(filteredNames, name)
-                       }
-               }
-
-               if len(filteredNames) > 0 {
-                       result = append(result, model.TagProjection{
-                               Family: tp.Family,
-                               Names:  filteredNames,
-                       })
-               }
-       }
-
-       return result
-}
-
 func (s *stream) getTSDB() (storage.TSDB[*tsTable, option], error) {
        var tsdb storage.TSDB[*tsTable, option]
        db := s.tsdb.Load()
diff --git a/banyand/trace/query.go b/banyand/trace/query.go
index c9237350..a675f1f0 100644
--- a/banyand/trace/query.go
+++ b/banyand/trace/query.go
@@ -52,7 +52,6 @@ type queryOptions struct {
 }
 
 func (t *trace) Query(ctx context.Context, tqo model.TraceQueryOptions) 
(model.TraceQueryResult, error) {
-       tqo.TagProjection = t.filterTagProjection(tqo.TagProjection)
        if err := validateTraceQueryOptions(tqo); err != nil {
                return nil, err
        }
@@ -147,41 +146,6 @@ func validateTraceQueryOptions(tqo 
model.TraceQueryOptions) error {
        return nil
 }
 
-func (t *trace) filterTagProjection(tagProjection *model.TagProjection) 
*model.TagProjection {
-       if tagProjection == nil || len(tagProjection.Names) == 0 {
-               return tagProjection
-       }
-
-       is := t.indexSchema.Load()
-       if is == nil {
-               return tagProjection
-       }
-       tagMap := is.(indexSchema).tagMap
-       if len(tagMap) == 0 {
-               return tagProjection
-       }
-
-       filteredNames := make([]string, 0, len(tagProjection.Names))
-       for _, name := range tagProjection.Names {
-               if _, exists := tagMap[name]; exists {
-                       filteredNames = append(filteredNames, name)
-               }
-       }
-
-       if len(filteredNames) == len(tagProjection.Names) {
-               return tagProjection
-       }
-
-       if len(filteredNames) == 0 {
-               return nil
-       }
-
-       return &model.TagProjection{
-               Family: tagProjection.Family,
-               Names:  filteredNames,
-       }
-}
-
 func (t *trace) GetTagValueDecoder() model.TagValueDecoder {
        return mustDecodeTagValueAndArray
 }

Reply via email to