lmdb 0.5.3 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTORS +1 -0
- data/Rakefile +9 -0
- data/behaviour.org +35 -0
- data/ext/lmdb_ext/extconf.rb +8 -3
- data/ext/lmdb_ext/lmdb_ext.c +314 -200
- data/ext/lmdb_ext/lmdb_ext.h +19 -3
- data/lib/lmdb/database.rb +9 -8
- data/lib/lmdb/version.rb +1 -1
- data/lmdb.gemspec +5 -4
- data/spec/helper.rb +3 -0
- data/{ext/lmdb_ext → vendor/libraries}/liblmdb/.gitignore +8 -0
- data/{ext/lmdb_ext → vendor/libraries}/liblmdb/COPYRIGHT +1 -1
- data/vendor/libraries/liblmdb/Doxyfile +1631 -0
- data/{ext/lmdb_ext → vendor/libraries}/liblmdb/LICENSE +0 -0
- data/vendor/libraries/liblmdb/Makefile +118 -0
- data/vendor/libraries/liblmdb/intro.doc +192 -0
- data/{ext/lmdb_ext → vendor/libraries}/liblmdb/lmdb.h +161 -61
- data/{ext/lmdb_ext → vendor/libraries}/liblmdb/mdb.c +3244 -1302
- data/vendor/libraries/liblmdb/mdb_copy.1 +61 -0
- data/vendor/libraries/liblmdb/mdb_copy.c +84 -0
- data/vendor/libraries/liblmdb/mdb_drop.1 +40 -0
- data/vendor/libraries/liblmdb/mdb_drop.c +135 -0
- data/vendor/libraries/liblmdb/mdb_dump.1 +81 -0
- data/vendor/libraries/liblmdb/mdb_dump.c +319 -0
- data/vendor/libraries/liblmdb/mdb_load.1 +84 -0
- data/vendor/libraries/liblmdb/mdb_load.c +492 -0
- data/vendor/libraries/liblmdb/mdb_stat.1 +70 -0
- data/vendor/libraries/liblmdb/mdb_stat.c +264 -0
- data/{ext/lmdb_ext → vendor/libraries}/liblmdb/midl.c +66 -5
- data/{ext/lmdb_ext → vendor/libraries}/liblmdb/midl.h +19 -5
- data/vendor/libraries/liblmdb/mtest.c +177 -0
- data/vendor/libraries/liblmdb/mtest2.c +124 -0
- data/vendor/libraries/liblmdb/mtest3.c +133 -0
- data/vendor/libraries/liblmdb/mtest4.c +168 -0
- data/vendor/libraries/liblmdb/mtest5.c +135 -0
- data/vendor/libraries/liblmdb/mtest6.c +141 -0
- data/vendor/libraries/liblmdb/sample-bdb.txt +73 -0
- data/vendor/libraries/liblmdb/sample-mdb.txt +62 -0
- data/vendor/libraries/liblmdb/tooltag +27 -0
- metadata +53 -18
- data/.gitignore +0 -13
- data/.travis.yml +0 -14
- data/ext/lmdb_ext/liblmdb/CHANGES +0 -112
data/ext/lmdb_ext/lmdb_ext.h
CHANGED
@@ -47,19 +47,35 @@
|
|
47
47
|
Data_Get_Struct(var, Cursor, var_cur); \
|
48
48
|
cursor_check(var_cur)
|
49
49
|
|
50
|
+
/*
|
51
|
+
hey yo if you can convince hyc to add a function like
|
52
|
+
mdb_txn_get_flags or even mdb_txn_is_rdonly, you could probably get
|
53
|
+
rid of these wrapper structs and a lot of complexity, cause that is
|
54
|
+
literally the only reason why they're needed
|
55
|
+
|
56
|
+
actually no we would also need to know when a txn has a child and
|
57
|
+
there is also no mdb_txn_get_child or whatever
|
58
|
+
*/
|
59
|
+
|
50
60
|
typedef struct {
|
51
61
|
VALUE env;
|
52
|
-
VALUE parent;
|
62
|
+
VALUE parent; // ignored for ro threads
|
63
|
+
VALUE child; // ditto
|
53
64
|
VALUE thread;
|
54
65
|
VALUE cursors;
|
55
66
|
MDB_txn* txn;
|
56
67
|
unsigned int flags;
|
57
68
|
} Transaction;
|
58
69
|
|
70
|
+
// we have an extra field `rw_txn_thread` here that acts as the
|
71
|
+
// registry for the single read-write transaction. if it's populated,
|
72
|
+
// that's the one
|
73
|
+
|
59
74
|
typedef struct {
|
60
75
|
MDB_env* env;
|
61
|
-
VALUE thread_txn_hash;
|
62
|
-
VALUE txn_thread_hash;
|
76
|
+
VALUE thread_txn_hash; /* transaction -> thread */
|
77
|
+
VALUE txn_thread_hash; /* thread -> transaction */
|
78
|
+
VALUE rw_txn_thread; /* the thread with the rw transaction */
|
63
79
|
} Environment;
|
64
80
|
|
65
81
|
typedef struct {
|
data/lib/lmdb/database.rb
CHANGED
@@ -11,8 +11,8 @@ module LMDB
|
|
11
11
|
# puts "at #{key}: #{value}"
|
12
12
|
# end
|
13
13
|
def each
|
14
|
-
|
15
|
-
env.transaction do
|
14
|
+
maybe_txn true do
|
15
|
+
# env.transaction do
|
16
16
|
cursor do |c|
|
17
17
|
while i = c.next
|
18
18
|
yield(i)
|
@@ -56,8 +56,8 @@ module LMDB
|
|
56
56
|
# @return [Enumerator] in lieu of a block.
|
57
57
|
def each_key(&block)
|
58
58
|
return enum_for :each_key unless block_given?
|
59
|
-
|
60
|
-
env.transaction do
|
59
|
+
maybe_txn true do
|
60
|
+
#env.transaction do
|
61
61
|
cursor do |c|
|
62
62
|
while (rec = c.next true)
|
63
63
|
yield rec.first
|
@@ -81,8 +81,8 @@ module LMDB
|
|
81
81
|
return
|
82
82
|
end
|
83
83
|
|
84
|
-
|
85
|
-
env.transaction do
|
84
|
+
maybe_txn true do
|
85
|
+
# env.transaction do
|
86
86
|
cursor do |c|
|
87
87
|
method = :set
|
88
88
|
while rec = c.send(method, key)
|
@@ -124,8 +124,9 @@ module LMDB
|
|
124
124
|
|
125
125
|
ret = false
|
126
126
|
# read-only txn was having trouble being nested inside a read-write
|
127
|
-
|
128
|
-
env.transaction do
|
127
|
+
maybe_txn true do
|
128
|
+
# env.transaction true do
|
129
|
+
# env.transaction do
|
129
130
|
cursor { |c| ret = !!c.set(key, value) }
|
130
131
|
end
|
131
132
|
ret
|
data/lib/lmdb/version.rb
CHANGED
data/lmdb.gemspec
CHANGED
@@ -9,13 +9,13 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.date = Date.today.to_s
|
10
10
|
s.licenses = ['MIT']
|
11
11
|
s.summary = 'Ruby bindings to Lightning MDB'
|
12
|
-
s.email = '
|
13
|
-
s.homepage = 'https://github.com/
|
12
|
+
s.email = 'code@doriantaylor.com'
|
13
|
+
s.homepage = 'https://github.com/doriantaylor/rb-lmdb'
|
14
14
|
s.description = 'lmdb is a Ruby binding to OpenLDAP Lightning MDB.'
|
15
|
-
s.authors = ['Daniel Mendler']
|
15
|
+
s.authors = ['Daniel Mendler', 'Dorian Taylor']
|
16
16
|
s.extensions = Dir['ext/**/extconf.rb']
|
17
17
|
|
18
|
-
s.files = `git ls-files
|
18
|
+
s.files = `git ls-files --recurse-submodules -- *`.split("\n")
|
19
19
|
s.test_files = `git ls-files -- spec/*`.split("\n")
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
@@ -23,4 +23,5 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.add_development_dependency 'rake', "~> 13.0"
|
24
24
|
s.add_development_dependency 'rake-compiler', '~> 1.1'
|
25
25
|
s.add_development_dependency 'rspec', "~> 3.0"
|
26
|
+
s.add_development_dependency 'ruby_memcheck', "~> 1.0"
|
26
27
|
end
|
data/spec/helper.rb
CHANGED