@@ -1273,35 +1273,13 @@ func finishInitializingIter(ctx context.Context, buf *iterAlloc) *Iterator {
1273
1273
// creator ID was set (as creator IDs are necessary to enable shared storage)
1274
1274
// resulting in some lower level SSTs being on non-shared storage. Skip-shared
1275
1275
// iteration is invalid in those cases.
1276
- func (d * DB ) ScanInternal (
1277
- ctx context.Context ,
1278
- category block.Category ,
1279
- lower , upper []byte ,
1280
- visitPointKey func (key * InternalKey , value LazyValue , iterInfo IteratorLevel ) error ,
1281
- visitRangeDel func (start , end []byte , seqNum SeqNum ) error ,
1282
- visitRangeKey func (start , end []byte , keys []rangekey.Key ) error ,
1283
- visitSharedFile func (sst * SharedSSTMeta ) error ,
1284
- visitExternalFile func (sst * ExternalFile ) error ,
1285
- ) error {
1286
- scanInternalOpts := & scanInternalOptions {
1287
- category : category ,
1288
- visitPointKey : visitPointKey ,
1289
- visitRangeDel : visitRangeDel ,
1290
- visitRangeKey : visitRangeKey ,
1291
- visitSharedFile : visitSharedFile ,
1292
- visitExternalFile : visitExternalFile ,
1293
- IterOptions : IterOptions {
1294
- KeyTypes : IterKeyTypePointsAndRanges ,
1295
- LowerBound : lower ,
1296
- UpperBound : upper ,
1297
- },
1298
- }
1299
- iter , err := d .newInternalIter (ctx , snapshotIterOpts {} /* snapshot */ , scanInternalOpts )
1276
+ func (d * DB ) ScanInternal (ctx context.Context , opts ScanInternalOptions ) error {
1277
+ iter , err := d .newInternalIter (ctx , snapshotIterOpts {} /* snapshot */ , & opts )
1300
1278
if err != nil {
1301
1279
return err
1302
1280
}
1303
1281
defer iter .close ()
1304
- return scanInternalImpl (ctx , lower , upper , iter , scanInternalOpts )
1282
+ return scanInternalImpl (ctx , iter , & opts )
1305
1283
}
1306
1284
1307
1285
// newInternalIter constructs and returns a new scanInternalIterator on this db.
@@ -1312,7 +1290,7 @@ func (d *DB) ScanInternal(
1312
1290
// finishInitializingIter. Both pairs of methods should be refactored to reduce
1313
1291
// this duplication.
1314
1292
func (d * DB ) newInternalIter (
1315
- ctx context.Context , sOpts snapshotIterOpts , o * scanInternalOptions ,
1293
+ ctx context.Context , sOpts snapshotIterOpts , o * ScanInternalOptions ,
1316
1294
) (* scanInternalIterator , error ) {
1317
1295
if err := d .closed .Load (); err != nil {
1318
1296
panic (err )
@@ -1399,7 +1377,7 @@ func finishInitializingInternalIter(
1399
1377
}
1400
1378
i .initializeBoundBufs (i .opts .LowerBound , i .opts .UpperBound )
1401
1379
1402
- if err := i .constructPointIter (i .opts .category , memtables , buf ); err != nil {
1380
+ if err := i .constructPointIter (i .opts .Category , memtables , buf ); err != nil {
1403
1381
return nil , err
1404
1382
}
1405
1383
@@ -2984,8 +2962,8 @@ func (d *DB) ScanStatistics(
2984
2962
}
2985
2963
}
2986
2964
2987
- scanInternalOpts := & scanInternalOptions {
2988
- visitPointKey : func (key * InternalKey , value LazyValue , iterInfo IteratorLevel ) error {
2965
+ scanInternalOpts := & ScanInternalOptions {
2966
+ VisitPointKey : func (key * InternalKey , value LazyValue , iterInfo IteratorLevel ) error {
2989
2967
// If the previous key is equal to the current point key, the current key was
2990
2968
// pinned by a snapshot.
2991
2969
size := uint64 (key .Size ())
@@ -3012,34 +2990,34 @@ func (d *DB) ScanStatistics(
3012
2990
stats .BytesRead += uint64 (key .Size () + value .Len ())
3013
2991
return nil
3014
2992
},
3015
- visitRangeDel : func (start , end []byte , seqNum base.SeqNum ) error {
2993
+ VisitRangeDel : func (start , end []byte , seqNum base.SeqNum ) error {
3016
2994
stats .Accumulated .KindsCount [InternalKeyKindRangeDelete ]++
3017
2995
stats .BytesRead += uint64 (len (start ) + len (end ))
3018
2996
return nil
3019
2997
},
3020
- visitRangeKey : func (start , end []byte , keys []rangekey.Key ) error {
2998
+ VisitRangeKey : func (start , end []byte , keys []rangekey.Key ) error {
3021
2999
stats .BytesRead += uint64 (len (start ) + len (end ))
3022
3000
for _ , key := range keys {
3023
3001
stats .Accumulated .KindsCount [key .Kind ()]++
3024
3002
stats .BytesRead += uint64 (len (key .Value ) + len (key .Suffix ))
3025
3003
}
3026
3004
return nil
3027
3005
},
3028
- includeObsoleteKeys : true ,
3006
+ IncludeObsoleteKeys : true ,
3029
3007
IterOptions : IterOptions {
3030
3008
KeyTypes : IterKeyTypePointsAndRanges ,
3031
3009
LowerBound : lower ,
3032
3010
UpperBound : upper ,
3033
3011
},
3034
- rateLimitFunc : rateLimitFunc ,
3012
+ RateLimitFunc : rateLimitFunc ,
3035
3013
}
3036
3014
iter , err := d .newInternalIter (ctx , snapshotIterOpts {}, scanInternalOpts )
3037
3015
if err != nil {
3038
3016
return LSMKeyStatistics {}, err
3039
3017
}
3040
3018
defer iter .close ()
3041
3019
3042
- err = scanInternalImpl (ctx , lower , upper , iter , scanInternalOpts )
3020
+ err = scanInternalImpl (ctx , iter , scanInternalOpts )
3043
3021
3044
3022
if err != nil {
3045
3023
return LSMKeyStatistics {}, err
0 commit comments