extralite-bundle 2.5 → 2.7
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/.gitignore +1 -0
- data/CHANGELOG.md +34 -13
- data/Gemfile +4 -0
- data/Gemfile-bundle +1 -1
- data/LICENSE +1 -1
- data/README.md +1059 -247
- data/Rakefile +18 -0
- data/TODO.md +0 -7
- data/examples/kv_store.rb +49 -0
- data/examples/multi_fiber.rb +16 -0
- data/examples/on_progress.rb +9 -0
- data/examples/pubsub_store_polyphony.rb +194 -0
- data/examples/pubsub_store_threads.rb +204 -0
- data/ext/extralite/changeset.c +463 -0
- data/ext/extralite/common.c +177 -91
- data/ext/extralite/database.c +745 -276
- data/ext/extralite/extconf-bundle.rb +10 -4
- data/ext/extralite/extconf.rb +34 -34
- data/ext/extralite/extralite.h +104 -47
- data/ext/extralite/extralite_ext.c +6 -0
- data/ext/extralite/iterator.c +14 -86
- data/ext/extralite/query.c +171 -264
- data/extralite-bundle.gemspec +1 -1
- data/extralite.gemspec +1 -1
- data/gemspec.rb +10 -11
- data/lib/extralite/version.rb +1 -1
- data/lib/extralite.rb +69 -10
- data/lib/sequel/adapters/extralite.rb +1 -1
- data/test/helper.rb +9 -1
- data/test/perf_argv_transform.rb +74 -0
- data/test/perf_ary.rb +14 -12
- data/test/perf_hash.rb +17 -15
- data/test/perf_hash_prepared.rb +58 -0
- data/test/perf_hash_transform.rb +66 -0
- data/test/perf_polyphony.rb +74 -0
- data/test/test_changeset.rb +161 -0
- data/test/test_database.rb +720 -104
- data/test/test_extralite.rb +2 -2
- data/test/test_iterator.rb +28 -13
- data/test/test_query.rb +352 -110
- data/test/test_sequel.rb +4 -4
- metadata +24 -16
- data/Gemfile.lock +0 -37
- data/test/perf_prepared.rb +0 -64
data/test/test_sequel.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
require_relative 'helper'
|
4
4
|
require 'sequel'
|
5
5
|
|
6
|
-
class SequelExtraliteTest <
|
6
|
+
class SequelExtraliteTest < Minitest::Test
|
7
7
|
def setup
|
8
8
|
@db = Sequel.connect('extralite::memory:')
|
9
9
|
@db.create_table :items do
|
@@ -46,8 +46,8 @@ class SequelExtraliteTest < MiniTest::Test
|
|
46
46
|
|
47
47
|
def test_migration
|
48
48
|
# Adapted from https://github.com/digital-fabric/extralite/issues/8
|
49
|
-
Dir.mktmpdir(
|
50
|
-
File.write(dir +
|
49
|
+
Dir.mktmpdir('extralite-migration') do |dir|
|
50
|
+
File.write(dir + '/001_migrate.rb', <<~RUBY)
|
51
51
|
Sequel.migration do
|
52
52
|
change do
|
53
53
|
create_table(:foobars) { primary_key :id }
|
@@ -56,7 +56,7 @@ class SequelExtraliteTest < MiniTest::Test
|
|
56
56
|
RUBY
|
57
57
|
|
58
58
|
Sequel.extension :migration
|
59
|
-
db = Sequel.connect(
|
59
|
+
db = Sequel.connect('extralite://')
|
60
60
|
Sequel::Migrator.run(db, dir)
|
61
61
|
|
62
62
|
assert_equal [:id], db[:foobars].columns
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: extralite-bundle
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '2.
|
4
|
+
version: '2.7'
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.2.7
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.2.7
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 5.
|
33
|
+
version: 5.21.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: 5.
|
40
|
+
version: 5.21.2
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: simplecov
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,28 +58,28 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - '='
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.9.
|
61
|
+
version: 0.9.34
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - '='
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.9.
|
68
|
+
version: 0.9.34
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: sequel
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - '='
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 5.
|
75
|
+
version: 5.77.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - '='
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: 5.
|
82
|
+
version: 5.77.0
|
83
83
|
description:
|
84
84
|
email: sharon@noteflakes.com
|
85
85
|
executables: []
|
@@ -97,12 +97,17 @@ files:
|
|
97
97
|
- CHANGELOG.md
|
98
98
|
- Gemfile
|
99
99
|
- Gemfile-bundle
|
100
|
-
- Gemfile.lock
|
101
100
|
- LICENSE
|
102
101
|
- README.md
|
103
102
|
- Rakefile
|
104
103
|
- TODO.md
|
105
104
|
- bin/update_sqlite_source
|
105
|
+
- examples/kv_store.rb
|
106
|
+
- examples/multi_fiber.rb
|
107
|
+
- examples/on_progress.rb
|
108
|
+
- examples/pubsub_store_polyphony.rb
|
109
|
+
- examples/pubsub_store_threads.rb
|
110
|
+
- ext/extralite/changeset.c
|
106
111
|
- ext/extralite/common.c
|
107
112
|
- ext/extralite/database.c
|
108
113
|
- ext/extralite/extconf-bundle.rb
|
@@ -128,10 +133,14 @@ files:
|
|
128
133
|
- test/issue-38.rb
|
129
134
|
- test/issue-54.rb
|
130
135
|
- test/issue-59.rb
|
136
|
+
- test/perf_argv_transform.rb
|
131
137
|
- test/perf_ary.rb
|
132
138
|
- test/perf_hash.rb
|
133
|
-
- test/
|
139
|
+
- test/perf_hash_prepared.rb
|
140
|
+
- test/perf_hash_transform.rb
|
141
|
+
- test/perf_polyphony.rb
|
134
142
|
- test/run.rb
|
143
|
+
- test/test_changeset.rb
|
135
144
|
- test/test_database.rb
|
136
145
|
- test/test_extralite.rb
|
137
146
|
- test/test_iterator.rb
|
@@ -141,14 +150,13 @@ homepage: https://github.com/digital-fabric/extralite
|
|
141
150
|
licenses:
|
142
151
|
- MIT
|
143
152
|
metadata:
|
144
|
-
source_code_uri: https://github.com/digital-fabric/extralite
|
145
|
-
documentation_uri: https://www.rubydoc.info/gems/extralite
|
146
153
|
homepage_uri: https://github.com/digital-fabric/extralite
|
154
|
+
documentation_uri: https://www.rubydoc.info/gems/extralite
|
147
155
|
changelog_uri: https://github.com/digital-fabric/extralite/blob/master/CHANGELOG.md
|
148
156
|
post_install_message:
|
149
157
|
rdoc_options:
|
150
158
|
- "--title"
|
151
|
-
-
|
159
|
+
- Extralite
|
152
160
|
- "--main"
|
153
161
|
- README.md
|
154
162
|
require_paths:
|
@@ -164,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
164
172
|
- !ruby/object:Gem::Version
|
165
173
|
version: '0'
|
166
174
|
requirements: []
|
167
|
-
rubygems_version: 3.
|
175
|
+
rubygems_version: 3.5.3
|
168
176
|
signing_key:
|
169
177
|
specification_version: 4
|
170
178
|
summary: Extra-lightweight SQLite3 wrapper for Ruby with bundled SQLite3
|
data/Gemfile.lock
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
extralite (2.5)
|
5
|
-
|
6
|
-
GEM
|
7
|
-
remote: https://rubygems.org/
|
8
|
-
specs:
|
9
|
-
docile (1.4.0)
|
10
|
-
json (2.7.1)
|
11
|
-
minitest (5.15.0)
|
12
|
-
rake (13.1.0)
|
13
|
-
rake-compiler (1.1.6)
|
14
|
-
rake
|
15
|
-
sequel (5.51.0)
|
16
|
-
simplecov (0.17.1)
|
17
|
-
docile (~> 1.1)
|
18
|
-
json (>= 1.8, < 3)
|
19
|
-
simplecov-html (~> 0.10.0)
|
20
|
-
simplecov-html (0.10.2)
|
21
|
-
webrick (1.7.0)
|
22
|
-
yard (0.9.27)
|
23
|
-
webrick (~> 1.7.0)
|
24
|
-
|
25
|
-
PLATFORMS
|
26
|
-
ruby
|
27
|
-
|
28
|
-
DEPENDENCIES
|
29
|
-
extralite!
|
30
|
-
minitest (= 5.15.0)
|
31
|
-
rake-compiler (= 1.1.6)
|
32
|
-
sequel (= 5.51.0)
|
33
|
-
simplecov (= 0.17.1)
|
34
|
-
yard (= 0.9.27)
|
35
|
-
|
36
|
-
BUNDLED WITH
|
37
|
-
2.4.22
|
data/test/perf_prepared.rb
DELETED
@@ -1,64 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'bundler/inline'
|
4
|
-
|
5
|
-
gemfile do
|
6
|
-
source 'https://rubygems.org'
|
7
|
-
gem 'extralite', path: '..'
|
8
|
-
gem 'sqlite3'
|
9
|
-
gem 'benchmark-ips'
|
10
|
-
end
|
11
|
-
|
12
|
-
require 'benchmark/ips'
|
13
|
-
require 'fileutils'
|
14
|
-
|
15
|
-
DB_PATH = '/tmp/extralite_sqlite3_perf.db'
|
16
|
-
|
17
|
-
def prepare_database(count)
|
18
|
-
FileUtils.rm(DB_PATH) rescue nil
|
19
|
-
db = Extralite::Database.new(DB_PATH)
|
20
|
-
db.query('create table foo ( a integer primary key, b text )')
|
21
|
-
db.query('begin')
|
22
|
-
count.times { db.query('insert into foo (b) values (?)', "hello#{rand(1000)}" )}
|
23
|
-
db.query('commit')
|
24
|
-
end
|
25
|
-
|
26
|
-
def sqlite3_prepare
|
27
|
-
db = SQLite3::Database.new(DB_PATH, :results_as_hash => true)
|
28
|
-
db.prepare('select * from foo')
|
29
|
-
end
|
30
|
-
|
31
|
-
def sqlite3_run(stmt, count)
|
32
|
-
# db = SQLite3::Database.new(DB_PATH, :results_as_hash => true)
|
33
|
-
results = stmt.execute.to_a
|
34
|
-
raise unless results.size == count
|
35
|
-
end
|
36
|
-
|
37
|
-
def extralite_prepare
|
38
|
-
db = Extralite::Database.new(DB_PATH)
|
39
|
-
db.prepare('select * from foo')
|
40
|
-
end
|
41
|
-
|
42
|
-
def extralite_run(query, count)
|
43
|
-
# db = Extralite::Database.new(DB_PATH)
|
44
|
-
results = query.to_a
|
45
|
-
raise unless results.size == count
|
46
|
-
end
|
47
|
-
|
48
|
-
[10, 1000, 100000].each do |c|
|
49
|
-
puts; puts; puts "Record count: #{c}"
|
50
|
-
|
51
|
-
prepare_database(c)
|
52
|
-
|
53
|
-
sqlite3_stmt = sqlite3_prepare
|
54
|
-
extralite_stmt = extralite_prepare
|
55
|
-
|
56
|
-
Benchmark.ips do |x|
|
57
|
-
x.config(:time => 3, :warmup => 1)
|
58
|
-
|
59
|
-
x.report("sqlite3") { sqlite3_run(sqlite3_stmt, c) }
|
60
|
-
x.report("extralite") { extralite_run(extralite_stmt, c) }
|
61
|
-
|
62
|
-
x.compare!
|
63
|
-
end
|
64
|
-
end
|