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/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