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

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

commit caa542288a62e38304c6ae0841def16e812d19d4
Author: Gao Hongtao <[email protected]>
AuthorDate: Wed Apr 2 04:55:44 2025 +0000

    Fix NPE
    
    Signed-off-by: Gao Hongtao <[email protected]>
---
 banyand/stream/index.go                  |  6 +++++-
 pkg/query/logical/stream/index_filter.go | 20 ++++++++++++--------
 2 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/banyand/stream/index.go b/banyand/stream/index.go
index 0d776078..cb2b2ebc 100644
--- a/banyand/stream/index.go
+++ b/banyand/stream/index.go
@@ -90,11 +90,15 @@ func (e *elementIndex) Search(ctx context.Context, 
seriesList []uint64, filter i
                        continue
                }
                if result == nil {
-                       result, resultTS = pl, plTS
+                       result = pl
                } else {
                        if err := result.Union(pl); err != nil {
                                return nil, nil, err
                        }
+               }
+               if resultTS == nil {
+                       resultTS = plTS
+               } else {
                        if err := resultTS.Union(plTS); err != nil {
                                return nil, nil, err
                        }
diff --git a/pkg/query/logical/stream/index_filter.go 
b/pkg/query/logical/stream/index_filter.go
index 7b875862..be3f090b 100644
--- a/pkg/query/logical/stream/index_filter.go
+++ b/pkg/query/logical/stream/index_filter.go
@@ -211,22 +211,26 @@ func execute(searcher index.GetSearcher, seriesID 
common.SeriesID, n *node, lp l
                if err != nil {
                        return nil, nil, err
                }
-               if result == nil {
-                       result = r
-                       continue
-               }
-               result, err = lp.merge(result, r)
-               if err != nil {
+               if result, err = merge(result, r, lp); err != nil {
                        return nil, nil, err
                }
-               resultTS, err = lp.merge(resultTS, rt)
-               if err != nil {
+               if resultTS, err = merge(resultTS, rt, lp); err != nil {
                        return nil, nil, err
                }
        }
        return result, resultTS, nil
 }
 
+func merge(result posting.List, list posting.List, lp logicalOP) 
(posting.List, error) {
+       if result == nil {
+               return list, nil
+       }
+       if list == nil {
+               return result, nil
+       }
+       return lp.merge(result, list)
+}
+
 type andNode struct {
        *node
 }

Reply via email to