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
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
- });