duckdb 0.4.1-dev2385.0 → 0.4.1-dev2399.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/package.json +1 -1
- package/src/duckdb.cpp +280 -248
- package/src/duckdb.hpp +35 -31
- package/src/parquet-amalgamation.cpp +28431 -28431
- package/src/statement.cpp +21 -3
- package/test/data_type_support.test.js +27 -0
package/src/statement.cpp
CHANGED
|
@@ -139,18 +139,36 @@ static Napi::Value convert_col_val(Napi::Env &env, duckdb::Value dval, duckdb::L
|
|
|
139
139
|
case duckdb::LogicalTypeId::BOOLEAN: {
|
|
140
140
|
value = Napi::Boolean::New(env, duckdb::BooleanValue::Get(dval));
|
|
141
141
|
} break;
|
|
142
|
+
case duckdb::LogicalTypeId::TINYINT: {
|
|
143
|
+
value = Napi::Number::New(env, duckdb::TinyIntValue::Get(dval));
|
|
144
|
+
} break;
|
|
145
|
+
case duckdb::LogicalTypeId::SMALLINT: {
|
|
146
|
+
value = Napi::Number::New(env, duckdb::SmallIntValue::Get(dval));
|
|
147
|
+
} break;
|
|
142
148
|
case duckdb::LogicalTypeId::INTEGER: {
|
|
143
149
|
value = Napi::Number::New(env, duckdb::IntegerValue::Get(dval));
|
|
144
150
|
} break;
|
|
151
|
+
case duckdb::LogicalTypeId::BIGINT: {
|
|
152
|
+
value = Napi::Number::New(env, duckdb::BigIntValue::Get(dval));
|
|
153
|
+
} break;
|
|
154
|
+
case duckdb::LogicalTypeId::UTINYINT: {
|
|
155
|
+
value = Napi::Number::New(env, duckdb::UTinyIntValue::Get(dval));
|
|
156
|
+
} break;
|
|
157
|
+
case duckdb::LogicalTypeId::USMALLINT: {
|
|
158
|
+
value = Napi::Number::New(env, duckdb::USmallIntValue::Get(dval));
|
|
159
|
+
} break;
|
|
160
|
+
case duckdb::LogicalTypeId::UINTEGER: {
|
|
161
|
+
value = Napi::Number::New(env, duckdb::UIntegerValue::Get(dval));
|
|
162
|
+
} break;
|
|
163
|
+
case duckdb::LogicalTypeId::UBIGINT: {
|
|
164
|
+
value = Napi::Number::New(env, duckdb::UBigIntValue::Get(dval));
|
|
165
|
+
} break;
|
|
145
166
|
case duckdb::LogicalTypeId::FLOAT: {
|
|
146
167
|
value = Napi::Number::New(env, duckdb::FloatValue::Get(dval));
|
|
147
168
|
} break;
|
|
148
169
|
case duckdb::LogicalTypeId::DOUBLE: {
|
|
149
170
|
value = Napi::Number::New(env, duckdb::DoubleValue::Get(dval));
|
|
150
171
|
} break;
|
|
151
|
-
case duckdb::LogicalTypeId::BIGINT: {
|
|
152
|
-
value = Napi::Number::New(env, duckdb::BigIntValue::Get(dval));
|
|
153
|
-
} break;
|
|
154
172
|
case duckdb::LogicalTypeId::HUGEINT: {
|
|
155
173
|
value = Napi::Number::New(env, dval.GetValue<double>());
|
|
156
174
|
} break;
|
|
@@ -20,6 +20,33 @@ describe("data type support", function () {
|
|
|
20
20
|
done();
|
|
21
21
|
});
|
|
22
22
|
});
|
|
23
|
+
|
|
24
|
+
it("supports INTEGER values", function (done) {
|
|
25
|
+
db.run("CREATE TABLE integer_table (a TINYINT, b SMALLINT, c INTEGER, d BIGINT, e UTINYINT, f USMALLINT, g UINTEGER, h UBIGINT)");
|
|
26
|
+
const stmt = db.prepare("INSERT INTO integer_table VALUES (?, ?, ?, ?, ?, ?, ?, ?)");
|
|
27
|
+
|
|
28
|
+
// Numerical limits
|
|
29
|
+
signedMinValue = (bitWidth) => Math.max(-(2**(bitWidth-1)-1)-1, Number.MIN_SAFE_INTEGER);
|
|
30
|
+
signedMaxValue = (bitWidth) => Math.min(2**(bitWidth-1)-1, Number.MAX_SAFE_INTEGER);
|
|
31
|
+
unsignedMaxValue = (bitWidth) => Math.min(2**(bitWidth)-1, Number.MAX_SAFE_INTEGER);
|
|
32
|
+
let minValues = [signedMinValue(8), signedMinValue(16), signedMinValue(32), signedMinValue(64), 0, 0, 0, 0];
|
|
33
|
+
let maxValues = [signedMinValue(8), signedMinValue(16), signedMinValue(32), signedMinValue(64), unsignedMaxValue(8), unsignedMaxValue(16), unsignedMaxValue(32), unsignedMaxValue(64)];
|
|
34
|
+
|
|
35
|
+
// Insert values
|
|
36
|
+
stmt.run(...minValues);
|
|
37
|
+
stmt.run(...maxValues);
|
|
38
|
+
|
|
39
|
+
db.prepare("SELECT * from integer_table;").all((err, res) => {
|
|
40
|
+
assert(err === null);
|
|
41
|
+
assert(res.length === 2);
|
|
42
|
+
assert(Object.entries(res[0]).length === 8);
|
|
43
|
+
assert(Object.entries(res[1]).length === 8);
|
|
44
|
+
assert.deepEqual(Object.entries(res[0]).map(v => v[1]), minValues);
|
|
45
|
+
assert.deepEqual(Object.entries(res[1]).map(v => v[1]), maxValues);
|
|
46
|
+
done();
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
|
|
23
50
|
it("supports INTERVAL values", function (done) {
|
|
24
51
|
db.prepare(
|
|
25
52
|
`SELECT
|