extralite-bundle 2.11 → 2.13

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.
@@ -1,4 +1,4 @@
1
1
  module Extralite
2
2
  # Extralite version
3
- VERSION = '2.11'
3
+ VERSION = '2.13'
4
4
  end
data/test/perf_array.rb CHANGED
@@ -4,7 +4,7 @@ require 'bundler/inline'
4
4
 
5
5
  gemfile do
6
6
  source 'https://rubygems.org'
7
- gem 'sqlite3'
7
+ gem 'sqlite3', '2.6.0'
8
8
  gem 'extralite', path: '..'
9
9
  gem 'benchmark-ips'
10
10
  end
data/test/perf_hash.rb CHANGED
@@ -7,7 +7,7 @@ require 'bundler/inline'
7
7
  gemfile do
8
8
  source 'https://rubygems.org'
9
9
  gem 'extralite', path: '..'
10
- gem 'sqlite3'
10
+ gem 'sqlite3', '2.6.0'
11
11
  gem 'benchmark-ips'
12
12
  end
13
13
 
@@ -5,7 +5,7 @@ require 'bundler/inline'
5
5
  gemfile do
6
6
  source 'https://rubygems.org'
7
7
  gem 'extralite', path: '..'
8
- gem 'sqlite3'
8
+ gem 'sqlite3', '2.6.0'
9
9
  gem 'benchmark-ips'
10
10
  end
11
11
 
@@ -20,7 +20,7 @@ $db2 = Extralite::Database.new(DB_PATH, gvl_release_threshold: 0)
20
20
  $db3 = Extralite::Database.new(DB_PATH)
21
21
 
22
22
  $snooze_count = 0
23
- $db3.on_progress(25) { $snooze_count += 1; snooze }
23
+ $db3.on_progress(tick: 50, period: 100, mode: :at_least_once) { $snooze_count += 1; snooze }
24
24
 
25
25
  def prepare_database(count)
26
26
  $db1.execute('create table if not exists foo ( a integer primary key, b text )')
data/test/perf_splat.rb CHANGED
@@ -4,7 +4,7 @@ require 'bundler/inline'
4
4
 
5
5
  gemfile do
6
6
  source 'https://rubygems.org'
7
- gem 'sqlite3'
7
+ gem 'sqlite3', '2.6.0'
8
8
  gem 'extralite', path: '..'
9
9
  gem 'benchmark-ips'
10
10
  end
@@ -1221,6 +1221,8 @@ class ScenarioTest < Minitest::Test
1221
1221
  t2&.kill
1222
1222
  end
1223
1223
 
1224
+ # Note: more comprehensive testing of the trace functionality is done in
1225
+ # test_trace.rb
1224
1226
  def test_database_trace
1225
1227
  sqls = []
1226
1228
  @db.trace { |sql| sqls << sql }
@@ -1245,18 +1247,6 @@ class ScenarioTest < Minitest::Test
1245
1247
  @db.query('select 4')
1246
1248
  assert_equal ['select 1', 'select 2', 'select 3'], sqls
1247
1249
  end
1248
-
1249
- def test_database_trace_expanded_sql
1250
- sqls = []
1251
- @db.trace { |sql| sqls << sql }
1252
-
1253
- @db.query('select ?, ?, ?', 1, '2', 3)
1254
- assert_equal ["select 1, '2', 3"], sqls
1255
-
1256
- sqls = []
1257
- @db.query('select :x, :y, :z', x: 42, y: '43')
1258
- assert_equal ["select 42, '43', NULL"], sqls
1259
- end
1260
1250
  end
1261
1251
 
1262
1252
  class BackupTest < Minitest::Test
@@ -1337,7 +1327,7 @@ class ConcurrencyTest < Minitest::Test
1337
1327
  t2.join
1338
1328
  t1.join
1339
1329
 
1340
- assert delays.size > 4
1330
+ assert_in_range 4.., delays.size
1341
1331
  assert_equal 0, delays.select { |d| d > 0.15 }.size
1342
1332
  ensure
1343
1333
  t1&.kill
