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/prepare.test.js
DELETED
|
@@ -1,427 +0,0 @@
|
|
|
1
|
-
var sqlite3 = require("..");
|
|
2
|
-
var assert = require("assert");
|
|
3
|
-
|
|
4
|
-
describe("prepare", function() {
|
|
5
|
-
describe("invalid SQL", function() {
|
|
6
|
-
var db;
|
|
7
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
8
|
-
|
|
9
|
-
var stmt;
|
|
10
|
-
it("should fail preparing a statement with invalid SQL", function(done) {
|
|
11
|
-
stmt = db.prepare("CRATE TALE foo text bar)", function(err, statement) {
|
|
12
|
-
if (err && err.errno == sqlite3.ERROR &&
|
|
13
|
-
err.message === "SQLITE_ERROR: near \"CRATE\": syntax error") {
|
|
14
|
-
done();
|
|
15
|
-
}
|
|
16
|
-
else throw err;
|
|
17
|
-
});
|
|
18
|
-
});
|
|
19
|
-
|
|
20
|
-
after(function(done) { db.close(done); });
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
describe("simple prepared statement", function() {
|
|
24
|
-
var db;
|
|
25
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
26
|
-
|
|
27
|
-
it("should prepare, run and finalize the statement", function(done) {
|
|
28
|
-
db.prepare("CREATE TABLE foo (text bar)")
|
|
29
|
-
.run()
|
|
30
|
-
.finalize(done);
|
|
31
|
-
});
|
|
32
|
-
|
|
33
|
-
after(function(done) { db.close(done); });
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
describe("inserting and retrieving rows", function() {
|
|
37
|
-
var db;
|
|
38
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
39
|
-
|
|
40
|
-
var inserted = 0;
|
|
41
|
-
var retrieved = 0;
|
|
42
|
-
|
|
43
|
-
// We insert and retrieve that many rows.
|
|
44
|
-
var count = 1000;
|
|
45
|
-
|
|
46
|
-
it("should create the table", function(done) {
|
|
47
|
-
db.prepare("CREATE TABLE foo (txt text, num int, flt float, blb blob)").run().finalize(done);
|
|
48
|
-
});
|
|
49
|
-
|
|
50
|
-
it("should insert " + count + " rows", function(done) {
|
|
51
|
-
for (var i = 0; i < count; i++) {
|
|
52
|
-
db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)").run(
|
|
53
|
-
"String " + i,
|
|
54
|
-
i,
|
|
55
|
-
i * Math.PI,
|
|
56
|
-
// null (SQLite sets this implicitly)
|
|
57
|
-
function(err) {
|
|
58
|
-
if (err) throw err;
|
|
59
|
-
inserted++;
|
|
60
|
-
}
|
|
61
|
-
).finalize(function(err) {
|
|
62
|
-
if (err) throw err;
|
|
63
|
-
if (inserted == count) done();
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
it("should prepare a statement and run it " + (count + 5) + " times", function(done) {
|
|
69
|
-
var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err) {
|
|
70
|
-
if (err) throw err;
|
|
71
|
-
assert.equal(stmt.sql, "SELECT txt, num, flt, blb FROM foo ORDER BY num");
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
for (var i = 0; i < count + 5; i++) (function(i) {
|
|
75
|
-
stmt.get(function(err, row) {
|
|
76
|
-
if (err) throw err;
|
|
77
|
-
|
|
78
|
-
if (retrieved >= 1000) {
|
|
79
|
-
assert.equal(row, undefined);
|
|
80
|
-
} else {
|
|
81
|
-
assert.equal(row.txt, "String " + i);
|
|
82
|
-
assert.equal(row.num, i);
|
|
83
|
-
assert.equal(row.flt, i * Math.PI);
|
|
84
|
-
assert.equal(row.blb, null);
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
retrieved++;
|
|
88
|
-
});
|
|
89
|
-
})(i);
|
|
90
|
-
|
|
91
|
-
stmt.finalize(done);
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
it("should have retrieved " + (count + 5) + " rows", function() {
|
|
95
|
-
assert.equal(count + 5, retrieved, "Didn't retrieve all rows");
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
after(function(done) { db.close(done); });
|
|
100
|
-
});
|
|
101
|
-
|
|
102
|
-
describe("inserting with accidental undefined", function() {
|
|
103
|
-
var db;
|
|
104
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
105
|
-
|
|
106
|
-
var inserted = 0;
|
|
107
|
-
var retrieved = 0;
|
|
108
|
-
|
|
109
|
-
it("should create the table", function(done) {
|
|
110
|
-
db.prepare("CREATE TABLE foo (num int)").run().finalize(done);
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
it("should insert two rows", function(done) {
|
|
114
|
-
db.prepare("INSERT INTO foo VALUES(4)").run(function(err) {
|
|
115
|
-
if (err) throw err;
|
|
116
|
-
inserted++;
|
|
117
|
-
}).run(undefined, function (err) {
|
|
118
|
-
// The second time we pass undefined as a parameter. This is
|
|
119
|
-
// a mistake, but it should either throw an error or be ignored,
|
|
120
|
-
// not silently fail to run the statement.
|
|
121
|
-
if (err) throw err;
|
|
122
|
-
inserted++;
|
|
123
|
-
}).finalize(function(err) {
|
|
124
|
-
if (err) throw err;
|
|
125
|
-
if (inserted == 2) done();
|
|
126
|
-
});
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
it("should retrieve the data", function(done) {
|
|
130
|
-
var stmt = db.prepare("SELECT num FROM foo", function(err) {
|
|
131
|
-
if (err) throw err;
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
for (var i = 0; i < 2; i++) (function(i) {
|
|
135
|
-
stmt.get(function(err, row) {
|
|
136
|
-
if (err) throw err;
|
|
137
|
-
assert(row);
|
|
138
|
-
assert.equal(row.num, 4);
|
|
139
|
-
retrieved++;
|
|
140
|
-
});
|
|
141
|
-
})(i);
|
|
142
|
-
|
|
143
|
-
stmt.finalize(done);
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
it("should have retrieved two rows", function() {
|
|
147
|
-
assert.equal(2, retrieved, "Didn't retrieve all rows");
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
after(function(done) { db.close(done); });
|
|
151
|
-
});
|
|
152
|
-
|
|
153
|
-
describe("retrieving reset() function", function() {
|
|
154
|
-
var db;
|
|
155
|
-
before(function(done) { db = new sqlite3.Database("test/support/prepare.db", sqlite3.OPEN_READONLY, done); });
|
|
156
|
-
|
|
157
|
-
var retrieved = 0;
|
|
158
|
-
|
|
159
|
-
it("should retrieve the same row over and over again", function(done) {
|
|
160
|
-
var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo ORDER BY num");
|
|
161
|
-
for (var i = 0; i < 10; i++) {
|
|
162
|
-
stmt.reset();
|
|
163
|
-
stmt.get(function(err, row) {
|
|
164
|
-
if (err) throw err;
|
|
165
|
-
assert.equal(row.txt, "String 0");
|
|
166
|
-
assert.equal(row.num, 0);
|
|
167
|
-
assert.equal(row.flt, 0.0);
|
|
168
|
-
assert.equal(row.blb, null);
|
|
169
|
-
retrieved++;
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
stmt.finalize(done);
|
|
173
|
-
});
|
|
174
|
-
|
|
175
|
-
it("should have retrieved 10 rows", function() {
|
|
176
|
-
assert.equal(10, retrieved, "Didn't retrieve all rows");
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
after(function(done) { db.close(done); });
|
|
180
|
-
});
|
|
181
|
-
|
|
182
|
-
describe("multiple get() parameter binding", function() {
|
|
183
|
-
var db;
|
|
184
|
-
before(function(done) { db = new sqlite3.Database("test/support/prepare.db", sqlite3.OPEN_READONLY, done); });
|
|
185
|
-
|
|
186
|
-
var retrieved = 0;
|
|
187
|
-
|
|
188
|
-
it("should retrieve particular rows", function(done) {
|
|
189
|
-
var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num = ?");
|
|
190
|
-
|
|
191
|
-
for (var i = 0; i < 10; i++) (function(i) {
|
|
192
|
-
stmt.get(i * 10 + 1, function(err, row) {
|
|
193
|
-
if (err) throw err;
|
|
194
|
-
var val = i * 10 + 1;
|
|
195
|
-
assert.equal(row.txt, "String " + val);
|
|
196
|
-
assert.equal(row.num, val);
|
|
197
|
-
assert.equal(row.flt, val * Math.PI);
|
|
198
|
-
assert.equal(row.blb, null);
|
|
199
|
-
retrieved++;
|
|
200
|
-
});
|
|
201
|
-
})(i);
|
|
202
|
-
|
|
203
|
-
stmt.finalize(done);
|
|
204
|
-
});
|
|
205
|
-
|
|
206
|
-
it("should have retrieved 10 rows", function() {
|
|
207
|
-
assert.equal(10, retrieved, "Didn't retrieve all rows");
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
after(function(done) { db.close(done); });
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
describe("prepare() parameter binding", function() {
|
|
214
|
-
var db;
|
|
215
|
-
before(function(done) { db = new sqlite3.Database("test/support/prepare.db", sqlite3.OPEN_READONLY, done); });
|
|
216
|
-
|
|
217
|
-
var retrieved = 0;
|
|
218
|
-
|
|
219
|
-
it("should retrieve particular rows", function(done) {
|
|
220
|
-
db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num = ? AND txt = ?", 10, "String 10")
|
|
221
|
-
.get(function(err, row) {
|
|
222
|
-
if (err) throw err;
|
|
223
|
-
assert.equal(row.txt, "String 10");
|
|
224
|
-
assert.equal(row.num, 10);
|
|
225
|
-
assert.equal(row.flt, 10 * Math.PI);
|
|
226
|
-
assert.equal(row.blb, null);
|
|
227
|
-
retrieved++;
|
|
228
|
-
})
|
|
229
|
-
.finalize(done);
|
|
230
|
-
});
|
|
231
|
-
|
|
232
|
-
it("should have retrieved 1 row", function() {
|
|
233
|
-
assert.equal(1, retrieved, "Didn't retrieve all rows");
|
|
234
|
-
});
|
|
235
|
-
|
|
236
|
-
after(function(done) { db.close(done); });
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
describe("all()", function() {
|
|
240
|
-
var db;
|
|
241
|
-
before(function(done) { db = new sqlite3.Database("test/support/prepare.db", sqlite3.OPEN_READONLY, done); });
|
|
242
|
-
|
|
243
|
-
var retrieved = 0;
|
|
244
|
-
var count = 1000;
|
|
245
|
-
|
|
246
|
-
it("should retrieve particular rows", function(done) {
|
|
247
|
-
db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num < ? ORDER BY num", count)
|
|
248
|
-
.all(function(err, rows) {
|
|
249
|
-
if (err) throw err;
|
|
250
|
-
for (var i = 0; i < rows.length; i++) {
|
|
251
|
-
assert.equal(rows[i].txt, "String " + i);
|
|
252
|
-
assert.equal(rows[i].num, i);
|
|
253
|
-
assert.equal(rows[i].flt, i * Math.PI);
|
|
254
|
-
assert.equal(rows[i].blb, null);
|
|
255
|
-
retrieved++;
|
|
256
|
-
}
|
|
257
|
-
})
|
|
258
|
-
.finalize(done);
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
it("should have retrieved all rows", function() {
|
|
262
|
-
assert.equal(count, retrieved, "Didn't retrieve all rows");
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
after(function(done) { db.close(done); });
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
describe("all()", function() {
|
|
269
|
-
var db;
|
|
270
|
-
before(function(done) { db = new sqlite3.Database("test/support/prepare.db", sqlite3.OPEN_READONLY, done); });
|
|
271
|
-
|
|
272
|
-
it("should retrieve particular rows", function(done) {
|
|
273
|
-
db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num > 5000")
|
|
274
|
-
.all(function(err, rows) {
|
|
275
|
-
if (err) throw err;
|
|
276
|
-
assert.ok(rows.length === 0);
|
|
277
|
-
})
|
|
278
|
-
.finalize(done);
|
|
279
|
-
});
|
|
280
|
-
|
|
281
|
-
after(function(done) { db.close(done); });
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
describe("high concurrency", function() {
|
|
285
|
-
var db;
|
|
286
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
287
|
-
|
|
288
|
-
function randomString() {
|
|
289
|
-
var str = "";
|
|
290
|
-
for (var i = Math.random() * 300; i > 0; i--) {
|
|
291
|
-
str += String.fromCharCode(Math.floor(Math.random() * 256));
|
|
292
|
-
}
|
|
293
|
-
return str;
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
// Generate random data.
|
|
297
|
-
var data = [];
|
|
298
|
-
var length = Math.floor(Math.random() * 1000) + 200;
|
|
299
|
-
for (var i = 0; i < length; i++) {
|
|
300
|
-
data.push([ randomString(), i, i * Math.random(), null ]);
|
|
301
|
-
}
|
|
302
|
-
|
|
303
|
-
var inserted = 0;
|
|
304
|
-
var retrieved = 0;
|
|
305
|
-
|
|
306
|
-
it("should create the table", function(done) {
|
|
307
|
-
db.prepare("CREATE TABLE foo (txt text, num int, flt float, blb blob)").run().finalize(done);
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
it("should insert all values", function(done) {
|
|
311
|
-
for (var i = 0; i < data.length; i++) {
|
|
312
|
-
var stmt = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
|
|
313
|
-
stmt.run(data[i][0], data[i][1], data[i][2], data[i][3], function(err) {
|
|
314
|
-
if (err) throw err;
|
|
315
|
-
inserted++;
|
|
316
|
-
}).finalize(function(err) {
|
|
317
|
-
if (err) throw err;
|
|
318
|
-
if (inserted == data.length) done();
|
|
319
|
-
});
|
|
320
|
-
}
|
|
321
|
-
});
|
|
322
|
-
|
|
323
|
-
it("should retrieve all values", function(done) {
|
|
324
|
-
db.prepare("SELECT txt, num, flt, blb FROM foo")
|
|
325
|
-
.all(function(err, rows) {
|
|
326
|
-
if (err) throw err;
|
|
327
|
-
|
|
328
|
-
for (var i = 0; i < rows.length; i++) {
|
|
329
|
-
assert.ok(data[rows[i].num] !== true);
|
|
330
|
-
|
|
331
|
-
assert.equal(rows[i].txt, data[rows[i].num][0]);
|
|
332
|
-
assert.equal(rows[i].num, data[rows[i].num][1]);
|
|
333
|
-
assert.equal(rows[i].flt, data[rows[i].num][2]);
|
|
334
|
-
assert.equal(rows[i].blb, data[rows[i].num][3]);
|
|
335
|
-
|
|
336
|
-
// Mark the data row as already retrieved.
|
|
337
|
-
data[rows[i].num] = true;
|
|
338
|
-
retrieved++;
|
|
339
|
-
|
|
340
|
-
}
|
|
341
|
-
|
|
342
|
-
assert.equal(retrieved, data.length);
|
|
343
|
-
assert.equal(retrieved, inserted);
|
|
344
|
-
})
|
|
345
|
-
.finalize(done);
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
after(function(done) { db.close(done); });
|
|
349
|
-
});
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
describe("test Database#get()", function() {
|
|
353
|
-
var db;
|
|
354
|
-
before(function(done) { db = new sqlite3.Database("test/support/prepare.db", sqlite3.OPEN_READONLY, done); });
|
|
355
|
-
|
|
356
|
-
var retrieved = 0;
|
|
357
|
-
|
|
358
|
-
it("should get a row", function(done) {
|
|
359
|
-
db.get("SELECT txt, num, flt, blb FROM foo WHERE num = ? AND txt = ?", 10, "String 10", function(err, row) {
|
|
360
|
-
if (err) throw err;
|
|
361
|
-
assert.equal(row.txt, "String 10");
|
|
362
|
-
assert.equal(row.num, 10);
|
|
363
|
-
assert.equal(row.flt, 10 * Math.PI);
|
|
364
|
-
assert.equal(row.blb, null);
|
|
365
|
-
retrieved++;
|
|
366
|
-
done();
|
|
367
|
-
});
|
|
368
|
-
});
|
|
369
|
-
|
|
370
|
-
it("should have retrieved all rows", function() {
|
|
371
|
-
assert.equal(1, retrieved, "Didn't retrieve all rows");
|
|
372
|
-
});
|
|
373
|
-
|
|
374
|
-
after(function(done) { db.close(done); });
|
|
375
|
-
});
|
|
376
|
-
|
|
377
|
-
describe("Database#run() and Database#all()", function() {
|
|
378
|
-
var db;
|
|
379
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
380
|
-
|
|
381
|
-
var inserted = 0;
|
|
382
|
-
var retrieved = 0;
|
|
383
|
-
|
|
384
|
-
// We insert and retrieve that many rows.
|
|
385
|
-
var count = 1000;
|
|
386
|
-
|
|
387
|
-
it("should create the table", function(done) {
|
|
388
|
-
db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)", done);
|
|
389
|
-
});
|
|
390
|
-
|
|
391
|
-
it("should insert " + count + " rows", function(done) {
|
|
392
|
-
for (var i = 0; i < count; i++) {
|
|
393
|
-
db.run("INSERT INTO foo VALUES(?, ?, ?, ?)",
|
|
394
|
-
"String " + i,
|
|
395
|
-
i,
|
|
396
|
-
i * Math.PI,
|
|
397
|
-
// null (SQLite sets this implicitly)
|
|
398
|
-
function(err) {
|
|
399
|
-
if (err) throw err;
|
|
400
|
-
inserted++;
|
|
401
|
-
if (inserted == count) done();
|
|
402
|
-
}
|
|
403
|
-
);
|
|
404
|
-
}
|
|
405
|
-
});
|
|
406
|
-
|
|
407
|
-
it("should retrieve all rows", function(done) {
|
|
408
|
-
db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) {
|
|
409
|
-
if (err) throw err;
|
|
410
|
-
for (var i = 0; i < rows.length; i++) {
|
|
411
|
-
assert.equal(rows[i].txt, "String " + i);
|
|
412
|
-
assert.equal(rows[i].num, i);
|
|
413
|
-
assert.equal(rows[i].flt, i * Math.PI);
|
|
414
|
-
assert.equal(rows[i].blb, null);
|
|
415
|
-
retrieved++;
|
|
416
|
-
}
|
|
417
|
-
|
|
418
|
-
assert.equal(retrieved, count);
|
|
419
|
-
assert.equal(retrieved, inserted);
|
|
420
|
-
|
|
421
|
-
done();
|
|
422
|
-
});
|
|
423
|
-
});
|
|
424
|
-
|
|
425
|
-
after(function(done) { db.close(done); });
|
|
426
|
-
});
|
|
427
|
-
});
|
package/test/profile.test.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
var sqlite3 = require("..");
|
|
2
|
-
var assert = require("assert");
|
|
3
|
-
|
|
4
|
-
describe("profiling", function() {
|
|
5
|
-
var create = false;
|
|
6
|
-
var select = false;
|
|
7
|
-
|
|
8
|
-
var db;
|
|
9
|
-
before(function(done) {
|
|
10
|
-
db = new sqlite3.Database(":memory:", done);
|
|
11
|
-
|
|
12
|
-
db.on("profile", function(sql, nsecs) {
|
|
13
|
-
assert.ok(typeof nsecs === "number");
|
|
14
|
-
if (sql.match(/^SELECT/)) {
|
|
15
|
-
assert.ok(!select);
|
|
16
|
-
assert.equal(sql, "SELECT * FROM foo");
|
|
17
|
-
console.log("profile select");
|
|
18
|
-
select = true;
|
|
19
|
-
}
|
|
20
|
-
else if (sql.match(/^CREATE/)) {
|
|
21
|
-
assert.ok(!create);
|
|
22
|
-
assert.equal(sql, "CREATE TABLE foo (id int)");
|
|
23
|
-
create = true;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
assert.ok(false);
|
|
27
|
-
}
|
|
28
|
-
});
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
it("should profile a create table", function(done) {
|
|
32
|
-
assert.ok(!create);
|
|
33
|
-
db.run("CREATE TABLE foo (id int)", function(err) {
|
|
34
|
-
if (err) throw err;
|
|
35
|
-
setImmediate(function() {
|
|
36
|
-
assert.ok(create);
|
|
37
|
-
done();
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
it("should profile a select", function(done) {
|
|
44
|
-
assert.ok(!select);
|
|
45
|
-
db.run("SELECT * FROM foo", function(err) {
|
|
46
|
-
if (err) throw err;
|
|
47
|
-
setImmediate(function() {
|
|
48
|
-
assert.ok(select);
|
|
49
|
-
done();
|
|
50
|
-
}, 0);
|
|
51
|
-
});
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
after(function(done) {
|
|
55
|
-
db.close(done);
|
|
56
|
-
});
|
|
57
|
-
});
|
package/test/rerun.test.js
DELETED
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
var sqlite3 = require("..");
|
|
2
|
-
var assert = require("assert");
|
|
3
|
-
|
|
4
|
-
describe("rerunning statements", function() {
|
|
5
|
-
var db;
|
|
6
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
7
|
-
|
|
8
|
-
var count = 10;
|
|
9
|
-
var inserted = 0;
|
|
10
|
-
var retrieved = 0;
|
|
11
|
-
|
|
12
|
-
it("should create the table", function(done) {
|
|
13
|
-
db.run("CREATE TABLE foo (id int)", done);
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
it("should insert repeatedly, reusing the same statement", function(done) {
|
|
17
|
-
var stmt = db.prepare("INSERT INTO foo VALUES(?)");
|
|
18
|
-
for (var i = 5; i < count; i++) {
|
|
19
|
-
stmt.run(i, function(err) {
|
|
20
|
-
if (err) throw err;
|
|
21
|
-
inserted++;
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
stmt.finalize(done);
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
it("should retrieve repeatedly, resuing the same statement", function(done) {
|
|
28
|
-
var collected = [];
|
|
29
|
-
var stmt = db.prepare("SELECT id FROM foo WHERE id = ?");
|
|
30
|
-
for (var i = 0; i < count; i++) {
|
|
31
|
-
stmt.get(i, function(err, row) {
|
|
32
|
-
if (err) throw err;
|
|
33
|
-
if (row) collected.push(row);
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
stmt.finalize(function(err) {
|
|
37
|
-
if (err) throw err;
|
|
38
|
-
retrieved += collected.length;
|
|
39
|
-
assert.deepEqual(collected, [ { id: 5 }, { id: 6 }, { id: 7 }, { id: 8 }, { id: 9 } ]);
|
|
40
|
-
done();
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
|
|
44
|
-
it("should have inserted and retrieved the right amount", function() {
|
|
45
|
-
assert.equal(inserted, 5);
|
|
46
|
-
assert.equal(retrieved, 5);
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
after(function(done) { db.close(done); });
|
|
50
|
-
});
|
package/test/scheduling.test.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
var sqlite3 = require("..");
|
|
2
|
-
var assert = require("assert");
|
|
3
|
-
|
|
4
|
-
describe("scheduling", function() {
|
|
5
|
-
it("scheduling after the database was closed", function(done) {
|
|
6
|
-
var db = new sqlite3.Database(":memory:");
|
|
7
|
-
db.on("error", function(err) {
|
|
8
|
-
assert.ok(err.message && err.message.indexOf("SQLITE_MISUSE: Database handle is closed") > -1);
|
|
9
|
-
done();
|
|
10
|
-
});
|
|
11
|
-
|
|
12
|
-
db.close();
|
|
13
|
-
db.run("CREATE TABLE foo (id int)");
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
it("scheduling a query with callback after the database was closed", function(done) {
|
|
18
|
-
var db = new sqlite3.Database(":memory:");
|
|
19
|
-
db.on("error", function(err) {
|
|
20
|
-
assert.ok(false, "Event was accidentally triggered");
|
|
21
|
-
});
|
|
22
|
-
|
|
23
|
-
db.close();
|
|
24
|
-
db.run("CREATE TABLE foo (id int)", function(err) {
|
|
25
|
-
assert.ok(err.message && err.message.indexOf("SQLITE_MISUSE: Database handle is closed") > -1);
|
|
26
|
-
done();
|
|
27
|
-
});
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
it("running a query after the database was closed", function(done) {
|
|
31
|
-
var db = new sqlite3.Database(":memory:");
|
|
32
|
-
|
|
33
|
-
var stmt = db.prepare("SELECT * FROM sqlite_master", function(err) {
|
|
34
|
-
if (err) throw err;
|
|
35
|
-
db.close(function(err) {
|
|
36
|
-
assert.ok(err);
|
|
37
|
-
assert.ok(err.message && err.message.indexOf("SQLITE_BUSY: unable to close due to") > -1);
|
|
38
|
-
|
|
39
|
-
// Running a statement now should not fail.
|
|
40
|
-
stmt.run(done);
|
|
41
|
-
});
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
});
|
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
var sqlite3 = require("..");
|
|
2
|
-
var assert = require("assert");
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
describe("serialize() and parallelize()", function() {
|
|
6
|
-
var db;
|
|
7
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
8
|
-
|
|
9
|
-
var inserted1 = 0;
|
|
10
|
-
var inserted2 = 0;
|
|
11
|
-
var retrieved = 0;
|
|
12
|
-
|
|
13
|
-
var count = 1000;
|
|
14
|
-
|
|
15
|
-
it("should toggle", function(done) {
|
|
16
|
-
db.serialize();
|
|
17
|
-
db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)");
|
|
18
|
-
db.parallelize(done);
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
it("should insert rows", function() {
|
|
22
|
-
var stmt1 = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
|
|
23
|
-
var stmt2 = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
|
|
24
|
-
for (var i = 0; i < count; i++) {
|
|
25
|
-
// Interleaved inserts with two statements.
|
|
26
|
-
stmt1.run("String " + i, i, i * Math.PI, function(err) {
|
|
27
|
-
if (err) throw err;
|
|
28
|
-
inserted1++;
|
|
29
|
-
});
|
|
30
|
-
i++;
|
|
31
|
-
stmt2.run("String " + i, i, i * Math.PI, function(err) {
|
|
32
|
-
if (err) throw err;
|
|
33
|
-
inserted2++;
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
stmt1.finalize();
|
|
37
|
-
stmt2.finalize();
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
it("should have inserted all the rows after synchronizing with serialize()", function(done) {
|
|
41
|
-
db.serialize();
|
|
42
|
-
db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) {
|
|
43
|
-
if (err) throw err;
|
|
44
|
-
for (var i = 0; i < rows.length; i++) {
|
|
45
|
-
assert.equal(rows[i].txt, "String " + i);
|
|
46
|
-
assert.equal(rows[i].num, i);
|
|
47
|
-
assert.equal(rows[i].flt, i * Math.PI);
|
|
48
|
-
assert.equal(rows[i].blb, null);
|
|
49
|
-
retrieved++;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
assert.equal(count, inserted1 + inserted2, "Didn't insert all rows");
|
|
53
|
-
assert.equal(count, retrieved, "Didn't retrieve all rows");
|
|
54
|
-
done();
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
after(function(done) { db.close(done); });
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
describe("serialize(fn)", function() {
|
|
62
|
-
var db;
|
|
63
|
-
before(function(done) { db = new sqlite3.Database(":memory:", done); });
|
|
64
|
-
|
|
65
|
-
var inserted = 0;
|
|
66
|
-
var retrieved = 0;
|
|
67
|
-
|
|
68
|
-
var count = 1000;
|
|
69
|
-
|
|
70
|
-
it("should call the callback", function(done) {
|
|
71
|
-
db.serialize(function() {
|
|
72
|
-
db.run("CREATE TABLE foo (txt text, num int, flt float, blb blob)");
|
|
73
|
-
|
|
74
|
-
var stmt = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
|
|
75
|
-
for (var i = 0; i < count; i++) {
|
|
76
|
-
stmt.run("String " + i, i, i * Math.PI, function(err) {
|
|
77
|
-
if (err) throw err;
|
|
78
|
-
inserted++;
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
stmt.finalize();
|
|
82
|
-
|
|
83
|
-
db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) {
|
|
84
|
-
if (err) throw err;
|
|
85
|
-
for (var i = 0; i < rows.length; i++) {
|
|
86
|
-
assert.equal(rows[i].txt, "String " + i);
|
|
87
|
-
assert.equal(rows[i].num, i);
|
|
88
|
-
assert.equal(rows[i].flt, i * Math.PI);
|
|
89
|
-
assert.equal(rows[i].blb, null);
|
|
90
|
-
retrieved++;
|
|
91
|
-
}
|
|
92
|
-
done();
|
|
93
|
-
});
|
|
94
|
-
});
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
it("should have inserted and retrieved all rows", function() {
|
|
99
|
-
assert.equal(count, inserted, "Didn't insert all rows");
|
|
100
|
-
assert.equal(count, retrieved, "Didn't retrieve all rows");
|
|
101
|
-
});
|
|
102
|
-
|
|
103
|
-
after(function(done) { db.close(done); });
|
|
104
|
-
});
|