@@ -1393,6 +1393,93 @@ func TestCursor_Renew(t *testing.T) {
1393
1393
}
1394
1394
}
1395
1395
1396
+ func TestCursor_Get_OneKey_Parallel (t * testing.T ) {
1397
+ env , _ := setup (t )
1398
+
1399
+ var db DBI
1400
+ k := make ([]byte , 8 )
1401
+ binary .BigEndian .PutUint64 (k , uint64 (1 ))
1402
+
1403
+ if err := env .Update (func (txn * Txn ) (err error ) {
1404
+ db , err = txn .OpenRoot (0 )
1405
+ if err != nil {
1406
+ return err
1407
+ }
1408
+ c , err := txn .OpenCursor (db )
1409
+ if err != nil {
1410
+ return err
1411
+ }
1412
+ err = txn .Put (db , k , k , 0 )
1413
+ if err != nil {
1414
+ return err
1415
+ }
1416
+
1417
+ ch := make (chan error )
1418
+ go func () {
1419
+ _ , _ , err = c .Get (k , nil , Set )
1420
+ if err != nil {
1421
+ ch <- err
1422
+ }
1423
+ ch <- nil
1424
+ }()
1425
+ err = <- ch
1426
+ if err != nil {
1427
+ return err
1428
+ }
1429
+ return nil
1430
+ }); err != nil {
1431
+ t .Errorf ("dbi: %v" , err )
1432
+ return
1433
+ }
1434
+ }
1435
+
1436
+ func TestCursor_Get_OneKey_SeparateProcess (t * testing.T ) {
1437
+ env , _ := setup (t )
1438
+
1439
+ var db DBI
1440
+ k := make ([]byte , 8 )
1441
+ binary .BigEndian .PutUint64 (k , uint64 (1 ))
1442
+
1443
+ if err := env .Update (func (txn * Txn ) (err error ) {
1444
+ db , err = txn .OpenRoot (0 )
1445
+ if err != nil {
1446
+ return err
1447
+ }
1448
+ err = txn .Put (db , k , k , 0 )
1449
+ if err != nil {
1450
+ return err
1451
+ }
1452
+
1453
+ return nil
1454
+ }); err != nil {
1455
+ t .Errorf ("dbi: %v" , err )
1456
+ return
1457
+ }
1458
+
1459
+ if err := env .View (func (txn * Txn ) (err error ) {
1460
+ c , err := txn .OpenCursor (db )
1461
+ if err != nil {
1462
+ return err
1463
+ }
1464
+ ch := make (chan error )
1465
+ go func () {
1466
+ _ , _ , err = c .Get (k , nil , Set )
1467
+ if err != nil {
1468
+ ch <- err
1469
+ }
1470
+ ch <- nil
1471
+ }()
1472
+ err = <- ch
1473
+ if err != nil {
1474
+ return err
1475
+ }
1476
+ return nil
1477
+ }); err != nil {
1478
+ t .Errorf ("dbi: %v" , err )
1479
+ return
1480
+ }
1481
+ }
1482
+
1396
1483
func TestCursor_Bind (t * testing.T ) {
1397
1484
env , _ := setup (t )
1398
1485
0 commit comments