@@ -0,0 +1,189 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'helper'
4
+ require 'date'
5
+ require 'json'
6
+
7
+ class DatabaseTraceTest < Minitest::Test
8
+ def setup
9
+ @db = Extralite::Database.new(':memory:')
10
+
11
+ @trace_buf = []
12
+ @db.trace { |sql, *args| @trace_buf << { sql: sql, args: args } }
13
+ end
14
+
15
+ def test_trace_database_query
16
+ @db.query('select 1')
17
+ @db.query('select ?', 2)
18
+ @db.query('select ?, ?, ?', 3, 4, 5)
19
+ @db.query('select :x, :y, :z', x: 6, y: 7)
20
+
21
+ assert_equal [
22
+ { sql: 'select 1', args: [] },
23
+ { sql: 'select ?', args: [2] },
24
+ { sql: 'select ?, ?, ?', args: [3, 4, 5] },
25
+ { sql: 'select :x, :y, :z', args: [{ x: 6, y: 7 }] }
26
+ ], @trace_buf
27
+ end
28
+
29
+ def test_trace_database_execute
30
+ @db.execute('select 1')
31
+ @db.execute('select ?', 2)
32
+ @db.execute('select ?, ?, ?', 3, 4, 5)
33
+ @db.execute('select :x, :y, :z', x: 6, y: 7)
34
+
35
+ assert_equal [
36
+ { sql: 'select 1', args: [] },
37
+ { sql: 'select ?', args: [2] },
38
+ { sql: 'select ?, ?, ?', args: [3, 4, 5] },
39
+ { sql: 'select :x, :y, :z', args: [{ x: 6, y: 7 }] }
40
+ ], @trace_buf
41
+ end
42
+
43
+ def test_trace_database_query_xxx
44
+ @db.query_single('select 1')
45
+ @db.query_array('select ?', 2)
46
+ @db.query_splat('select ?, ?, ?', 3, 4, 5)
47
+ @db.query_single_array('select :x, :y, :z', x: 6, y: 7)
48
+
49
+ assert_equal [
50
+ { sql: 'select 1', args: [] },
51
+ { sql: 'select ?', args: [2] },
52
+ { sql: 'select ?, ?, ?', args: [3, 4, 5] },
53
+ { sql: 'select :x, :y, :z', args: [{ x: 6, y: 7 }] }
54
+ ], @trace_buf
55
+ end
56
+
57
+ def test_trace_database_batch_execute
58
+ @db.batch_execute('select ?', [1, 2, 3])
59
+ @db.batch_execute('select ?, ?', [[44, 55], [66, 77]])
60
+ @db.batch_execute('select :x, :y', [{ x: 5, y: 6 }, { x: 7, y: 8 }])
61
+
62
+ assert_equal [
63
+ { sql: 'select ?', args: [1] },
64
+ { sql: 'select ?', args: [2] },
65
+ { sql: 'select ?', args: [3] },
66
+ { sql: 'select ?, ?', args: [44, 55] },
67
+ { sql: 'select ?, ?', args: [66, 77] },
68
+ { sql: 'select :x, :y', args: [{ x: 5, y: 6 }] },
69
+ { sql: 'select :x, :y', args: [{ x: 7, y: 8 }] }
70
+ ], @trace_buf
71
+ end
72
+
73
+ def test_trace_database_batch_query
74
+ @db.batch_query('select ?', [1, 2, 3])
75
+ @db.batch_query('select ?, ?', [[44, 55], [66, 77]])
76
+ @db.batch_query('select :x, :y', [{ x: 5, y: 6 }, { x: 7, y: 8 }])
77
+
78
+ assert_equal [
79
+ { sql: 'select ?', args: [1] },
80
+ { sql: 'select ?', args: [2] },
81
+ { sql: 'select ?', args: [3] },
82
+ { sql: 'select ?, ?', args: [44, 55] },
83
+ { sql: 'select ?, ?', args: [66, 77] },
84
+ { sql: 'select :x, :y', args: [{ x: 5, y: 6 }] },
85
+ { sql: 'select :x, :y', args: [{ x: 7, y: 8 }] }
86
+ ], @trace_buf
87
+ end
88
+
89
+ def test_trace_database_batch_query_with_enumerable
90
+ @db.batch_query('select ?', 1..3)
91
+
92
+ assert_equal [
93
+ { sql: 'select ?', args: [1] },
94
+ { sql: 'select ?', args: [2] },
95
+ { sql: 'select ?', args: [3] }
96
+ ], @trace_buf
97
+ end
98
+
99
+ def test_trace_database_batch_query_with_proc
100
+ values = [4, 5, 6]
101
+
102
+ @db.batch_query('select ?', -> { values.shift })
103
+
104
+ assert_equal [
105
+ { sql: 'select ?', args: [4] },
106
+ { sql: 'select ?', args: [5] },
107
+ { sql: 'select ?', args: [6] }
108
+ ], @trace_buf
109
+ end
110
+ end
111
+
112
+ class QueryTraceTest < Minitest::Test
113
+ def setup
114
+ @db = Extralite::Database.new(':memory:')
115
+
116
+ @query = @db.prepare('select ?')
117
+
118
+ @trace_buf = []
119
+ @db.trace { |sql, *args| @trace_buf << { sql: sql, args: args } }
120
+ end
121
+
122
+ def test_trace_query_iteration
123
+ assert_equal [], @trace_buf
124
+
125
+ @query.bind(42)
126
+ assert_equal [], @trace_buf
127
+
128
+ @query.to_a
129
+ assert_equal [
130
+ { sql: 'select ?', args: [42] },
131
+ ], @trace_buf
132
+
133
+ @query.to_a
134
+ assert_equal [
135
+ { sql: 'select ?', args: [42] },
136
+ { sql: 'select ?', args: [42] }
137
+ ], @trace_buf
138
+
139
+ @query.bind(44)
140
+ assert_equal [
141
+ { sql: 'select ?', args: [42] },
142
+ { sql: 'select ?', args: [42] }
143
+ ], @trace_buf
144
+
145
+ @query.reset
146
+ assert_equal [
147
+ { sql: 'select ?', args: [42] },
148
+ { sql: 'select ?', args: [42] },
149
+ { sql: 'select ?', args: [44] }
150
+ ], @trace_buf
151
+
152
+ @trace_buf = []
153
+ @query.bind(46)
154
+ assert_equal [], @trace_buf
155
+
156
+ @query.each { }
157
+ assert_equal [
158
+ { sql: 'select ?', args: [46] }
159
+ ], @trace_buf
160
+
161
+ @trace_buf = []
162
+ @query.bind(48)
163
+ assert_equal [], @trace_buf
164
+
165
+ e = @query.each
166
+ e.to_a
167
+ assert_equal [
168
+ { sql: 'select ?', args: [48] }
169
+ ], @trace_buf
170
+
171
+ e.map {}
172
+ assert_equal [
173
+ { sql: 'select ?', args: [48] },
174
+ { sql: 'select ?', args: [48] }
175
+ ], @trace_buf
176
+ end
177
+
178
+ def test_trace_query_batch_execute
179
+ assert_equal [], @trace_buf
180
+
181
+ @query.batch_execute([42, 43, 44])
182
+ assert_equal [
183
+ { sql: 'select ?', args: [42] },
184
+ { sql: 'select ?', args: [43] },
185
+ { sql: 'select ?', args: [44] },
186
+ ], @trace_buf
187
+
188
+ end
189
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: extralite-bundle
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.11'
4
+ version: '2.13'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-14 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rake-compiler
@@ -146,6 +146,7 @@ files:
146
146
  - test/test_iterator.rb
147
147
  - test/test_query.rb
148
148
  - test/test_sequel.rb
149
+ - test/test_trace.rb
149
150
  homepage: https://github.com/digital-fabric/extralite
150
151
  licenses:
151
152
  - MIT
@@ -171,7 +172,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
171
172
  - !ruby/object:Gem::Version
172
173
  version: '0'
173
174
  requirements: []
174
- rubygems_version: 3.6.2
175
+ rubygems_version: 3.6.8
175
176
  specification_version: 4
176
177
  summary: Extra-lightweight SQLite3 wrapper for Ruby with bundled SQLite3
177
178
  test_files: []