extralite-bundle 2.1 → 2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f104866a906d2b93a6e2fb15a99b9a5d09d56fc26aa9513ad47ac182d3b9a51d
4
- data.tar.gz: b70593c8fabb649e3f6dfc0e28d5e06549a5db97ffd8d6f15fbaea42e9bf15ca
3
+ metadata.gz: d6366e2122d0ba28606033c9bb0b546946f60b822f4c002d0449aa6822e4ee3a
4
+ data.tar.gz: 21d410d22a27abf3ab8b23ca6d6da1422c9a0642eebba0c79de13a1d489b4123
5
5
  SHA512:
6
- metadata.gz: 4d7827b598eff9274e0c41c0b612ade662e85b1062b57c40487932e2cd2264933752daa706646011af6648f60db1fae7274da778f06cd4a6002ef6dbf1af40dc
7
- data.tar.gz: da03ac31c8632cf7beb04d06d00c210acd69333f10f9d2f8df6f05e0a70465fdf4c98cca1e990aef448b797185c77861851b4c374f7545b0c069c97d6129c92f
6
+ metadata.gz: 60d0af3f487d4c91989046928aef667ec26bb869e4345d6587c74fbb16c6690d0a721b4c6769d5f3f9cd207a3aa6c86e86d3f86fc07428c4df1614d67b93c2ba
7
+ data.tar.gz: c1c862e8eba40affb7c36d129292cbf554be2460918f6ddc143bad241d0de3d5dbefa1f7cca42746802646acd4b166fec90d8ce6de04bf350d214fbd87e92143
@@ -8,7 +8,7 @@ jobs:
8
8
  fail-fast: false
9
9
  matrix:
10
10
  os: [ubuntu-latest, macos-latest]
11
- ruby: ['2.7', '3.0', '3.1', '3.2', truffleruby]
11
+ ruby: ['2.7', '3.0', '3.1', '3.2', '3.3']
12
12
 
13
13
  name: >-
14
14
  ${{matrix.os}}, ${{matrix.ruby}}
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ # 2.2 2023-10-14
2
+
3
+ - Set correct encoding for strings values in query results (#27)
4
+ - Reset query after running it in Sequel adapter (#26)
5
+
1
6
  # 2.1 2023-07-11
2
7
 
3
8
  - 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.1)
4
+ extralite (2.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -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 rb_str_new_cstr((char *)sqlite3_column_text(stmt, col));
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:
@@ -807,4 +807,6 @@ void Init_ExtraliteDatabase(void) {
807
807
 
808
808
  SYM_read_only = ID2SYM(rb_intern("read_only"));
809
809
  rb_gc_register_mark_object(SYM_read_only);
810
+
811
+ UTF8_ENCODING = rb_utf8_encoding();
810
812
  }
@@ -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);
@@ -1,4 +1,4 @@
1
1
  module Extralite
2
2
  # Extralite version
3
- VERSION = '2.1'
3
+ VERSION = '2.2'
4
4
  end
@@ -212,7 +212,11 @@ module Sequel
212
212
  case type
213
213
  when :select
214
214
  query = conn.prepare(sql, args)
215
- log_connection_yield(sql, conn, log_args){block.call(query.each, query.columns)}
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
@@ -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
@@ -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-bundle
3
3
  version: !ruby/object:Gem::Version
4
- version: '2.1'
4
+ version: '2.2'
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-07-11 00:00:00.000000000 Z
11
+ date: 2023-10-14 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:
@@ -138,7 +138,7 @@ metadata:
138
138
  documentation_uri: https://www.rubydoc.info/gems/extralite
139
139
  homepage_uri: https://github.com/digital-fabric/extralite
140
140
  changelog_uri: https://github.com/digital-fabric/extralite/blob/master/CHANGELOG.md
141
- post_install_message:
141
+ post_install_message:
142
142
  rdoc_options:
143
143
  - "--title"
144
144
  - extralite
@@ -158,7 +158,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
158
158
  version: '0'
159
159
  requirements: []
160
160
  rubygems_version: 3.4.1
161
- signing_key:
161
+ signing_key:
162
162
  specification_version: 4
163
163
  summary: Extra-lightweight SQLite3 wrapper for Ruby with bundled SQLite3
164
164
  test_files: []