sqlmath 0.0.1 → 0.0.2

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.
Files changed (100) hide show
  1. package/.gitconfig +2 -2
  2. package/.github/workflows/ci.yml +73 -15
  3. package/.github/workflows/publish.yml +66 -0
  4. package/.gitignore +1 -5
  5. package/CHANGELOG.md +53 -2
  6. package/LICENSE +16 -22
  7. package/README.md +18 -219
  8. package/asset_image_folder_open_solid.svg +1 -0
  9. package/jslint.mjs +10998 -0
  10. package/jslint_ci.sh +1542 -728
  11. package/package.json +23 -8
  12. package/{sqlite-autoconf-3360000/sqlite3.c → sqlite3.c} +13116 -85
  13. package/sqlite3_ext.c +8372 -0
  14. package/{sqlite-autoconf-3360000/shell.c → sqlite3_shell.c} +330 -275
  15. package/sqlmath.mjs +1713 -0
  16. package/sqlmath_base.c +1832 -0
  17. package/sqlmath_custom.c +78 -0
  18. package/sqlmath_custom.cpp +0 -0
  19. package/sqlmath_custom.mjs +4 -0
  20. package/sqlmath_old.js +31038 -0
  21. package/extension-functions.c +0 -2047
  22. package/node_sqlite3.cc +0 -11877
  23. package/sqlite-autoconf-3360000/INSTALL +0 -370
  24. package/sqlite-autoconf-3360000/Makefile.am +0 -20
  25. package/sqlite-autoconf-3360000/Makefile.fallback +0 -19
  26. package/sqlite-autoconf-3360000/Makefile.in +0 -1028
  27. package/sqlite-autoconf-3360000/Makefile.msc +0 -1037
  28. package/sqlite-autoconf-3360000/README.txt +0 -113
  29. package/sqlite-autoconf-3360000/Replace.cs +0 -223
  30. package/sqlite-autoconf-3360000/aclocal.m4 +0 -10199
  31. package/sqlite-autoconf-3360000/compile +0 -347
  32. package/sqlite-autoconf-3360000/config.guess +0 -1480
  33. package/sqlite-autoconf-3360000/config.sub +0 -1801
  34. package/sqlite-autoconf-3360000/configure +0 -16135
  35. package/sqlite-autoconf-3360000/configure.ac +0 -285
  36. package/sqlite-autoconf-3360000/depcomp +0 -791
  37. package/sqlite-autoconf-3360000/install-sh +0 -508
  38. package/sqlite-autoconf-3360000/ltmain.sh +0 -11156
  39. package/sqlite-autoconf-3360000/missing +0 -215
  40. package/sqlite-autoconf-3360000/sqlite3.1 +0 -286
  41. package/sqlite-autoconf-3360000/sqlite3.h +0 -12353
  42. package/sqlite-autoconf-3360000/sqlite3.pc.in +0 -13
  43. package/sqlite-autoconf-3360000/sqlite3.rc +0 -83
  44. package/sqlite-autoconf-3360000/sqlite3ext.h +0 -663
  45. package/sqlite-autoconf-3360000/sqlite3rc.h +0 -3
  46. package/sqlite-autoconf-3360000/tea/Makefile.in +0 -440
  47. package/sqlite-autoconf-3360000/tea/README +0 -36
  48. package/sqlite-autoconf-3360000/tea/aclocal.m4 +0 -9
  49. package/sqlite-autoconf-3360000/tea/configure +0 -9989
  50. package/sqlite-autoconf-3360000/tea/configure.ac +0 -201
  51. package/sqlite-autoconf-3360000/tea/doc/sqlite3.n +0 -15
  52. package/sqlite-autoconf-3360000/tea/generic/tclsqlite3.c +0 -4016
  53. package/sqlite-autoconf-3360000/tea/license.terms +0 -6
  54. package/sqlite-autoconf-3360000/tea/pkgIndex.tcl.in +0 -7
  55. package/sqlite-autoconf-3360000/tea/tclconfig/install-sh +0 -528
  56. package/sqlite-autoconf-3360000/tea/tclconfig/tcl.m4 +0 -4168
  57. package/sqlite-autoconf-3360000/tea/win/makefile.vc +0 -419
  58. package/sqlite-autoconf-3360000/tea/win/nmakehlp.c +0 -815
  59. package/sqlite-autoconf-3360000/tea/win/rules.vc +0 -711
  60. package/sqlmath.js +0 -238
  61. package/test/backup.test.js +0 -279
  62. package/test/blob.test.js +0 -54
  63. package/test/cache.test.js +0 -42
  64. package/test/constants.test.js +0 -44
  65. package/test/database_fail.test.js +0 -153
  66. package/test/each.test.js +0 -39
  67. package/test/exec.test.js +0 -39
  68. package/test/extension.test.js +0 -26
  69. package/test/extension_functions.test.js +0 -29
  70. package/test/fts-content.test.js +0 -13
  71. package/test/interrupt.test.js +0 -80
  72. package/test/issue-108.test.js +0 -28
  73. package/test/json.test.js +0 -22
  74. package/test/map.test.js +0 -63
  75. package/test/named_columns.test.js +0 -38
  76. package/test/named_params.test.js +0 -69
  77. package/test/null_error.test.js +0 -41
  78. package/test/nw/.gitignore +0 -3
  79. package/test/nw/Makefile +0 -39
  80. package/test/nw/index.html +0 -14
  81. package/test/nw/package.json +0 -9
  82. package/test/open_close.test.js +0 -187
  83. package/test/other_objects.test.js +0 -98
  84. package/test/parallel_insert.test.js +0 -44
  85. package/test/prepare.test.js +0 -427
  86. package/test/profile.test.js +0 -57
  87. package/test/rerun.test.js +0 -50
  88. package/test/scheduling.test.js +0 -44
  89. package/test/serialization.test.js +0 -104
  90. package/test/support/createdb-electron.js +0 -10
  91. package/test/support/createdb.js +0 -47
  92. package/test/support/elmo.png +0 -0
  93. package/test/support/helper.js +0 -37
  94. package/test/support/script.sql +0 -70
  95. package/test/trace.test.js +0 -67
  96. package/test/unicode.test.js +0 -114
  97. package/test/upsert.test.js +0 -27
  98. package/test/verbose.test.js +0 -60
  99. package/test.js +0 -141
  100. package/test.slr.mjs +0 -212
