extralite 2.1 → 2.3
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.yml +1 -1
- data/CHANGELOG.md +9 -0
- data/Gemfile.lock +2 -2
- data/README.md +1 -1
- data/ext/extralite/common.c +3 -1
- data/ext/extralite/database.c +2 -0
- data/ext/extralite/extralite.h +3 -0
- data/lib/extralite/version.rb +1 -1
- data/lib/sequel/adapters/extralite.rb +5 -1
- data/test/test_database.rb +7 -0
- data/test/test_iterator.rb +13 -0
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 130809d0ec92b7ae91e31f05e24c072500ef3096bda542a293469f1e206ff8eb
|
4
|
+
data.tar.gz: b7236d13577003ed2ccd806eb31b3a6703d3126196147f78220504b7fd0264b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 44b5ab1374077c97418b14581947aaa2dd20010590e21beaa755be9aaa6228b1408e5593c69f9f901f7935b0ba58494772cd9c0062b7632dc8c48d4ea54845bd
|
7
|
+
data.tar.gz: 218b35977b8ce307b9e738dfb280bfcfa4e67910542d03cf11aaec36acbaf61ba74db5c10f5b2d21364384c9cfbc830f91f945d5417dd00b6b090895dadfe276
|
data/.github/workflows/test.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
# 2.3 2023-11-12
|
2
|
+
|
3
|
+
- Update bundled SQLite to version 3.44.0 (#29)
|
4
|
+
|
5
|
+
# 2.2 2023-10-14
|
6
|
+
|
7
|
+
- Set correct encoding for strings values in query results (#27)
|
8
|
+
- Reset query after running it in Sequel adapter (#26)
|
9
|
+
|
1
10
|
# 2.1 2023-07-11
|
2
11
|
|
3
12
|
- Implement `Database#execute`, `Query#execute` for data-manipulation queries
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
extralite (2.
|
4
|
+
extralite (2.3)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
@@ -9,7 +9,7 @@ GEM
|
|
9
9
|
docile (1.4.0)
|
10
10
|
json (2.6.3)
|
11
11
|
minitest (5.15.0)
|
12
|
-
rake (13.0
|
12
|
+
rake (13.1.0)
|
13
13
|
rake-compiler (1.1.6)
|
14
14
|
rake
|
15
15
|
sequel (5.51.0)
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ with an SQLite3 database, as well as prepared queries (prepared statements).
|
|
14
14
|
Extralite comes in two flavors: the `extralite` gem which uses the
|
15
15
|
system-installed sqlite3 library, and the `extralite-bundle` gem which bundles
|
16
16
|
the latest version of SQLite
|
17
|
-
([3.
|
17
|
+
([3.44.0](https://sqlite.org/releaselog/3_44_0.html)), offering access to the
|
18
18
|
latest features and enhancements.
|
19
19
|
|
20
20
|
## Features
|
data/ext/extralite/common.c
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#include <stdio.h>
|
2
2
|
#include "extralite.h"
|
3
3
|
|
4
|
+
rb_encoding *UTF8_ENCODING;
|
5
|
+
|
4
6
|
static inline VALUE get_column_value(sqlite3_stmt *stmt, int col, int type) {
|
5
7
|
switch (type) {
|
6
8
|
case SQLITE_NULL:
|
@@ -10,7 +12,7 @@ static inline VALUE get_column_value(sqlite3_stmt *stmt, int col, int type) {
|
|
10
12
|
case SQLITE_FLOAT:
|
11
13
|
return DBL2NUM(sqlite3_column_double(stmt, col));
|
12
14
|
case SQLITE_TEXT:
|
13
|
-
return
|
15
|
+
return rb_enc_str_new((char *)sqlite3_column_text(stmt, col), (long)sqlite3_column_bytes(stmt, col), UTF8_ENCODING);
|
14
16
|
case SQLITE_BLOB:
|
15
17
|
return rb_str_new((const char *)sqlite3_column_blob(stmt, col), (long)sqlite3_column_bytes(stmt, col));
|
16
18
|
default:
|
data/ext/extralite/database.c
CHANGED
data/ext/extralite/extralite.h
CHANGED
@@ -3,6 +3,7 @@
|
|
3
3
|
|
4
4
|
#include "ruby.h"
|
5
5
|
#include "ruby/thread.h"
|
6
|
+
#include "ruby/encoding.h"
|
6
7
|
|
7
8
|
#ifdef EXTRALITE_NO_BUNDLE
|
8
9
|
#include <sqlite3.h>
|
@@ -92,6 +93,8 @@ typedef struct {
|
|
92
93
|
#define QUERY_MODE(default) (rb_block_given_p() ? QUERY_YIELD : default)
|
93
94
|
#define MULTI_ROW_P(mode) (mode == QUERY_MULTI_ROW)
|
94
95
|
|
96
|
+
extern rb_encoding *UTF8_ENCODING;
|
97
|
+
|
95
98
|
VALUE safe_execute_multi(query_ctx *ctx);
|
96
99
|
VALUE safe_query_ary(query_ctx *ctx);
|
97
100
|
VALUE safe_query_changes(query_ctx *ctx);
|
data/lib/extralite/version.rb
CHANGED
@@ -212,7 +212,11 @@ module Sequel
|
|
212
212
|
case type
|
213
213
|
when :select
|
214
214
|
query = conn.prepare(sql, args)
|
215
|
-
|
215
|
+
begin
|
216
|
+
log_connection_yield(sql, conn, log_args){block.call(query.each, query.columns)}
|
217
|
+
ensure
|
218
|
+
query.reset
|
219
|
+
end
|
216
220
|
when :insert
|
217
221
|
log_connection_yield(sql, conn, log_args){conn.query(sql, args)}
|
218
222
|
conn.last_insert_rowid
|
data/test/test_database.rb
CHANGED
@@ -387,6 +387,13 @@ end
|
|
387
387
|
db = Extralite::Database.new(':memory:')
|
388
388
|
assert_match /^\#\<Extralite::Database:0x[0-9a-f]+ :memory:\>$/, db.inspect
|
389
389
|
end
|
390
|
+
|
391
|
+
def test_string_encoding
|
392
|
+
db = Extralite::Database.new(':memory:')
|
393
|
+
v = db.query_single_value("select 'foo'")
|
394
|
+
assert_equal 'foo', v
|
395
|
+
assert_equal 'UTF-8', v.encoding.name
|
396
|
+
end
|
390
397
|
end
|
391
398
|
|
392
399
|
class ScenarioTest < MiniTest::Test
|
data/test/test_iterator.rb
CHANGED
@@ -101,4 +101,17 @@ class IteratorTest < MiniTest::Test
|
|
101
101
|
i = @query.each_ary
|
102
102
|
assert_match /^\#\<Extralite::Iterator:0x[0-9a-f]+ ary\>$/, i.inspect
|
103
103
|
end
|
104
|
+
|
105
|
+
def test_return_from_block_issue_26
|
106
|
+
db = Extralite::Database.new('/tmp/locked.db')
|
107
|
+
|
108
|
+
λ = ->(sql) {
|
109
|
+
db.prepare(sql).each { |r| r.each { |_, v| return v } }
|
110
|
+
}
|
111
|
+
|
112
|
+
20.times do |i|
|
113
|
+
λ.('DROP TABLE IF EXISTS `test1`')
|
114
|
+
λ.('CREATE TABLE `test1` (`_id` integer NOT NULL PRIMARY KEY AUTOINCREMENT) STRICT')
|
115
|
+
end
|
116
|
+
end
|
104
117
|
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: '2.
|
4
|
+
version: '2.3'
|
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: 2023-
|
11
|
+
date: 2023-11-12 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:
|
@@ -136,7 +136,7 @@ metadata:
|
|
136
136
|
documentation_uri: https://www.rubydoc.info/gems/extralite
|
137
137
|
homepage_uri: https://github.com/digital-fabric/extralite
|
138
138
|
changelog_uri: https://github.com/digital-fabric/extralite/blob/master/CHANGELOG.md
|
139
|
-
post_install_message:
|
139
|
+
post_install_message:
|
140
140
|
rdoc_options:
|
141
141
|
- "--title"
|
142
142
|
- extralite
|
@@ -156,7 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
156
156
|
version: '0'
|
157
157
|
requirements: []
|
158
158
|
rubygems_version: 3.4.1
|
159
|
-
signing_key:
|
159
|
+
signing_key:
|
160
160
|
specification_version: 4
|
161
161
|
summary: Extra-lightweight SQLite3 wrapper for Ruby
|
162
162
|
test_files: []
|