duckdb 0.6.2-dev6.0 → 0.6.2-dev623.0

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 (40) hide show
  1. package/.mocharc.json +2 -2
  2. package/Makefile +8 -5
  3. package/README.md +17 -0
  4. package/binding.gyp +84 -58
  5. package/binding.gyp.in +88 -0
  6. package/configure +1 -7
  7. package/configure.py +126 -0
  8. package/filelist.cache +0 -0
  9. package/lib/duckdb.d.ts +29 -11
  10. package/lib/duckdb.js +6 -0
  11. package/package.json +1 -1
  12. package/src/connection.cpp +7 -1
  13. package/src/database.cpp +1 -3
  14. package/test/{affected.test.js → affected.test.ts} +8 -10
  15. package/test/{arrow.test.js → arrow.test.ts} +12 -11
  16. package/test/{data_type_support.test.js → data_type_support.test.ts} +36 -35
  17. package/test/{database_fail.test.js → database_fail.test.ts} +25 -24
  18. package/test/{each.test.js → each.test.ts} +10 -9
  19. package/test/{exec.test.js → exec.test.ts} +7 -6
  20. package/test/{extension.test.js → extension.test.ts} +20 -19
  21. package/test/{interrupt.test.js → interrupt.test.ts} +7 -7
  22. package/test/{jsdoc.test.js → jsdoc.test.ts} +19 -20
  23. package/test/{named_columns.test.js → named_columns.test.ts} +4 -6
  24. package/test/{null_error.test.js → null_error.test.ts} +5 -6
  25. package/test/{open_close.test.js → open_close.test.ts} +10 -10
  26. package/test/{parallel_insert.test.js → parallel_insert.test.ts} +6 -7
  27. package/test/{parquet.js → parquet.test.ts} +2 -4
  28. package/test/{pathnames.test.js → pathnames.test.ts} +24 -22
  29. package/test/{prepare.test.js → prepare.test.ts} +53 -50
  30. package/test/{query_result.test.js → query_result.test.ts} +4 -4
  31. package/test/{serialization.test.js → serialization.test.ts} +10 -9
  32. package/test/support/helper.ts +42 -0
  33. package/test/{syntax_error.test.js → syntax_error.test.ts} +4 -4
  34. package/test/{udf.test.js → udf.test.ts} +26 -25
  35. package/test/{unicode.test.js → unicode.test.ts} +23 -22
  36. package/src/duckdb.cpp +0 -343989
  37. package/src/duckdb.hpp +0 -32676
  38. package/src/parquet-amalgamation.cpp +0 -44462
  39. package/src/parquet-amalgamation.hpp +0 -7981
  40. package/test/support/helper.js +0 -37
@@ -1,10 +1,9 @@
1
- var sqlite3 = require('..');
2
- var assert = require('assert');
3
- var helper = require('./support/helper');
1
+ import * as sqlite3 from '..';
2
+ import * as helper from './support/helper';
4
3
 
