extralite-bundle 2.10 → 2.11

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 331d047adebf78c99a777dc3fb5861cce9c112bf020c1bfe75c8e188611ba0e1
4
- data.tar.gz: c5c02f82568127e8edc4e4b5124f84a361cc53e5d8aafe859456f855b7dca4a7
3
+ metadata.gz: 1542a432d7813d5bcdc27667661e0a1d2c1f0f85716c9c3b7ceebb6b6452baa6
4
+ data.tar.gz: 5ae2a6c6ed93943f964aaf472da3d14ae09c12ab42da94e1d3a635ae699d1f61
5
5
  SHA512:
6
- metadata.gz: 0e38f367a6c1baf1d32c52f9ecb540ab292e93989aad9b47cf3b8b3f728190cadde70d90f962a224365b0e689a2677a9e869aafd82852cbf02414b2eb61630df
7
- data.tar.gz: ea986d0dbebcc0f668e55b88ce75e2dd2be30d7e93f05c8735b98a77e3fb72bd55041995e3a0a7fd7ee2e67673e980c73c45cb36b21a85db925590cd164e5869
6
+ metadata.gz: 5a704616c0b2641461a3d565e503694d7ebfe30619afbfafd71bbda481f8f962c87b9fb8f15b0266c6ff49a79f504bbef767937d97bbd15dd96a7fef1215f74c
7
+ data.tar.gz: 9c3d99dd4a328b00100c1118840022a167f3fc7a863a52fcfa0d07e09c2859043300e66b77edfb9e69a8583e07577daed411c2fd623431d4bd3807a1cdd382da
@@ -13,7 +13,7 @@ jobs:
13
13
  matrix:
14
14
  # macos-latest uses arm64, macos-13 uses x86
15
15
  os: [ubuntu-latest, macos-latest, macos-13]
16
- ruby: ['3.0', '3.1', '3.2', '3.3', 'head']
16
+ ruby: ['3.2', '3.3', '3.4', 'head']
17
17
 
18
18
  name: ${{matrix.os}}, ${{matrix.ruby}}
