lmdb 0.3.0 → 0.3.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/.travis.yml +6 -0
- data/CHANGES +4 -0
- data/README.md +21 -1
- data/Rakefile +3 -7
- data/ext/lmdb_ext/extconf.rb +11 -15
- data/ext/lmdb_ext/liblmdb/lmdb.h +1 -1
- data/ext/lmdb_ext/liblmdb/mdb.c +8 -3
- data/ext/lmdb_ext/lmdb_ext.c +7 -0
- data/ext/lmdb_ext/lmdb_ext.h +20 -2
- data/lib/lmdb/version.rb +1 -1
- data/lmdb.gemspec +2 -2
- data/spec/helper.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c192851303ba3bd76a139142c94322233284d3ed
|
4
|
+
data.tar.gz: b9482f90f6599d71f49989246fe9f2c526f47986
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e8fa0b74c2854ebd13ba07663ee65be141cefe08ae55075f6fd8817c805e21f48d32c886d687f4e85334958bfa1d9f39935a9764d343755dec3adbd7b3d67b08
|
7
|
+
data.tar.gz: c760928ef6d4fb1edb6a5a5d5432b9a8823af38e12457efaef74640aef3b7a6e7956bd258cf22b68c54a89136742fc48329c78ac0ce9db2bbfa1b135d8dd3a8a
|
data/.travis.yml
CHANGED
data/CHANGES
CHANGED
data/README.md
CHANGED
@@ -13,7 +13,27 @@ gem install lmdb
|
|
13
13
|
|
14
14
|
### API
|
15
15
|
|
16
|
-
|
16
|
+
~~~ ruby
|
17
|
+
require 'lmdb'
|
18
|
+
|
19
|
+
env = LMDB.new(path)
|
20
|
+
|
21
|
+
maindb = env.database
|
22
|
+
subdb = env.database('subdb', create: true)
|
23
|
+
|
24
|
+
maindb['key'] = 'value'
|
25
|
+
|
26
|
+
env.transaction do
|
27
|
+
maindb['key'] = 'value'
|
28
|
+
subdb['key'] = 'value'
|
29
|
+
end
|
30
|
+
|
31
|
+
env.close
|
32
|
+
~~~
|
33
|
+
|
34
|
+
For details take a look at the specs. If you want to have a simpler interface
|
35
|
+
to LMDB databases please consider using [Moneta](https://github.com/minad/moneta).
|
36
|
+
The Moneta gem provides an LMDB adapter which uses this gem.
|
17
37
|
|
18
38
|
### Licence (MIT)
|
19
39
|
|
data/Rakefile
CHANGED
@@ -2,13 +2,9 @@
|
|
2
2
|
|
3
3
|
require 'bundler/setup'
|
4
4
|
require 'rspec/core/rake_task'
|
5
|
-
require
|
5
|
+
require 'rake/extensiontask'
|
6
6
|
|
7
|
-
# Install spec tasks
|
8
7
|
RSpec::Core::RakeTask.new :spec
|
8
|
+
Rake::ExtensionTask.new :lmdb_ext
|
9
9
|
|
10
|
-
|
11
|
-
Rake::ExtensionTask.new('lmdb_ext')
|
12
|
-
|
13
|
-
desc 'Default: compile & run specs.'
|
14
|
-
task default: [:compile, :spec]
|
10
|
+
task :default => [:compile, :spec]
|
data/ext/lmdb_ext/extconf.rb
CHANGED
@@ -3,24 +3,20 @@ require 'mkmf'
|
|
3
3
|
$CFLAGS = '-std=c99 -Wall -g'
|
4
4
|
|
5
5
|
# Embed lmdb if we cannot find it
|
6
|
-
|
7
|
-
find_header('lmdb.h') && have_library('lmdb', 'mdb_env_create')
|
8
|
-
end
|
9
|
-
|
10
|
-
if enable_config("bundled-lmdb", false) || !have_lmbd
|
11
|
-
$VPATH << "$(srcdir)/liblmdb"
|
6
|
+
if enable_config("bundled-lmdb", false) || !(find_header('lmdb.h') && have_library('lmdb', 'mdb_env_create'))
|
12
7
|
$INCFLAGS << " -I$(srcdir)/liblmdb"
|
8
|
+
$VPATH << "$(srcdir)/liblmdb"
|
13
9
|
$srcs = Dir.glob("#{$srcdir}/{,liblmdb/}*.c").map {|n| File.basename(n) }
|
10
|
+
end
|
14
11
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
12
|
+
have_header 'limits.h'
|
13
|
+
have_header 'string.h'
|
14
|
+
have_header 'stdlib.h'
|
15
|
+
have_header 'errno.h'
|
16
|
+
have_header 'sys/types.h'
|
17
|
+
have_header 'assert.h'
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
end
|
19
|
+
have_header 'ruby.h'
|
20
|
+
have_func 'rb_funcall_passing_block'
|
25
21
|
|
26
22
|
create_makefile('lmdb_ext')
|
data/ext/lmdb_ext/liblmdb/lmdb.h
CHANGED
@@ -180,7 +180,7 @@ typedef int mdb_filehandle_t;
|
|
180
180
|
MDB_VERINT(MDB_VERSION_MAJOR,MDB_VERSION_MINOR,MDB_VERSION_PATCH)
|
181
181
|
|
182
182
|
/** The release date of this library version */
|
183
|
-
#define MDB_VERSION_DATE "
|
183
|
+
#define MDB_VERSION_DATE "September 9, 2013"
|
184
184
|
|
185
185
|
/** A stringifier for the version info */
|
186
186
|
#define MDB_VERSTR(a,b,c,d) "MDB " #a "." #b "." #c ": (" d ")"
|
data/ext/lmdb_ext/liblmdb/mdb.c
CHANGED
@@ -5231,9 +5231,10 @@ mdb_cursor_set(MDB_cursor *mc, MDB_val *key, MDB_val *data,
|
|
5231
5231
|
if (!mc->mc_top) {
|
5232
5232
|
/* There are no other pages */
|
5233
5233
|
mc->mc_ki[mc->mc_top] = 0;
|
5234
|
-
if (op == MDB_SET_RANGE)
|
5234
|
+
if (op == MDB_SET_RANGE) {
|
5235
|
+
rc = 0;
|
5235
5236
|
goto set1;
|
5236
|
-
else
|
5237
|
+
} else
|
5237
5238
|
return MDB_NOTFOUND;
|
5238
5239
|
}
|
5239
5240
|
}
|
@@ -5298,6 +5299,7 @@ set1:
|
|
5298
5299
|
if (rc) {
|
5299
5300
|
if (op == MDB_GET_BOTH || rc > 0)
|
5300
5301
|
return MDB_NOTFOUND;
|
5302
|
+
rc = 0;
|
5301
5303
|
}
|
5302
5304
|
|
5303
5305
|
} else {
|
@@ -7248,8 +7250,11 @@ mdb_rebalance(MDB_cursor *mc)
|
|
7248
7250
|
else {
|
7249
7251
|
if (mc->mc_ki[ptop] == 0)
|
7250
7252
|
rc = mdb_page_merge(&mn, mc);
|
7251
|
-
else
|
7253
|
+
else {
|
7254
|
+
mn.mc_ki[mn.mc_top] += mc->mc_ki[mn.mc_top] + 1;
|
7252
7255
|
rc = mdb_page_merge(mc, &mn);
|
7256
|
+
mdb_cursor_copy(&mn, mc);
|
7257
|
+
}
|
7253
7258
|
mc->mc_flags &= ~(C_INITIALIZED|C_EOF);
|
7254
7259
|
}
|
7255
7260
|
return rc;
|
data/ext/lmdb_ext/lmdb_ext.c
CHANGED
@@ -84,10 +84,17 @@ static void transaction_finish(VALUE self, int commit) {
|
|
84
84
|
check(ret);
|
85
85
|
}
|
86
86
|
|
87
|
+
// Ruby 1.8.7 compatibility
|
88
|
+
#ifndef HAVE_RB_FUNCALL_PASSING_BLOCK
|
89
|
+
static VALUE call_with_transaction_helper(VALUE arg) {
|
90
|
+
#error "Not implemented"
|
91
|
+
}
|
92
|
+
#else
|
87
93
|
static VALUE call_with_transaction_helper(VALUE arg) {
|
88
94
|
HelperArgs* a = (HelperArgs*)arg;
|
89
95
|
return rb_funcall_passing_block(a->self, rb_intern(a->name), a->argc, a->argv);
|
90
96
|
}
|
97
|
+
#endif
|
91
98
|
|
92
99
|
static VALUE call_with_transaction(VALUE venv, VALUE self, const char* name, int argc, const VALUE* argv, int flags) {
|
93
100
|
HelperArgs arg = { self, name, argc, argv };
|
data/ext/lmdb_ext/lmdb_ext.h
CHANGED
@@ -4,6 +4,26 @@
|
|
4
4
|
#include "ruby.h"
|
5
5
|
#include "lmdb.h"
|
6
6
|
|
7
|
+
// Ruby 1.8 compatibility
|
8
|
+
#ifndef SIZET2NUM
|
9
|
+
# if SIZEOF_SIZE_T > SIZEOF_LONG && defined(HAVE_LONG_LONG)
|
10
|
+
# define SIZET2NUM(v) ULL2NUM(v)
|
11
|
+
# elif SIZEOF_SIZE_T == SIZEOF_LONG
|
12
|
+
# define SIZET2NUM(v) ULONG2NUM(v)
|
13
|
+
# else
|
14
|
+
# define SIZET2NUM(v) UINT2NUM(v)
|
15
|
+
# endif
|
16
|
+
#endif
|
17
|
+
|
18
|
+
// Ruby 1.8 compatibility
|
19
|
+
#ifndef NUM2SSIZET
|
20
|
+
# if defined(HAVE_LONG_LONG) && SIZEOF_SIZE_T > SIZEOF_LONG
|
21
|
+
# define NUM2SSIZET(x) ((ssize_t)NUM2LL(x))
|
22
|
+
#else
|
23
|
+
# define NUM2SSIZET(x) NUM2LONG(x)
|
24
|
+
# endif
|
25
|
+
#endif
|
26
|
+
|
7
27
|
#define ENVIRONMENT(var, var_env) \
|
8
28
|
Environment* var_env; \
|
9
29
|
Data_Get_Struct(var, Environment, var_env); \
|
@@ -22,8 +42,6 @@
|
|
22
42
|
Data_Get_Struct(var, Cursor, var_cur); \
|
23
43
|
cursor_check(var_cur)
|
24
44
|
|
25
|
-
typedef struct Transaction Transaction;
|
26
|
-
|
27
45
|
typedef struct Transaction {
|
28
46
|
VALUE env;
|
29
47
|
VALUE parent;
|
data/lib/lmdb/version.rb
CHANGED
data/lmdb.gemspec
CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.summary = 'Ruby bindings to Lightning MDB'
|
12
12
|
s.email = 'mail@daniel-mendler.de'
|
13
13
|
s.homepage = 'https://github.com/minad/lmdb'
|
14
|
-
s.description = '
|
14
|
+
s.description = 'lmdb is a Ruby binding to OpenLDAP Lightning MDB.'
|
15
15
|
s.authors = ['Daniel Mendler']
|
16
16
|
s.extensions = Dir['ext/**/extconf.rb']
|
17
17
|
|
@@ -20,6 +20,6 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.require_paths = ['lib']
|
21
21
|
|
22
22
|
s.add_development_dependency 'rake'
|
23
|
-
s.add_development_dependency 'rake-compiler'
|
23
|
+
s.add_development_dependency 'rake-compiler', '<=0.8.2'
|
24
24
|
s.add_development_dependency 'rspec'
|
25
25
|
end
|
data/spec/helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lmdb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Mendler
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: rake-compiler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - <=
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 0.8.2
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - <=
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 0.8.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,7 +52,7 @@ dependencies:
|
|
52
52
|
- - '>='
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '0'
|
55
|
-
description:
|
55
|
+
description: lmdb is a Ruby binding to OpenLDAP Lightning MDB.
|
56
56
|
email: mail@daniel-mendler.de
|
57
57
|
executables: []
|
58
58
|
extensions:
|