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