19
19
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,8 @@
1
+ ## 2.11 2025-03-14
2
+
3
+ - Remove support for Ruby versions older than 3.2.
4
+ - Expand SQL given to trace proc [#80](https://github.com/digital-fabric/extralite/issues/80)
5
+
1
6
  ## 2.10 2025-02-17
2
7
 
3
8
  - Update bundled SQLite to version 3.49.0.
@@ -629,7 +629,7 @@ static inline VALUE batch_run_array(query_ctx *ctx, enum batch_mode batch_mode)
629
629
  for (int i = 0; i < count; i++) {
630
630
  sqlite3_reset(ctx->stmt);
631
631
  sqlite3_clear_bindings(ctx->stmt);
632
- Database_issue_query(ctx->db, ctx->sql);
632
+ Database_issue_query(ctx->db, ctx->stmt);
633
633
  bind_all_parameters_from_object(ctx->stmt, RARRAY_AREF(ctx->params, i));
634
634
 
635
635
  batch_iterate(ctx, batch_mode, &rows);
@@ -666,7 +666,7 @@ static VALUE batch_run_each_iter(RB_BLOCK_CALL_FUNC_ARGLIST(yield_value, vctx))
666
666
 
667
667
  sqlite3_reset(each_ctx->ctx->stmt);
668
668
  sqlite3_clear_bindings(each_ctx->ctx->stmt);
669
- Database_issue_query(each_ctx->ctx->db, each_ctx->ctx->sql);
669
+ Database_issue_query(each_ctx->ctx->db, each_ctx->ctx->stmt);
670
670
  bind_all_parameters_from_object(each_ctx->ctx->stmt, yield_value);
671
671
 
672
672
  batch_iterate(each_ctx->ctx, each_ctx->batch_mode, &rows);
@@ -712,7 +712,7 @@ static inline VALUE batch_run_proc(query_ctx *ctx, enum batch_mode batch_mode) {
712
712
 
713
713
  sqlite3_reset(ctx->stmt);
714
714
  sqlite3_clear_bindings(ctx->stmt);
715
- Database_issue_query(ctx->db, ctx->sql);
715
+ Database_issue_query(ctx->db, ctx->stmt);
716
716
  bind_all_parameters_from_object(ctx->stmt, params);
717
717
 
718
718
  batch_iterate(ctx, batch_mode, &rows);
@@ -289,14 +289,16 @@ static inline VALUE Database_perform_query(int argc, VALUE *argv, VALUE self, VA
289
289
 
290
290
  sql = rb_funcall(argv[0], ID_strip, 0);
291
291
  if (RSTRING_LEN(sql) == 0) return Qnil;
292
+ // sql = argv[0];
292
293
 
293
- Database_issue_query(db, sql);
294
294
  prepare_multi_stmt(DB_GVL_MODE(db), db->sqlite3_db, &stmt, sql);
295
295
  RB_GC_GUARD(sql);
296
296
 
297
297
  if (stmt == NULL) return Qnil;
298
298
 
299
299
  bind_all_parameters(stmt, argc - 1, argv + 1);
300
+ Database_issue_query(db, stmt);
301
+
300
302
  query_ctx ctx = QUERY_CTX(
301
303
  self, sql, db, stmt, Qnil, transform,
302
304
  query_mode, ROW_YIELD_OR_MODE(ROW_MULTI), ALL_ROWS
@@ -1102,8 +1104,12 @@ static inline enum progress_handler_mode symbol_to_progress_mode(VALUE mode) {
1102
1104
  rb_raise(eArgumentError, "Invalid progress handler mode");
1103
1105
  }
1104
1106
 
1105
- inline void Database_issue_query(Database_t *db, VALUE sql) {
1106
- if (db->trace_proc != Qnil) rb_funcall(db->trace_proc, ID_call, 1, sql);
1107
+ inline void Database_issue_query(Database_t *db, sqlite3_stmt *stmt) {
1108
+ if (db->trace_proc != Qnil) {
1109
+ VALUE sql = rb_str_new_cstr(sqlite3_expanded_sql(stmt));
1110
+ rb_funcall(db->trace_proc, ID_call, 1, sql);
1111
+ RB_GC_GUARD(sql);
1112
+ }
1107
1113
  switch (db->progress_handler.mode) {
1108
1114
  case PROGRESS_AT_LEAST_ONCE:
1109
1115
  case PROGRESS_ONCE:
@@ -180,7 +180,7 @@ void bind_all_parameters_from_object(sqlite3_stmt *stmt, VALUE obj);
180
180
  int stmt_iterate(query_ctx *ctx);
181
181
  VALUE cleanup_stmt(query_ctx *ctx);
182
182
 
183
- void Database_issue_query(Database_t *db, VALUE sql);
183
+ void Database_issue_query(Database_t *db, sqlite3_stmt *stmt);
184
184
  sqlite3 *Database_sqlite3_db(VALUE self);
185
185
  enum gvl_mode Database_prepare_gvl_mode(Database_t *db);
186
186
  Database_t *self_to_database(VALUE self);
@@ -123,7 +123,7 @@ VALUE Query_initialize(VALUE self, VALUE db, VALUE sql, VALUE mode) {
123
123
  static inline void query_reset(Query_t *query) {
124
124
  if (!query->stmt)
125
125
  prepare_single_stmt(DB_GVL_MODE(query), query->sqlite3_db, &query->stmt, query->sql);
126
- Database_issue_query(query->db_struct, query->sql);
126
+ Database_issue_query(query->db_struct, query->stmt);
127
127
  sqlite3_reset(query->stmt);
128
128
  query->eof = 0;
129
129
  }
@@ -131,7 +131,7 @@ static inline void query_reset(Query_t *query) {
131
131
  static inline void query_reset_and_bind(Query_t *query, int argc, VALUE * argv) {
132
132
  if (!query->stmt)
133
133
  prepare_single_stmt(DB_GVL_MODE(query), query->sqlite3_db, &query->stmt, query->sql);
134
- Database_issue_query(query->db_struct, query->sql);
134
+ Database_issue_query(query->db_struct, query->stmt);
135
135
  sqlite3_reset(query->stmt);
136
136
  query->eof = 0;
137
137
  if (argc > 0) {
data/gemspec.rb CHANGED
@@ -15,7 +15,7 @@ def common_spec(s)
15
15
  s.rdoc_options = ['--title', 'Extralite', '--main', 'README.md']
16
16
  s.extra_rdoc_files = ['README.md']
17
17
  s.require_paths = ['lib']
18
- s.required_ruby_version = '>= 3.0'
18
+ s.required_ruby_version = '>= 3.2'
19
19
 
20
20
  s.add_development_dependency 'rake-compiler', '1.2.9'
21
21
  s.add_development_dependency 'minitest', '5.25.4'
@@ -1,4 +1,4 @@
1
1
  module Extralite
2
2
  # Extralite version
3
- VERSION = '2.10'
3
+ VERSION = '2.11'
4
4
  end
@@ -1245,6 +1245,18 @@ class ScenarioTest < Minitest::Test
1245
1245
  @db.query('select 4')
1246
1246
  assert_equal ['select 1', 'select 2', 'select 3'], sqls
1247
1247
  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
1248
1260
  end
1249
1261
 
1250
1262
  class BackupTest < Minitest::Test
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.10'
4
+ version: '2.11'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-02-17 00:00:00.000000000 Z
10
+ date: 2025-03-14 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rake-compiler
@@ -164,7 +164,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
164
164
  requirements:
165
165
  - - ">="
166
166
  - !ruby/object:Gem::Version
167
- version: '3.0'
167
+ version: '3.2'
168
168
  required_rubygems_version: !ruby/object:Gem::Requirement
169
169
  requirements:
170
170
  - - ">="