extralite-bundle 2.8 → 2.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +6 -0
- data/README.md +1 -1
- data/examples/pubsub_store_polyphony.rb +5 -5
- data/ext/extralite/database.c +6 -0
- data/ext/sqlite3/sqlite3.c +494 -198
- data/ext/sqlite3/sqlite3.h +22 -3
- data/lib/extralite/version.rb +1 -1
- data/test/test_database.rb +45 -3
- metadata +2 -2
data/ext/sqlite3/sqlite3.h
CHANGED
@@ -146,9 +146,9 @@ extern "C" {
|
|
146
146
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
147
147
|
** [sqlite_version()] and [sqlite_source_id()].
|
148
148
|
*/
|
149
|
-
#define SQLITE_VERSION "3.45.
|
150
|
-
#define SQLITE_VERSION_NUMBER
|
151
|
-
#define SQLITE_SOURCE_ID "2024-
|
149
|
+
#define SQLITE_VERSION "3.45.3"
|
150
|
+
#define SQLITE_VERSION_NUMBER 3045003
|
151
|
+
#define SQLITE_SOURCE_ID "2024-04-15 13:34:05 8653b758870e6ef0c98d46b3ace27849054af85da891eb121e9aaa537f1e8355"
|
152
152
|
|
153
153
|
/*
|
154
154
|
** CAPI3REF: Run-Time Library Version Numbers
|
@@ -420,6 +420,8 @@ typedef int (*sqlite3_callback)(void*,int,char**, char**);
|
|
420
420
|
** the 1st parameter to sqlite3_exec() while sqlite3_exec() is running.
|
421
421
|
** <li> The application must not modify the SQL statement text passed into
|
422
422
|
** the 2nd parameter of sqlite3_exec() while sqlite3_exec() is running.
|
423
|
+
** <li> The application must not dereference the arrays or string pointers
|
424
|
+
** passed as the 3rd and 4th callback parameters after it returns.
|
423
425
|
** </ul>
|
424
426
|
*/
|
425
427
|
SQLITE_API int sqlite3_exec(
|
@@ -2141,6 +2143,22 @@ struct sqlite3_mem_methods {
|
|
2141
2143
|
** configuration setting is never used, then the default maximum is determined
|
2142
2144
|
** by the [SQLITE_MEMDB_DEFAULT_MAXSIZE] compile-time option. If that
|
2143
2145
|
** compile-time option is not set, then the default maximum is 1073741824.
|
2146
|
+
**
|
2147
|
+
** [[SQLITE_CONFIG_ROWID_IN_VIEW]]
|
2148
|
+
** <dt>SQLITE_CONFIG_ROWID_IN_VIEW
|
2149
|
+
** <dd>The SQLITE_CONFIG_ROWID_IN_VIEW option enables or disables the ability
|
2150
|
+
** for VIEWs to have a ROWID. The capability can only be enabled if SQLite is
|
2151
|
+
** compiled with -DSQLITE_ALLOW_ROWID_IN_VIEW, in which case the capability
|
2152
|
+
** defaults to on. This configuration option queries the current setting or
|
2153
|
+
** changes the setting to off or on. The argument is a pointer to an integer.
|
2154
|
+
** If that integer initially holds a value of 1, then the ability for VIEWs to
|
2155
|
+
** have ROWIDs is activated. If the integer initially holds zero, then the
|
2156
|
+
** ability is deactivated. Any other initial value for the integer leaves the
|
2157
|
+
** setting unchanged. After changes, if any, the integer is written with
|
2158
|
+
** a 1 or 0, if the ability for VIEWs to have ROWIDs is on or off. If SQLite
|
2159
|
+
** is compiled without -DSQLITE_ALLOW_ROWID_IN_VIEW (which is the usual and
|
2160
|
+
** recommended case) then the integer is always filled with zero, regardless
|
2161
|
+
** if its initial value.
|
2144
2162
|
** </dl>
|
2145
2163
|
*/
|
2146
2164
|
#define SQLITE_CONFIG_SINGLETHREAD 1 /* nil */
|
@@ -2172,6 +2190,7 @@ struct sqlite3_mem_methods {
|
|
2172
2190
|
#define SQLITE_CONFIG_SMALL_MALLOC 27 /* boolean */
|
2173
2191
|
#define SQLITE_CONFIG_SORTERREF_SIZE 28 /* int nByte */
|
2174
2192
|
#define SQLITE_CONFIG_MEMDB_MAXSIZE 29 /* sqlite3_int64 */
|
2193
|
+
#define SQLITE_CONFIG_ROWID_IN_VIEW 30 /* int* */
|
2175
2194
|
|
2176
2195
|
/*
|
2177
2196
|
** CAPI3REF: Database Connection Configuration Options
|
data/lib/extralite/version.rb
CHANGED
data/test/test_database.rb
CHANGED
@@ -948,7 +948,7 @@ class DatabaseTest < Minitest::Test
|
|
948
948
|
|
949
949
|
db.execute('insert into foo values (43)')
|
950
950
|
assert_equal [42, 43], db.query_splat('select x from foo')
|
951
|
-
|
951
|
+
|
952
952
|
db.savepoint(:b)
|
953
953
|
|
954
954
|
db.execute('insert into foo values (44)')
|
@@ -1046,6 +1046,48 @@ class DatabaseTest < Minitest::Test
|
|
1046
1046
|
assert File.size(wal_fn) == 0
|
1047
1047
|
assert_equal [0, 0], r
|
1048
1048
|
end
|
1049
|
+
|
1050
|
+
def test_execute_with_comments
|
1051
|
+
result = @db.execute(<<~SQL)
|
1052
|
+
-- this is a comment
|
1053
|
+
SQL
|
1054
|
+
assert_nil result
|
1055
|
+
|
1056
|
+
result = @db.execute(<<~SQL)
|
1057
|
+
DELETE FROM t;
|
1058
|
+
INSERT INTO t (x, y, z) VALUES (1, 1, 1);
|
1059
|
+
INSERT INTO t (x, y, z) VALUES (2, 2, 2);
|
1060
|
+
SQL
|
1061
|
+
assert_equal 1, result
|
1062
|
+
assert_equal [1, 2], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1063
|
+
|
1064
|
+
result = @db.execute(<<~SQL)
|
1065
|
+
-- this is a comment at the beginning
|
1066
|
+
DELETE FROM t;
|
1067
|
+
INSERT INTO t (x, y, z) VALUES (3, 3, 3);
|
1068
|
+
INSERT INTO t (x, y, z) VALUES (4, 4, 4);
|
1069
|
+
SQL
|
1070
|
+
assert_equal 1, result
|
1071
|
+
assert_equal [3, 4], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1072
|
+
|
1073
|
+
result = @db.execute(<<~SQL)
|
1074
|
+
DELETE FROM t;
|
1075
|
+
INSERT INTO t (x, y, z) VALUES (5, 5, 5);
|
1076
|
+
-- this is a comment in the middle
|
1077
|
+
INSERT INTO t (x, y, z) VALUES (6, 6, 6);
|
1078
|
+
SQL
|
1079
|
+
assert_equal 1, result
|
1080
|
+
assert_equal [5, 6], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1081
|
+
|
1082
|
+
result = @db.execute(<<~SQL)
|
1083
|
+
DELETE FROM t;
|
1084
|
+
INSERT INTO t (x, y, z) VALUES (7, 7, 7);
|
1085
|
+
INSERT INTO t (x, y, z) VALUES (8, 8, 8);
|
1086
|
+
-- this is a comment at the end
|
1087
|
+
SQL
|
1088
|
+
assert_nil result
|
1089
|
+
assert_equal [7, 8], @db.query_splat('SELECT x FROM t ORDER BY x')
|
1090
|
+
end
|
1049
1091
|
end
|
1050
1092
|
|
1051
1093
|
class ScenarioTest < Minitest::Test
|
@@ -1438,7 +1480,7 @@ class ConcurrencyTest < Minitest::Test
|
|
1438
1480
|
|
1439
1481
|
def test_progress_handler_invalid_arg
|
1440
1482
|
db = Extralite::Database.new(':memory:')
|
1441
|
-
|
1483
|
+
|
1442
1484
|
assert_raises(TypeError) { db.on_progress(period: :foo) }
|
1443
1485
|
assert_raises(TypeError) { db.on_progress(tick: :foo) }
|
1444
1486
|
assert_raises(ArgumentError) { db.on_progress(mode: :foo) }
|
@@ -1635,7 +1677,7 @@ end
|
|
1635
1677
|
class RactorTest < Minitest::Test
|
1636
1678
|
def test_ractor_simple
|
1637
1679
|
skip if SKIP_RACTOR_TESTS
|
1638
|
-
|
1680
|
+
|
1639
1681
|
fn = Tempfile.new('extralite_test_database_in_ractor').path
|
1640
1682
|
|
1641
1683
|
r = Ractor.new do
|
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:
|
4
|
+
version: 2.8.1
|
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-04-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|