5
4
  describe('null error', function() {
6
5
  var filename = 'test/tmp/test_sqlite_ok_error.db';
7
- var db;
6
+ var db: sqlite3.Database;
8
7
 
9
8
  before(function(done) {
10
9
  helper.ensureExists('test/tmp');
@@ -17,7 +16,7 @@ describe('null error', function() {
17
16
  });
18
17
 
19
18
  it('should insert rows with lots of null values', function(done) {
20
- var stmt = db.prepare('INSERT INTO febp_data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', function(err) {
19
+ var stmt = db.prepare('INSERT INTO febp_data VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)', function(err: null | Error) {
21
20
  if (err) throw err;
22
21
 
23
22
  for (var i = 0; i < 100; i++) {
@@ -32,7 +31,7 @@ describe('null error', function() {
32
31
  });
33
32
 
34
33
  it('should have created the database', function() {
35
- assert.fileExists(filename);
34
+ helper.fileExists(filename);
36
35
  });
37
36
 
38
37
  after(function() {
@@ -1,7 +1,7 @@
1
- var sqlite3 = require('..');
2
- var assert = require('assert');
3
- var fs = require('fs');
4
- var helper = require('./support/helper');
1
+ import * as sqlite3 from '..';
2
+ import * as assert from 'assert';
3
+ import * as fs from 'fs';
4
+ import * as helper from './support/helper';
5
5
 
6
6
  describe('open/close', function() {
7
7
  before(function() {
@@ -13,7 +13,7 @@ describe('open/close', function() {
13
13
  helper.deleteFile('test/tmp/test_create.db');
14
14
  });
15
15
 
16
- var db;
16
+ var db: sqlite3.Database;
17
17
  it('should open the database', function(done) {
18
18
  db = new sqlite3.Database('test/tmp/test_create.db', done);
19
19
  });
@@ -23,7 +23,7 @@ describe('open/close', function() {
23
23
  });
24
24
 
25
25
  it('should have created the file', function() {
26
- assert.fileExists('test/tmp/test_create.db');
26
+ helper.fileExists('test/tmp/test_create.db');
27
27
  });
28
28
 
29
29
  after(function() {
@@ -123,7 +123,7 @@ describe('open/close', function() {
123
123
  });
124
124
 
125
125
  it('should not have created the file', function() {
126
- assert.fileDoesNotExist('test/tmp/test_readonly.db');
126
+ helper.fileDoesNotExist('test/tmp/test_readonly.db');
127
127
  });
128
128
 
129
129
  after(function() {
@@ -132,7 +132,7 @@ describe('open/close', function() {
132
132
  });
133
133
 
134
134
  describe('open and close memory database queuing', function() {
135
- var db;
135
+ var db: sqlite3.Database;
136
136
  it('should open the database', function(done) {
137
137
  db = new sqlite3.Database(':memory:', done);
138
138
  });
@@ -155,7 +155,7 @@ describe('open/close', function() {
155
155
  var completedSecond = false;
156
156
  var closed = false;
157
157
 
158
- var db;
158
+ var db: sqlite3.Database;
159
159
  before(function(done) {
160
160
  db = new sqlite3.Database(':memory:', done);
161
161
  });
@@ -164,7 +164,7 @@ describe('open/close', function() {
164
164
  db.run("CREATE TABLE foo (id INT, num INT)", done);
165
165
  });
166
166
 
167
- var stmt;
167
+ var stmt: sqlite3.Statement;
168
168
  it('should prepare/run a statement', function(done) {
169
169
  stmt = db.prepare('INSERT INTO foo VALUES (?, ?)');
170
170
  stmt.run(1, 2, done);
@@ -1,22 +1,21 @@
1
- var sqlite3 = require('..');
2
- var assert = require('assert');
3
- var helper = require('./support/helper');
1
+ import * as sqlite3 from '..';
2
+ import * as helper from './support/helper';
4
3
 
5
4
  describe('parallel', function() {
6
- var db;
5
+ var db: sqlite3.Database;
7
6
  before(function(done) {
8
7
  helper.deleteFile('test/tmp/test_parallel_inserts.db');
9
8
  helper.ensureExists('test/tmp');
10
9
  db = new sqlite3.Database('test/tmp/test_parallel_inserts.db', done);
11
10
  });
12
11
 
13
- var columns = [];
12
+ var columns: string[] = [];
14
13
  for (var i = 0; i < 128; i++) {
15
14
  columns.push('id' + i + " INTEGER");
16
15
  }
17
16
 
18
17
  it('should create the table', function(done) {
19
- db.run("CREATE TABLE foo (" + columns + ")", function(err) {
18
+ db.run("CREATE TABLE foo (" + columns + ")", function(err: null | Error) {
20
19
  done();
21
20
  });
22
21
  });
@@ -37,7 +36,7 @@ describe('parallel', function() {
37
36
  });
38
37
 
39
38
  it('should verify that the database exists', function() {
40
- assert.fileExists('test/tmp/test_parallel_inserts.db');
39
+ helper.fileExists('test/tmp/test_parallel_inserts.db');
41
40
  });
42
41
 
43
42
  after(function() {
@@ -1,9 +1,7 @@
1
- var sqlite3 = require('..');
2
- var assert = require('assert');
3
- var helper = require('./support/helper');
1
+ import * as sqlite3 from '..';
4
2
 
5
3
  describe('can query parquet', function() {
6
- var db;
4
+ var db: sqlite3.Database;
7
5
 
8
6
  before(function(done) {
9
7
  db = new sqlite3.Database(':memory:', done);
@@ -1,8 +1,9 @@
1
- var sqlite3 = require("..");
2
- var assert = require("assert");
1
+ import * as sqlite3 from "..";
2
+ import * as assert from "assert";
3
+ import {DuckDbError, TableData} from "..";
3
4
 
4
5
  describe("pathname search support", function () {
5
- let db;
6
+ let db: sqlite3.Database;
6
7
  describe("without search paths", () => {
7
8
  before((done) => {
8
9
  db = new sqlite3.Database(":memory:", done);
@@ -10,19 +11,20 @@ describe("pathname search support", function () {
10
11
 
11
12
  it("supports a full path", function (done) {
12
13
  db.prepare('select * from "test/support/prepare.csv"').all(
13
- (err, result) => {
14
- assert(err === null);
15
- assert(result.length === 5000);
14
+ (err: null | Error, result: TableData) => {
15
+ assert.equal(err, null);
16
+ assert.equal(result.length, 5000);
16
17
  done();
17
18
  }
18
19
  );
19
20
  });
20
21
 
21
22
  it("don't not support a partial path", function (done) {
22
- db.prepare('select * from "prepare.csv"').all((err, result) => {
23
- assert(err.code === "DUCKDB_NODEJS_ERROR");
24
- assert(err.errno === -1);
25
- assert(result == null);
23
+ db.prepare('select * from "prepare.csv"').all((err: null | DuckDbError, result: TableData) => {
24
+ assert.ok(err);
25
+ assert.equal(err.code, "DUCKDB_NODEJS_ERROR");
26
+ assert.equal(err.errno, -1);
27
+ assert.equal(result, null);
26
28
  done();
27
29
  });
28
30
  });
@@ -37,18 +39,18 @@ describe("pathname search support", function () {
37
39
 
38
40
  it("supports a full path", function (done) {
39
41
  db.prepare('select * from "test/support/prepare.csv"').all(
40
- (err, result) => {
41
- assert(err === null);
42
- assert(result.length === 5000);
42
+ (err: null | Error, result: TableData) => {
43
+ assert.equal(err, null);
44
+ assert.equal(result.length, 5000);
43
45
  done();
44
46
  }
45
47
  );
46
48
  });
47
49
 
48
50
  it("supports a partial path", function (done) {
49
- db.prepare('select * from "prepare.csv"').all((err, result) => {
50
- assert(err === null);
51
- assert(result.length === 5000);
51
+ db.prepare('select * from "prepare.csv"').all((err: null | Error, result: TableData) => {
52
+ assert.equal(err, null);
53
+ assert.equal(result.length, 5000);
52
54
  done();
53
55
  });
54
56
  });
@@ -63,18 +65,18 @@ describe("pathname search support", function () {
63
65
 
64
66
  it("supports a full path", function (done) {
65
67
  db.prepare('select * from "test/support/prepare.csv"').all(
66
- (err, result) => {
67
- assert(err === null);
68
- assert(result.length === 5000);
68
+ (err: null | Error, result: TableData) => {
69
+ assert.equal(err, null);
70
+ assert.equal(result.length, 5000);
69
71
  done();
70
72
  }
71
73
  );
72
74
  });
73
75
 
74
76
  it("supports a partial path", function (done) {
75
- db.prepare('select * from "prepare.csv"').all((err, result) => {
76
- assert(err === null);
77
- assert(result.length === 5000);
77
+ db.prepare('select * from "prepare.csv"').all((err: null | Error, result: TableData) => {
78
+ assert.equal(err, null);
79
+ assert.equal(result.length, 5000);
78
80
  done();
79
81
  });
80
82
  });
@@ -1,14 +1,15 @@
1
- var sqlite3 = require('..');
2
- var assert = require('assert');
1
+ import * as sqlite3 from '..';
2
+ import * as assert from 'assert';
3
+ import {DuckDbError, RowData, Statement, TableData} from "..";
3
4
 
4
5
  describe('prepare', function() {
5
6
  describe('invalid SQL', function() {
6
- var db;
7
+ var db: sqlite3.Database;
7
8
  before(function(done) { db = new sqlite3.Database(':memory:', done); });
8
9
 
9
10
  var stmt;
10
11
  it('should fail preparing a statement with invalid SQL', function(done) {
11
- stmt = db.prepare('CRATE TALE foo text bar)', function(err, statement) {
12
+ stmt = db.prepare('CRATE TALE foo text bar)', function(err: null | DuckDbError, statement: Statement) {
12
13
  if (err && err.errno == sqlite3.ERROR /*&&
13
14
  err.message === 'Parser: syntax error at or near "CRATE' */) {
14
15
  done();
@@ -21,7 +22,7 @@ describe('prepare', function() {
21
22
  });
22
23
 
23
24
  describe('simple prepared statement', function() {
24
- var db;
25
+ var db: sqlite3.Database;
25
26
  before(function(done) { db = new sqlite3.Database(':memory:', done); });
26
27
 
27
28
  it('should prepare, run and finalize the statement', function(done) {
@@ -34,7 +35,7 @@ describe('prepare', function() {
34
35
  });
35
36
 
36
37
  describe('inserting and retrieving rows', function() {
37
- var db;
38
+ var db: sqlite3.Database;
38
39
  before(function(done) { db = new sqlite3.Database(':memory:', done); });
39
40
 
40
41
  var inserted = 0;
@@ -54,7 +55,7 @@ describe('prepare', function() {
54
55
  i,
55
56
  i * Math.PI,
56
57
  null,
57
- function(err) {
58
+ function(err: null | Error) {
58
59
  if (err) throw err;
59
60
  inserted++;
60
61
  }
@@ -67,12 +68,12 @@ describe('prepare', function() {
67
68
 
68
69
 
69
70
  it('should prepare a statement and return values again', function(done) {
70
- var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err) {
71
+ var stmt = db.prepare("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err: null | Error) {
71
72
  if (err) throw err;
72
73
  assert.equal(stmt.sql, 'SELECT txt, num, flt, blb FROM foo ORDER BY num');
73
74
  });
74
75
 
75
- stmt.each(function(err, row) {
76
+ stmt.each(function(err: null | Error, row: RowData) {
76
77
  if (err) throw err;
77
78
  assert.equal(row.txt, 'String ' + retrieved);
78
79
  assert.equal(row.num, retrieved);
@@ -126,7 +127,7 @@ describe('prepare', function() {
126
127
 
127
128
 
128
129
  describe('inserting with accidental undefined', function() {
129
- var db;
130
+ var db: sqlite3.Database;
130
131
  before(function(done) { db = new sqlite3.Database(':memory:', done); });
131
132
 
132
133
  var inserted = 0;
@@ -137,10 +138,10 @@ describe('prepare', function() {
137
138
  });
138
139
 
139
140
  it('should insert two rows', function(done) {
140
- db.prepare('INSERT INTO foo VALUES(4)').run(function(err) {
141
+ db.prepare('INSERT INTO foo VALUES(4)').run(function(err: null | Error) {
141
142
  if (err) throw err;
142
143
  inserted++;
143
- }).run(undefined, function (err) {
144
+ }).run(undefined, function (err: null | Error) {
144
145
  // The second time we pass undefined as a parameter. This is
145
146
  // a mistake, but it should either throw an error or be ignored,
146
147
  // not silently fail to run the statement.
@@ -174,13 +175,13 @@ describe('prepare', function() {
174
175
  */
175
176
 
176
177
  it('should retrieve the data', function(done) {
177
- var stmt = db.prepare("SELECT num FROM foo", function(err) {
178
+ var stmt = db.prepare("SELECT num FROM foo", function(err: null | Error) {
178
179
  if (err) throw err;
179
180
  });
180
181
 
181
- stmt.each(function(err, row) {
182
+ stmt.each(function(err: null | Error, row: RowData) {
182
183
  if (err) throw err;
183
- assert(row);
184
+ assert.ok(row);
184
185
  assert.equal(row.num, 4);
185
186
  retrieved++;
186
187
  });
@@ -267,7 +268,7 @@ describe('prepare', function() {
267
268
  */
268
269
 
269
270
  describe('prepare() parameter binding', function() {
270
- var db;
271
+ var db: sqlite3.Database;
271
272
  before(function(done) { db = new sqlite3.Database(':memory:',
272
273
  function(err) {
273
274
  db.run("CREATE TEMPORARY VIEW foo AS SELECT * FROM read_csv_auto('test/support/prepare.csv')", done)
@@ -291,7 +292,7 @@ describe('prepare', function() {
291
292
 
292
293
  it('should retrieve particular rows', function(done) {
293
294
  db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num = ? AND txt = ?")
294
- .each(10, 'String 10', function(err, row) {
295
+ .each(10, 'String 10', function(err: null | Error, row: RowData) {
295
296
  if (err) throw err;
296
297
  assert.equal(row.txt, 'String 10');
297
298
  assert.equal(row.num, 10);
@@ -310,7 +311,7 @@ describe('prepare', function() {
310
311
  });
311
312
 
312
313
  describe('all()', function() {
313
- var db;
314
+ var db: sqlite3.Database;
314
315
  before(function(done) { db = new sqlite3.Database(':memory:',
315
316
  function(err) {
316
317
  db.run("CREATE TEMPORARY VIEW foo AS SELECT * FROM read_csv_auto('test/support/prepare.csv')", done)
@@ -322,7 +323,7 @@ describe('prepare', function() {
322
323
 
323
324
  it('should retrieve particular rows', function(done) {
324
325
  db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num < ? ORDER BY num")
325
- .all(count, function(err, rows) {
326
+ .all(count, function(err: null | Error, rows: TableData) {
326
327
  if (err) throw err;
327
328
  for (var i = 0; i < rows.length; i++) {
328
329
  assert.equal(rows[i].txt, 'String ' + i);
@@ -343,7 +344,7 @@ describe('prepare', function() {
343
344
  });
344
345
 
345
346
  describe('all()', function() {
346
- var db;
347
+ var db: sqlite3.Database;
347
348
  before(function(done) { db = new sqlite3.Database(':memory:',
348
349
  function(err) {
349
350
  db.run("CREATE TEMPORARY VIEW foo AS SELECT * FROM read_csv_auto('test/support/prepare.csv')", done)
@@ -352,7 +353,7 @@ describe('prepare', function() {
352
353
 
353
354
  it('should retrieve particular rows', function(done) {
354
355
  db.prepare("SELECT txt, num, flt, blb FROM foo WHERE num > 5000")
355
- .all(function(err, rows) {
356
+ .all(function(err: null | Error, rows: TableData) {
356
357
  if (err) throw err;
357
358
  assert.ok(rows.length === 0);
358
359
  })
@@ -363,7 +364,7 @@ describe('prepare', function() {
363
364
  });
364
365
 
365
366
  describe('high concurrency', function() {
366
- var db;
367
+ var db: sqlite3.Database;
367
368
  before(function(done) { db = new sqlite3.Database(':memory:', done); });
368
369
 
369
370
  function randomString() {
@@ -378,10 +379,12 @@ describe('prepare', function() {
378
379
  }
379
380
 
380
381
  // Generate random data.
381
- var data = [];
382
+ var data: [string, number, number, null][] = [];
383
+ var retrieved_marks: boolean[] = [];
382
384
  var length = Math.floor(Math.random() * 1000) + 200;
383
385
  for (var i = 0; i < length; i++) {
384
386
  data.push([ randomString(), i, i * Math.random(), null ]);
387
+ retrieved_marks.push(false);
385
388
  }
386
389
  var inserted = 0;
387
390
  var retrieved = 0;
@@ -393,7 +396,7 @@ describe('prepare', function() {
393
396
  it('should insert all values', function(done) {
394
397
  for (var i = 0; i < data.length; i++) {
395
398
  var stmt = db.prepare("INSERT INTO foo VALUES(?, ?, ?, ?)");
396
- stmt.run(data[i][0], data[i][1], data[i][2], data[i][3], function(err) {
399
+ stmt.run(data[i][0], data[i][1], data[i][2], data[i][3], function(err: null | Error) {
397
400
  if (err) throw err;
398
401
  inserted++;
399
402
  }).finalize(function(err) {
@@ -405,11 +408,11 @@ describe('prepare', function() {
405
408
 
406
409
  it('should retrieve all values', function(done) {
407
410
  db.prepare("SELECT txt, num, flt, blb FROM foo")
408
- .all(function(err, rows) {
411
+ .all(function(err: null | Error, rows: TableData) {
409
412
  if (err) throw err;
410
413
 
411
414
  for (var i = 0; i < rows.length; i++) {
412
- assert.ok(data[rows[i].num] !== true);
415
+ assert.ok(retrieved_marks[rows[i].num] !== true);
413
416
 
414
417
  assert.equal(rows[i].txt, data[rows[i].num][0]);
415
418
  assert.equal(rows[i].num, data[rows[i].num][1]);
@@ -417,7 +420,7 @@ describe('prepare', function() {
417
420
  //assert.equal(rows[i].blb, data[rows[i].num][3]);
418
421
 
419
422
  // Mark the data row as already retrieved.
420
- data[rows[i].num] = true;
423
+ retrieved_marks[rows[i].num] = true;
421
424
  retrieved++;
422
425
 
423
426
  }
@@ -462,7 +465,7 @@ describe('prepare', function() {
462
465
  });
463
466
  */
464
467
  describe('Database#run() and Database#all()', function() {
465
- var db;
468
+ var db: sqlite3.Database;
466
469
  before(function(done) { db = new sqlite3.Database(':memory:', done); });
467
470
 
468
471
  var inserted = 0;
@@ -482,7 +485,7 @@ describe('prepare', function() {
482
485
  i,
483
486
  i * Math.PI,
484
487
  null,
485
- function(err) {
488
+ function(err: null | Error) {
486
489
  if (err) throw err;
487
490
  inserted++;
488
491
  if (inserted == count) done();
@@ -492,7 +495,7 @@ describe('prepare', function() {
492
495
  });
493
496
 
494
497
  it('should retrieve all rows', function(done) {
495
- db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err, rows) {
498
+ db.all("SELECT txt, num, flt, blb FROM foo ORDER BY num", function(err: null | Error, rows: TableData) {
496
499
  if (err) throw err;
497
500
  for (var i = 0; i < rows.length; i++) {
498
501
  assert.equal(rows[i].txt, 'String ' + i);
@@ -511,44 +514,44 @@ describe('prepare', function() {
511
514
 
512
515
  describe('using aggregate functions', function() {
513
516
  it("should aggregate string_agg(txt)", function (done) {
514
- db.all("SELECT string_agg(txt, ',') as string_agg FROM foo WHERE num < 2", function (err, res) {
517
+ db.all("SELECT string_agg(txt, ',') as string_agg FROM foo WHERE num < 2", function (err: null | Error, res: TableData) {
515
518
  assert.equal(res[0].string_agg, "String 0,String 1");
516
519
  done(err);
517
520
  });
518
521
  });
519
522
 
520
523
  it("should aggregate min(flt)", function (done) {
521
- db.all("SELECT min(flt) as min FROM foo WHERE flt > 0", function (err, res) {
524
+ db.all("SELECT min(flt) as min FROM foo WHERE flt > 0", function (err: null | Error, res: TableData) {
522
525
  assert.equal(res[0].min, Math.PI);
523
526
  done(err);
524
527
  });
525
528
  });
526
529
  it("should aggregate max(flt)", function (done) {
527
- db.all("SELECT max(flt) as max FROM foo", function (err, res) {
530
+ db.all("SELECT max(flt) as max FROM foo", function (err: null | Error, res: TableData) {
528
531
  assert.equal(res[0].max, Math.PI * 999);
529
532
  done(err);
530
533
  });
531
534
  });
532
535
  it("should aggregate avg(flt)", function (done) {
533
- db.all("SELECT avg(flt) as avg FROM foo", function (err, res) {
536
+ db.all("SELECT avg(flt) as avg FROM foo", function (err: null | Error, res: TableData) {
534
537
  assert.equal(res[0].avg, 1569.2255304681016);
535
538
  done(err);
536
539
  });
537
540
  });
538
541
  it("should aggregate first(flt)", function (done) {
539
- db.all("SELECT first(flt) as first FROM foo WHERE flt > 0", function (err, res) {
542
+ db.all("SELECT first(flt) as first FROM foo WHERE flt > 0", function (err: null | Error, res: TableData) {
540
543
  assert.equal(res[0].first, Math.PI);
541
544
  done(err);
542
545
  });
543
546
  });
544
547
  it("should aggregate approx_count_distinct(flt)", function (done) {
545
- db.all("SELECT approx_count_distinct(flt) as approx_count_distinct FROM foo", function (err, res) {
548
+ db.all("SELECT approx_count_distinct(flt) as approx_count_distinct FROM foo", function (err: null | Error, res: TableData) {
546
549
  assert.ok(res[0].approx_count_distinct >= 950);
547
550
  done(err);
548
551
  });
549
552
  });
550
553
  it("should aggregate sum(flt)", function (done) {
551
- db.all("SELECT sum(flt) as sum FROM foo", function (err, res) {
554
+ db.all("SELECT sum(flt) as sum FROM foo", function (err: null | Error, res: TableData) {
552
555
  assert.equal(res[0].sum, 1569225.5304681016);
553
556
  done(err);
554
557
  });
@@ -556,75 +559,75 @@ describe('prepare', function() {
556
559
 
557
560
 
558
561
  it("should aggregate min(num)", function (done) {
559
- db.all("SELECT min(num) as min FROM foo WHERE num > 0", function (err, res) {
562
+ db.all("SELECT min(num) as min FROM foo WHERE num > 0", function (err: null | Error, res: TableData) {
560
563
  assert.equal(res[0].min, 1);
561
564
  done(err);
562
565
  });
563
566
  });
564
567
  it("should aggregate max(num)", function (done) {
565
- db.all("SELECT max(num) as max FROM foo", function (err, res) {
568
+ db.all("SELECT max(num) as max FROM foo", function (err: null | Error, res: TableData) {
566
569
  assert.equal(res[0].max, 999);
567
570
  done(err);
568
571
  });
569
572
  });
570
573
  it("should aggregate count(num)", function (done) {
571
- db.all("SELECT count(num) as count FROM foo", function (err, res) {
574
+ db.all("SELECT count(num) as count FROM foo", function (err: null | Error, res: TableData) {
572
575
  assert.equal(res[0].count, 1000);
573
576
  done(err);
574
577
  });
575
578
  });
576
579
  it("should aggregate avg(num)", function (done) {
577
- db.all("SELECT avg(num) as avg FROM foo", function (err, res) {
580
+ db.all("SELECT avg(num) as avg FROM foo", function (err: null | Error, res: TableData) {
578
581
  assert.equal(res[0].avg, 499.5);
579
582
  done(err);
580
583
  });
581
584
  });
582
585
  it("should aggregate first(num)", function (done) {
583
- db.all("SELECT first(num) as first FROM foo WHERE num > 0", function (err, res) {
586
+ db.all("SELECT first(num) as first FROM foo WHERE num > 0", function (err: null | Error, res: TableData) {
584
587
  assert.equal(res[0].first, 1);
585
588
  done(err);
586
589
  });
587
590
  });
588
591
  it("should aggregate approx_count_distinct(num)", function (done) {
589
- db.all("SELECT approx_count_distinct(num) as approx_count_distinct FROM foo", function (err, res) {
592
+ db.all("SELECT approx_count_distinct(num) as approx_count_distinct FROM foo", function (err: null | Error, res: TableData) {
590
593
  assert.ok(res[0].approx_count_distinct >= 950);
591
594
  done(err);
592
595
  });
593
596
  });
594
597
  it("should aggregate approx_quantile(num, 0.5)", function (done) {
595
- db.all("SELECT approx_quantile(num, 0.5) as approx_quantile FROM foo", function (err, res) {
598
+ db.all("SELECT approx_quantile(num, 0.5) as approx_quantile FROM foo", function (err: null | Error, res: TableData) {
596
599
  assert.ok(res[0].approx_quantile >= 499);
597
600
  done(err);
598
601
  });
599
602
  });
600
603
  it("should aggregate reservoir_quantile(num, 0.5, 10)", function (done) {
601
- db.all("SELECT reservoir_quantile(num, 0.5, 10) as reservoir_quantile FROM foo", function (err, res) {
604
+ db.all("SELECT reservoir_quantile(num, 0.5, 10) as reservoir_quantile FROM foo", function (err: null | Error, res: TableData) {
602
605
  assert.equal(res[0].reservoir_quantile, 4);
603
606
  done(err);
604
607
  });
605
608
  });
606
609
  it("should aggregate var_samp(num)", function (done) {
607
- db.all("SELECT var_samp(num) as var_samp FROM foo", function (err, res) {
610
+ db.all("SELECT var_samp(num) as var_samp FROM foo", function (err: null | Error, res: TableData) {
608
611
  assert.equal(res[0].var_samp, 83416.66666666667);
609
612
  done(err);
610
613
  });
611
614
  });
612
615
  it("should aggregate kurtosis(num)", function (done) {
613
- db.all("SELECT kurtosis(num) as kurtosis FROM foo", function (err, res) {
616
+ db.all("SELECT kurtosis(num) as kurtosis FROM foo", function (err: null | Error, res: TableData) {
614
617
  assert.equal(res[0].kurtosis, -1.1999999999999997);
615
618
  done(err);
616
619
  });
617
620
  });
618
621
 
619
622
  it("should aggregate sum(num)", function (done) {
620
- db.all("SELECT sum(num) as sum FROM foo", function (err, res) {
623
+ db.all("SELECT sum(num) as sum FROM foo", function (err: null | Error, res: TableData) {
621
624
  assert.equal(res[0].sum, 499500);
622
625
  done(err);
623
626
  });
624
627
  });
625
628
 
626
629
  it("should aggregate product(num)", function (done) {
627
- db.all("SELECT product(num) as product FROM foo WHERE num < 20 AND num > 0", function (err, res) {
630
+ db.all("SELECT product(num) as product FROM foo WHERE num < 20 AND num > 0", function (err: null | Error, res: TableData) {
628
631
  assert.equal(res[0].product, 121645100408832000);
629
632
  done(err);
630
633
  });
@@ -632,7 +635,7 @@ describe('prepare', function() {
632
635
 
633
636
 
634
637
  it("should aggregate product(flt)", function (done) {
635
- db.all("SELECT product(flt) as product FROM foo WHERE num < 10 AND num > 0", function (err, res) {
638
+ db.all("SELECT product(flt) as product FROM foo WHERE num < 10 AND num > 0", function (err: null | Error, res: TableData) {
636
639
  assert.equal(res[0].product, 10817125966.120956);
637
640
  done(err);
638
641
  });
@@ -1,11 +1,11 @@
1
- var duckdb = require('..');
2
- var assert = require('assert');
1
+ import * as duckdb from '..';
2
+ import * as assert from 'assert';
3
3
 
4
4
  describe('QueryResult', () => {
5
5
  const total = 1000;
6
6
 
7
- let db;
8
- let conn;
7
+ let db: duckdb.Database;
8
+ let conn: duckdb.Connection;
9
9
  before((done) => {
10
10
  db = new duckdb.Database(':memory:', () => {
11
11
  conn = new duckdb.Connection(db, done);