sqlmath 0.0.1 → 2021.11.20

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 (96) hide show
  1. package/.npmignore +10 -0
  2. package/CHANGELOG.md +53 -2
  3. package/LICENSE +16 -22
  4. package/README.md +18 -219
  5. package/_binary_sqlmath_napi8_darwin_x64.node +0 -0
  6. package/_binary_sqlmath_napi8_linux_x64.node +0 -0
  7. package/_binary_sqlmath_napi8_win32_x64.node +0 -0
  8. package/jslint.mjs +10998 -0
  9. package/package.json +23 -8
  10. package/sqlmath.mjs +1713 -0
  11. package/.gitconfig +0 -25
  12. package/.github/workflows/ci.yml +0 -61
  13. package/.gitignore +0 -24
  14. package/extension-functions.c +0 -2047
  15. package/jslint_ci.sh +0 -1968
  16. package/node_sqlite3.cc +0 -11877
  17. package/sqlite-autoconf-3360000/INSTALL +0 -370
  18. package/sqlite-autoconf-3360000/Makefile.am +0 -20
  19. package/sqlite-autoconf-3360000/Makefile.fallback +0 -19
  20. package/sqlite-autoconf-3360000/Makefile.in +0 -1028
  21. package/sqlite-autoconf-3360000/Makefile.msc +0 -1037
  22. package/sqlite-autoconf-3360000/README.txt +0 -113
  23. package/sqlite-autoconf-3360000/Replace.cs +0 -223
  24. package/sqlite-autoconf-3360000/aclocal.m4 +0 -10199
  25. package/sqlite-autoconf-3360000/compile +0 -347
  26. package/sqlite-autoconf-3360000/config.guess +0 -1480
  27. package/sqlite-autoconf-3360000/config.sub +0 -1801
  28. package/sqlite-autoconf-3360000/configure +0 -16135
  29. package/sqlite-autoconf-3360000/configure.ac +0 -285
  30. package/sqlite-autoconf-3360000/depcomp +0 -791
  31. package/sqlite-autoconf-3360000/install-sh +0 -508
  32. package/sqlite-autoconf-3360000/ltmain.sh +0 -11156
  33. package/sqlite-autoconf-3360000/missing +0 -215
  34. package/sqlite-autoconf-3360000/shell.c +0 -22381
  35. package/sqlite-autoconf-3360000/sqlite3.1 +0 -286
  36. package/sqlite-autoconf-3360000/sqlite3.c +0 -235517
  37. package/sqlite-autoconf-3360000/sqlite3.h +0 -12353
  38. package/sqlite-autoconf-3360000/sqlite3.pc.in +0 -13
  39. package/sqlite-autoconf-3360000/sqlite3.rc +0 -83
  40. package/sqlite-autoconf-3360000/sqlite3ext.h +0 -663
  41. package/sqlite-autoconf-3360000/sqlite3rc.h +0 -3
  42. package/sqlite-autoconf-3360000/tea/Makefile.in +0 -440
  43. package/sqlite-autoconf-3360000/tea/README +0 -36
  44. package/sqlite-autoconf-3360000/tea/aclocal.m4 +0 -9
  45. package/sqlite-autoconf-3360000/tea/configure +0 -9989
  46. package/sqlite-autoconf-3360000/tea/configure.ac +0 -201
  47. package/sqlite-autoconf-3360000/tea/doc/sqlite3.n +0 -15
  48. package/sqlite-autoconf-3360000/tea/generic/tclsqlite3.c +0 -4016
  49. package/sqlite-autoconf-3360000/tea/license.terms +0 -6
  50. package/sqlite-autoconf-3360000/tea/pkgIndex.tcl.in +0 -7
  51. package/sqlite-autoconf-3360000/tea/tclconfig/install-sh +0 -528
  52. package/sqlite-autoconf-3360000/tea/tclconfig/tcl.m4 +0 -4168
  53. package/sqlite-autoconf-3360000/tea/win/makefile.vc +0 -419
  54. package/sqlite-autoconf-3360000/tea/win/nmakehlp.c +0 -815
  55. package/sqlite-autoconf-3360000/tea/win/rules.vc +0 -711
  56. package/sqlmath.js +0 -238
  57. package/test/backup.test.js +0 -279
  58. package/test/blob.test.js +0 -54
  59. package/test/cache.test.js +0 -42
  60. package/test/constants.test.js +0 -44
  61. package/test/database_fail.test.js +0 -153
  62. package/test/each.test.js +0 -39
  63. package/test/exec.test.js +0 -39
  64. package/test/extension.test.js +0 -26
  65. package/test/extension_functions.test.js +0 -29
  66. package/test/fts-content.test.js +0 -13
  67. package/test/interrupt.test.js +0 -80
  68. package/test/issue-108.test.js +0 -28
  69. package/test/json.test.js +0 -22
  70. package/test/map.test.js +0 -63
  71. package/test/named_columns.test.js +0 -38
  72. package/test/named_params.test.js +0 -69
  73. package/test/null_error.test.js +0 -41
  74. package/test/nw/.gitignore +0 -3
  75. package/test/nw/Makefile +0 -39
  76. package/test/nw/index.html +0 -14
  77. package/test/nw/package.json +0 -9
  78. package/test/open_close.test.js +0 -187
  79. package/test/other_objects.test.js +0 -98
  80. package/test/parallel_insert.test.js +0 -44
  81. package/test/prepare.test.js +0 -427
  82. package/test/profile.test.js +0 -57
  83. package/test/rerun.test.js +0 -50
  84. package/test/scheduling.test.js +0 -44
  85. package/test/serialization.test.js +0 -104
  86. package/test/support/createdb-electron.js +0 -10
  87. package/test/support/createdb.js +0 -47
  88. package/test/support/elmo.png +0 -0
  89. package/test/support/helper.js +0 -37
  90. package/test/support/script.sql +0 -70
  91. package/test/trace.test.js +0 -67
  92. package/test/unicode.test.js +0 -114
  93. package/test/upsert.test.js +0 -27
  94. package/test/verbose.test.js +0 -60
  95. package/test.js +0 -141
  96. package/test.slr.mjs +0 -212
