extralite 1.8.2 → 1.12

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.
data/extralite.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.extra_rdoc_files = ["README.md"]
20
20
  s.extensions = ["ext/extralite/extconf.rb"]
21
21
  s.require_paths = ["lib"]
22
- s.required_ruby_version = '>= 2.6'
22
+ s.required_ruby_version = '>= 2.7'
23
23
 
24
24
  s.add_development_dependency 'rake-compiler', '1.1.6'
25
25
  s.add_development_dependency 'minitest', '5.15.0'
@@ -1,3 +1,3 @@
1
1
  module Extralite
2
- VERSION = '1.8.2'
2
+ VERSION = '1.12'
3
3
  end
Binary file
Binary file
data/test/helper.rb CHANGED
@@ -3,3 +3,5 @@
3
3
  require 'bundler/setup'
4
4
  require 'extralite'
5
5
  require 'minitest/autorun'
6
+
7
+ puts "sqlite3 version: #{Extralite.sqlite3_version}"
data/test/perf_ary.rb ADDED
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/inline'
4
+
5
+ gemfile do
6
+ source 'https://rubygems.org'
7
+ gem 'sqlite3'
8
+ gem 'extralite', path: '..'
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_run(count)
27
+ db = SQLite3::Database.new(DB_PATH)
28
+ results = db.execute('select * from foo')
29
+ raise unless results.size == count
30
+ end
31
+
32
+ def extralite_run(count)
33
+ db = Extralite::Database.new(DB_PATH)
34
+ results = db.query_ary('select * from foo')
35
+ raise unless results.size == count
36
+ end
37
+
38
+ [10, 1000, 100000].each do |c|
39
+ puts; puts; puts "Record count: #{c}"
40
+
41
+ prepare_database(c)
42
+
43
+ Benchmark.ips do |x|
44
+ x.config(:time => 3, :warmup => 1)
45
+
46
+ x.report("sqlite3") { sqlite3_run(c) }
47
+ x.report("extralite") { extralite_run(c) }
48
+
49
+ x.compare!
50
+ end
51
+ end
File without changes
@@ -138,6 +138,45 @@ end
138
138
  r = @db.query('select x, y, z from t where z = :bazzz', ':bazzz' => 6)
139
139
  assert_equal [{ x: 4, y: 5, z: 6 }], r
140
140
  end
141
+
142
+ def test_parameter_binding_with_index_key
143
+ r = @db.query('select x, y, z from t where z = ?', 1 => 3)
144
+ assert_equal [{ x: 1, y: 2, z: 3 }], r
145
+
146
+ r = @db.query('select x, y, z from t where x = ?2', 1 => 42, 2 => 4)
147
+ assert_equal [{ x: 4, y: 5, z: 6 }], r
148
+ end
149
+
150
+ def test_value_casting
151
+ r = @db.query_single_value("select 'abc'")
152
+ assert_equal 'abc', r
153
+
154
+ r = @db.query_single_value('select 123')
155
+ assert_equal 123, r
156
+
157
+ r = @db.query_single_value('select 12.34')
158
+ assert_equal 12.34, r
159
+
160
+ r = @db.query_single_value('select zeroblob(4)')
161
+ assert_equal "\x00\x00\x00\x00", r
162
+
163
+ r = @db.query_single_value('select null')
164
+ assert_nil r
165
+ end
166
+
167
+
168
+
169
+ def test_extension_loading
170
+ case RUBY_PLATFORM
171
+ when /linux/
172
+ @db.load_extension(File.join(__dir__, 'extensions/text.so'))
173
+ when /darwin/
174
+ @db.load_extension(File.join(__dir__, 'extensions/text.dylib'))
175
+ end
176
+
177
+ r = @db.query_single_value("select reverse('abcd')")
178
+ assert_equal 'dcba', r
179
+ end
141
180
  end
142
181
 
143
182
  class ScenarioTest < MiniTest::Test
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+
5
+ class ExtraliteTest < MiniTest::Test
6
+ SQLITE3_C_PATH = File.expand_path('../ext/extralite/sqlite3.c', __dir__)
7
+ SQLITE_VERSION_DEFINE_REGEXP = /#define SQLITE_VERSION\s+"([\d\.]+)"/m.freeze
8
+
9
+ def test_sqlite3_version
10
+ version = IO.read(SQLITE3_C_PATH).match(SQLITE_VERSION_DEFINE_REGEXP)[1]
11
+
12
+ assert_equal version, Extralite.sqlite3_version
13
+ end
14
+ end
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: 1.8.2
4
+ version: '1.12'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-12-15 00:00:00.000000000 Z
11
+ date: 2022-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake-compiler
@@ -80,7 +80,7 @@ dependencies:
80
80
  - - '='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 5.51.0
83
- description:
83
+ description:
84
84
  email: sharon@noteflakes.com
85
85
  executables: []
86
86
  extensions:
@@ -88,6 +88,7 @@ extensions:
88
88
  extra_rdoc_files:
89
89
  - README.md
90
90
  files:
91
+ - ".github/FUNDING.yml"
91
92
  - ".github/workflows/test.yml"
92
93
  - ".gitignore"
93
94
  - CHANGELOG.md
@@ -100,14 +101,20 @@ files:
100
101
  - ext/extralite/extconf.rb
101
102
  - ext/extralite/extralite.c
102
103
  - ext/extralite/extralite_ext.c
104
+ - ext/extralite/sqlite3.c
105
+ - ext/extralite/sqlite3.h
103
106
  - extralite.gemspec
104
107
  - lib/extralite.rb
105
108
  - lib/extralite/version.rb
106
109
  - lib/sequel/adapters/extralite.rb
110
+ - test/extensions/text.dylib
111
+ - test/extensions/text.so
107
112
  - test/helper.rb
108
- - test/perf.rb
113
+ - test/perf_ary.rb
114
+ - test/perf_hash.rb
109
115
  - test/run.rb
110
116
  - test/test_database.rb
117
+ - test/test_extralite.rb
111
118
  - test/test_sequel.rb
112
119
  homepage: https://github.com/digital-fabric/extralite
113
120
  licenses:
@@ -117,7 +124,7 @@ metadata:
117
124
  documentation_uri: https://www.rubydoc.info/gems/extralite
118
125
  homepage_uri: https://github.com/digital-fabric/extralite
119
126
  changelog_uri: https://github.com/digital-fabric/extralite/blob/master/CHANGELOG.md
120
- post_install_message:
127
+ post_install_message:
121
128
  rdoc_options:
122
129
  - "--title"
123
130
  - extralite
@@ -129,15 +136,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
136
  requirements:
130
137
  - - ">="
131
138
  - !ruby/object:Gem::Version
132
- version: '2.6'
139
+ version: '2.7'
133
140
  required_rubygems_version: !ruby/object:Gem::Requirement
134
141
  requirements:
135
142
  - - ">="
136
143
  - !ruby/object:Gem::Version
137
144
  version: '0'
138
145
  requirements: []
139
- rubygems_version: 3.1.6
140
- signing_key:
146
+ rubygems_version: 3.3.3
147
+ signing_key:
141
148
  specification_version: 4
142
149
  summary: Extra-lightweight SQLite3 wrapper for Ruby
143
150
  test_files: []