@@ -280,23 +280,36 @@ func TestLoadVersion(t *testing.T) {
280
280
}
281
281
282
282
func TestZeroCopy (t * testing.T ) {
283
- db , err := Load (t .TempDir (), Options {InitialStores : []string {"test" }, CreateIfMissing : true , ZeroCopy : true })
283
+ db , err := Load (t .TempDir (), Options {InitialStores : []string {"test" , "test2" }, CreateIfMissing : true , ZeroCopy : true })
284
284
require .NoError (t , err )
285
- db .Commit ([]* NamedChangeSet {
285
+ _ , _ , err = db .Commit ([]* NamedChangeSet {
286
286
{Name : "test" , Changeset : ChangeSets [0 ]},
287
+ {Name : "test2" },
287
288
})
289
+ require .NoError (t , err )
288
290
require .NoError (t , errors .Join (
289
291
db .RewriteSnapshot (),
290
292
db .Reload (),
291
293
))
292
294
295
+ // the test tree's root hash will reference the zero-copy value
296
+ _ , _ , err = db .Commit ([]* NamedChangeSet {
297
+ {Name : "test" },
298
+ {Name : "test2" , Changeset : ChangeSets [0 ]},
299
+ })
300
+ require .NoError (t , err )
301
+
302
+ commitInfo := * db .LastCommitInfo ()
303
+
293
304
value := db .TreeByName ("test" ).Get ([]byte ("hello" ))
294
305
require .Equal (t , []byte ("world" ), value )
295
306
296
307
db .SetZeroCopy (false )
297
308
valueCloned := db .TreeByName ("test" ).Get ([]byte ("hello" ))
298
309
require .Equal (t , []byte ("world" ), valueCloned )
299
310
311
+ _ = commitInfo .CommitID ()
312
+
300
313
require .NoError (t , db .Close ())
301
314
302
315
require .Equal (t , []byte ("world" ), valueCloned )
@@ -307,6 +320,9 @@ func TestZeroCopy(t *testing.T) {
307
320
require .Panics (t , func () {
308
321
require .Equal (t , []byte ("world" ), value )
309
322
})
323
+
324
+ // it's ok to access after db closed
325
+ _ = commitInfo .CommitID ()
310
326
}
311
327
312
328
func TestWalIndexConversion (t * testing.T ) {
0 commit comments