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.
- package/.gitconfig +2 -2
- package/.github/workflows/ci.yml +73 -15
- package/.github/workflows/publish.yml +66 -0
- package/.gitignore +1 -5
- package/CHANGELOG.md +53 -2
- package/LICENSE +16 -22
- package/README.md +18 -219
- package/asset_image_folder_open_solid.svg +1 -0
- package/jslint.mjs +10998 -0
- package/jslint_ci.sh +1542 -728
- package/package.json +23 -8
- package/{sqlite-autoconf-3360000/sqlite3.c → sqlite3.c} +13116 -85
- package/sqlite3_ext.c +8372 -0
- package/{sqlite-autoconf-3360000/shell.c → sqlite3_shell.c} +330 -275
- package/sqlmath.mjs +1713 -0
- package/sqlmath_base.c +1832 -0
- package/sqlmath_custom.c +78 -0
- package/sqlmath_custom.cpp +0 -0
- package/sqlmath_custom.mjs +4 -0
- package/sqlmath_old.js +31038 -0
- package/extension-functions.c +0 -2047
- package/node_sqlite3.cc +0 -11877
- package/sqlite-autoconf-3360000/INSTALL +0 -370
- package/sqlite-autoconf-3360000/Makefile.am +0 -20
- package/sqlite-autoconf-3360000/Makefile.fallback +0 -19
- package/sqlite-autoconf-3360000/Makefile.in +0 -1028
- package/sqlite-autoconf-3360000/Makefile.msc +0 -1037
- package/sqlite-autoconf-3360000/README.txt +0 -113
- package/sqlite-autoconf-3360000/Replace.cs +0 -223
- package/sqlite-autoconf-3360000/aclocal.m4 +0 -10199
- package/sqlite-autoconf-3360000/compile +0 -347
- package/sqlite-autoconf-3360000/config.guess +0 -1480
- package/sqlite-autoconf-3360000/config.sub +0 -1801
- package/sqlite-autoconf-3360000/configure +0 -16135
- package/sqlite-autoconf-3360000/configure.ac +0 -285
- package/sqlite-autoconf-3360000/depcomp +0 -791
- package/sqlite-autoconf-3360000/install-sh +0 -508
- package/sqlite-autoconf-3360000/ltmain.sh +0 -11156
- package/sqlite-autoconf-3360000/missing +0 -215
- package/sqlite-autoconf-3360000/sqlite3.1 +0 -286
- package/sqlite-autoconf-3360000/sqlite3.h +0 -12353
- package/sqlite-autoconf-3360000/sqlite3.pc.in +0 -13
- package/sqlite-autoconf-3360000/sqlite3.rc +0 -83
- package/sqlite-autoconf-3360000/sqlite3ext.h +0 -663
- package/sqlite-autoconf-3360000/sqlite3rc.h +0 -3
- package/sqlite-autoconf-3360000/tea/Makefile.in +0 -440
- package/sqlite-autoconf-3360000/tea/README +0 -36
- package/sqlite-autoconf-3360000/tea/aclocal.m4 +0 -9
- package/sqlite-autoconf-3360000/tea/configure +0 -9989
- package/sqlite-autoconf-3360000/tea/configure.ac +0 -201
- package/sqlite-autoconf-3360000/tea/doc/sqlite3.n +0 -15
- package/sqlite-autoconf-3360000/tea/generic/tclsqlite3.c +0 -4016
- package/sqlite-autoconf-3360000/tea/license.terms +0 -6
- package/sqlite-autoconf-3360000/tea/pkgIndex.tcl.in +0 -7
- package/sqlite-autoconf-3360000/tea/tclconfig/install-sh +0 -528
- package/sqlite-autoconf-3360000/tea/tclconfig/tcl.m4 +0 -4168
- package/sqlite-autoconf-3360000/tea/win/makefile.vc +0 -419
- package/sqlite-autoconf-3360000/tea/win/nmakehlp.c +0 -815
- package/sqlite-autoconf-3360000/tea/win/rules.vc +0 -711
- package/sqlmath.js +0 -238
- package/test/backup.test.js +0 -279
- package/test/blob.test.js +0 -54
- package/test/cache.test.js +0 -42
- package/test/constants.test.js +0 -44
- package/test/database_fail.test.js +0 -153
- package/test/each.test.js +0 -39
- package/test/exec.test.js +0 -39
- package/test/extension.test.js +0 -26
- package/test/extension_functions.test.js +0 -29
- package/test/fts-content.test.js +0 -13
- package/test/interrupt.test.js +0 -80
- package/test/issue-108.test.js +0 -28
- package/test/json.test.js +0 -22
- package/test/map.test.js +0 -63
- package/test/named_columns.test.js +0 -38
- package/test/named_params.test.js +0 -69
- package/test/null_error.test.js +0 -41
- package/test/nw/.gitignore +0 -3
- package/test/nw/Makefile +0 -39
- package/test/nw/index.html +0 -14
- package/test/nw/package.json +0 -9
- package/test/open_close.test.js +0 -187
- package/test/other_objects.test.js +0 -98
- package/test/parallel_insert.test.js +0 -44
- package/test/prepare.test.js +0 -427
- package/test/profile.test.js +0 -57
- package/test/rerun.test.js +0 -50
- package/test/scheduling.test.js +0 -44
- package/test/serialization.test.js +0 -104
- package/test/support/createdb-electron.js +0 -10
- package/test/support/createdb.js +0 -47
- package/test/support/elmo.png +0 -0
- package/test/support/helper.js +0 -37
- package/test/support/script.sql +0 -70
- package/test/trace.test.js +0 -67
- package/test/unicode.test.js +0 -114
- package/test/upsert.test.js +0 -27
- package/test/verbose.test.js +0 -60
- package/test.js +0 -141
- package/test.slr.mjs +0 -212
package/test/support/createdb.js
DELETED
|
@@ -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;
|
package/test/support/elmo.png
DELETED
|
Binary file
|
package/test/support/helper.js
DELETED
|
@@ -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
|
-
};
|
package/test/support/script.sql
DELETED
|
@@ -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;
|
package/test/trace.test.js
DELETED
|
@@ -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
|
-
});
|
package/test/unicode.test.js
DELETED
|
@@ -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
|
-
});
|
package/test/upsert.test.js
DELETED
|
@@ -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
|
-
});
|
package/test/verbose.test.js
DELETED
|
@@ -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
|
-
//!! }());
|