@@ -436,18 +436,20 @@ func (ss *SuffixSnapshot) generateSaveExecute(ctx context.Context, kvs map[strin
436
436
func (ss * SuffixSnapshot ) LoadWithPrefix (ctx context.Context , key string , ts typeutil.Timestamp ) ([]string , []string , error ) {
437
437
// ts 0 case shall be treated as fetch latest/current value
438
438
if ts == 0 || ts == typeutil .MaxTimestamp {
439
- keys , values , err := ss .MetaKv .LoadWithPrefix (ctx , key )
440
- fks := keys [:0 ] // make([]string, 0, len(keys))
441
- fvs := values [:0 ] // make([]string, 0, len(values))
439
+ fks := make ([]string , 0 )
440
+ fvs := make ([]string , 0 )
442
441
// hide rootPrefix from return value
443
- for i , k := range keys {
442
+ applyFn := func ( key [] byte , value [] byte ) error {
444
443
// filters tombstone
445
- if ss .isTombstone (values [ i ] ) {
446
- continue
444
+ if ss .isTombstone (string ( value ) ) {
445
+ return nil
447
446
}
448
- fks = append (fks , ss .hideRootPrefix (k ))
449
- fvs = append (fvs , values [i ])
447
+ fks = append (fks , ss .hideRootPrefix (string (key )))
448
+ fvs = append (fvs , string (value ))
449
+ return nil
450
450
}
451
+
452
+ err := ss .MetaKv .WalkWithPrefix (ctx , key , PaginationSize , applyFn )
451
453
return fks , fvs , err
452
454
}
453
455
ss .Lock ()
0 commit comments