@@ -1,47 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- function createdb(callback) {
4
- var existsSync = require("fs").existsSync || require("path").existsSync;
5
- var path = require("path");
6
-
7
- var sqlite3 = require("../../sqlmath.js");
8
-
9
- var count = 1000000;
10
- var db_path = path.join(__dirname,"big.db");
11
-
12
- function randomString() {
13
- var str = "";
14
- var chars = "abcdefghijklmnopqrstuvwxzyABCDEFGHIJKLMNOPQRSTUVWXZY0123456789 ";
15
- for (var i = Math.random() * 100; i > 0; i--) {
16
- str += chars[Math.floor(Math.random() * chars.length)];
17
- }
18
- return str;
19
- }
20
-
21
-
22
- if (existsSync(db_path)) {
23
- console.log("okay: database already created (" + db_path + ")");
24
- if (callback) callback();
25
- } else {
26
- console.log("Creating test database... This may take several minutes.");
27
- var db = new sqlite3.Database(db_path);
28
- db.serialize(function() {
29
- db.run("CREATE TABLE foo (id INT, txt TEXT)");
30
- db.run("BEGIN TRANSACTION");
31
- var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
32
- for (var i = 0; i < count; i++) {
33
- stmt.run(i, randomString());
34
- }
35
- stmt.finalize();
36
- db.run("COMMIT TRANSACTION", [], function () {
37
- db.close(callback);
38
- });
39
- });
40
- }
41
- }
42
-
43
- if (require.main === module) {
44
- createdb();
45
- }
46
-
47
- module.exports = createdb;
Binary file
@@ -1,37 +0,0 @@
1
- var assert = require("assert");
2
- var fs = require("fs");
3
- var pathExists = require("fs").existsSync || require("path").existsSync;
4
-
5
- exports.deleteFile = function(name) {
6
- try {
7
- fs.unlinkSync(name);
8
- } catch(err) {
9
- if (err.errno !== process.ENOENT && err.code !== "ENOENT" && err.syscall !== "unlink") {
10
- throw err;
11
- }
12
- }
13
- };
14
-
15
- exports.ensureExists = function(name,cb) {
16
- if (!pathExists(name)) {
17
- fs.mkdirSync(name);
18
- }
19
- };
20
-
21
- assert.fileDoesNotExist = function(name) {
22
- try {
23
- fs.statSync(name);
24
- } catch(err) {
25
- if (err.errno !== process.ENOENT && err.code !== "ENOENT" && err.syscall !== "unlink") {
26
- throw err;
27
- }
28
- }
29
- };
30
-
31
- assert.fileExists = function(name) {
32
- try {
33
- fs.statSync(name);
34
- } catch(err) {
35
- throw err;
36
- }
37
- };
@@ -1,70 +0,0 @@
1
- CREATE TABLE IF NOT EXISTS map (
2
- zoom_level INTEGER,
3
- tile_column INTEGER,
4
- tile_row INTEGER,
5
- tile_id TEXT,
6
- grid_id TEXT
7
- );
8
-
9
- CREATE TABLE IF NOT EXISTS grid_key (
10
- grid_id TEXT,
11
- key_name TEXT
12
- );
13
-
14
- CREATE TABLE IF NOT EXISTS keymap (
15
- key_name TEXT,
16
- key_json TEXT
17
- );
18
-
19
- CREATE TABLE IF NOT EXISTS grid_utfgrid (
20
- grid_id TEXT,
21
- grid_utfgrid TEXT
22
- );
23
-
24
- CREATE TABLE IF NOT EXISTS images (
25
- tile_data blob,
26
- tile_id text
27
- );
28
-
29
- CREATE TABLE IF NOT EXISTS metadata (
30
- name text,
31
- value text
32
- );
33
-
34
-
35
- CREATE UNIQUE INDEX IF NOT EXISTS map_index ON map (zoom_level, tile_column, tile_row);
36
- CREATE UNIQUE INDEX IF NOT EXISTS grid_key_lookup ON grid_key (grid_id, key_name);
37
- CREATE UNIQUE INDEX IF NOT EXISTS keymap_lookup ON keymap (key_name);
38
- CREATE UNIQUE INDEX IF NOT EXISTS grid_utfgrid_lookup ON grid_utfgrid (grid_id);
39
- CREATE UNIQUE INDEX IF NOT EXISTS images_id ON images (tile_id);
40
- CREATE UNIQUE INDEX IF NOT EXISTS name ON metadata (name);
41
-
42
-
43
- CREATE VIEW IF NOT EXISTS tiles AS
44
- SELECT
45
- map.zoom_level AS zoom_level,
46
- map.tile_column AS tile_column,
47
- map.tile_row AS tile_row,
48
- images.tile_data AS tile_data
49
- FROM map
50
- JOIN images ON images.tile_id = map.tile_id;
51
-
52
- CREATE VIEW IF NOT EXISTS grids AS
53
- SELECT
54
- map.zoom_level AS zoom_level,
55
- map.tile_column AS tile_column,
56
- map.tile_row AS tile_row,
57
- grid_utfgrid.grid_utfgrid AS grid
58
- FROM map
59
- JOIN grid_utfgrid ON grid_utfgrid.grid_id = map.grid_id;
60
-
61
- CREATE VIEW IF NOT EXISTS grid_data AS
62
- SELECT
63
- map.zoom_level AS zoom_level,
64
- map.tile_column AS tile_column,
65
- map.tile_row AS tile_row,
66
- keymap.key_name AS key_name,
67
- keymap.key_json AS key_json
68
- FROM map
69
- JOIN grid_key ON map.grid_id = grid_key.grid_id
70
- JOIN keymap ON grid_key.key_name = keymap.key_name;
@@ -1,67 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
-
4
- describe("tracing", function() {
5
- it("Database tracing", function(done) {
6
- var db = new sqlite3.Database(":memory:");
7
- var create = false;
8
- var select = false;
9
-
10
- db.on("trace", function(sql) {
11
- if (sql.match(/^SELECT/)) {
12
- assert.ok(!select);
13
- assert.equal(sql, "SELECT * FROM foo");
14
- select = true;
15
- }
16
- else if (sql.match(/^CREATE/)) {
17
- assert.ok(!create);
18
- assert.equal(sql, "CREATE TABLE foo (id int)");
19
- create = true;
20
- }
21
- else {
22
- assert.ok(false);
23
- }
24
- });
25
-
26
- db.serialize(function() {
27
- db.run("CREATE TABLE foo (id int)");
28
- db.run("SELECT * FROM foo");
29
- });
30
-
31
- db.close(function(err) {
32
- if (err) throw err;
33
- assert.ok(create);
34
- assert.ok(select);
35
- done();
36
- });
37
- });
38
-
39
-
40
- it("test disabling tracing #1", function(done) {
41
- var db = new sqlite3.Database(":memory:");
42
-
43
- db.on("trace", function(sql) {});
44
- db.removeAllListeners("trace");
45
- db._events["trace"] = function(sql) {
46
- assert.ok(false);
47
- };
48
-
49
- db.run("CREATE TABLE foo (id int)");
50
- db.close(done);
51
- });
52
-
53
-
54
- it("test disabling tracing #2", function(done) {
55
- var db = new sqlite3.Database(":memory:");
56
-
57
- var trace = function(sql) {};
58
- db.on("trace", trace);
59
- db.removeListener("trace", trace);
60
- db._events["trace"] = function(sql) {
61
- assert.ok(false);
62
- };
63
-
64
- db.run("CREATE TABLE foo (id int)");
65
- db.close(done);
66
- });
67
- });
@@ -1,114 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
-
4
- describe("unicode", function() {
5
- var first_values = [],
6
- trailing_values = [],
7
- chars = [],
8
- subranges = new Array(2),
9
- len = subranges.length,
10
- db,
11
- i;
12
-
13
- before(function(done) { db = new sqlite3.Database(":memory:", done); });
14
-
15
- for (i = 0x20; i < 0x80; i++) {
16
- first_values.push(i);
17
- }
18
-
19
- for (i = 0xc2; i < 0xf0; i++) {
20
- first_values.push(i);
21
- }
22
-
23
- for (i = 0x80; i < 0xc0; i++) {
24
- trailing_values.push(i);
25
- }
26
-
27
- for (i = 0; i < len; i++) {
28
- subranges[i] = [];
29
- }
30
-
31
- for (i = 0xa0; i < 0xc0; i++) {
32
- subranges[0].push(i);
33
- }
34
-
35
- for (i = 0x80; i < 0xa0; i++) {
36
- subranges[1].push(i);
37
- }
38
-
39
- function random_choice(arr) {
40
- return arr[Math.random() * arr.length | 0];
41
- }
42
-
43
- function random_utf8() {
44
- var first = random_choice(first_values);
45
-
46
- if (first < 0x80) {
47
- return String.fromCharCode(first);
48
- } else if (first < 0xe0) {
49
- return String.fromCharCode((first & 0x1f) << 0x6 | random_choice(trailing_values) & 0x3f);
50
- } else if (first == 0xe0) {
51
- return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(subranges[0]) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f);
52
- } else if (first == 0xed) {
53
- return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(subranges[1]) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f);
54
- } else if (first < 0xf0) {
55
- return String.fromCharCode(((first & 0xf) << 0xc) | ((random_choice(trailing_values) & 0x3f) << 6) | random_choice(trailing_values) & 0x3f);
56
- }
57
- }
58
-
59
- function randomString() {
60
- var str = "",
61
- i;
62
-
63
- for (i = Math.random() * 300; i > 0; i--) {
64
- str += random_utf8();
65
- }
66
-
67
- return str;
68
- }
69
-
70
-
71
- // Generate random data.
72
- var data = [];
73
- var length = Math.floor(Math.random() * 1000) + 200;
74
- for (var i = 0; i < length; i++) {
75
- data.push(randomString());
76
- }
77
-
78
- var inserted = 0;
79
- var retrieved = 0;
80
-
81
- it("should create the table", function(done) {
82
- db.run("CREATE TABLE foo (id int, txt text)", done);
83
- });
84
-
85
- it("should insert all values", function(done) {
86
- var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
87
- for (var i = 0; i < data.length; i++) {
88
- stmt.run(i, data[i], function(err) {
89
- if (err) throw err;
90
- inserted++;
91
- });
92
- }
93
- stmt.finalize(done);
94
- });
95
-
96
- it("should retrieve all values", function(done) {
97
- db.all("SELECT txt FROM foo ORDER BY id", function(err, rows) {
98
- if (err) throw err;
99
-
100
- for (var i = 0; i < rows.length; i++) {
101
- assert.equal(rows[i].txt, data[i]);
102
- retrieved++;
103
- }
104
- done();
105
- });
106
- });
107
-
108
- it("should have inserted and retrieved the correct amount", function() {
109
- assert.equal(inserted, length);
110
- assert.equal(retrieved, length);
111
- });
112
-
113
- after(function(done) { db.close(done); });
114
- });
@@ -1,27 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
-
4
- describe("query properties", function() {
5
- var db;
6
- before(function(done) {
7
- db = new sqlite3.Database(":memory:");
8
- db.run("CREATE TABLE foo (id INT PRIMARY KEY, count INT)", done);
9
- });
10
-
11
- (sqlite3.VERSION_NUMBER < 3024000 ? it.skip : it)("should upsert", function(done) {
12
- var stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
13
- stmt.run(1, 1, function(err) { // insert 1
14
- if (err) throw err;
15
- var upsert_stmt = db.prepare("INSERT INTO foo VALUES(?, ?) ON CONFLICT (id) DO UPDATE SET count = count + excluded.count");
16
- upsert_stmt.run(1, 2, function(err) { // add 2
17
- if (err) throw err;
18
- var select_stmt = db.prepare("SELECT count FROM foo WHERE id = ?");
19
- select_stmt.get(1, function(err, row) {
20
- if (err) throw err;
21
- assert.equal(row.count, 3); // equals 3
22
- });
23
- });
24
- });
25
- db.wait(done);
26
- });
27
- });
@@ -1,60 +0,0 @@
1
- var sqlite3 = require('..');
2
- var assert = require('assert');
3
-
4
- var invalid_sql = 'update non_existent_table set id=1';
5
-
6
- var originalMethods = {
7
- Database: {},
8
- Statement: {},
9
- };
10
-
11
- function backupOriginalMethods() {
12
- for (var obj in originalMethods) {
13
- for (var attr in sqlite3[obj].prototype) {
14
- originalMethods[obj][attr] = sqlite3[obj].prototype[attr];
15
- }
16
- }
17
- }
18
-
19
- function resetVerbose() {
20
- for (var obj in originalMethods) {
21
- for (var attr in originalMethods[obj]) {
22
- sqlite3[obj].prototype[attr] = originalMethods[obj][attr];
23
- }
24
- }
25
- }
26
-
27
- describe('verbose', function() {
28
- it('Shoud add trace info to error when verbose is called', function(done) {
29
- var db = new sqlite3.Database(':memory:');
30
- backupOriginalMethods();
31
- sqlite3.verbose();
32
-
33
- db.run(invalid_sql, function(err) {
34
- assert(err instanceof Error);
35
-
36
- assert(
37
- err.stack.indexOf(`Database#run('${invalid_sql}'`) > -1,
38
- `Stack shoud contain trace info, stack = ${err.stack}`
39
- );
40
-
41
- done();
42
- resetVerbose();
43
- });
44
- });
45
-
46
- it('Shoud not add trace info to error when verbose is not called', function(done) {
47
- var db = new sqlite3.Database(':memory:');
48
-
49
- db.run(invalid_sql, function(err) {
50
- assert(err instanceof Error);
51
-
52
- assert(
53
- err.stack.indexOf(invalid_sql) === -1,
54
- `Stack shoud not contain trace info, stack = ${err.stack}`
55
- );
56
-
57
- done();
58
- });
59
- });
60
- });
package/test.js DELETED
@@ -1,141 +0,0 @@
1
- /*jslint beta, for, this*/
2
- /*global require*/ //jslint-quiet
3
-
4
- let sqlite3 = require("./sqlmath.js");
5
-
6
- function assertJsonEqual(aa, bb) {
7
-
8
- // This function will assert JSON.stringify(<aa>) === JSON.stringify(<bb>).
9
-
10
- aa = JSON.stringify(objectDeepCopyWithKeysSorted(aa));
11
- bb = JSON.stringify(objectDeepCopyWithKeysSorted(bb));
12
- if (aa !== bb) {
13
- throw new Error(JSON.stringify(aa) + " !== " + JSON.stringify(bb));
14
- }
15
- }
16
-
17
- function assertOrThrow(passed, msg) {
18
-
19
- // This function will throw <msg> if <passed> is falsy.
20
-
21
- if (passed) {
22
- return;
23
- }
24
- throw (
25
- (
26
- msg &&
27
- typeof msg.message === "string" &&
28
- typeof msg.stack === "string"
29
- )
30
- // if msg is err, then leave as is
31
- ? msg
32
- : new Error(
33
- typeof msg === "string"
34
- // if msg is string, then leave as is
35
- ? msg
36
- // else JSON.stringify(msg)
37
- : JSON.stringify(msg, undefined, 4)
38
- )
39
- );
40
- }
41
-
42
- function objectDeepCopyWithKeysSorted(obj) {
43
-
44
- // This function will recursively deep-copy <obj> with keys sorted.
45
-
46
- let sorted;
47
- if (typeof obj !== "object" || !obj) {
48
- return obj;
49
- }
50
- // recursively deep-copy list with child-keys sorted
51
- if (Array.isArray(obj)) {
52
- return obj.map(objectDeepCopyWithKeysSorted);
53
- }
54
- // recursively deep-copy obj with keys sorted
55
- sorted = {};
56
- Object.keys(obj).sort().forEach(function (key) {
57
- sorted[key] = objectDeepCopyWithKeysSorted(obj[key]);
58
- });
59
- return sorted;
60
- }
61
-
62
-
63
- // test/affected.test.js
64
- (async function () {
65
- let db = new sqlite3.Database(":memory:");
66
-
67
- await new Promise(function (done) {
68
- db.run("CREATE TABLE foo (id INT, txt TEXT)", done);
69
- });
70
-
71
- // it should return the correct lastID
72
-
73
- await new Promise(function (done) {
74
- let ii = 0;
75
- let jj = 1;
76
- let stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
77
- function onError(err) {
78
- assertOrThrow(!err, err);
79
-
80
- // Relies on SQLite's row numbering to be gapless and starting from 1.
81
-
82
- assertJsonEqual(jj, this.lastID);
83
- jj += 1;
84
- }
85
- for (ii = 0; ii < 5000; ii += 1) {
86
- stmt.run(ii, "demo", onError);
87
- }
88
- db.wait(done);
89
- });
90
-
91
- // it should return the correct changes count
92
-
93
- await new Promise(function (done) {
94
- db.run("UPDATE foo SET id = id + 1 WHERE id % 2 = 0", function (err) {
95
- assertOrThrow(!err, err);
96
- assertJsonEqual(2500, this.changes);
97
- done();
98
- });
99
- });
100
- }());
101
-
102
-
103
- //!! // test/backup.test.js
104
- //!! (async function () {
105
- //!! let db = new sqlite3.Database(":memory:");
106
-
107
- //!! await new Promise(function (done) {
108
- //!! db.run("CREATE TABLE foo (id INT, txt TEXT)", done);
109
- //!! });
110
-
111
- //!! // it should return the correct lastID
112
-
113
- //!! await new Promise(function (done) {
114
- //!! let ii = 0;
115
- //!! let jj = 1;
116
- //!! let stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
117
- //!! function onError(err) {
118
- //!! assertOrThrow(!err, err);
119
-
120
- //!! // Relies on SQLite's row numbering to be gapless and starting from 1.
121
-
122
- //!! assertJsonEqual(jj, this.lastID);
123
- //!! jj += 1;
124
- //!! }
125
- //!! for (ii = 0; ii < 5000; ii += 1) {
126
- //!! stmt.run(ii, "demo", onError);
127
- //!! }
128
- //!! db.wait(done);
129
- //!! });
130
-
131
- //!! // it should return the correct changes count
132
-
133
- //!! await new Promise(function (done) {
134
- //!! db.run("UPDATE foo SET id = id + 1 WHERE id % 2 = 0",
135
- //function (err) {
136
- //!! assertOrThrow(!err, err);
137
- //!! assertJsonEqual(2500, this.changes);
138
- //!! done();
139
- //!! });
140
- //!! });
141
- //!! }());