extralite 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.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGELOG.md +34 -13
  4. data/Gemfile +4 -0
  5. data/Gemfile-bundle +1 -1
  6. data/LICENSE +1 -1
  7. data/README.md +1059 -247
  8. data/Rakefile +18 -0
  9. data/TODO.md +0 -7
  10. data/examples/kv_store.rb +49 -0
  11. data/examples/multi_fiber.rb +16 -0
  12. data/examples/on_progress.rb +9 -0
  13. data/examples/pubsub_store_polyphony.rb +194 -0
  14. data/examples/pubsub_store_threads.rb +204 -0
  15. data/ext/extralite/changeset.c +463 -0
  16. data/ext/extralite/common.c +177 -91
  17. data/ext/extralite/database.c +745 -276
  18. data/ext/extralite/extconf-bundle.rb +10 -4
  19. data/ext/extralite/extconf.rb +34 -34
  20. data/ext/extralite/extralite.h +104 -47
  21. data/ext/extralite/extralite_ext.c +6 -0
  22. data/ext/extralite/iterator.c +14 -86
  23. data/ext/extralite/query.c +171 -264
  24. data/extralite-bundle.gemspec +1 -1
  25. data/extralite.gemspec +1 -1
  26. data/gemspec.rb +10 -11
  27. data/lib/extralite/version.rb +1 -1
  28. data/lib/extralite.rb +69 -10
  29. data/lib/sequel/adapters/extralite.rb +1 -1
  30. data/test/helper.rb +9 -1
  31. data/test/perf_argv_transform.rb +74 -0
  32. data/test/perf_ary.rb +14 -12
  33. data/test/perf_hash.rb +17 -15
  34. data/test/perf_hash_prepared.rb +58 -0
  35. data/test/perf_hash_transform.rb +66 -0
  36. data/test/perf_polyphony.rb +74 -0
  37. data/test/test_changeset.rb +161 -0
  38. data/test/test_database.rb +720 -104
  39. data/test/test_extralite.rb +2 -2
  40. data/test/test_iterator.rb +28 -13
  41. data/test/test_query.rb +352 -110
  42. data/test/test_sequel.rb +4 -4
  43. metadata +24 -16
  44. data/Gemfile.lock +0 -37
  45. 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 < MiniTest::Test
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("extralite-migration") do |dir|
50
- File.write(dir + "/001_migrate.rb", <<~RUBY)
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("extralite://")
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
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.5'
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-01-16 00:00:00.000000000 Z
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.1.6
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.1.6
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.15.0
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.15.0
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.27
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.27
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.51.0
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.51.0
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
@@ -126,10 +131,14 @@ files:
126
131
  - test/issue-38.rb
127
132
  - test/issue-54.rb
128
133
  - test/issue-59.rb
134
+ - test/perf_argv_transform.rb
129
135
  - test/perf_ary.rb
130
136
  - test/perf_hash.rb
131
- - test/perf_prepared.rb
137
+ - test/perf_hash_prepared.rb
138
+ - test/perf_hash_transform.rb
139
+ - test/perf_polyphony.rb
132
140
  - test/run.rb
141
+ - test/test_changeset.rb
133
142
  - test/test_database.rb
134
143
  - test/test_extralite.rb
135
144
  - test/test_iterator.rb
@@ -139,14 +148,13 @@ homepage: https://github.com/digital-fabric/extralite
139
148
  licenses:
140
149
  - MIT
141
150
  metadata:
142
- source_code_uri: https://github.com/digital-fabric/extralite
143
- documentation_uri: https://www.rubydoc.info/gems/extralite
144
151
  homepage_uri: https://github.com/digital-fabric/extralite
152
+ documentation_uri: https://www.rubydoc.info/gems/extralite
145
153
  changelog_uri: https://github.com/digital-fabric/extralite/blob/master/CHANGELOG.md
146
154
  post_install_message:
147
155
  rdoc_options:
148
156
  - "--title"
149
- - extralite
157
+ - Extralite
150
158
  - "--main"
151
159
  - README.md
152
160
  require_paths:
@@ -162,7 +170,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
162
170
  - !ruby/object:Gem::Version
163
171
  version: '0'
164
172
  requirements: []
165
- rubygems_version: 3.4.1
173
+ rubygems_version: 3.5.3
166
174
  signing_key:
167
175
  specification_version: 4
168
176
  summary: Extra-lightweight SQLite3 wrapper for Ruby
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
@@ -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