duckdb 0.6.2-dev529.0 → 0.6.2-dev551.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.
- package/.mocharc.json +2 -2
- package/lib/duckdb.d.ts +29 -11
- package/lib/duckdb.js +6 -0
- package/package.json +1 -1
- package/src/duckdb.hpp +2 -2
- package/src/parquet-amalgamation.cpp +36726 -36726
- package/test/{affected.test.js → affected.test.ts} +8 -10
- package/test/{arrow.test.js → arrow.test.ts} +12 -11
- package/test/{data_type_support.test.js → data_type_support.test.ts} +36 -35
- package/test/{database_fail.test.js → database_fail.test.ts} +25 -24
- package/test/{each.test.js → each.test.ts} +10 -9
- package/test/{exec.test.js → exec.test.ts} +7 -6
- package/test/{extension.test.js → extension.test.ts} +20 -19
- package/test/{interrupt.test.js → interrupt.test.ts} +7 -7
- package/test/{jsdoc.test.js → jsdoc.test.ts} +19 -20
- package/test/{named_columns.test.js → named_columns.test.ts} +4 -6
- package/test/{null_error.test.js → null_error.test.ts} +5 -6
- package/test/{open_close.test.js → open_close.test.ts} +10 -10
- package/test/{parallel_insert.test.js → parallel_insert.test.ts} +6 -7
- package/test/{parquet.js → parquet.test.ts} +2 -4
- package/test/{pathnames.test.js → pathnames.test.ts} +24 -22
- package/test/{prepare.test.js → prepare.test.ts} +53 -50
- package/test/{query_result.test.js → query_result.test.ts} +4 -4
- package/test/{serialization.test.js → serialization.test.ts} +10 -9
- package/test/support/helper.ts +42 -0
- package/test/{syntax_error.test.js → syntax_error.test.ts} +4 -4
- package/test/{udf.test.js → udf.test.ts} +26 -25
- package/test/{unicode.test.js → unicode.test.ts} +23 -22
- package/test/support/helper.js +0 -37
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as duckdb from "..";
|
|
2
|
+
import {TableData} from "..";
|
|
3
|
+
import * as assert from 'assert';
|
|
3
4
|
|
|
4
5
|
describe('UDFs', function() {
|
|
5
6
|
describe('arity', function() {
|
|
6
|
-
|
|
7
|
+
let db: duckdb.Database;
|
|
7
8
|
before(function(done) {
|
|
8
9
|
db = new duckdb.Database(':memory:', done);
|
|
9
10
|
});
|
|
10
11
|
|
|
11
12
|
it('0ary int', function(done) {
|
|
12
13
|
db.register_udf("udf", "integer", () => 42);
|
|
13
|
-
db.all("select udf() v", function(err, rows) {
|
|
14
|
+
db.all("select udf() v", function(err: Error | null, rows: TableData) {
|
|
14
15
|
if (err) throw err;
|
|
15
16
|
assert.equal(rows[0].v, 42);
|
|
16
17
|
});
|
|
@@ -19,7 +20,7 @@ describe('UDFs', function() {
|
|
|
19
20
|
|
|
20
21
|
it('0ary double', function(done) {
|
|
21
22
|
db.register_udf("udf", "double", () => 4.2);
|
|
22
|
-
db.all("select udf() v", function(err, rows) {
|
|
23
|
+
db.all("select udf() v", function(err: null | Error, rows: TableData) {
|
|
23
24
|
if (err) throw err;
|
|
24
25
|
assert.equal(rows[0].v, 4.2);
|
|
25
26
|
});
|
|
@@ -28,7 +29,7 @@ describe('UDFs', function() {
|
|
|
28
29
|
|
|
29
30
|
it('0ary string', function(done) {
|
|
30
31
|
db.register_udf("udf", "varchar", () => 'hello');
|
|
31
|
-
db.all("select udf() v", function(err, rows) {
|
|
32
|
+
db.all("select udf() v", function(err: null | Error, rows: TableData) {
|
|
32
33
|
if (err) throw err;
|
|
33
34
|
assert.equal(rows[0].v, 'hello');
|
|
34
35
|
});
|
|
@@ -37,7 +38,7 @@ describe('UDFs', function() {
|
|
|
37
38
|
|
|
38
39
|
it('0ary int null', function(done) {
|
|
39
40
|
db.register_udf("udf", "integer", () => undefined);
|
|
40
|
-
db.all("select udf() v", function(err, rows) {
|
|
41
|
+
db.all("select udf() v", function(err: null | Error, rows: TableData) {
|
|
41
42
|
if (err) throw err;
|
|
42
43
|
assert.equal(rows[0].v, undefined);
|
|
43
44
|
});
|
|
@@ -47,7 +48,7 @@ describe('UDFs', function() {
|
|
|
47
48
|
|
|
48
49
|
it('0ary string null', function(done) {
|
|
49
50
|
db.register_udf("udf", "varchar", () => undefined);
|
|
50
|
-
db.all("select udf() v", function(err, rows) {
|
|
51
|
+
db.all("select udf() v", function(err: null | Error, rows: TableData) {
|
|
51
52
|
if (err) throw err;
|
|
52
53
|
assert.equal(rows[0].v, undefined);
|
|
53
54
|
});
|
|
@@ -57,7 +58,7 @@ describe('UDFs', function() {
|
|
|
57
58
|
|
|
58
59
|
it('unary int', function(done) {
|
|
59
60
|
db.register_udf("udf", "integer", (x) => x+1);
|
|
60
|
-
db.all("select udf(42) v", function(err, rows) {
|
|
61
|
+
db.all("select udf(42) v", function(err: null | Error, rows: TableData) {
|
|
61
62
|
if (err) throw err;
|
|
62
63
|
assert.equal(rows[0].v, 43);
|
|
63
64
|
});
|
|
@@ -66,7 +67,7 @@ describe('UDFs', function() {
|
|
|
66
67
|
|
|
67
68
|
it('unary double', function(done) {
|
|
68
69
|
db.register_udf("udf", "double", (x) => x);
|
|
69
|
-
db.all("select udf(4.2::double) v", function(err, rows) {
|
|
70
|
+
db.all("select udf(4.2::double) v", function(err: null | Error, rows: TableData) {
|
|
70
71
|
if (err) throw err;
|
|
71
72
|
assert.equal(rows[0].v, 4.2);
|
|
72
73
|
});
|
|
@@ -75,7 +76,7 @@ describe('UDFs', function() {
|
|
|
75
76
|
|
|
76
77
|
it('unary int null', function(done) {
|
|
77
78
|
db.register_udf("udf", "integer", (x) => undefined);
|
|
78
|
-
db.all("select udf(42) v", function(err, rows) {
|
|
79
|
+
db.all("select udf(42) v", function(err: null | Error, rows: TableData) {
|
|
79
80
|
if (err) throw err;
|
|
80
81
|
assert.equal(rows[0].v, undefined);
|
|
81
82
|
});
|
|
@@ -85,7 +86,7 @@ describe('UDFs', function() {
|
|
|
85
86
|
|
|
86
87
|
it('unary double null', function(done) {
|
|
87
88
|
db.register_udf("udf", "double", (x) => undefined);
|
|
88
|
-
db.all("select udf(4.2::double) v", function(err, rows) {
|
|
89
|
+
db.all("select udf(4.2::double) v", function(err: null | Error, rows: TableData) {
|
|
89
90
|
if (err) throw err;
|
|
90
91
|
assert.equal(rows[0].v, undefined);
|
|
91
92
|
});
|
|
@@ -95,7 +96,7 @@ describe('UDFs', function() {
|
|
|
95
96
|
|
|
96
97
|
it('unary string', function(done) {
|
|
97
98
|
db.register_udf("udf", "varchar", (x) => 'hello ' + x);
|
|
98
|
-
db.all("select udf('world') v", function(err, rows) {
|
|
99
|
+
db.all("select udf('world') v", function(err: null | Error, rows: TableData) {
|
|
99
100
|
if (err) throw err;
|
|
100
101
|
assert.equal(rows[0].v, 'hello world');
|
|
101
102
|
});
|
|
@@ -104,7 +105,7 @@ describe('UDFs', function() {
|
|
|
104
105
|
|
|
105
106
|
it('unary string null', function(done) {
|
|
106
107
|
db.register_udf("udf", "varchar", (x) => undefined);
|
|
107
|
-
db.all("select udf('world') v", function(err, rows) {
|
|
108
|
+
db.all("select udf('world') v", function(err: null | Error, rows: TableData) {
|
|
108
109
|
if (err) throw err;
|
|
109
110
|
assert.equal(rows[0].v, undefined);
|
|
110
111
|
});
|
|
@@ -113,7 +114,7 @@ describe('UDFs', function() {
|
|
|
113
114
|
|
|
114
115
|
it('binary int', function(done) {
|
|
115
116
|
db.register_udf("udf", "integer", (x, y) => x + y);
|
|
116
|
-
db.all("select udf(40, 2) v", function(err, rows) {
|
|
117
|
+
db.all("select udf(40, 2) v", function(err: null | Error, rows: TableData) {
|
|
117
118
|
if (err) throw err;
|
|
118
119
|
assert.equal(rows[0].v, 42);
|
|
119
120
|
});
|
|
@@ -122,7 +123,7 @@ describe('UDFs', function() {
|
|
|
122
123
|
|
|
123
124
|
it('binary string', function(done) {
|
|
124
125
|
db.register_udf("udf", "varchar", (x, y) => x + ' ' + y);
|
|
125
|
-
db.all("select udf('hello', 'world') v", function(err, rows) {
|
|
126
|
+
db.all("select udf('hello', 'world') v", function(err: null | Error, rows: TableData) {
|
|
126
127
|
if (err) throw err;
|
|
127
128
|
assert.equal(rows[0].v, 'hello world');
|
|
128
129
|
});
|
|
@@ -131,7 +132,7 @@ describe('UDFs', function() {
|
|
|
131
132
|
|
|
132
133
|
it('ternary int', function(done) {
|
|
133
134
|
db.register_udf("udf", "integer", (x, y, z) => x + y + z);
|
|
134
|
-
db.all("select udf(21, 20, 1) v", function(err, rows) {
|
|
135
|
+
db.all("select udf(21, 20, 1) v", function(err: null | Error, rows: TableData) {
|
|
135
136
|
if (err) throw err;
|
|
136
137
|
assert.equal(rows[0].v, 42);
|
|
137
138
|
});
|
|
@@ -140,7 +141,7 @@ describe('UDFs', function() {
|
|
|
140
141
|
|
|
141
142
|
it('unary larger series', function(done) {
|
|
142
143
|
db.register_udf("udf", "integer", (x) => 1);
|
|
143
|
-
db.all("select sum(udf(range::double)) v from range(10000)", function(err, rows) {
|
|
144
|
+
db.all("select sum(udf(range::double)) v from range(10000)", function(err: null | Error, rows: TableData) {
|
|
144
145
|
if (err) throw err;
|
|
145
146
|
assert.equal(rows[0].v, 10000);
|
|
146
147
|
});
|
|
@@ -149,14 +150,14 @@ describe('UDFs', function() {
|
|
|
149
150
|
});
|
|
150
151
|
|
|
151
152
|
describe('types', function() {
|
|
152
|
-
var db;
|
|
153
|
+
var db: duckdb.Database;
|
|
153
154
|
before(function(done) {
|
|
154
155
|
db = new duckdb.Database(':memory:', done);
|
|
155
156
|
});
|
|
156
157
|
|
|
157
158
|
it('tinyint', function(done) {
|
|
158
159
|
db.register_udf("udf", "integer", (x) => x+1);
|
|
159
|
-
db.all("select udf(42::tinyint) v", function(err, rows) {
|
|
160
|
+
db.all("select udf(42::tinyint) v", function(err: null | Error, rows: TableData) {
|
|
160
161
|
if (err) throw err;
|
|
161
162
|
assert.equal(rows[0].v, 43);
|
|
162
163
|
});
|
|
@@ -165,7 +166,7 @@ describe('UDFs', function() {
|
|
|
165
166
|
|
|
166
167
|
it('smallint', function(done) {
|
|
167
168
|
db.register_udf("udf", "integer", (x) => x+1);
|
|
168
|
-
db.all("select udf(42::smallint) v", function(err, rows) {
|
|
169
|
+
db.all("select udf(42::smallint) v", function(err: null | Error, rows: TableData) {
|
|
169
170
|
if (err) throw err;
|
|
170
171
|
assert.equal(rows[0].v, 43);
|
|
171
172
|
});
|
|
@@ -174,7 +175,7 @@ describe('UDFs', function() {
|
|
|
174
175
|
|
|
175
176
|
it('int', function(done) {
|
|
176
177
|
db.register_udf("udf", "integer", (x) => x+1);
|
|
177
|
-
db.all("select udf(42::integer) v", function(err, rows) {
|
|
178
|
+
db.all("select udf(42::integer) v", function(err: null | Error, rows: TableData) {
|
|
178
179
|
if (err) throw err;
|
|
179
180
|
assert.equal(rows[0].v, 43);
|
|
180
181
|
});
|
|
@@ -183,7 +184,7 @@ describe('UDFs', function() {
|
|
|
183
184
|
|
|
184
185
|
it('timestamp', function(done) {
|
|
185
186
|
db.register_udf("udf", "timestamp", (x) => x);
|
|
186
|
-
db.all("select udf(timestamp '1992-09-20 11:30:00') v", function(err, rows) {
|
|
187
|
+
db.all("select udf(timestamp '1992-09-20 11:30:00') v", function(err: null | Error, rows: TableData) {
|
|
187
188
|
if (err) throw err;
|
|
188
189
|
});
|
|
189
190
|
db.unregister_udf("udf", done);
|
|
@@ -193,7 +194,7 @@ describe('UDFs', function() {
|
|
|
193
194
|
db.register_udf("udf", "integer", a => {
|
|
194
195
|
return (a.x == null ? -100 : a.x);
|
|
195
196
|
});
|
|
196
|
-
db.all("SELECT min(udf({'x': (case when v % 2 = 0 then v else null end)::INTEGER, 'y': 42}))::INTEGER as foo FROM generate_series(1, 10000) as t(v)", function(err, rows) {
|
|
197
|
+
db.all("SELECT min(udf({'x': (case when v % 2 = 0 then v else null end)::INTEGER, 'y': 42}))::INTEGER as foo FROM generate_series(1, 10000) as t(v)", function(err: null | Error, rows: TableData) {
|
|
197
198
|
if (err) throw err;
|
|
198
199
|
assert.equal(rows[0].foo, -100);
|
|
199
200
|
});
|
|
@@ -204,7 +205,7 @@ describe('UDFs', function() {
|
|
|
204
205
|
db.register_udf("udf", "integer", a => {
|
|
205
206
|
return (a.x == null ? -100 : a.x.y);
|
|
206
207
|
});
|
|
207
|
-
db.all("SELECT min(udf({'x': (case when v % 2 = 0 then {'y': v::INTEGER } else null end), 'z': 42}))::INTEGER as foo FROM generate_series(1, 10000) as t(v)", function(err, rows) {
|
|
208
|
+
db.all("SELECT min(udf({'x': (case when v % 2 = 0 then {'y': v::INTEGER } else null end), 'z': 42}))::INTEGER as foo FROM generate_series(1, 10000) as t(v)", function(err: null | Error, rows: TableData) {
|
|
208
209
|
if (err) throw err;
|
|
209
210
|
assert.equal(rows[0].foo, -100);
|
|
210
211
|
});
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import * as sqlite3 from '..';
|
|
2
|
+
import {TableData} from "..";
|
|
3
|
+
import * as assert from 'assert';
|
|
3
4
|
|
|
4
5
|
describe('unicode', function() {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
6
|
+
let i;
|
|
7
|
+
let first_values: number[] = [],
|
|
8
|
+
trailing_values: number[] = [],
|
|
9
|
+
subranges = new Array(2),
|
|
10
|
+
len = subranges.length,
|
|
11
|
+
db: sqlite3.Database;
|
|
11
12
|
|
|
12
13
|
before(function(done) { db = new sqlite3.Database(':memory:', done); });
|
|
13
14
|
|
|
@@ -35,12 +36,12 @@ describe('unicode', function() {
|
|
|
35
36
|
subranges[1].push(i);
|
|
36
37
|
}
|
|
37
38
|
|
|
38
|
-
function random_choice(arr) {
|
|
39
|
+
function random_choice(arr: number[]) {
|
|
39
40
|
return arr[Math.random() * arr.length | 0];
|
|
40
41
|
}
|
|
41
42
|
|
|
42
43
|
function random_utf8() {
|
|
43
|
-
|
|
44
|
+
const first = random_choice(first_values);
|
|
44
45
|
|
|
45
46
|
if (first < 0x80) {
|
|
46
47
|
return String.fromCharCode(first);
|
|
@@ -56,8 +57,8 @@ describe('unicode', function() {
|
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
function randomString() {
|
|
59
|
-
|
|
60
|
-
|
|
60
|
+
let str = '',
|
|
61
|
+
i;
|
|
61
62
|
|
|
62
63
|
for (i = Math.random() * 300; i > 0; i--) {
|
|
63
64
|
str += random_utf8();
|
|
@@ -68,23 +69,23 @@ describe('unicode', function() {
|
|
|
68
69
|
|
|
69
70
|
|
|
70
71
|
// Generate random data.
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
for (
|
|
72
|
+
const data: string[] = [];
|
|
73
|
+
const length = Math.floor(Math.random() * 1000) + 200;
|
|
74
|
+
for (i = 0; i < length; i++) {
|
|
74
75
|
data.push(randomString());
|
|
75
76
|
}
|
|
76
77
|
|
|
77
|
-
|
|
78
|
-
|
|
78
|
+
let inserted = 0;
|
|
79
|
+
let retrieved = 0;
|
|
79
80
|
|
|
80
81
|
it('should create the table', function(done) {
|
|
81
82
|
db.run("CREATE TABLE foo (id int, txt text)", done);
|
|
82
83
|
});
|
|
83
84
|
|
|
84
85
|
it('should insert all values', function(done) {
|
|
85
|
-
|
|
86
|
-
for (
|
|
87
|
-
stmt.run(i, data[i], function(err) {
|
|
86
|
+
const stmt = db.prepare("INSERT INTO foo VALUES(?, ?)");
|
|
87
|
+
for (let i = 0; i < data.length; i++) {
|
|
88
|
+
stmt.run(i, data[i], function(err: null | Error) {
|
|
88
89
|
if (err) throw err;
|
|
89
90
|
inserted++;
|
|
90
91
|
});
|
|
@@ -93,10 +94,10 @@ describe('unicode', function() {
|
|
|
93
94
|
});
|
|
94
95
|
|
|
95
96
|
it('should retrieve all values', function(done) {
|
|
96
|
-
db.all("SELECT txt FROM foo ORDER BY id", function(err, rows) {
|
|
97
|
+
db.all("SELECT txt FROM foo ORDER BY id", function(err: null | Error, rows: TableData) {
|
|
97
98
|
if (err) throw err;
|
|
98
99
|
|
|
99
|
-
for (
|
|
100
|
+
for (let i = 0; i < rows.length; i++) {
|
|
100
101
|
assert.equal(rows[i].txt, data[i]);
|
|
101
102
|
retrieved++;
|
|
102
103
|
}
|
package/test/support/helper.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
var assert = require('assert');
|
|
2
|
-
var fs = require('fs');
|
|
3
|
-
var pathExists = require('fs').existsSync || require('path').existsSync;
|
|
4
|
-
|
|
5
|
-
exports.deleteFile = function(name) {
|
|
6
|
-
try {
|
|
7
|
-
fs.unlinkSync(name);
|
|
8
|
-
} catch(err) {
|
|
9
|
-
if (err.errno !== process.ENOENT && err.code !== 'ENOENT' && err.syscall !== 'unlink') {
|
|
10
|
-
throw err;
|
|
11
|
-
}
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
exports.ensureExists = function(name,cb) {
|
|
16
|
-
if (!pathExists(name)) {
|
|
17
|
-
fs.mkdirSync(name);
|
|
18
|
-
};
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
assert.fileDoesNotExist = function(name) {
|
|
22
|
-
try {
|
|
23
|
-
fs.statSync(name);
|
|
24
|
-
} catch(err) {
|
|
25
|
-
if (err.errno !== process.ENOENT && err.code !== 'ENOENT' && err.syscall !== 'unlink') {
|
|
26
|
-
throw err;
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
assert.fileExists = function(name) {
|
|
32
|
-
try {
|
|
33
|
-
fs.statSync(name);
|
|
34
|
-
} catch(err) {
|
|
35
|
-
throw err;
|
|
36
|
-
}
|
|
37
|
-
};
|