Skip to content

Commit ca6fe0e

Browse files
committed
table: pass rows as slice
This simplifies most call sites.
1 parent 5a51e40 commit ca6fe0e

File tree

4 files changed

+20
-29
lines changed

4 files changed

+20
-29
lines changed

internal/ascii/table/examples_test.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ package table_test
66

77
import (
88
"fmt"
9-
"slices"
109

1110
"github.com/cockroachdb/pebble/internal/ascii"
1211
"github.com/cockroachdb/pebble/internal/ascii/table"
@@ -29,7 +28,7 @@ func ExampleDefine() {
2928

3029
board := ascii.Make(8, 1)
3130
fmt.Println("Cool cats:")
32-
tbl.Render(board.At(0, 0), table.RenderOptions{}, slices.Values([]Cat{
31+
tbl.Render(board.At(0, 0), table.RenderOptions{}, []Cat{
3332
{Name: "Chicken", Age: 5, Cuteness: 10},
3433
{Name: "Heart", Age: 4, Cuteness: 10},
3534
{Name: "Mai", Age: 2, Cuteness: 10},
@@ -38,7 +37,7 @@ func ExampleDefine() {
3837
{Name: "Sugar", Age: 8, Cuteness: 10},
3938
{Name: "Yaya", Age: 5, Cuteness: 10},
4039
{Name: "Yuumi", Age: 5, Cuteness: 10},
41-
}))
40+
}...)
4241
fmt.Println(board.String())
4342
// Output:
4443
// Cool cats:
@@ -71,7 +70,7 @@ func ExampleHorizontally() {
7170
board := ascii.Make(8, 1)
7271
fmt.Println("Cool cats:")
7372
opts := table.RenderOptions{Orientation: table.Horizontally}
74-
tbl.Render(board.At(0, 0), opts, slices.Values([]Cat{
73+
tbl.Render(board.At(0, 0), opts, []Cat{
7574
{Name: "Chicken", Age: 5, Cuteness: 10},
7675
{Name: "Heart", Age: 4, Cuteness: 10},
7776
{Name: "Mai", Age: 2, Cuteness: 10},
@@ -81,7 +80,7 @@ func ExampleHorizontally() {
8180
{Name: "Yaya", Age: 5, Cuteness: 10},
8281
{Name: "Yuumi", Age: 5, Cuteness: 10},
8382
{Name: "Yuumibestcatever", Age: 5, Cuteness: 100},
84-
}))
83+
}...)
8584
fmt.Println(board.String())
8685
// Output:
8786
// Cool cats:

internal/ascii/table/table.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,7 @@ package table
66

77
import (
88
"fmt"
9-
"iter"
109
"math"
11-
"slices"
1210
"strconv"
1311

1412
"github.com/cockroachdb/crlib/crhumanize"
@@ -71,11 +69,11 @@ type RenderOptions struct {
7169

7270
// Render renders the given iterator of rows of a table into the given cursor,
7371
// returning the modified cursor.
74-
func (d *Layout[T]) Render(start ascii.Cursor, opts RenderOptions, rows iter.Seq[T]) ascii.Cursor {
72+
func (d *Layout[T]) Render(start ascii.Cursor, opts RenderOptions, rows ...T) ascii.Cursor {
7573
cur := start
7674

7775
if opts.Orientation == Vertically {
78-
tuples := slices.Collect(rows)
76+
tuples := rows
7977
vals := make([]string, len(tuples))
8078
for fieldIdx, c := range d.fields {
8179
if fieldIdx > 0 {
@@ -140,7 +138,7 @@ func (d *Layout[T]) Render(start ascii.Cursor, opts RenderOptions, rows iter.Seq
140138

141139
tupleIndex := 0
142140
colSpacing := 0
143-
for t := range rows {
141+
for _, t := range rows {
144142
width := 1
145143
for i := range d.fields {
146144
if f, ok := d.fields[i].(Field[T]); ok {

internal/ascii/table/table_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func TestTable(t *testing.T) {
5151
String("name", 7, align, func(c Cat) string { return c.Name }),
5252
)
5353
wb.Reset(1)
54-
def.Render(wb.At(0, 0), opts, slices.Values(cats))
54+
def.Render(wb.At(0, 0), opts, cats...)
5555
return wb.String()
5656
case "cats-nodiv":
5757
def := Define[Cat](
@@ -60,7 +60,7 @@ func TestTable(t *testing.T) {
6060
Int("cuteness", 8, align, func(c Cat) int { return c.Cuteness }),
6161
)
6262
wb.Reset(1)
63-
def.Render(wb.At(0, 0), opts, slices.Values(cats))
63+
def.Render(wb.At(0, 0), opts, cats...)
6464
return wb.String()
6565
case "cats-column-too-wide":
6666
c := slices.Clone(cats)
@@ -74,7 +74,7 @@ func TestTable(t *testing.T) {
7474
Int("c", 1, align, func(c Cat) int { return c.Cuteness }),
7575
)
7676
wb.Reset(1)
77-
def.Render(wb.At(0, 0), opts, slices.Values(c))
77+
def.Render(wb.At(0, 0), opts, c...)
7878
return wb.String()
7979
default:
8080
return fmt.Sprintf("unknown command: %s", td.Cmd)

metrics.go

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -907,13 +907,13 @@ func (m *Metrics) String() string {
907907
// LSM level metrics.
908908
cur := wb.At(0, 0)
909909
cur = cur.WriteString(levelMetricsTableTopHeader).NewlineReturn()
910-
cur = levelMetricsTable.Render(cur, table.RenderOptions{}, m.LevelMetricsIter())
910+
cur = levelMetricsTable.Render(cur, table.RenderOptions{}, slices.Collect(m.LevelMetricsIter())...)
911911
cur.Offset(-1, 0).WriteString("total")
912912
cur = cur.NewlineReturn()
913913

914914
// Compaction level metrics.
915915
cur = cur.WriteString(levelCompactionMetricsTableTopHeader).NewlineReturn()
916-
cur = compactionLevelMetricsTable.Render(cur, table.RenderOptions{}, m.LevelMetricsIter())
916+
cur = compactionLevelMetricsTable.Render(cur, table.RenderOptions{}, slices.Collect(m.LevelMetricsIter())...)
917917
cur.Offset(-1, 0).WriteString("total")
918918

919919
cur = cur.NewlineReturn()
@@ -929,7 +929,7 @@ func (m *Metrics) String() string {
929929
{k: "multi", v: m.Compact.MultiLevelCount},
930930
{k: "blob", v: m.Compact.BlobFileRewriteCount},
931931
}
932-
cur = compactionKindTable.Render(cur, table.RenderOptions{Orientation: table.Horizontally}, slices.Values(compactionKindContents))
932+
cur = compactionKindTable.Render(cur, table.RenderOptions{Orientation: table.Horizontally}, compactionKindContents...)
933933
cur = cur.NewlineReturn()
934934

935935
commitPipelineInfoContents := commitPipelineInfo{
@@ -947,7 +947,7 @@ func (m *Metrics) String() string {
947947
}
948948
cur = cur.WriteString(commitPipelineInfoTableTopHeader).NewlineReturn()
949949
cur = cur.WriteString(commitPipelineInfoTableSubHeader).NewlineReturn()
950-
cur = commitPipelineInfoTable.Render(cur, table.RenderOptions{}, oneItemIter(commitPipelineInfoContents))
950+
cur = commitPipelineInfoTable.Render(cur, table.RenderOptions{}, commitPipelineInfoContents)
951951
cur = cur.NewlineReturn()
952952

953953
iteratorInfoContents := iteratorInfo{
@@ -961,7 +961,7 @@ func (m *Metrics) String() string {
961961
}
962962
cur = cur.WriteString(iteratorInfoTableTopHeader).NewlineReturn()
963963
cur = cur.WriteString(iteratorInfoTableSubHeader).NewlineReturn()
964-
cur = iteratorInfoTable.Render(cur, table.RenderOptions{}, oneItemIter(iteratorInfoContents))
964+
cur = iteratorInfoTable.Render(cur, table.RenderOptions{}, iteratorInfoContents)
965965
cur = cur.NewlineReturn()
966966

967967
status := fmt.Sprintf("%s pending", humanizeCount(m.Table.PendingStatsCollectionCount))
@@ -986,7 +986,7 @@ func (m *Metrics) String() string {
986986
blobInfo: blobInfoContents,
987987
}
988988
cur = cur.WriteString(fileInfoTableHeader).NewlineReturn()
989-
cur = fileInfoTable.Render(cur, table.RenderOptions{}, oneItemIter(fileInfoContents))
989+
cur = fileInfoTable.Render(cur, table.RenderOptions{}, fileInfoContents)
990990
cur = cur.NewlineReturn()
991991

992992
var inUseTotal uint64
@@ -1006,7 +1006,7 @@ func (m *Metrics) String() string {
10061006
memtablesTot: humanizeBytes(inUse(manual.MemTable)),
10071007
}
10081008
cur = cur.WriteString(cgoMemInfoTableHeader).NewlineReturn()
1009-
cur = cgoMemInfoTable.Render(cur, table.RenderOptions{}, oneItemIter(cgoMemInfoContents))
1009+
cur = cgoMemInfoTable.Render(cur, table.RenderOptions{}, cgoMemInfoContents)
10101010
cur = cur.NewlineReturn()
10111011

10121012
compactionMetricsInfoContents := compactionMetricsInfo{
@@ -1019,7 +1019,7 @@ func (m *Metrics) String() string {
10191019
problemSpans: fmt.Sprintf("%d%s", m.Compact.NumProblemSpans, ifNonZero(m.Compact.NumProblemSpans, "!!")),
10201020
}
10211021
cur = cur.WriteString(compactionInfoTableTopHeader).NewlineReturn()
1022-
cur = compactionInfoTable.Render(cur, table.RenderOptions{}, oneItemIter(compactionMetricsInfoContents))
1022+
cur = compactionInfoTable.Render(cur, table.RenderOptions{}, compactionMetricsInfoContents)
10231023
cur = cur.NewlineReturn()
10241024

10251025
keysInfoContents := keysInfo{
@@ -1030,7 +1030,7 @@ func (m *Metrics) String() string {
10301030
rangeDels: humanizeBytes(m.Table.Garbage.RangeDeletionsBytesEstimate),
10311031
}
10321032
cur = cur.WriteString(keysInfoTableTopHeader).NewlineReturn()
1033-
cur = keysInfoTable.Render(cur, table.RenderOptions{}, oneItemIter(keysInfoContents))
1033+
cur = keysInfoTable.Render(cur, table.RenderOptions{}, keysInfoContents)
10341034
cur = cur.NewlineReturn()
10351035

10361036
cur = cur.WriteString(compressionTableHeader).NewlineReturn()
@@ -1053,7 +1053,7 @@ func (m *Metrics) String() string {
10531053
compressionContents = slices.DeleteFunc(compressionContents, func(i compressionInfo) bool {
10541054
return i.tables == "" && i.blobFiles == ""
10551055
})
1056-
compressionTable.Render(cur, table.RenderOptions{}, slices.Values(compressionContents))
1056+
compressionTable.Render(cur, table.RenderOptions{}, compressionContents...)
10571057

10581058
return wb.String()
10591059
}
@@ -1153,9 +1153,3 @@ func humanizeBytesOrEmpty[T crhumanize.Integer](value T) string {
11531153
}
11541154
return crhumanize.Bytes(value, crhumanize.Compact, crhumanize.OmitI).String()
11551155
}
1156-
1157-
func oneItemIter[T any](v T) iter.Seq[T] {
1158-
return func(yield func(T) bool) {
1159-
yield(v)
1160-
}
1161-
}

0 commit comments

Comments
 (0)