extralite 2.8 → 2.8.2
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/.github/workflows/test-bundle.yml +6 -4
- data/.github/workflows/test.yml +5 -3
- data/CHANGELOG.md +10 -0
- data/README.md +1 -1
- data/examples/pubsub_store_polyphony.rb +5 -5
- data/ext/extralite/database.c +6 -0
- data/lib/extralite/version.rb +1 -1
- data/test/extensions/{text.dylib → arm64/text.dylib} +0 -0
- data/test/extensions/arm64/text.so +0 -0
- data/test/extensions/x86/text.dylib +0 -0
- data/test/extensions/x86/text.so +0 -0
- data/test/test_database.rb +53 -7
- metadata +6 -4
- data/test/extensions/text.so +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6b62d9130383d4b9c0f8d8efe4ef79b65ad848bd0c47bff3c24f42840f6312f
|
4
|
+
data.tar.gz: 40cad92b674fc3543786d66369a9fca9a0780888207fc067d2840f15017b4d9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ff4217cf7915fdc5847fe5d12b6bbec5fe702b846e8fe4c4775aced9e63085ff63651ffcd261e8b69ad6e09ba3312cc62ac36985458afe8d67bb7c9128089f42
|
7
|
+
data.tar.gz: 7ebf114c561a9ee4783129442276ec48d5b43d708cc59c378bb37eb486d25d0999e7ade54c85d90b0e8cce40946f2efbc100c76cd83a395fbc31325d9d8419df
|
@@ -11,11 +11,13 @@ jobs:
|
|
11
11
|
strategy:
|
12
12
|
fail-fast: false
|
13
13
|
matrix:
|
14
|
-
|
15
|
-
|
14
|
+
# macos-latest uses arm64, macos-13 uses x86
|
15
|
+
os: [ubuntu-latest, macos-latest, macos-13]
|
16
|
+
ruby: ['3.0', '3.1', '3.2', '3.3', 'head']
|
16
17
|
|
17
|
-
name:
|
18
|
-
|
18
|
+
name: ${{matrix.os}}, ${{matrix.ruby}}
|
19
|
+
|
20
|
+
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
|
19
21
|
|
20
22
|
runs-on: ${{matrix.os}}
|
21
23
|
steps:
|
data/.github/workflows/test.yml
CHANGED
@@ -11,11 +11,13 @@ jobs:
|
|
11
11
|
strategy:
|
12
12
|
fail-fast: false
|
13
13
|
matrix:
|
14
|
-
|
14
|
+
# macos-latest uses arm64, macos-13 uses x86
|
15
|
+
os: [ubuntu-latest, macos-latest, macos-13]
|
15
16
|
ruby: ['3.0', '3.1', '3.2', '3.3', 'head']
|
16
17
|
|
17
|
-
name:
|
18
|
-
|
18
|
+
name: ${{matrix.os}}, ${{matrix.ruby}}
|
19
|
+
|
20
|
+
if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
|
19
21
|
|
20
22
|
runs-on: ${{matrix.os}}
|
21
23
|
steps:
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 2.8.2 2024-06-02
|
2
|
+
|
3
|
+
- Update bundled SQLite to version 3.46.0
|
4
|
+
|
5
|
+
## 2.8.1 2024-04-15
|
6
|
+
|
7
|
+
- Update bundled sqlite to version 3.45.3.
|
8
|
+
- Fix `Database#execute` for SQL ending with a comment.
|
9
|
+
[#72](https://github.com/digital-fabric/extralite/pull/72)
|
10
|
+
|
1
11
|
# 2.8 2024-03-10
|
2
12
|
|
3
13
|
- Improve documentation.
|
data/README.md
CHANGED
@@ -32,7 +32,7 @@ databases.
|
|
32
32
|
Extralite comes in two flavors: the `extralite` gem which uses the
|
33
33
|
system-installed sqlite3 library, and the `extralite-bundle` gem which bundles
|
34
34
|
the latest version of SQLite
|
35
|
-
([3.
|
35
|
+
([3.46.0](https://sqlite.org/releaselog/3_46_0.html)), offering access to the
|
36
36
|
latest features and enhancements.
|
37
37
|
|
38
38
|
## Features
|
@@ -103,9 +103,9 @@ db2.pragma(journal_mode: :wal, synchronous: 1)
|
|
103
103
|
db3 = Extralite::Database.new(fn)
|
104
104
|
db3.pragma(journal_mode: :wal, synchronous: 1)
|
105
105
|
|
106
|
-
db1.on_progress
|
107
|
-
db2.on_progress
|
108
|
-
db3.on_progress
|
106
|
+
db1.on_progress { |b| b ? sleep(0.0001) : snooze }
|
107
|
+
db2.on_progress { |b| b ? sleep(0.0001) : snooze }
|
108
|
+
db3.on_progress { |b| b ? sleep(0.0001) : snooze }
|
109
109
|
|
110
110
|
producer = PubSub.new(db1)
|
111
111
|
producer.setup
|
@@ -163,7 +163,7 @@ end
|
|
163
163
|
|
164
164
|
db4 = Extralite::Database.new(fn)
|
165
165
|
db4.pragma(journal_mode: :wal, synchronous: 1)
|
166
|
-
db4.on_progress
|
166
|
+
db4.on_progress { |busy| busy ? sleep(0.05) : snooze }
|
167
167
|
|
168
168
|
last_t = Time.now
|
169
169
|
last_publish_count = 0
|
@@ -175,7 +175,7 @@ while true
|
|
175
175
|
d_publish = publish_count - last_publish_count
|
176
176
|
d_receive = receive_count - last_receive_count
|
177
177
|
pending = db4.query_single_splat('select count(*) from messages')
|
178
|
-
puts "#{Time.now} publish: #{d_publish/elapsed}/s receive: #{d_receive/elapsed}/s pending: #{pending}"
|
178
|
+
puts "#{Time.now} publish: #{(d_publish/elapsed).round}/s receive: #{(d_receive/elapsed).round}/s pending: #{pending} latency: #{pending / (d_receive/elapsed)}"
|
179
179
|
last_t = now
|
180
180
|
last_publish_count = publish_count
|
181
181
|
last_receive_count = receive_count
|
data/ext/extralite/database.c
CHANGED
@@ -294,6 +294,8 @@ static inline VALUE Database_perform_query(int argc, VALUE *argv, VALUE self, VA
|
|
294
294
|
prepare_multi_stmt(DB_GVL_MODE(db), db->sqlite3_db, &stmt, sql);
|
295
295
|
RB_GC_GUARD(sql);
|
296
296
|
|
297
|
+
if (stmt == NULL) return Qnil;
|
298
|
+
|
297
299
|
bind_all_parameters(stmt, argc - 1, argv + 1);
|
298
300
|
query_ctx ctx = QUERY_CTX(
|
299
301
|
self, sql, db, stmt, Qnil, transform,
|
@@ -485,6 +487,10 @@ VALUE Database_query_single_array(int argc, VALUE *argv, VALUE self) {
|
|
485
487
|
* specified using keyword arguments:
|
486
488
|
*
|
487
489
|
* db.execute('update foo set x = :bar', bar: 42)
|
490
|
+
*
|
491
|
+
* @param sql [String] query SQL
|
492
|
+
* @param parameters [Array, Hash] parameters to run query with
|
493
|
+
* @return [Integer, nil] Total number of changes effected or `nil` if the query ends with a comment.
|
488
494
|
*/
|
489
495
|
VALUE Database_execute(int argc, VALUE *argv, VALUE self) {
|
490
496
|
return Database_perform_query(argc, argv, self, safe_query_changes, QUERY_HASH);
|
data/lib/extralite/version.rb
CHANGED
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/test/test_database.rb
CHANGED
@@ -277,10 +277,14 @@ class DatabaseTest < Minitest::Test
|
|
277
277
|
|
278
278
|
def test_extension_loading
|
279
279
|
case RUBY_PLATFORM
|
280
|
-
when /linux/
|
281
|
-
@db.load_extension(File.join(__dir__, 'extensions/text.so'))
|
282
|
-
when /
|
283
|
-
@db.load_extension(File.join(__dir__, 'extensions/text.
|
280
|
+
when /aarch64-linux/
|
281
|
+
@db.load_extension(File.join(__dir__, 'extensions/arm64/text.so'))
|
282
|
+
when /x86_64-linux/
|
283
|
+
@db.load_extension(File.join(__dir__, 'extensions/x86/text.so'))
|
284
|
+
when /arm64-darwin/
|
285
|
+
@db.load_extension(File.join(__dir__, 'extensions/arm64/text.dylib'))
|
286
|
+
when /x86_64-darwin/
|
287
|
+
@db.load_extension(File.join(__dir__, 'extensions/x86/text.dylib'))
|
284
288
|
end
|
285
289
|
|
286
290
|
r = @db.query_single_splat("select reverse('abcd')")
|
@@ -948,7 +952,7 @@ class DatabaseTest < Minitest::Test
|
|
948
952
|
|
949
953
|
db.execute('insert into foo values (43)')
|
950
954
|
assert_equal [42, 43], db.query_splat('select x from foo')
|
951
|
-
|
955
|
+
|
952
956
|
db.savepoint(:b)
|
953
957
|
|
954
958
|
db.execute('insert into foo values (44)')
|
@@ -1046,6 +1050,48 @@ class DatabaseTest < Minitest::Test
|
|
1046
1050
|
assert File.size(wal_fn) == 0
|
1047
1051
|
assert_equal [0, 0], r
|
1048
1052
|
end
|
1053
|
+
|
1054
|
+
def test_execute_with_comments
|
1055
|
+
result = @db.execute(<<~SQL)
|
1056
|
+
-- this is a comment
|
1057
|
+
SQL
|
1058
|
+
assert_nil result
|
1059
|
+
|
1060
|
+
result = @db.execute(<<~SQL)
|
1061
|
+
DELETE FROM t;
|
1062
|
+
INSERT INTO t (x, y, z) VALUES (1, 1, 1);
|
1063
|
+
INSERT INTO t (x, y, z) VALUES (2, 2, 2);
|
1064
|
+
SQL
|
1065
|
+
assert_equal 1, result
|
1066
|
+
assert_equal [1, 2], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1067
|
+
|
1068
|
+
result = @db.execute(<<~SQL)
|
1069
|
+
-- this is a comment at the beginning
|
1070
|
+
DELETE FROM t;
|
1071
|
+
INSERT INTO t (x, y, z) VALUES (3, 3, 3);
|
1072
|
+
INSERT INTO t (x, y, z) VALUES (4, 4, 4);
|
1073
|
+
SQL
|
1074
|
+
assert_equal 1, result
|
1075
|
+
assert_equal [3, 4], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1076
|
+
|
1077
|
+
result = @db.execute(<<~SQL)
|
1078
|
+
DELETE FROM t;
|
1079
|
+
INSERT INTO t (x, y, z) VALUES (5, 5, 5);
|
1080
|
+
-- this is a comment in the middle
|
1081
|
+
INSERT INTO t (x, y, z) VALUES (6, 6, 6);
|
1082
|
+
SQL
|
1083
|
+
assert_equal 1, result
|
1084
|
+
assert_equal [5, 6], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1085
|
+
|
1086
|
+
result = @db.execute(<<~SQL)
|
1087
|
+
DELETE FROM t;
|
1088
|
+
INSERT INTO t (x, y, z) VALUES (7, 7, 7);
|
1089
|
+
INSERT INTO t (x, y, z) VALUES (8, 8, 8);
|
1090
|
+
-- this is a comment at the end
|
1091
|
+
SQL
|
1092
|
+
assert_nil result
|
1093
|
+
assert_equal [7, 8], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1094
|
+
end
|
1049
1095
|
end
|
1050
1096
|
|
1051
1097
|
class ScenarioTest < Minitest::Test
|
@@ -1438,7 +1484,7 @@ class ConcurrencyTest < Minitest::Test
|
|
1438
1484
|
|
1439
1485
|
def test_progress_handler_invalid_arg
|
1440
1486
|
db = Extralite::Database.new(':memory:')
|
1441
|
-
|
1487
|
+
|
1442
1488
|
assert_raises(TypeError) { db.on_progress(period: :foo) }
|
1443
1489
|
assert_raises(TypeError) { db.on_progress(tick: :foo) }
|
1444
1490
|
assert_raises(ArgumentError) { db.on_progress(mode: :foo) }
|
@@ -1635,7 +1681,7 @@ end
|
|
1635
1681
|
class RactorTest < Minitest::Test
|
1636
1682
|
def test_ractor_simple
|
1637
1683
|
skip if SKIP_RACTOR_TESTS
|
1638
|
-
|
1684
|
+
|
1639
1685
|
fn = Tempfile.new('extralite_test_database_in_ractor').path
|
1640
1686
|
|
1641
1687
|
r = Ractor.new do
|
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:
|
4
|
+
version: 2.8.2
|
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-06-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -123,8 +123,10 @@ files:
|
|
123
123
|
- lib/extralite.rb
|
124
124
|
- lib/extralite/version.rb
|
125
125
|
- lib/sequel/adapters/extralite.rb
|
126
|
-
- test/extensions/text.dylib
|
127
|
-
- test/extensions/text.so
|
126
|
+
- test/extensions/arm64/text.dylib
|
127
|
+
- test/extensions/arm64/text.so
|
128
|
+
- test/extensions/x86/text.dylib
|
129
|
+
- test/extensions/x86/text.so
|
128
130
|
- test/fixtures/image.png
|
129
131
|
- test/helper.rb
|
130
132
|
- test/issue-38.rb
|
data/test/extensions/text.so
DELETED
Binary file
|