duckdb 0.3.3-dev6.0 → 0.3.3-dev683.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/Makefile +2 -0
- package/binding.gyp +8 -8
- package/lib/duckdb.js +108 -20
- package/package.json +1 -1
- package/src/connection.cpp +274 -1
- package/src/database.cpp +1 -0
- package/src/duckdb.cpp +27044 -21585
- package/src/duckdb.hpp +5556 -5090
- package/src/duckdb_node.hpp +9 -0
- package/src/parquet-amalgamation.cpp +36686 -36681
- package/test/udf.test.js +149 -0
package/test/udf.test.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
var duckdb = require('..');
|
|
2
|
+
var assert = require('assert');
|
|
3
|
+
|
|
4
|
+
describe('UDFs', function() {
|
|
5
|
+
var db;
|
|
6
|
+
|
|
7
|
+
before(function(done) {
|
|
8
|
+
db = new duckdb.Database(':memory:', done);
|
|
9
|
+
});
|
|
10
|
+
|
|
11
|
+
it('0ary int', function(done) {
|
|
12
|
+
db.register("udf", "integer", () => 42);
|
|
13
|
+
db.all("select udf() v", function(err, rows) {
|
|
14
|
+
if (err) throw err;
|
|
15
|
+
assert.equal(rows[0].v, 42);
|
|
16
|
+
});
|
|
17
|
+
db.unregister("udf", done);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it('0ary double', function(done) {
|
|
21
|
+
db.register("udf", "double", () => 4.2);
|
|
22
|
+
db.all("select udf() v", function(err, rows) {
|
|
23
|
+
if (err) throw err;
|
|
24
|
+
assert.equal(rows[0].v, 4.2);
|
|
25
|
+
});
|
|
26
|
+
db.unregister("udf", done);
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
it('0ary string', function(done) {
|
|
30
|
+
db.register("udf", "varchar", () => 'hello');
|
|
31
|
+
db.all("select udf() v", function(err, rows) {
|
|
32
|
+
if (err) throw err;
|
|
33
|
+
assert.equal(rows[0].v, 'hello');
|
|
34
|
+
});
|
|
35
|
+
db.unregister("udf", done);
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it('0ary int null', function(done) {
|
|
39
|
+
db.register("udf", "integer", () => undefined);
|
|
40
|
+
db.all("select udf() v", function(err, rows) {
|
|
41
|
+
if (err) throw err;
|
|
42
|
+
assert.equal(rows[0].v, undefined);
|
|
43
|
+
});
|
|
44
|
+
db.unregister("udf", done);
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
it('0ary string null', function(done) {
|
|
49
|
+
db.register("udf", "varchar", () => undefined);
|
|
50
|
+
db.all("select udf() v", function(err, rows) {
|
|
51
|
+
if (err) throw err;
|
|
52
|
+
assert.equal(rows[0].v, undefined);
|
|
53
|
+
});
|
|
54
|
+
db.unregister("udf", done);
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
it('unary int', function(done) {
|
|
59
|
+
db.register("udf", "integer", (x) => x+1);
|
|
60
|
+
db.all("select udf(42) v", function(err, rows) {
|
|
61
|
+
if (err) throw err;
|
|
62
|
+
assert.equal(rows[0].v, 43);
|
|
63
|
+
});
|
|
64
|
+
db.unregister("udf", done);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it('unary double', function(done) {
|
|
68
|
+
db.register("udf", "double", (x) => x);
|
|
69
|
+
db.all("select udf(4.2::double) v", function(err, rows) {
|
|
70
|
+
if (err) throw err;
|
|
71
|
+
assert.equal(rows[0].v, 4.2);
|
|
72
|
+
});
|
|
73
|
+
db.unregister("udf", done);
|
|
74
|
+
});
|
|
75
|
+
|
|
76
|
+
it('unary int null', function(done) {
|
|
77
|
+
db.register("udf", "integer", (x) => undefined);
|
|
78
|
+
db.all("select udf(42) v", function(err, rows) {
|
|
79
|
+
if (err) throw err;
|
|
80
|
+
assert.equal(rows[0].v, undefined);
|
|
81
|
+
});
|
|
82
|
+
db.unregister("udf", done);
|
|
83
|
+
});
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
it('unary double null', function(done) {
|
|
87
|
+
db.register("udf", "double", (x) => undefined);
|
|
88
|
+
db.all("select udf(4.2::double) v", function(err, rows) {
|
|
89
|
+
if (err) throw err;
|
|
90
|
+
assert.equal(rows[0].v, undefined);
|
|
91
|
+
});
|
|
92
|
+
db.unregister("udf", done);
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
it('unary string', function(done) {
|
|
97
|
+
db.register("udf", "varchar", (x) => 'hello ' + x);
|
|
98
|
+
db.all("select udf('world') v", function(err, rows) {
|
|
99
|
+
if (err) throw err;
|
|
100
|
+
assert.equal(rows[0].v, 'hello world');
|
|
101
|
+
});
|
|
102
|
+
db.unregister("udf", done);
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
it('unary string null', function(done) {
|
|
106
|
+
db.register("udf", "varchar", (x) => undefined);
|
|
107
|
+
db.all("select udf('world') v", function(err, rows) {
|
|
108
|
+
if (err) throw err;
|
|
109
|
+
assert.equal(rows[0].v, undefined);
|
|
110
|
+
});
|
|
111
|
+
db.unregister("udf", done);
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
it('binary int', function(done) {
|
|
115
|
+
db.register("udf", "integer", (x, y) => x + y);
|
|
116
|
+
db.all("select udf(40, 2) v", function(err, rows) {
|
|
117
|
+
if (err) throw err;
|
|
118
|
+
assert.equal(rows[0].v, 42);
|
|
119
|
+
});
|
|
120
|
+
db.unregister("udf", done);
|
|
121
|
+
});
|
|
122
|
+
|
|
123
|
+
it('binary string', function(done) {
|
|
124
|
+
db.register("udf", "varchar", (x, y) => x + ' ' + y);
|
|
125
|
+
db.all("select udf('hello', 'world') v", function(err, rows) {
|
|
126
|
+
if (err) throw err;
|
|
127
|
+
assert.equal(rows[0].v, 'hello world');
|
|
128
|
+
});
|
|
129
|
+
db.unregister("udf", done);
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it('ternary int', function(done) {
|
|
133
|
+
db.register("udf", "integer", (x, y, z) => x + y + z);
|
|
134
|
+
db.all("select udf(21, 20, 1) v", function(err, rows) {
|
|
135
|
+
if (err) throw err;
|
|
136
|
+
assert.equal(rows[0].v, 42);
|
|
137
|
+
});
|
|
138
|
+
db.unregister("udf", done);
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it('unary larger series', function(done) {
|
|
142
|
+
db.register("udf", "integer", (x) => 1);
|
|
143
|
+
db.all("select sum(udf(range::double)) v from range(10000)", function(err, rows) {
|
|
144
|
+
if (err) throw err;
|
|
145
|
+
assert.equal(rows[0].v, 10000);
|
|
146
|
+
});
|
|
147
|
+
db.unregister("udf", done);
|
|
148
|
+
});
|
|
149
|
+
});
|