You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2026/05/14 06:12:14 UTC

(skywalking-banyandb) 04/50: chore: fix lint issues in vectorized/measure package

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

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

commit 4e432ecb134472f6e6394e31f520724bb25dd5b5
Author: Hongtao Gao <ha...@gmail.com>
AuthorDate: Sun May 3 11:46:40 2026 +0000

    chore: fix lint issues in vectorized/measure package
    
    - gci import-block alignment in cursor_test.go (auto-fixed by make format)
    - godot section-comment punctuation in extract_test.go
    - revive unexported-return in cursor.go: rename SeriesCursor.NextRow →
      nextRow (only consumed in-package; seriesRow stays package-private)
    - revive if-return in scan.go: collapse fillFromCurrent terminal check
      to direct return fillFields(...)
---
 pkg/query/vectorized/measure/cursor.go       |  6 +++--
 pkg/query/vectorized/measure/cursor_test.go  | 38 ++++++++++++++--------------
 pkg/query/vectorized/measure/extract_test.go | 14 +++++-----
 pkg/query/vectorized/measure/scan.go         |  5 +---
 4 files changed, 31 insertions(+), 32 deletions(-)

diff --git a/pkg/query/vectorized/measure/cursor.go b/pkg/query/vectorized/measure/cursor.go
index bf183c1d8..c2630c553 100644
--- a/pkg/query/vectorized/measure/cursor.go
+++ b/pkg/query/vectorized/measure/cursor.go
@@ -92,14 +92,16 @@ func (c *SeriesCursor) Advance(n int) {
 	}
 }
 
-// NextRow returns the next row across series boundaries.
+// nextRow returns the next row across series boundaries. It is unexported
+// because seriesRow is package-private; BatchScan reads rows via the public
+// Current/Advance bulk API.
 //
 // Returns:
 //   - (row, nil)         when a row is available;
 //   - (zero, nil)        on clean EOF;
 //   - (zero, stickyErr)  if a storage error has been observed; subsequent calls
 //     return the same error until Init is called again.
