Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: cockroachdb/pebble
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v2.0.2
Choose a base ref
...
head repository: cockroachdb/pebble
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v2.0.3
Choose a head ref
  • 1 commit
  • 2 files changed
  • 1 contributor

Commits on Mar 16, 2025

  1. sstable: update testutil readall to return an error

    ReadAll is importing testutils which is pulling testify and other
    test dependencies in the final binary
    
    update function to return an error without calling testutils
    kruskall authored and RaduBerinde committed Mar 16, 2025

    Unverified

    This commit is not signed, but one or more authors requires that any commit attributed to them is signed.
    Copy the full SHA
    59f1c46 View commit details
Showing with 44 additions and 11 deletions.
  1. +2 −1 internal/compact/spans_test.go
  2. +42 −10 sstable/test_utils.go
3 changes: 2 additions & 1 deletion internal/compact/spans_test.go
Original file line number Diff line number Diff line change
@@ -132,10 +132,11 @@ func TestSplitAndEncodeSpan(t *testing.T) {
tw := sstable.NewRawWriter(obj, wo)
require.NoError(t, SplitAndEncodeSpan(base.DefaultComparer.Compare, &span, upToKey, tw))
require.NoError(t, tw.Close())
_, rangeDels, rangeKeys := sstable.ReadAll(obj, sstable.ReaderOptions{
_, rangeDels, rangeKeys, err := sstable.ReadAll(obj, sstable.ReaderOptions{
Comparer: wo.Comparer,
KeySchemas: sstable.MakeKeySchemas(wo.KeySchema),
})
require.NoError(t, err)
require.LessOrEqual(t, len(rangeDels)+len(rangeKeys), 1)
s := "."
if all := append(rangeDels, rangeKeys...); len(all) == 1 {
52 changes: 42 additions & 10 deletions sstable/test_utils.go
Original file line number Diff line number Diff line change
@@ -9,41 +9,73 @@ import (

"github.com/cockroachdb/pebble/v2/internal/base"
"github.com/cockroachdb/pebble/v2/internal/keyspan"
"github.com/cockroachdb/pebble/v2/internal/testutils"
"github.com/cockroachdb/pebble/v2/objstorage"
)

// ReadAll returns all point keys, range del spans, and range key spans from an
// sstable. Closes the Readable. Panics on errors.
func ReadAll(
r objstorage.Readable, ro ReaderOptions,
) (points []base.InternalKV, rangeDels, rangeKeys []keyspan.Span) {
reader := testutils.CheckErr(NewReader(context.Background(), r, ro))
) (points []base.InternalKV, rangeDels, rangeKeys []keyspan.Span, err error) {
reader, err := NewReader(context.Background(), r, ro)
if err != nil {
return nil, nil, nil, err
}
defer reader.Close()
pointIter := testutils.CheckErr(reader.NewIter(NoTransforms, nil /* lower */, nil /* upper */))
pointIter, err := reader.NewIter(NoTransforms, nil /* lower */, nil /* upper */)
if err != nil {
return nil, nil, nil, err
}
defer pointIter.Close()

for kv := pointIter.First(); kv != nil; kv = pointIter.Next() {
val, _ := testutils.CheckErr2(kv.Value(nil))
val, _, err := kv.Value(nil)
if err != nil {
return nil, nil, nil, err
}
points = append(points, base.InternalKV{
K: kv.K.Clone(),
V: base.MakeInPlaceValue(val),
})
}

ctx := context.Background()
if rangeDelIter := testutils.CheckErr(reader.NewRawRangeDelIter(ctx, NoFragmentTransforms)); rangeDelIter != nil {
rangeDelIter, err := reader.NewRawRangeDelIter(ctx, NoFragmentTransforms)
if err != nil {
return nil, nil, nil, err
}
if rangeDelIter != nil {
defer rangeDelIter.Close()
for s := testutils.CheckErr(rangeDelIter.First()); s != nil; s = testutils.CheckErr(rangeDelIter.Next()) {
s, err := rangeDelIter.First()
if err != nil {
return nil, nil, nil, err
}
for s != nil {
rangeDels = append(rangeDels, s.Clone())
s, err = rangeDelIter.Next()
if err != nil {
return nil, nil, nil, err
}
}
}

if rangeKeyIter := testutils.CheckErr(reader.NewRawRangeKeyIter(ctx, NoFragmentTransforms)); rangeKeyIter != nil {
rangeKeyIter, err := reader.NewRawRangeKeyIter(ctx, NoFragmentTransforms)
if err != nil {
return nil, nil, nil, err
}
if rangeKeyIter != nil {
defer rangeKeyIter.Close()
for s := testutils.CheckErr(rangeKeyIter.First()); s != nil; s = testutils.CheckErr(rangeKeyIter.Next()) {
s, err := rangeKeyIter.First()
if err != nil {
return nil, nil, nil, err
}
for s != nil {
rangeKeys = append(rangeKeys, s.Clone())
s, err = rangeKeyIter.Next()
if err != nil {
return nil, nil, nil, err
}
}
}
return points, rangeDels, rangeKeys
return points, rangeDels, rangeKeys, nil
}