@op-engineering/op-sqlite 2.0.13 → 2.0.15
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.
- package/README.md +47 -28
- package/android/build.gradle +1 -1
- package/cpp/PreparedStatementHostObject.cpp +2 -12
- package/cpp/bindings.cpp +78 -0
- package/cpp/bridge.cpp +186 -0
- package/cpp/bridge.h +9 -0
- package/cpp/utils.cpp +16 -0
- package/cpp/utils.h +4 -0
- package/lib/commonjs/index.js +3 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +3 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/index.d.ts +4 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/op-sqlite.podspec +2 -0
- package/package.json +1 -1
- package/src/index.ts +12 -0
package/README.md
CHANGED
|
@@ -1,29 +1,27 @@
|
|
|
1
|
-

|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
npx pod-install</pre>
|
|
7
|
-
<br />
|
|
8
|
-
</div>
|
|
9
|
-
<br />
|
|
3
|
+
```sh
|
|
4
|
+
yarn add @op-engineering/op-sqlite && npx pod-install
|
|
5
|
+
```
|
|
10
6
|
|
|
11
|
-
OP
|
|
7
|
+
OP-SQLite embeds the latest version of SQLite and provides a low-level API to execute SQL queries.
|
|
12
8
|
|
|
13
9
|
**Current SQLite version: 3.44.0**
|
|
14
10
|
|
|
15
|
-
Created by [@ospfranco](https://twitter.com/ospfranco). **Please consider
|
|
11
|
+
Created by [@ospfranco](https://twitter.com/ospfranco). **Please consider sponsoring!**.
|
|
16
12
|
|
|
17
13
|
## Benchmarks
|
|
18
14
|
|
|
19
|
-
You can find the [benchmarking code in the example app](https://github.com/OP-Engineering/op-sqlite/blob/main/example/src/Database.ts#L44). This is run using the `OP_SQLITE_PERF` flag which in turns disables some old and unused features of sqlite to squeeze the last drop of performance.
|
|
15
|
+
You can find the [benchmarking code in the example app](https://github.com/OP-Engineering/op-sqlite/blob/main/example/src/Database.ts#L44). This is run using the `OP_SQLITE_PERF` [performance flag](#perf-flag) which in turns disables some old and unused features of sqlite to squeeze the last drop of performance.
|
|
20
16
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Memory consumption is also 1/4 compared to `react-native-quick-sqlite`. This query used to take 1.2 GB of peak memory usage, and now runs in 250mbs.
|
|
17
|
+
Memory consumption is minimised as much as possible since all the data is shared via HostObjects, meaning large queries can be run in few mbs.
|
|
24
18
|
|
|
25
19
|
You can also turn on [Memory Mapping](#speed) to make your queries even faster by skipping the kernel during I/O and potentially reduce RAM usage, this comes with some disadvantages though. If you want even more speed and you can re-use your queries you can use [Prepared Statements](#prepared-statements).
|
|
26
20
|
|
|
21
|
+
Here is another benchmark with all the optimizations reading a single string value against react-native-mmkv.
|
|
22
|
+
|
|
23
|
+

|
|
24
|
+
|
|
27
25
|
# Encryption
|
|
28
26
|
|
|
29
27
|
If you need to encrypt your entire database, there is [`op-sqlcipher`](https://github.com/OP-Engineering/op-sqlcipher), which is a fork of this library that uses [SQLCipher](https://github.com/sqlcipher/sqlcipher). It completely encrypts the database with minimal overhead.
|
|
@@ -59,7 +57,7 @@ import {
|
|
|
59
57
|
IOS_DOCUMENT_PATH,
|
|
60
58
|
ANDROID_DATABASE_PATH, // Default Android
|
|
61
59
|
ANDROID_FILES_PATH,
|
|
62
|
-
ANDROID_EXTERNAL_FILES_PATH,
|
|
60
|
+
ANDROID_EXTERNAL_FILES_PATH, // Android SD Card
|
|
63
61
|
open,
|
|
64
62
|
} from '@op-engineering/op-sqlite';
|
|
65
63
|
|
|
@@ -104,9 +102,11 @@ const largeDb = open({
|
|
|
104
102
|
});
|
|
105
103
|
```
|
|
106
104
|
|
|
105
|
+
In memory databases are faster since they don't need to hit the disk I/O to save the data and are useful for synchronization only workflows.
|
|
106
|
+
|
|
107
107
|
# Performance
|
|
108
108
|
|
|
109
|
-
|
|
109
|
+
You can tweak SQLite to be faster (at the cost of some disadvantages). One possibility is [Memory Mapping](https://www.sqlite.org/mmap.html). It allows to read/write to/from the disk without going through the kernel. However, if your queries throw an error your application might crash.
|
|
110
110
|
|
|
111
111
|
To turn on Memory Mapping, execute the following pragma statement after opening a db:
|
|
112
112
|
|
|
@@ -119,15 +119,13 @@ const db = open({
|
|
|
119
119
|
db.execute('PRAGMA mmap_size=268435456');
|
|
120
120
|
```
|
|
121
121
|
|
|
122
|
-
You can also set journaling to memory (or even OFF if you are kinda crazy) to gain even more speed. Journaling is what allows SQLite to ROLLBACK statements and it
|
|
122
|
+
You can also set journaling to memory (or even OFF if you are kinda crazy) to gain even more speed. Journaling is what allows SQLite to ROLLBACK statements and modifying it dangerous, so do it at your own risk
|
|
123
123
|
|
|
124
124
|
```ts
|
|
125
125
|
db.execute('PRAGMA journal_mode = MEMORY;'); // or OFF
|
|
126
126
|
```
|
|
127
127
|
|
|
128
|
-
If you use [prepared statements](#prepared-statements)
|
|
129
|
-
|
|
130
|
-

|
|
128
|
+
If you use [prepared statements](#prepared-statements) are useful to reduce the time of critical queries.
|
|
131
129
|
|
|
132
130
|
# Perf flag
|
|
133
131
|
|
|
@@ -143,6 +141,12 @@ export OP_SQLITE_PERF=1
|
|
|
143
141
|
yarn android
|
|
144
142
|
```
|
|
145
143
|
|
|
144
|
+
If correctly set you should see the following output in your console
|
|
145
|
+
|
|
146
|
+
```sh
|
|
147
|
+
OP-SQLITE performance mode enabled! 🚀
|
|
148
|
+
```
|
|
149
|
+
|
|
146
150
|
# SQLite Gotchas
|
|
147
151
|
|
|
148
152
|
## Strictness
|
|
@@ -156,7 +160,7 @@ db.execute('CREATE TABLE Test (
|
|
|
156
160
|
) STRICT;');
|
|
157
161
|
```
|
|
158
162
|
|
|
159
|
-
If you don't set it, SQLite will happily write whatever you insert in your table, independtly of the declared type.
|
|
163
|
+
If you don't set it, SQLite will happily write whatever you insert in your table, independtly of the declared type (it will try to cast it though, e.g. "1" string might be turned to 1 int).
|
|
160
164
|
|
|
161
165
|
## Foreign constraints
|
|
162
166
|
|
|
@@ -332,13 +336,9 @@ metadata.forEach((column) => {
|
|
|
332
336
|
You might have too much SQL to process and it will cause your application to freeze. There are async versions for some of the operations. This will offload the SQLite processing to a different thread.
|
|
333
337
|
|
|
334
338
|
```ts
|
|
335
|
-
db.executeAsync(
|
|
336
|
-
'
|
|
337
|
-
|
|
338
|
-
[]).then(({rows}) => {
|
|
339
|
-
console.log('users', rows._array);
|
|
340
|
-
})
|
|
341
|
-
);
|
|
339
|
+
db.executeAsync('SELECT * FROM "User";', []).then(({ rows }) => {
|
|
340
|
+
console.log('users', rows._array);
|
|
341
|
+
});
|
|
342
342
|
```
|
|
343
343
|
|
|
344
344
|
## Blobs
|
|
@@ -384,6 +384,15 @@ let results2 = statement.execute();
|
|
|
384
384
|
|
|
385
385
|
You only pay the price of parsing the query once, and each subsequent execution should be faster.
|
|
386
386
|
|
|
387
|
+
# Raw execution
|
|
388
|
+
|
|
389
|
+
If you don't care about the keys you can use a simplified execution that will return an array of results.
|
|
390
|
+
|
|
391
|
+
```ts
|
|
392
|
+
let result = await db.executeRawAsync('SELECT * FROM Users;');
|
|
393
|
+
// result = [[123, 'Katie', ...]]
|
|
394
|
+
```
|
|
395
|
+
|
|
387
396
|
# Attach or Detach other databases
|
|
388
397
|
|
|
389
398
|
SQLite supports attaching or detaching other database files into your main database connection through an alias.
|
|
@@ -526,6 +535,16 @@ You can specify flags via `<PROJECT_ROOT>/android/gradle.properties` like so:
|
|
|
526
535
|
OPSQLiteFlags="-DSQLITE_ENABLE_FTS5=1"
|
|
527
536
|
```
|
|
528
537
|
|
|
538
|
+
# Runtime loadable extensions
|
|
539
|
+
|
|
540
|
+
You can load your own extensions on runtime.
|
|
541
|
+
|
|
542
|
+
```ts
|
|
543
|
+
db.loadExtension('/path/to/library.so', 'optional_entry_point_function_name');
|
|
544
|
+
```
|
|
545
|
+
|
|
546
|
+
You will need to compile your extension for both iOS and Android and all the respective architectures and make it available in a location the library can read (be careful about sandboxing).
|
|
547
|
+
|
|
529
548
|
# Additional configuration
|
|
530
549
|
|
|
531
550
|
## App groups (iOS only)
|
package/android/build.gradle
CHANGED
|
@@ -77,7 +77,7 @@ android {
|
|
|
77
77
|
externalNativeBuild {
|
|
78
78
|
cmake {
|
|
79
79
|
if(System.getenv("OP_SQLITE_PERF") == '1') {
|
|
80
|
-
println "
|
|
80
|
+
println "OP-SQLITE performance mode enabled! 🚀"
|
|
81
81
|
cFlags "-DSQLITE_DQS=0", "-DSQLITE_THREADSAFE=0", "-DSQLITE_DEFAULT_MEMSTATUS=0", "-DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1", "-DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1", "-DSQLITE_MAX_EXPR_DEPTH=0", "-DSQLITE_OMIT_DEPRECATED=1", "-DSQLITE_OMIT_PROGRESS_CALLBACK=1", "-DSQLITE_OMIT_SHARED_CACHE=1", "-DSQLITE_USE_ALLOCA=1"
|
|
82
82
|
}
|
|
83
83
|
cppFlags "-O2", "-fexceptions", "-frtti", "-std=c++1y", "-DONANDROID"
|
|
@@ -22,10 +22,6 @@ std::vector<jsi::PropNameID>
|
|
|
22
22
|
PreparedStatementHostObject::getPropertyNames(jsi::Runtime &rt) {
|
|
23
23
|
std::vector<jsi::PropNameID> keys;
|
|
24
24
|
|
|
25
|
-
// for (auto field : fields) {
|
|
26
|
-
// keys.push_back(jsi::PropNameID::forAscii(rt, field.first));
|
|
27
|
-
// }
|
|
28
|
-
|
|
29
25
|
return keys;
|
|
30
26
|
}
|
|
31
27
|
|
|
@@ -39,14 +35,8 @@ jsi::Value PreparedStatementHostObject::get(jsi::Runtime &rt,
|
|
|
39
35
|
throw std::runtime_error("statement has been freed");
|
|
40
36
|
}
|
|
41
37
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const jsi::Value &originalParams = args[0];
|
|
45
|
-
params = toVariantVec(rt, originalParams);
|
|
46
|
-
|
|
47
|
-
std::vector<DumbHostObject> results;
|
|
48
|
-
std::shared_ptr<std::vector<SmartHostObject>> metadata =
|
|
49
|
-
std::make_shared<std::vector<SmartHostObject>>();
|
|
38
|
+
const jsi::Value &js_params = args[0];
|
|
39
|
+
std::vector<JSVariant> params = toVariantVec(rt, js_params);
|
|
50
40
|
|
|
51
41
|
sqlite_bind_statement(_statement, ¶ms);
|
|
52
42
|
|
package/cpp/bindings.cpp
CHANGED
|
@@ -222,6 +222,67 @@ void install(jsi::Runtime &rt,
|
|
|
222
222
|
return jsiResult;
|
|
223
223
|
});
|
|
224
224
|
|
|
225
|
+
auto execute_raw_async = HOSTFN("executeRawAsync", 3) {
|
|
226
|
+
if (count < 3) {
|
|
227
|
+
throw std::runtime_error(
|
|
228
|
+
"[op-sqlite][executeAsync] Incorrect arguments for executeAsync");
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
const std::string dbName = args[0].asString(rt).utf8(rt);
|
|
232
|
+
const std::string query = args[1].asString(rt).utf8(rt);
|
|
233
|
+
const jsi::Value &originalParams = args[2];
|
|
234
|
+
|
|
235
|
+
std::vector<JSVariant> params = toVariantVec(rt, originalParams);
|
|
236
|
+
|
|
237
|
+
auto promiseCtr = rt.global().getPropertyAsFunction(rt, "Promise");
|
|
238
|
+
|
|
239
|
+
auto promise = promiseCtr.callAsConstructor(rt, HOSTFN("executor", 2) {
|
|
240
|
+
auto resolve = std::make_shared<jsi::Value>(rt, args[0]);
|
|
241
|
+
auto reject = std::make_shared<jsi::Value>(rt, args[1]);
|
|
242
|
+
|
|
243
|
+
auto task = [&rt, dbName, query, params = std::move(params), resolve,
|
|
244
|
+
reject]() {
|
|
245
|
+
try {
|
|
246
|
+
std::vector<std::vector<JSVariant>> results;
|
|
247
|
+
|
|
248
|
+
auto status = sqlite_execute_raw(dbName, query, ¶ms, &results);
|
|
249
|
+
|
|
250
|
+
if (invalidated) {
|
|
251
|
+
return;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
invoker->invokeAsync([&rt, results = std::move(results),
|
|
255
|
+
status = std::move(status), resolve, reject] {
|
|
256
|
+
if (status.type == SQLiteOk) {
|
|
257
|
+
auto jsiResult = create_raw_result(rt, status, &results);
|
|
258
|
+
resolve->asObject(rt).asFunction(rt).call(rt,
|
|
259
|
+
std::move(jsiResult));
|
|
260
|
+
} else {
|
|
261
|
+
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
262
|
+
auto error = errorCtr.callAsConstructor(
|
|
263
|
+
rt, jsi::String::createFromUtf8(rt, status.message));
|
|
264
|
+
reject->asObject(rt).asFunction(rt).call(rt, error);
|
|
265
|
+
}
|
|
266
|
+
});
|
|
267
|
+
|
|
268
|
+
} catch (std::exception &exc) {
|
|
269
|
+
invoker->invokeAsync([&rt, exc = std::move(exc), reject] {
|
|
270
|
+
auto errorCtr = rt.global().getPropertyAsFunction(rt, "Error");
|
|
271
|
+
auto error = errorCtr.callAsConstructor(
|
|
272
|
+
rt, jsi::String::createFromAscii(rt, exc.what()));
|
|
273
|
+
reject->asObject(rt).asFunction(rt).call(rt, error);
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
};
|
|
277
|
+
|
|
278
|
+
pool.queueWork(task);
|
|
279
|
+
|
|
280
|
+
return {};
|
|
281
|
+
}));
|
|
282
|
+
|
|
283
|
+
return promise;
|
|
284
|
+
});
|
|
285
|
+
|
|
225
286
|
auto executeAsync = HOSTFN("executeAsync", 3) {
|
|
226
287
|
if (count < 3) {
|
|
227
288
|
throw std::runtime_error(
|
|
@@ -540,6 +601,21 @@ void install(jsi::Runtime &rt,
|
|
|
540
601
|
return jsi::Object::createFromHostObject(rt, preparedStatementHostObject);
|
|
541
602
|
});
|
|
542
603
|
|
|
604
|
+
auto load_extension = HOSTFN("loadExtension", 2) {
|
|
605
|
+
auto db_name = args[0].asString(rt).utf8(rt);
|
|
606
|
+
auto path = args[1].asString(rt).utf8(rt);
|
|
607
|
+
std::string entryPoint = "";
|
|
608
|
+
if (count > 2 && args[2].isString()) {
|
|
609
|
+
entryPoint = args[2].asString(rt).utf8(rt);
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
auto result = sqlite_load_extension(db_name, path, entryPoint);
|
|
613
|
+
if (result.type == SQLiteError) {
|
|
614
|
+
throw std::runtime_error(result.message);
|
|
615
|
+
}
|
|
616
|
+
return {};
|
|
617
|
+
});
|
|
618
|
+
|
|
543
619
|
jsi::Object module = jsi::Object(rt);
|
|
544
620
|
|
|
545
621
|
module.setProperty(rt, "open", std::move(open));
|
|
@@ -556,6 +632,8 @@ void install(jsi::Runtime &rt,
|
|
|
556
632
|
module.setProperty(rt, "commitHook", std::move(commitHook));
|
|
557
633
|
module.setProperty(rt, "rollbackHook", std::move(rollbackHook));
|
|
558
634
|
module.setProperty(rt, "prepareStatement", std::move(prepareStatement));
|
|
635
|
+
module.setProperty(rt, "loadExtension", std::move(load_extension));
|
|
636
|
+
module.setProperty(rt, "executeRawAsync", std::move(execute_raw_async));
|
|
559
637
|
|
|
560
638
|
rt.global().setProperty(rt, "__OPSQLiteProxy", std::move(module));
|
|
561
639
|
}
|
package/cpp/bridge.cpp
CHANGED
|
@@ -518,6 +518,164 @@ sqlite_execute(std::string const &dbName, std::string const &query,
|
|
|
518
518
|
.insertId = static_cast<double>(latestInsertRowId)};
|
|
519
519
|
}
|
|
520
520
|
|
|
521
|
+
BridgeResult sqlite_execute_raw(std::string const &dbName,
|
|
522
|
+
std::string const &query,
|
|
523
|
+
const std::vector<JSVariant> *params,
|
|
524
|
+
std::vector<std::vector<JSVariant>> *results) {
|
|
525
|
+
|
|
526
|
+
if (dbMap.find(dbName) == dbMap.end()) {
|
|
527
|
+
return {.type = SQLiteError,
|
|
528
|
+
.message = "[op-sqlite]: Database " + dbName + " is not open"};
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
sqlite3 *db = dbMap[dbName];
|
|
532
|
+
|
|
533
|
+
sqlite3_stmt *statement;
|
|
534
|
+
const char *errorMessage;
|
|
535
|
+
const char *remainingStatement = nullptr;
|
|
536
|
+
|
|
537
|
+
bool isConsuming = true;
|
|
538
|
+
bool isFailed = false;
|
|
539
|
+
|
|
540
|
+
int result = SQLITE_OK;
|
|
541
|
+
|
|
542
|
+
do {
|
|
543
|
+
const char *queryStr =
|
|
544
|
+
remainingStatement == nullptr ? query.c_str() : remainingStatement;
|
|
545
|
+
|
|
546
|
+
int statementStatus =
|
|
547
|
+
sqlite3_prepare_v2(db, queryStr, -1, &statement, &remainingStatement);
|
|
548
|
+
|
|
549
|
+
if (statementStatus != SQLITE_OK) {
|
|
550
|
+
const char *message = sqlite3_errmsg(db);
|
|
551
|
+
return {
|
|
552
|
+
.type = SQLiteError,
|
|
553
|
+
.message = "[op-sqlite] SQL statement error:" +
|
|
554
|
+
std::to_string(statementStatus) +
|
|
555
|
+
" description:" + std::string(message) +
|
|
556
|
+
". See error codes: https://www.sqlite.org/rescode.html",
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
|
|
560
|
+
// The statement did not fail to parse but there is nothing to do, just skip
|
|
561
|
+
// to the end
|
|
562
|
+
if (statement == NULL) {
|
|
563
|
+
continue;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
if (params != nullptr && params->size() > 0) {
|
|
567
|
+
bindStatement(statement, params);
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
isConsuming = true;
|
|
571
|
+
|
|
572
|
+
int i, count, column_type;
|
|
573
|
+
std::string column_name, column_declared_type;
|
|
574
|
+
|
|
575
|
+
while (isConsuming) {
|
|
576
|
+
result = sqlite3_step(statement);
|
|
577
|
+
|
|
578
|
+
switch (result) {
|
|
579
|
+
case SQLITE_ROW: {
|
|
580
|
+
if (results == NULL) {
|
|
581
|
+
break;
|
|
582
|
+
}
|
|
583
|
+
std::vector<JSVariant> row;
|
|
584
|
+
|
|
585
|
+
i = 0;
|
|
586
|
+
|
|
587
|
+
count = sqlite3_column_count(statement);
|
|
588
|
+
|
|
589
|
+
while (i < count) {
|
|
590
|
+
column_type = sqlite3_column_type(statement, i);
|
|
591
|
+
|
|
592
|
+
switch (column_type) {
|
|
593
|
+
case SQLITE_INTEGER: {
|
|
594
|
+
/**
|
|
595
|
+
* Warning this will loose precision because JS can
|
|
596
|
+
* only represent Integers up to 53 bits
|
|
597
|
+
*/
|
|
598
|
+
double column_value = sqlite3_column_double(statement, i);
|
|
599
|
+
row.push_back(JSVariant(column_value));
|
|
600
|
+
break;
|
|
601
|
+
}
|
|
602
|
+
|
|
603
|
+
case SQLITE_FLOAT: {
|
|
604
|
+
double column_value = sqlite3_column_double(statement, i);
|
|
605
|
+
row.push_back(JSVariant(column_value));
|
|
606
|
+
break;
|
|
607
|
+
}
|
|
608
|
+
|
|
609
|
+
case SQLITE_TEXT: {
|
|
610
|
+
const char *column_value = reinterpret_cast<const char *>(
|
|
611
|
+
sqlite3_column_text(statement, i));
|
|
612
|
+
int byteLen = sqlite3_column_bytes(statement, i);
|
|
613
|
+
// Specify length too; in case string contains NULL in the middle
|
|
614
|
+
row.push_back(JSVariant(std::string(column_value, byteLen)));
|
|
615
|
+
break;
|
|
616
|
+
}
|
|
617
|
+
|
|
618
|
+
case SQLITE_BLOB: {
|
|
619
|
+
int blob_size = sqlite3_column_bytes(statement, i);
|
|
620
|
+
const void *blob = sqlite3_column_blob(statement, i);
|
|
621
|
+
uint8_t *data = new uint8_t[blob_size];
|
|
622
|
+
// You cannot share raw memory between native and JS
|
|
623
|
+
// always copy the data
|
|
624
|
+
memcpy(data, blob, blob_size);
|
|
625
|
+
row.push_back(
|
|
626
|
+
JSVariant(ArrayBuffer{.data = std::shared_ptr<uint8_t>{data},
|
|
627
|
+
.size = static_cast<size_t>(blob_size)}));
|
|
628
|
+
break;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
case SQLITE_NULL:
|
|
632
|
+
// Intentionally left blank
|
|
633
|
+
|
|
634
|
+
default:
|
|
635
|
+
row.push_back(JSVariant(NULL));
|
|
636
|
+
break;
|
|
637
|
+
}
|
|
638
|
+
i++;
|
|
639
|
+
}
|
|
640
|
+
|
|
641
|
+
results->push_back(row);
|
|
642
|
+
|
|
643
|
+
break;
|
|
644
|
+
}
|
|
645
|
+
|
|
646
|
+
case SQLITE_DONE:
|
|
647
|
+
isConsuming = false;
|
|
648
|
+
break;
|
|
649
|
+
|
|
650
|
+
default:
|
|
651
|
+
errorMessage = sqlite3_errmsg(db);
|
|
652
|
+
isFailed = true;
|
|
653
|
+
isConsuming = false;
|
|
654
|
+
}
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
sqlite3_finalize(statement);
|
|
658
|
+
} while (remainingStatement != NULL && strcmp(remainingStatement, "") != 0 &&
|
|
659
|
+
!isFailed);
|
|
660
|
+
|
|
661
|
+
if (isFailed) {
|
|
662
|
+
|
|
663
|
+
return {.type = SQLiteError,
|
|
664
|
+
.message =
|
|
665
|
+
"[op-sqlite] SQLite error code: " + std::to_string(result) +
|
|
666
|
+
", description: " + std::string(errorMessage) +
|
|
667
|
+
".\nSee SQLite error codes reference: "
|
|
668
|
+
"https://www.sqlite.org/rescode.html"};
|
|
669
|
+
}
|
|
670
|
+
|
|
671
|
+
int changedRowCount = sqlite3_changes(db);
|
|
672
|
+
long long latestInsertRowId = sqlite3_last_insert_rowid(db);
|
|
673
|
+
|
|
674
|
+
return {.type = SQLiteOk,
|
|
675
|
+
.affectedRows = changedRowCount,
|
|
676
|
+
.insertId = static_cast<double>(latestInsertRowId)};
|
|
677
|
+
}
|
|
678
|
+
|
|
521
679
|
BridgeResult sqlite_execute_literal(std::string const &dbName,
|
|
522
680
|
std::string const &query) {
|
|
523
681
|
if (dbMap.count(dbName) == 0) {
|
|
@@ -731,4 +889,32 @@ BridgeResult sqlite_deregister_rollback_hook(std::string const &dbName) {
|
|
|
731
889
|
|
|
732
890
|
return {SQLiteOk};
|
|
733
891
|
}
|
|
892
|
+
|
|
893
|
+
BridgeResult sqlite_load_extension(std::string &db_name, std::string &path,
|
|
894
|
+
std::string &entry_point) {
|
|
895
|
+
if (dbMap.count(db_name) == 0) {
|
|
896
|
+
return {SQLiteError, "[op-sqlite] Database not open"};
|
|
897
|
+
}
|
|
898
|
+
|
|
899
|
+
sqlite3 *db = dbMap[db_name];
|
|
900
|
+
int loading_extensions_enabled = sqlite3_enable_load_extension(db, 1);
|
|
901
|
+
if (loading_extensions_enabled != SQLITE_OK) {
|
|
902
|
+
return {SQLiteError, "[op-sqlite] could not enable extension loading"};
|
|
903
|
+
}
|
|
904
|
+
const char *path_cstr = path.c_str();
|
|
905
|
+
const char *entry_point_cstr;
|
|
906
|
+
if (!entry_point.empty()) {
|
|
907
|
+
entry_point_cstr = entry_point.c_str();
|
|
908
|
+
}
|
|
909
|
+
|
|
910
|
+
char *error_message;
|
|
911
|
+
|
|
912
|
+
int extension_loaded =
|
|
913
|
+
sqlite3_load_extension(db, path_cstr, entry_point_cstr, &error_message);
|
|
914
|
+
if (extension_loaded != SQLITE_OK) {
|
|
915
|
+
return {SQLiteError, std::string(error_message)};
|
|
916
|
+
}
|
|
917
|
+
return {SQLiteOk};
|
|
918
|
+
}
|
|
919
|
+
|
|
734
920
|
} // namespace opsqlite
|
package/cpp/bridge.h
CHANGED
|
@@ -33,6 +33,11 @@ sqlite_execute(std::string const &dbName, std::string const &query,
|
|
|
33
33
|
std::vector<DumbHostObject> *results,
|
|
34
34
|
std::shared_ptr<std::vector<SmartHostObject>> metadatas);
|
|
35
35
|
|
|
36
|
+
BridgeResult sqlite_execute_raw(std::string const &dbName,
|
|
37
|
+
std::string const &query,
|
|
38
|
+
const std::vector<JSVariant> *params,
|
|
39
|
+
std::vector<std::vector<JSVariant>> *results);
|
|
40
|
+
|
|
36
41
|
BridgeResult sqlite_execute_literal(std::string const &dbName,
|
|
37
42
|
std::string const &query);
|
|
38
43
|
|
|
@@ -62,6 +67,10 @@ BridgeResult sqlite_execute_prepared_statement(
|
|
|
62
67
|
std::string const &dbName, sqlite3_stmt *statement,
|
|
63
68
|
std::vector<DumbHostObject> *results,
|
|
64
69
|
std::shared_ptr<std::vector<SmartHostObject>> metadatas);
|
|
70
|
+
|
|
71
|
+
BridgeResult sqlite_load_extension(std::string &db_name, std::string &path,
|
|
72
|
+
std::string &entry_point);
|
|
73
|
+
|
|
65
74
|
} // namespace opsqlite
|
|
66
75
|
|
|
67
76
|
#endif /* bridge_h */
|
package/cpp/utils.cpp
CHANGED
|
@@ -187,6 +187,22 @@ createResult(jsi::Runtime &rt, BridgeResult status,
|
|
|
187
187
|
return std::move(res);
|
|
188
188
|
}
|
|
189
189
|
|
|
190
|
+
jsi::Value
|
|
191
|
+
create_raw_result(jsi::Runtime &rt, BridgeResult status,
|
|
192
|
+
const std::vector<std::vector<JSVariant>> *results) {
|
|
193
|
+
size_t row_count = results->size();
|
|
194
|
+
jsi::Array res = jsi::Array(rt, row_count);
|
|
195
|
+
for (int i = 0; i < row_count; i++) {
|
|
196
|
+
auto row = results->at(i);
|
|
197
|
+
auto array = jsi::Array(rt, row.size());
|
|
198
|
+
for (int j = 0; j < row.size(); j++) {
|
|
199
|
+
array.setValueAtIndex(rt, j, toJSI(rt, row[j]));
|
|
200
|
+
}
|
|
201
|
+
res.setValueAtIndex(rt, i, array);
|
|
202
|
+
}
|
|
203
|
+
return res;
|
|
204
|
+
}
|
|
205
|
+
|
|
190
206
|
BatchResult importSQLFile(std::string dbName, std::string fileLocation) {
|
|
191
207
|
std::string line;
|
|
192
208
|
std::ifstream sqFile(fileLocation);
|
package/cpp/utils.h
CHANGED
|
@@ -41,6 +41,10 @@ jsi::Value createResult(jsi::Runtime &rt, BridgeResult status,
|
|
|
41
41
|
std::vector<DumbHostObject> *results,
|
|
42
42
|
std::shared_ptr<std::vector<SmartHostObject>> metadata);
|
|
43
43
|
|
|
44
|
+
jsi::Value
|
|
45
|
+
create_raw_result(jsi::Runtime &rt, BridgeResult status,
|
|
46
|
+
const std::vector<std::vector<JSVariant>> *results);
|
|
47
|
+
|
|
44
48
|
BatchResult importSQLFile(std::string dbName, std::string fileLocation);
|
|
45
49
|
|
|
46
50
|
int mkdir(const std::string &path);
|
package/lib/commonjs/index.js
CHANGED
|
@@ -220,7 +220,9 @@ const open = options => {
|
|
|
220
220
|
updateHook: callback => OPSQLite.updateHook(options.name, callback),
|
|
221
221
|
commitHook: callback => OPSQLite.commitHook(options.name, callback),
|
|
222
222
|
rollbackHook: callback => OPSQLite.rollbackHook(options.name, callback),
|
|
223
|
-
prepareStatement: query => OPSQLite.prepareStatement(options.name, query)
|
|
223
|
+
prepareStatement: query => OPSQLite.prepareStatement(options.name, query),
|
|
224
|
+
loadExtension: (path, entryPoint) => OPSQLite.loadExtension(options.name, path, entryPoint),
|
|
225
|
+
executeRawAsync: (query, params) => OPSQLite.executeRawAsync(options.name, query, params)
|
|
224
226
|
};
|
|
225
227
|
};
|
|
226
228
|
exports.open = open;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["global","__OPSQLiteProxy","OPSQLiteModule","NativeOPSQLite","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;AAAA;AAA8C;AAO9C,IAAIA,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,MAAMC,cAAc,GAAGC,uBAAc;EAErC,IAAID,cAAc,IAAI,IAAI,EAAE;IAC1B,MAAM,IAAIE,KAAK,CAAC,sDAAsD,CAAC;EACzE;;EAEA;EACA,IAAIJ,MAAM,CAACK,kBAAkB,IAAI,IAAI,IAAIH,cAAc,CAACI,OAAO,IAAI,IAAI,EAAE;IACvE,MAAM,IAAIF,KAAK,CACb,iQAAiQ,CAClQ;EACH;;EAEA;EACA,MAAMG,MAAM,GAAGL,cAAc,CAACI,OAAO,EAAE;EACvC,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,IAAIH,KAAK,CACZ,iJAAgJG,MAAO,EAAC,CAC1J;EACH;;EAEA;EACA,IAAIP,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIG,KAAK,CACb,yIAAyI,CAC1I;EACH;AACF;AAEA,MAAMI,KAAK,GAAGR,MAAM,CAACC,eAAe;AAC7B,MAAMQ,QAAQ,GAAGD,KAAgB;AAAC;AAElC,MAAM;EACX;EACAE,iBAAiB;EACjB;EACAC,gBAAgB;EAChB;EACAC,qBAAqB;EACrB;EACAC,kBAAkB;EAClB;EACAC;AACF,CAAC,GAAG,CAAC,CAACX,uBAAc,CAACY,YAAY,GAC7BZ,uBAAc,CAACY,YAAY,EAAE,GAC7BZ,uBAAc;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AATA;AAAA;AAAA;AAAA;AAAA;
|
|
1
|
+
{"version":3,"names":["global","__OPSQLiteProxy","OPSQLiteModule","NativeOPSQLite","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement","loadExtension","path","entryPoint","executeRawAsync"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
package/lib/module/index.js
CHANGED
|
@@ -208,7 +208,9 @@ export const open = options => {
|
|
|
208
208
|
updateHook: callback => OPSQLite.updateHook(options.name, callback),
|
|
209
209
|
commitHook: callback => OPSQLite.commitHook(options.name, callback),
|
|
210
210
|
rollbackHook: callback => OPSQLite.rollbackHook(options.name, callback),
|
|
211
|
-
prepareStatement: query => OPSQLite.prepareStatement(options.name, query)
|
|
211
|
+
prepareStatement: query => OPSQLite.prepareStatement(options.name, query),
|
|
212
|
+
loadExtension: (path, entryPoint) => OPSQLite.loadExtension(options.name, path, entryPoint),
|
|
213
|
+
executeRawAsync: (query, params) => OPSQLite.executeRawAsync(options.name, query, params)
|
|
212
214
|
};
|
|
213
215
|
};
|
|
214
216
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeOPSQLite","global","__OPSQLiteProxy","OPSQLiteModule","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"AAAA,OAAOA,cAAc,MAAM,kBAAkB;AAO7C,IAAIC,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;EAClC,MAAMC,cAAc,GAAGH,cAAc;EAErC,IAAIG,cAAc,IAAI,IAAI,EAAE;IAC1B,MAAM,IAAIC,KAAK,CAAC,sDAAsD,CAAC;EACzE;;EAEA;EACA,IAAIH,MAAM,CAACI,kBAAkB,IAAI,IAAI,IAAIF,cAAc,CAACG,OAAO,IAAI,IAAI,EAAE;IACvE,MAAM,IAAIF,KAAK,CACb,iQAAiQ,CAClQ;EACH;;EAEA;EACA,MAAMG,MAAM,GAAGJ,cAAc,CAACG,OAAO,EAAE;EACvC,IAAIC,MAAM,KAAK,IAAI,EAAE;IACnB,MAAM,IAAIH,KAAK,CACZ,iJAAgJG,MAAO,EAAC,CAC1J;EACH;;EAEA;EACA,IAAIN,MAAM,CAACC,eAAe,IAAI,IAAI,EAAE;IAClC,MAAM,IAAIE,KAAK,CACb,yIAAyI,CAC1I;EACH;AACF;AAEA,MAAMI,KAAK,GAAGP,MAAM,CAACC,eAAe;AACpC,OAAO,MAAMO,QAAQ,GAAGD,KAAgB;AAExC,OAAO,MAAM;EACX;EACAE,iBAAiB;EACjB;EACAC,gBAAgB;EAChB;EACAC,qBAAqB;EACrB;EACAC,kBAAkB;EAClB;EACAC;AACF,CAAC,GAAG,CAAC,CAACd,cAAc,CAACe,YAAY,GAC7Bf,cAAc,CAACe,YAAY,EAAE,GAC7Bf,cAAc;;AAElB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["NativeOPSQLite","global","__OPSQLiteProxy","OPSQLiteModule","Error","nativeCallSyncHook","install","result","proxy","OPSQLite","IOS_DOCUMENT_PATH","IOS_LIBRARY_PATH","ANDROID_DATABASE_PATH","ANDROID_FILES_PATH","ANDROID_EXTERNAL_FILES_PATH","getConstants","locks","enhanceQueryResult","rows","_array","length","item","idx","_open","open","dbName","location","queue","inProgress","_close","close","_execute","execute","query","params","sanitizedParams","map","p","ArrayBuffer","isView","buffer","_executeAsync","executeAsync","res","transaction","fn","isFinalized","commit","rollback","run","executionError","rollbackError","startNextTransaction","Promise","resolve","reject","tx","start","then","catch","push","shift","setImmediate","options","name","delete","attach","dbNameToAttach","alias","detach","executeBatch","commands","executeBatchAsync","loadFile","updateHook","callback","commitHook","rollbackHook","prepareStatement","loadExtension","path","entryPoint","executeRawAsync"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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"}
|
|
@@ -103,6 +103,8 @@ interface ISQLite {
|
|
|
103
103
|
commitHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
104
104
|
rollbackHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
105
105
|
prepareStatement: (dbName: string, query: string) => PreparedStatementObj;
|
|
106
|
+
loadExtension: (dbName: string, path: string, entryPoint?: string) => void;
|
|
107
|
+
executeRawAsync: (dbName: string, query: string, params?: any[]) => Promise<any[]>;
|
|
106
108
|
}
|
|
107
109
|
export type OPSQLiteConnection = {
|
|
108
110
|
close: () => void;
|
|
@@ -124,6 +126,8 @@ export type OPSQLiteConnection = {
|
|
|
124
126
|
commitHook: (callback: (() => void) | null) => void;
|
|
125
127
|
rollbackHook: (callback: (() => void) | null) => void;
|
|
126
128
|
prepareStatement: (query: string) => PreparedStatementObj;
|
|
129
|
+
loadExtension: (path: string, entryPoint?: string) => void;
|
|
130
|
+
executeRawAsync: (query: string, params?: any[]) => Promise<any[]>;
|
|
127
131
|
};
|
|
128
132
|
export declare const open: (options: {
|
|
129
133
|
name: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/op-sqlite.podspec
CHANGED
|
@@ -34,11 +34,13 @@ Pod::Spec.new do |s|
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
if ENV['OP_SQLITE_USE_PHONE_VERSION'] == '1' then
|
|
37
|
+
puts "OP-SQLITE using iOS embedded SQLite! 📱\n"
|
|
37
38
|
s.exclude_files = "cpp/sqlite3.c", "cpp/sqlite3.h"
|
|
38
39
|
s.library = "sqlite3"
|
|
39
40
|
end
|
|
40
41
|
|
|
41
42
|
if ENV['OP_SQLITE_PERF'] == '1' then
|
|
43
|
+
puts "OP-SQLITE performance mode enabled! 🚀\n"
|
|
42
44
|
xcconfig[:OTHER_CFLAGS] = '$(inherited) -DSQLITE_DQS=0 -DSQLITE_THREADSAFE=0 -DSQLITE_DEFAULT_MEMSTATUS=0 -DSQLITE_DEFAULT_WAL_SYNCHRONOUS=1 -DSQLITE_LIKE_DOESNT_MATCH_BLOBS=1 -DSQLITE_MAX_EXPR_DEPTH=0 -DSQLITE_OMIT_DEPRECATED=1 -DSQLITE_OMIT_PROGRESS_CALLBACK=1 -DSQLITE_OMIT_SHARED_CACHE=1 -DSQLITE_USE_ALLOCA=1'
|
|
43
45
|
end
|
|
44
46
|
|
package/package.json
CHANGED
package/src/index.ts
CHANGED
|
@@ -193,6 +193,12 @@ interface ISQLite {
|
|
|
193
193
|
commitHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
194
194
|
rollbackHook: (dbName: string, callback?: (() => void) | null) => void;
|
|
195
195
|
prepareStatement: (dbName: string, query: string) => PreparedStatementObj;
|
|
196
|
+
loadExtension: (dbName: string, path: string, entryPoint?: string) => void;
|
|
197
|
+
executeRawAsync: (
|
|
198
|
+
dbName: string,
|
|
199
|
+
query: string,
|
|
200
|
+
params?: any[]
|
|
201
|
+
) => Promise<any[]>;
|
|
196
202
|
}
|
|
197
203
|
|
|
198
204
|
const locks: Record<
|
|
@@ -412,6 +418,8 @@ export type OPSQLiteConnection = {
|
|
|
412
418
|
commitHook: (callback: (() => void) | null) => void;
|
|
413
419
|
rollbackHook: (callback: (() => void) | null) => void;
|
|
414
420
|
prepareStatement: (query: string) => PreparedStatementObj;
|
|
421
|
+
loadExtension: (path: string, entryPoint?: string) => void;
|
|
422
|
+
executeRawAsync: (query: string, params?: any[]) => Promise<any[]>;
|
|
415
423
|
};
|
|
416
424
|
|
|
417
425
|
export const open = (options: {
|
|
@@ -444,5 +452,9 @@ export const open = (options: {
|
|
|
444
452
|
commitHook: (callback) => OPSQLite.commitHook(options.name, callback),
|
|
445
453
|
rollbackHook: (callback) => OPSQLite.rollbackHook(options.name, callback),
|
|
446
454
|
prepareStatement: (query) => OPSQLite.prepareStatement(options.name, query),
|
|
455
|
+
loadExtension: (path, entryPoint) =>
|
|
456
|
+
OPSQLite.loadExtension(options.name, path, entryPoint),
|
|
457
|
+
executeRawAsync: (query, params) =>
|
|
458
|
+
OPSQLite.executeRawAsync(options.name, query, params),
|
|
447
459
|
};
|
|
448
460
|
};
|