-func (c *SeriesCursor) NextRow() (seriesRow, error) {
+func (c *SeriesCursor) nextRow() (seriesRow, error) {
 	if c.err != nil {
 		return seriesRow{}, c.err
 	}
diff --git a/pkg/query/vectorized/measure/cursor_test.go b/pkg/query/vectorized/measure/cursor_test.go
index eb6d64d8c..b14a2776c 100644
--- a/pkg/query/vectorized/measure/cursor_test.go
+++ b/pkg/query/vectorized/measure/cursor_test.go
@@ -37,18 +37,18 @@ func TestSeriesCursor_NextRow_AdvancesWithinSeries(t *testing.T) {
 	qr := &fakeMeasureQueryResult{seq: []*model.MeasureResult{mkResult(1, 10, 20, 30)}}
 	var c SeriesCursor
 	c.Init(qr)
-	r1, err := c.NextRow()
+	r1, err := c.nextRow()
 	if err != nil {
 		t.Fatal(err)
 	}
 	if r1.timestamp != 10 || r1.sid != 1 {
 		t.Fatalf("row 1: ts=%d sid=%d", r1.timestamp, r1.sid)
 	}
-	r2, _ := c.NextRow()
+	r2, _ := c.nextRow()
 	if r2.timestamp != 20 {
 		t.Fatalf("row 2: ts=%d", r2.timestamp)
 	}
-	r3, _ := c.NextRow()
+	r3, _ := c.nextRow()
 	if r3.timestamp != 30 {
 		t.Fatalf("row 3: ts=%d", r3.timestamp)
 	}
@@ -61,9 +61,9 @@ func TestSeriesCursor_NextRow_CrossesSeriesBoundary(t *testing.T) {
 	}}
 	var c SeriesCursor
 	c.Init(qr)
-	_, _ = c.NextRow() // ts=100, sid=1
-	_, _ = c.NextRow() // ts=200, sid=1
-	r, err := c.NextRow()
+	_, _ = c.nextRow() // ts=100, sid=1
+	_, _ = c.nextRow() // ts=200, sid=1
+	r, err := c.nextRow()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -75,13 +75,13 @@ func TestSeriesCursor_NextRow_CrossesSeriesBoundary(t *testing.T) {
 func TestSeriesCursor_NextRow_SkipsEmptyMeasureResult(t *testing.T) {
 	qr := &fakeMeasureQueryResult{seq: []*model.MeasureResult{
 		mkResult(1, 100),
-		mkResult(2),       // empty — must be skipped
+		mkResult(2), // empty — must be skipped
 		mkResult(3, 300),
 	}}
 	var c SeriesCursor
 	c.Init(qr)
-	_, _ = c.NextRow() // sid=1
-	r, _ := c.NextRow()
+	_, _ = c.nextRow() // sid=1
+	r, _ := c.nextRow()
 	if r.sid != 3 || r.timestamp != 300 {
 		t.Fatalf("expected to skip empty series 2; got sid=%d ts=%d", r.sid, r.timestamp)
 	}
@@ -91,8 +91,8 @@ func TestSeriesCursor_NextRow_EOF_ReturnsZeroValueAndNilErr(t *testing.T) {
 	qr := &fakeMeasureQueryResult{seq: []*model.MeasureResult{mkResult(1, 100)}}
 	var c SeriesCursor
 	c.Init(qr)
-	_, _ = c.NextRow()
-	r, err := c.NextRow()
+	_, _ = c.nextRow()
+	r, err := c.nextRow()
 	if err != nil {
 		t.Fatalf("EOF must return nil err, got %v", err)
 	}
@@ -106,7 +106,7 @@ func TestSeriesCursor_StorageError_StickyOnFirstCall(t *testing.T) {
 	qr := &fakeMeasureQueryResult{seq: []*model.MeasureResult{mkResultErr(boom)}}
 	var c SeriesCursor
 	c.Init(qr)
-	_, err := c.NextRow()
+	_, err := c.nextRow()
 	if !errors.Is(err, boom) {
 		t.Fatalf("first NextRow must surface storage error, got %v", err)
 	}
@@ -120,7 +120,7 @@ func TestSeriesCursor_StorageError_StickyOnSubsequentCalls(t *testing.T) {
 	var c SeriesCursor
 	c.Init(qr)
 	for i := range 3 {
-		_, err := c.NextRow()
+		_, err := c.nextRow()
 		if !errors.Is(err, boom) {
 			t.Fatalf("call %d: storage error must remain sticky, got %v", i, err)
 		}
@@ -134,11 +134,11 @@ func TestSeriesCursor_RemainingInSeries_DropsAsPosAdvances(t *testing.T) {
 	if c.RemainingInSeries() != 3 {
 		t.Fatalf("initial RemainingInSeries: want 3, got %d", c.RemainingInSeries())
 	}
-	_, _ = c.NextRow()
+	_, _ = c.nextRow()
 	if c.RemainingInSeries() != 2 {
 		t.Fatalf("after 1 NextRow: want 2, got %d", c.RemainingInSeries())
 	}
-	_, _ = c.NextRow()
+	_, _ = c.nextRow()
 	if c.RemainingInSeries() != 1 {
 		t.Fatalf("after 2 NextRows: want 1, got %d", c.RemainingInSeries())
 	}
@@ -152,7 +152,7 @@ func TestSeriesCursor_Current_ReturnsCurrentResultAndPos(t *testing.T) {
 	if cur == nil || cur.SID != 7 || pos != 0 {
 		t.Fatalf("Current after Init: got cur=%v pos=%d", cur, pos)
 	}
-	_, _ = c.NextRow()
+	_, _ = c.nextRow()
 	cur, pos = c.Current()
 	if cur == nil || pos != 1 {
 		t.Fatalf("Current after 1 NextRow: pos=%d", pos)
@@ -167,7 +167,7 @@ func TestSeriesCursor_Advance_CrossesSeriesWhenPosReachesEnd(t *testing.T) {
 	var c SeriesCursor
 	c.Init(qr)
 	c.Advance(3) // exhaust series 1
-	r, err := c.NextRow()
+	r, err := c.nextRow()
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -180,8 +180,8 @@ func TestSeriesCursor_Close_Idempotent_SafeAfterEOF(t *testing.T) {
 	qr := &fakeMeasureQueryResult{seq: []*model.MeasureResult{mkResult(1, 100)}}
 	var c SeriesCursor
 	c.Init(qr)
-	_, _ = c.NextRow()
-	_, _ = c.NextRow() // EOF
+	_, _ = c.nextRow()
+	_, _ = c.nextRow() // EOF
 	defer func() {
 		if r := recover(); r != nil {
 			t.Fatalf("Close must not panic: %v", r)
diff --git a/pkg/query/vectorized/measure/extract_test.go b/pkg/query/vectorized/measure/extract_test.go
index 76b146a59..f81557004 100644
--- a/pkg/query/vectorized/measure/extract_test.go
+++ b/pkg/query/vectorized/measure/extract_test.go
@@ -85,7 +85,7 @@ func preallocInt64(c *vectorized.TypedColumn[int64], n int) {
 	}
 }
 
-// === extractTagRow positives ===
+// extractTagRow positives.
 
 func TestExtractTagRow_Int_WritesValue(t *testing.T) {
 	col := vectorized.NewInt64Column(4)
@@ -125,7 +125,7 @@ func TestExtractTagRow_Timestamp_WritesUnixNano(t *testing.T) {
 	}
 }
 
-// === extractTagRow defensive-copy parity-killers ===
+// extractTagRow defensive-copy parity-killers.
 
 func TestExtractTagRow_BinaryData_DefensiveCopy(t *testing.T) {
 	src := []byte("abc")
@@ -169,7 +169,7 @@ func TestExtractTagRow_StrArray_DefensiveCopy(t *testing.T) {
 	}
 }
 
-// === extractTagRow Null ===
+// extractTagRow Null.
 
 func TestExtractTagRow_Null_MarksValidityWithoutGrowingLen(t *testing.T) {
 	col := vectorized.NewInt64Column(4)
@@ -186,7 +186,7 @@ func TestExtractTagRow_Null_MarksValidityWithoutGrowingLen(t *testing.T) {
 	}
 }
 
-// === extractTagRow error paths ===
+// extractTagRow error paths.
 
 func TestExtractTagRow_UnknownVariant_ReturnsError(t *testing.T) {
 	tv := &modelv1.TagValue{} // Value is nil — no oneof set
@@ -213,7 +213,7 @@ func TestExtractTagRow_ColumnTypeMismatch_ReturnsError(t *testing.T) {
 	}
 }
 
-// === extractFieldRow positives ===
+// extractFieldRow positives.
 
 func TestExtractFieldRow_Int_WritesValue(t *testing.T) {
 	col := vectorized.NewInt64Column(2)
@@ -273,7 +273,7 @@ func TestExtractFieldRow_Null_MarksValidity(t *testing.T) {
 	}
 }
 
-// === extractFieldRow error paths ===
+// extractFieldRow error paths.
 
 func TestExtractFieldRow_UnknownVariant_ReturnsError(t *testing.T) {
 	fv := &modelv1.FieldValue{}
@@ -300,7 +300,7 @@ func TestExtractFieldRow_ColumnTypeMismatch_ReturnsError(t *testing.T) {
 	}
 }
 
-// === extract*Bulk ===
+// extract bulk variants.
 
 func TestExtractTagBulk_HappyPath(t *testing.T) {
 	col := vectorized.NewStringColumn(4)
diff --git a/pkg/query/vectorized/measure/scan.go b/pkg/query/vectorized/measure/scan.go
index 6f06b6d1e..678346a83 100644
--- a/pkg/query/vectorized/measure/scan.go
+++ b/pkg/query/vectorized/measure/scan.go
@@ -112,10 +112,7 @@ func (s *BatchScan) fillFromCurrent(b *vectorized.RecordBatch, n int) error {
 	if fillErr := fillTags(b, s.schema, cur, pos, offset, n); fillErr != nil {
 		return fillErr
 	}
-	if fillErr := fillFields(b, s.schema, cur, pos, offset, n); fillErr != nil {
-		return fillErr
-	}
-	return nil
+	return fillFields(b, s.schema, cur, pos, offset, n)
 }
 
 // fillMetadata populates the timestamp, version, series-id, and shard-id