package/sqlmath.js DELETED
@@ -1,238 +0,0 @@
1
- var path = require("path");
2
- var EventEmitter = require("events").EventEmitter;
3
- var sqlite3 = require(
4
- "./.sqlmath-binding"
5
- + "-" + "napi" + process.versions.napi
6
- + "-" + process.platform
7
- + "-" + process.arch
8
- + ".node"
9
- );
10
- module.exports = sqlite3;
11
-
12
- function normalizeMethod (fn) {
13
- return function (sql) {
14
- var errBack;
15
- var args = Array.prototype.slice.call(arguments, 1);
16
- if (typeof args[args.length - 1] === "function") {
17
- var callback = args[args.length - 1];
18
- errBack = function(err) {
19
- if (err) {
20
- callback(err);
21
- }
22
- };
23
- }
24
- var statement = new Statement(this, sql, errBack);
25
- return fn.call(this, statement, args);
26
- };
27
- }
28
-
29
- sqlite3.cached = {
30
- Database: function(file, a, b) {
31
- if (file === "" || file === ":memory:") {
32
- // Don't cache special databases.
33
- return new Database(file, a, b);
34
- }
35
-
36
- var db;
37
- file = path.resolve(file);
38
- function cb() { callback.call(db, null); }
39
-
40
- if (!sqlite3.cached.objects[file]) {
41
- db = sqlite3.cached.objects[file] = new Database(file, a, b);
42
- }
43
- else {
44
- // Make sure the callback is called.
45
- db = sqlite3.cached.objects[file];
46
- var callback = (typeof a === "number") ? b : a;
47
- if (typeof callback === "function") {
48
- if (db.open) process.nextTick(cb);
49
- else db.once("open", cb);
50
- }
51
- }
52
-
53
- return db;
54
- },
55
- objects: {}
56
- };
57
-
58
-
59
- var Database = sqlite3.Database;
60
- var Statement = sqlite3.Statement;
61
- var Backup = sqlite3.Backup;
62
-
63
- Object.assign(Database.prototype, EventEmitter.prototype);
64
- Object.assign(Statement.prototype, EventEmitter.prototype);
65
- Object.assign(Backup.prototype, EventEmitter.prototype);
66
-
67
- // Database#prepare(sql, [bind1, bind2, ...], [callback])
68
- Database.prototype.prepare = normalizeMethod(function(statement, params) {
69
- return params.length
70
- ? statement.bind.apply(statement, params)
71
- : statement;
72
- });
73
-
74
- // Database#run(sql, [bind1, bind2, ...], [callback])
75
- Database.prototype.run = normalizeMethod(function(statement, params) {
76
- statement.run.apply(statement, params).finalize();
77
- return this;
78
- });
79
-
80
- // Database#get(sql, [bind1, bind2, ...], [callback])
81
- Database.prototype.get = normalizeMethod(function(statement, params) {
82
- statement.get.apply(statement, params).finalize();
83
- return this;
84
- });
85
-
86
- // Database#all(sql, [bind1, bind2, ...], [callback])
87
- Database.prototype.all = normalizeMethod(function(statement, params) {
88
- statement.all.apply(statement, params).finalize();
89
- return this;
90
- });
91
-
92
- // Database#each(sql, [bind1, bind2, ...], [callback], [complete])
93
- Database.prototype.each = normalizeMethod(function(statement, params) {
94
- statement.each.apply(statement, params).finalize();
95
- return this;
96
- });
97
-
98
- Database.prototype.map = normalizeMethod(function(statement, params) {
99
- statement.map.apply(statement, params).finalize();
100
- return this;
101
- });
102
-
103
- // Database#backup(filename, [callback])
104
- // Database#backup(filename, destName, sourceName, filenameIsDest, [callback])
105
- Database.prototype.backup = function() {
106
- var backup;
107
- if (arguments.length <= 2) {
108
- // By default, we write the main database out to the main database of the named file.
109
- // This is the most likely use of the backup api.
110
- backup = new Backup(this, arguments[0], "main", "main", true, arguments[1]);
111
- } else {
112
- // Otherwise, give the user full control over the sqlite3_backup_init arguments.
113
- backup = new Backup(this, arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]);
114
- }
115
- // Per the sqlite docs, exclude the following errors as non-fatal by default.
116
- backup.retryErrors = [sqlite3.BUSY, sqlite3.LOCKED];
117
- return backup;
118
- };
119
-
120
- Statement.prototype.map = function() {
121
- var params = Array.prototype.slice.call(arguments);
122
- var callback = params.pop();
123
- params.push(function(err, rows) {
124
- if (err) return callback(err);
125
- var result = {};
126
- if (rows.length) {
127
- var keys = Object.keys(rows[0]), key = keys[0];
128
- if (keys.length > 2) {
129
- // Value is an object
130
- for (var i = 0; i < rows.length; i++) {
131
- result[rows[i][key]] = rows[i];
132
- }
133
- } else {
134
- var value = keys[1];
135
- // Value is a plain value
136
- for (i = 0; i < rows.length; i++) {
137
- result[rows[i][key]] = rows[i][value];
138
- }
139
- }
140
- }
141
- callback(err, result);
142
- });
143
- return this.all.apply(this, params);
144
- };
145
-
146
- var isVerbose = false;
147
-
148
- var supportedEvents = [ "trace", "profile", "insert", "update", "delete" ];
149
-
150
- Database.prototype.addListener = Database.prototype.on = function(type) {
151
- var val = EventEmitter.prototype.addListener.apply(this, arguments);
152
- if (supportedEvents.indexOf(type) >= 0) {
153
- this.configure(type, true);
154
- }
155
- return val;
156
- };
157
-
158
- Database.prototype.removeListener = function(type) {
159
- var val = EventEmitter.prototype.removeListener.apply(this, arguments);
160
- if (supportedEvents.indexOf(type) >= 0 && !this._events[type]) {
161
- this.configure(type, false);
162
- }
163
- return val;
164
- };
165
-
166
- Database.prototype.removeAllListeners = function(type) {
167
- var val = EventEmitter.prototype.removeAllListeners.apply(this, arguments);
168
- if (supportedEvents.indexOf(type) >= 0) {
169
- this.configure(type, false);
170
- }
171
- return val;
172
- };
173
-
174
- // Save the stack trace over EIO callbacks.
175
- // Inspired by https://github.com/tlrobinson/long-stack-traces
176
- var util = require("util");
177
- function trace(object, property, pos) {
178
- var old = object[property];
179
- object[property] = function() {
180
- var error = new Error();
181
- var name = object.constructor.name + "#" + property + "(" +
182
- Array.prototype.slice.call(arguments).map(function(el) {
183
- return util.inspect(el, false, 0);
184
- }).join(", ") + ")";
185
-
186
- if (typeof pos === "undefined") pos = -1;
187
- if (pos < 0) pos += arguments.length;
188
- var cb = arguments[pos];
189
- if (typeof arguments[pos] === "function") {
190
- arguments[pos] = function replacement() {
191
- var err = arguments[0];
192
- if (err && err.stack && !err.__augmented) {
193
- err.stack = err.stack.split("\n").filter(function(line) {
194
- return line.indexOf(__filename) < 0;
195
- }).join("\n");
196
- err.stack += "\n--> in " + name;
197
- err.stack += "\n" + error.stack.split("\n").filter(function(line) {
198
- return line.indexOf(__filename) < 0;
199
- }).slice(1).join("\n");
200
- err.__augmented = true;
201
- }
202
- return cb.apply(this, arguments);
203
- };
204
- }
205
- return old.apply(this, arguments);
206
- };
207
- }
208
- sqlite3.verbose = function() {
209
- if (!isVerbose) {
210
- [
211
- "prepare",
212
- "get",
213
- "run",
214
- "all",
215
- "each",
216
- "map",
217
- "close",
218
- "exec"
219
- ].forEach(function (name) {
220
- trace(Database.prototype, name);
221
- });
222
- [
223
- "bind",
224
- "get",
225
- "run",
226
- "all",
227
- "each",
228
- "map",
229
- "reset",
230
- "finalize",
231
- ].forEach(function (name) {
232
- trace(Statement.prototype, name);
233
- });
234
- isVerbose = true;
235
- }
236
-
237
- return this;
238
- };
@@ -1,279 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
- var fs = require("fs");
4
- var helper = require("./support/helper");
5
-
6
- // Check that the number of rows in two tables matches.
7
- function assertRowsMatchDb(db1, table1, db2, table2, done) {
8
- db1.get("SELECT COUNT(*) as count FROM " + table1, function(err, row) {
9
- if (err) throw err;
10
- db2.get("SELECT COUNT(*) as count FROM " + table2, function(err, row2) {
11
- if (err) throw err;
12
- assert.equal(row.count, row2.count);
13
- done();
14
- });
15
- });
16
- }
17
-
18
- // Check that the number of rows in the table "foo" is preserved in a backup.
19
- function assertRowsMatchFile(db, backupName, done) {
20
- var db2 = new sqlite3.Database(backupName, sqlite3.OPEN_READONLY, function(err) {
21
- if (err) throw err;
22
- assertRowsMatchDb(db, "foo", db2, "foo", function() {
23
- db2.close(done);
24
- });
25
- });
26
- }
27
-
28
- describe("backup", function() {
29
- before(function() {
30
- helper.ensureExists("test/tmp");
31
- });
32
-
33
- var db;
34
- beforeEach(function(done) {
35
- helper.deleteFile("test/tmp/backup.db");
36
- helper.deleteFile("test/tmp/backup2.db");
37
- db = new sqlite3.Database("test/support/prepare.db", sqlite3.OPEN_READONLY, done);
38
- });
39
-
40
- afterEach(function(done) {
41
- if (!db) { done(); }
42
- db.close(done);
43
- });
44
-
45
- it ("output db created once step is called", function(done) {
46
- var backup = db.backup("test/tmp/backup.db", function(err) {
47
- if (err) throw err;
48
- backup.step(1, function(err) {
49
- if (err) throw err;
50
- assert.fileExists("test/tmp/backup.db");
51
- backup.finish(done);
52
- });
53
- });
54
- });
55
-
56
- it ("copies source fully with step(-1)", function(done) {
57
- var backup = db.backup("test/tmp/backup.db");
58
- backup.step(-1, function(err) {
59
- if (err) throw err;
60
- assert.fileExists("test/tmp/backup.db");
61
- backup.finish(function(err) {
62
- if (err) throw err;
63
- assertRowsMatchFile(db, "test/tmp/backup.db", done);
64
- });
65
- });
66
- });
67
-
68
- it ("backup db not created if finished immediately", function(done) {
69
- var backup = db.backup("test/tmp/backup.db");
70
- backup.finish(function(err) {
71
- if (err) throw err;
72
- assert.fileDoesNotExist("test/tmp/backup.db");
73
- done();
74
- });
75
- });
76
-
77
- it ("error closing db if backup not finished", function(done) {
78
- var backup = db.backup("test/tmp/backup.db");
79
- db.close(function(err) {
80
- db = null;
81
- if (!err) throw new Error("should have an error");
82
- if (err.errno == sqlite3.BUSY) {
83
- done();
84
- }
85
- else throw err;
86
- });
87
- });
88
-
89
- it ("using the backup after finished is an error", function(done) {
90
- var backup = db.backup("test/tmp/backup.db");
91
- backup.finish(function(err) {
92
- if (err) throw err;
93
- backup.step(1, function(err) {
94
- if (!err) throw new Error("should have an error");
95
- if (err.errno == sqlite3.MISUSE &&
96
- err.message === "SQLITE_MISUSE: Backup is already finished") {
97
- done();
98
- }
99
- else throw err;
100
- });
101
- });
102
- });
103
-
104
- it ("remaining/pageCount are available after call to step", function(done) {
105
- var backup = db.backup("test/tmp/backup.db");
106
- backup.step(0, function(err) {
107
- if (err) throw err;
108
- assert.equal(typeof this.pageCount, "number");
109
- assert.equal(typeof this.remaining, "number");
110
- assert.equal(this.remaining, this.pageCount);
111
- var prevRemaining = this.remaining;
112
- var prevPageCount = this.pageCount;
113
- backup.step(1, function(err) {
114
- if (err) throw err;
115
- assert.notEqual(this.remaining, prevRemaining);
116
- assert.equal(this.pageCount, prevPageCount);
117
- backup.finish(done);
118
- });
119
- });
120
- });
121
-
122
- it ("backup works if database is modified half-way through", function(done) {
123
- var backup = db.backup("test/tmp/backup.db");
124
- backup.step(-1, function(err) {
125
- if (err) throw err;
126
- backup.finish(function(err) {
127
- if (err) throw err;
128
- var db2 = new sqlite3.Database("test/tmp/backup.db", function(err) {
129
- if (err) throw err;
130
- var backup2 = db2.backup("test/tmp/backup2.db");
131
- backup2.step(1, function(err, completed) {
132
- if (err) throw err;
133
- assert.equal(completed, false); // Page size for the test db
134
- // should not be raised to high.
135
- db2.exec("insert into foo(txt) values('hello')", function(err) {
136
- if (err) throw err;
137
- backup2.step(-1, function(err, completed) {
138
- if (err) throw err;
139
- assert.equal(completed, true);
140
- assertRowsMatchFile(db2, "test/tmp/backup2.db", function() {
141
- backup2.finish(function(err) {
142
- if (err) throw err;
143
- db2.close(done);
144
- });
145
- });
146
- });
147
- });
148
- });
149
- });
150
- });
151
- });
152
- });
153
-
154
- (sqlite3.VERSION_NUMBER < 3026000 ? it.skip : it) ("can backup from temp to main", function(done) {
155
- db.exec("CREATE TEMP TABLE space (txt TEXT)", function(err) {
156
- if (err) throw err;
157
- db.exec("INSERT INTO space(txt) VALUES('monkey')", function(err) {
158
- if (err) throw err;
159
- var backup = db.backup("test/tmp/backup.db", "temp", "main", true, function(err) {
160
- if (err) throw err;
161
- backup.step(-1, function(err) {
162
- if (err) throw err;
163
- backup.finish(function(err) {
164
- if (err) throw err;
165
- var db2 = new sqlite3.Database("test/tmp/backup.db", function(err) {
166
- if (err) throw err;
167
- db2.get("SELECT * FROM space", function(err, row) {
168
- if (err) throw err;
169
- assert.equal(row.txt, "monkey");
170
- db2.close(done);
171
- });
172
- });
173
- });
174
- });
175
- });
176
- });
177
- });
178
- });
179
-
180
- (sqlite3.VERSION_NUMBER < 3026000 ? it.skip : it) ("can backup from main to temp", function(done) {
181
- var backup = db.backup("test/support/prepare.db", "main", "temp", false, function(err) {
182
- if (err) throw err;
183
- backup.step(-1, function(err) {
184
- if (err) throw err;
185
- backup.finish(function(err) {
186
- if (err) throw err;
187
- assertRowsMatchDb(db, "temp.foo", db, "main.foo", done);
188
- });
189
- });
190
- });
191
- });
192
-
193
- it ("cannot backup to a locked db", function(done) {
194
- var db2 = new sqlite3.Database("test/tmp/backup.db", function(err) {
195
- db2.exec("PRAGMA locking_mode = EXCLUSIVE");
196
- db2.exec("BEGIN EXCLUSIVE", function(err) {
197
- if (err) throw err;
198
- var backup = db.backup("test/tmp/backup.db");
199
- backup.step(-1, function(stepErr) {
200
- db2.close(function(err) {
201
- if (err) throw err;
202
- if (stepErr.errno == sqlite3.BUSY) {
203
- backup.finish(done);
204
- }
205
- else throw stepErr;
206
- });
207
- });
208
- });
209
- });
210
- });
211
-
212
- it ("fuss-free incremental backups work", function(done) {
213
- var backup = db.backup("test/tmp/backup.db");
214
- var timer;
215
- function makeProgress() {
216
- if (backup.idle) {
217
- backup.step(1);
218
- }
219
- if (backup.completed || backup.failed) {
220
- clearInterval(timer);
221
- assert.equal(backup.completed, true);
222
- assert.equal(backup.failed, false);
223
- done();
224
- }
225
- }
226
- timer = setInterval(makeProgress, 2);
227
- });
228
-
229
- it ("setting retryErrors to empty disables automatic finishing", function(done) {
230
- var backup = db.backup("test/tmp/backup.db");
231
- backup.retryErrors = [];
232
- backup.step(-1, function(err) {
233
- if (err) throw err;
234
- db.close(function(err) {
235
- db = null;
236
- if (!err) throw new Error("should have an error");
237
- assert.equal(err.errno, sqlite3.BUSY);
238
- done();
239
- });
240
- });
241
- });
242
-
243
- it ("setting retryErrors enables automatic finishing", function(done) {
244
- var backup = db.backup("test/tmp/backup.db");
245
- backup.retryErrors = [sqlite3.OK];
246
- backup.step(-1, function(err) {
247
- if (err) throw err;
248
- db.close(function(err) {
249
- if (err) throw err;
250
- db = null;
251
- done();
252
- });
253
- });
254
- });
255
-
256
- it ("default retryErrors will retry on a locked/busy db", function(done) {
257
- var db2 = new sqlite3.Database("test/tmp/backup.db", function(err) {
258
- db2.exec("PRAGMA locking_mode = EXCLUSIVE");
259
- db2.exec("BEGIN EXCLUSIVE", function(err) {
260
- if (err) throw err;
261
- var backup = db.backup("test/tmp/backup.db");
262
- backup.step(-1, function(stepErr) {
263
- db2.close(function(err) {
264
- if (err) throw err;
265
- assert.equal(stepErr.errno, sqlite3.BUSY);
266
- assert.equal(backup.completed, false);
267
- assert.equal(backup.failed, false);
268
- backup.step(-1, function(err) {
269
- if (err) throw err;
270
- assert.equal(backup.completed, true);
271
- assert.equal(backup.failed, false);
272
- done();
273
- });
274
- });
275
- });
276
- });
277
- });
278
- });
279
- });
package/test/blob.test.js DELETED
@@ -1,54 +0,0 @@
1
- var sqlite3 = require(".."),
2
- fs = require("fs"),
3
- assert = require("assert"),
4
- Buffer = require("buffer").Buffer;
5
-
6
- // lots of elmo
7
- var elmo = fs.readFileSync(__dirname + "/support/elmo.png");
8
-
9
- describe("blob", function() {
10
- var db;
11
- before(function(done) {
12
- db = new sqlite3.Database(":memory:");
13
- db.run("CREATE TABLE elmos (id INT, image BLOB)", done);
14
- });
15
-
16
- var total = 10;
17
- var inserted = 0;
18
- var retrieved = 0;
19
-
20
-
21
- it("should insert blobs", function(done) {
22
- for (var i = 0; i < total; i++) {
23
- db.run("INSERT INTO elmos (id, image) VALUES (?, ?)", i, elmo, function(err) {
24
- if (err) throw err;
25
- inserted++;
26
- });
27
- }
28
- db.wait(function() {
29
- assert.equal(inserted, total);
30
- done();
31
- });
32
- });
33
-
34
- it("should retrieve the blobs", function(done) {
35
- db.all("SELECT id, image FROM elmos ORDER BY id", function(err, rows) {
36
- if (err) throw err;
37
- for (var i = 0; i < rows.length; i++) {
38
- assert.ok(Buffer.isBuffer(rows[i].image));
39
- assert.ok(elmo.length, rows[i].image);
40
-
41
- for (var j = 0; j < elmo.length; j++) {
42
- if (elmo[j] !== rows[i].image[j]) {
43
- assert.ok(false, "Wrong byte");
44
- }
45
- }
46
-
47
- retrieved++;
48
- }
49
-
50
- assert.equal(retrieved, total);
51
- done();
52
- });
53
- });
54
- });
@@ -1,42 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
- var helper = require("./support/helper");
4
-
5
- describe("cache", function() {
6
- before(function() {
7
- helper.ensureExists("test/tmp");
8
- });
9
-
10
- it("should cache Database objects while opening", function(done) {
11
- var filename = "test/tmp/test_cache.db";
12
- helper.deleteFile(filename);
13
- var opened1 = false, opened2 = false;
14
- var db1 = new sqlite3.cached.Database(filename, function(err) {
15
- if (err) throw err;
16
- opened1 = true;
17
- if (opened1 && opened2) done();
18
- });
19
- var db2 = new sqlite3.cached.Database(filename, function(err) {
20
- if (err) throw err;
21
- opened2 = true;
22
- if (opened1 && opened2) done();
23
- });
24
- assert.equal(db1, db2);
25
- });
26
-
27
- it("should cache Database objects after they are open", function(done) {
28
- var filename = "test/tmp/test_cache2.db";
29
- helper.deleteFile(filename);
30
- var db1, db2;
31
- db1 = new sqlite3.cached.Database(filename, function(err) {
32
- if (err) throw err;
33
- process.nextTick(function() {
34
- db2 = new sqlite3.cached.Database(filename, function(err) {
35
- done();
36
-
37
- });
38
- assert.equal(db1, db2);
39
- });
40
- });
41
- });
42
- });
@@ -1,44 +0,0 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
3
-
4
- describe("constants", function() {
5
- it("should have the right OPEN_* flags", function() {
6
- assert.ok(sqlite3.OPEN_READONLY === 1);
7
- assert.ok(sqlite3.OPEN_READWRITE === 2);
8
- assert.ok(sqlite3.OPEN_CREATE === 4);
9
- assert.ok(sqlite3.OPEN_URI === 0x00000040);
10
- assert.ok(sqlite3.OPEN_FULLMUTEX === 0x00010000);
11
- assert.ok(sqlite3.OPEN_SHAREDCACHE === 0x00020000);
12
- assert.ok(sqlite3.OPEN_PRIVATECACHE === 0x00040000);
13
- });
14
-
15
- it("should have the right error flags", function() {
16
- assert.ok(sqlite3.OK === 0);
17
- assert.ok(sqlite3.ERROR === 1);
18
- assert.ok(sqlite3.INTERNAL === 2);
19
- assert.ok(sqlite3.PERM === 3);
20
- assert.ok(sqlite3.ABORT === 4);
21
- assert.ok(sqlite3.BUSY === 5);
22
- assert.ok(sqlite3.LOCKED === 6);
23
- assert.ok(sqlite3.NOMEM === 7);
24
- assert.ok(sqlite3.READONLY === 8);
25
- assert.ok(sqlite3.INTERRUPT === 9);
26
- assert.ok(sqlite3.IOERR === 10);
27
- assert.ok(sqlite3.CORRUPT === 11);
28
- assert.ok(sqlite3.NOTFOUND === 12);
29
- assert.ok(sqlite3.FULL === 13);
30
- assert.ok(sqlite3.CANTOPEN === 14);
31
- assert.ok(sqlite3.PROTOCOL === 15);
32
- assert.ok(sqlite3.EMPTY === 16);
33
- assert.ok(sqlite3.SCHEMA === 17);
34
- assert.ok(sqlite3.TOOBIG === 18);
35
- assert.ok(sqlite3.CONSTRAINT === 19);
36
- assert.ok(sqlite3.MISMATCH === 20);
37
- assert.ok(sqlite3.MISUSE === 21);
38
- assert.ok(sqlite3.NOLFS === 22);
39
- assert.ok(sqlite3.AUTH === 23);
40
- assert.ok(sqlite3.FORMAT === 24);
41
- assert.ok(sqlite3.RANGE === 25);
42
- assert.ok(sqlite3.NOTADB === 26);
43
- });
44
- });