Skip to content

Commit f1aeb29

Browse files
JkLondonJkLondon
andauthored
Deprecating things (#176)
* Add deprecation notices for NoTLS and Coalesce constants. * Replace OpenDBI with OpenDBISimple for simplified database handling. --------- Co-authored-by: JkLondon <ilya@mikheev.fun>
1 parent e3ddaca commit f1aeb29

File tree

4 files changed

+48
-32
lines changed

4 files changed

+48
-32
lines changed

mdbx/cursor_test.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func TestCursor_DBI(t *testing.T) {
5151
env, _ := setup(t)
5252

5353
err := env.Update(func(txn *Txn) (err error) {
54-
db, err := txn.OpenDBI("db", Create, nil, nil)
54+
db, err := txn.OpenDBISimple("db", Create)
5555
if err != nil {
5656
return err
5757
}
@@ -91,7 +91,7 @@ func TestCursor_Close(t *testing.T) {
9191
}
9292
defer txn.Abort()
9393

94-
db, err := txn.OpenDBI("testing", Create, nil, nil)
94+
db, err := txn.OpenDBISimple("testing", Create)
9595
if err != nil {
9696
t.Fatal(err)
9797
}
@@ -210,7 +210,7 @@ func TestCursor_Get_KV(t *testing.T) {
210210

211211
var dbi DBI
212212
err := env.Update(func(txn *Txn) (err error) {
213-
dbi, err = txn.OpenDBI("testdb", Create|DupSort, nil, nil)
213+
dbi, err = txn.OpenDBISimple("testdb", Create|DupSort)
214214
return err
215215
})
216216
if err != nil {
@@ -277,7 +277,7 @@ func TestLastDup(t *testing.T) {
277277

278278
var dbi DBI
279279
err := env.Update(func(txn *Txn) (err error) {
280-
dbi, err = txn.OpenDBI("testdb", Create|DupSort, nil, nil)
280+
dbi, err = txn.OpenDBISimple("testdb", Create|DupSort)
281281
if err != nil {
282282
return err
283283
}
@@ -356,7 +356,7 @@ func TestCursor_Get_op_Set_bytesBuffer(t *testing.T) {
356356

357357
var dbi DBI
358358
err := env.Update(func(txn *Txn) (err error) {
359-
dbi, err = txn.OpenDBI("testdb", Create|DupSort, nil, nil)
359+
dbi, err = txn.OpenDBISimple("testdb", Create|DupSort)
360360
return err
361361
})
362362
if err != nil {
@@ -436,7 +436,7 @@ func TestCursor_Get_DupFixed(t *testing.T) {
436436
var dbi DBI
437437
key := []byte("key")
438438
err := env.Update(func(txn *Txn) (err error) {
439-
dbi, err = txn.OpenDBI("test", DupSort|DupFixed|Create, nil, nil)
439+
dbi, err = txn.OpenDBISimple("test", DupSort|DupFixed|Create)
440440
if err != nil {
441441
return err
442442
}
@@ -737,7 +737,7 @@ func TestDupCursor_EmptyKeyValues1(t *testing.T) {
737737

738738
var db DBI
739739
err := env.Update(func(txn *Txn) (err error) {
740-
db, err = txn.OpenDBI("testingdup", Create|DupSort, nil, nil)
740+
db, err = txn.OpenDBISimple("testingdup", Create|DupSort)
741741
if err != nil {
742742
return err
743743
}
@@ -812,7 +812,7 @@ func TestDupCursor_EmptyKeyValues2(t *testing.T) {
812812

813813
var db DBI
814814
err := env.Update(func(txn *Txn) (err error) {
815-
db, err = txn.OpenDBI("testingdup", Create|DupSort, nil, nil)
815+
db, err = txn.OpenDBISimple("testingdup", Create|DupSort)
816816
if err != nil {
817817
return err
818818
}
@@ -916,7 +916,7 @@ func TestDupCursor_EmptyKeyValues3(t *testing.T) {
916916

917917
var db DBI
918918
err := env.Update(func(txn *Txn) (err error) {
919-
db, err = txn.OpenDBI("testingdup", Create|DupSort, nil, nil)
919+
db, err = txn.OpenDBISimple("testingdup", Create|DupSort)
920920
if err != nil {
921921
return err
922922
}
@@ -1029,7 +1029,7 @@ func TestDupCursor_EmptyKeyValues(t *testing.T) {
10291029

10301030
var db DBI
10311031
err := env.Update(func(txn *Txn) (err error) {
1032-
db, err = txn.OpenDBI("testingdup", Create|DupSort, nil, nil)
1032+
db, err = txn.OpenDBISimple("testingdup", Create|DupSort)
10331033
if err != nil {
10341034
return err
10351035
}
@@ -1157,7 +1157,7 @@ func TestCursor_Count_DupSort(t *testing.T) {
11571157

11581158
var db DBI
11591159
err := env.Update(func(txn *Txn) (err error) {
1160-
db, err = txn.OpenDBI("testingdup", Create|DupSort, nil, nil)
1160+
db, err = txn.OpenDBISimple("testingdup", Create|DupSort)
11611161
if err != nil {
11621162
return err
11631163
}
@@ -1209,7 +1209,7 @@ func TestCursor_Del_DupSort(t *testing.T) {
12091209

12101210
var db DBI
12111211
err := env.Update(func(txn *Txn) (err error) {
1212-
db, err = txn.OpenDBI("testingdup", Create|DupSort, nil, nil)
1212+
db, err = txn.OpenDBISimple("testingdup", Create|DupSort)
12131213
if err != nil {
12141214
return err
12151215
}

mdbx/env.go

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -32,17 +32,19 @@ const (
3232
EnvDefaults = C.MDBX_ENV_DEFAULTS
3333
LifoReclaim = C.MDBX_LIFORECLAIM
3434
//FixedMap = C.MDBX_FIXEDMAP // Danger zone. Map memory at a fixed address.
35-
NoSubdir = C.MDBX_NOSUBDIR // Argument to Open is a file, not a directory.
36-
Accede = C.MDBX_ACCEDE
37-
Coalesce = C.MDBX_COALESCE
38-
Readonly = C.MDBX_RDONLY // Used in several functions to denote an object as readonly.
39-
WriteMap = C.MDBX_WRITEMAP // Use a writable memory map.
40-
NoMetaSync = C.MDBX_NOMETASYNC // Don't fsync metapage after commit.
41-
UtterlyNoSync = C.MDBX_UTTERLY_NOSYNC
42-
SafeNoSync = C.MDBX_SAFE_NOSYNC
43-
Durable = C.MDBX_SYNC_DURABLE
35+
NoSubdir = C.MDBX_NOSUBDIR // Argument to Open is a file, not a directory.
36+
Accede = C.MDBX_ACCEDE
37+
// Deprecated: always turned on since v0.12, deprecated since v0.13
38+
Coalesce = C.MDBX_COALESCE
39+
Readonly = C.MDBX_RDONLY // Used in several functions to denote an object as readonly.
40+
WriteMap = C.MDBX_WRITEMAP // Use a writable memory map.
41+
NoMetaSync = C.MDBX_NOMETASYNC // Don't fsync metapage after commit.
42+
UtterlyNoSync = C.MDBX_UTTERLY_NOSYNC
43+
SafeNoSync = C.MDBX_SAFE_NOSYNC
44+
Durable = C.MDBX_SYNC_DURABLE
45+
// Deprecated: use NoStickyThreads instead because now they're sharing the same functionality
4446
NoTLS = C.MDBX_NOTLS // Danger zone. When unset reader locktable slots are tied to their thread.
45-
NoStickyThreads = C.MDBX_NOSTICKYTHREADS // Danger zone. Like MDBX_NOTLS. But also allow move RwTx between threads. Still require to call Begin/Rollback in stame thread.
47+
NoStickyThreads = C.MDBX_NOSTICKYTHREADS // Danger zone. Like MDBX_NOTLS. But also allow move RwTx between threads. Still require to call Begin/Rollback in same thread.
4648
//NoLock = C.MDBX_NOLOCK // Danger zone. MDBX does not use any locks.
4749
NoReadahead = C.MDBX_NORDAHEAD // Disable readahead. Requires OS support.
4850
NoMemInit = C.MDBX_NOMEMINIT // Disable MDBX memory initialization.

mdbx/txn.go

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
"unsafe"
1414
)
1515

16-
// This flags are used exclusively for Txn.OpenDBI and Txn.OpenRoot. The
16+
// This flags are used exclusively for Txn.OpenDBISimple and Txn.OpenRoot. The
1717
// Create flag must always be supplied when opening a non-root DBI for the
1818
// first time.
1919
//
@@ -418,23 +418,36 @@ func (txn *Txn) renew() error {
418418
// null bytes in the name argument.
419419
//
420420
// See mdbx_dbi_open.
421+
// Deprecated: use OpenDBISimple instead
421422
func (txn *Txn) OpenDBI(name string, flags uint, cmp, dcmp CmpFunc) (DBI, error) {
422423
cname := C.CString(name)
423424
dbi, err := txn.openDBI(cname, flags, (*C.MDBX_cmp_func)(unsafe.Pointer(cmp)), (*C.MDBX_cmp_func)(unsafe.Pointer(dcmp)))
424425
C.free(unsafe.Pointer(cname))
425426
return dbi, err
426427
}
427428

429+
// OpenDBISimple opens a named database in the environment. An error is returned if
430+
// name is empty. The DBI returned by OpenDBISimple can be used in other
431+
// transactions but not before Txn has terminated.
432+
//
433+
// OpenDBISimple can only be called after env.SetMaxDBs() has been called to set the
434+
// maximum number of named databases.
435+
//
436+
// The C API uses null terminated strings for database names. A consequence is
437+
// that names cannot contain null bytes themselves. OpenDBISimple does not check for
438+
// null bytes in the name argument.
439+
//
440+
// See mdbx_dbi_open.
428441
func (txn *Txn) OpenDBISimple(name string, flags uint) (DBI, error) {
429442
cname := C.CString(name)
430443
dbi, err := txn.openDBISimple(cname, flags)
431444
C.free(unsafe.Pointer(cname))
432445
return dbi, err
433446
}
434447

435-
// CreateDBI is a shorthand for OpenDBI that passed the flag lmdb.Create.
448+
// CreateDBI is a shorthand for OpenDBISimple that passed the flag lmdb.Create.
436449
func (txn *Txn) CreateDBI(name string) (DBI, error) {
437-
return txn.OpenDBI(name, Create, nil, nil)
450+
return txn.OpenDBISimple(name, Create)
438451
}
439452

440453
// Flags returns the database flags for handle dbi.
@@ -444,20 +457,21 @@ func (txn *Txn) Flags(dbi DBI) (uint, error) {
444457
return uint(cflags), operrno("mdbx_dbi_flags", ret)
445458
}
446459

447-
// OpenRoot opens the root database. OpenRoot behaves similarly to OpenDBI but
460+
// OpenRoot opens the root database. OpenRoot behaves similarly to OpenDBISimple but
448461
// does not require env.SetMaxDBs() to be called beforehand. And, OpenRoot can
449462
// be called without flags in a View transaction.
450463
func (txn *Txn) OpenRoot(flags uint) (DBI, error) {
451-
return txn.openDBI(nil, flags, nil, nil)
464+
return txn.openDBISimple(nil, flags)
452465
}
453466

454467
type Cmp func(k1, k2 []byte) int
455468

456-
// openDBI returns returns whatever DBI value was set by mdbx_open_dbi. In an
469+
// openDBI returns whatever DBI value was set by mdbx_open_dbi. In an
457470
// error case, LMDB does not currently set DBI in case of failure, so zero is
458471
// returned in those cases. This is not a big deal for now because
459472
// applications are expected to handle any error encountered opening a
460473
// database.
474+
// Deprecated: openDBISimple instead because using comparators now is a deprecated
461475
func (txn *Txn) openDBI(cname *C.char, flags uint, cmp, dcmp *C.MDBX_cmp_func) (DBI, error) {
462476
var dbi C.MDBX_dbi
463477
ret := C.mdbx_dbi_open_ex(txn._txn, cname, C.MDBX_db_flags_t(flags), &dbi, cmp, dcmp)

mdbx/txn_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ func TestTxn_ID(t *testing.T) {
4646
}
4747

4848
err = env.Update(func(txn *Txn) (err error) {
49-
dbi, err := txn.OpenDBI("test", Create, nil, nil)
49+
dbi, err := txn.OpenDBISimple("test", Create)
5050
if err != nil {
5151
return err
5252
}
@@ -556,7 +556,7 @@ func TestTxn_Flags(t *testing.T) {
556556

557557
dbflags := uint(ReverseKey | ReverseDup | DupSort | DupFixed)
558558
err := env.Update(func(txn *Txn) (err error) {
559-
db, err := txn.OpenDBI("testdb", dbflags|Create, nil, nil)
559+
db, err := txn.OpenDBISimple("testdb", dbflags|Create)
560560
if err != nil {
561561
return err
562562
}
@@ -613,7 +613,7 @@ func TestTxn_Flags(t *testing.T) {
613613
return
614614
}
615615
err = env.View(func(txn *Txn) (err error) {
616-
db, err := txn.OpenDBI("testdb", 0, nil, nil)
616+
db, err := txn.OpenDBISimple("testdb", 0)
617617
if err != nil {
618618
return err
619619
}
@@ -1280,7 +1280,7 @@ func openRoot(env *Env, flags uint) (DBI, error) {
12801280
func openDBI(env *Env, key string, flags uint) (DBI, error) {
12811281
var db DBI
12821282
err := env.Update(func(txn *Txn) (err error) {
1283-
db, err = txn.OpenDBI(key, flags, nil, nil)
1283+
db, err = txn.OpenDBISimple(key, flags)
12841284
return err
12851285
})
12861286
if err != nil {

0 commit comments

Comments
 (0)