@duckdb/node-api 1.1.2-alpha.1
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/LICENSE +7 -0
- package/README.md +5 -0
- package/lib/DuckDBAppender.d.ts +36 -0
- package/lib/DuckDBAppender.js +106 -0
- package/lib/DuckDBConnection.d.ts +18 -0
- package/lib/DuckDBConnection.js +51 -0
- package/lib/DuckDBDataChunk.d.ts +13 -0
- package/lib/DuckDBDataChunk.js +37 -0
- package/lib/DuckDBExtractedStatements.d.ts +11 -0
- package/lib/DuckDBExtractedStatements.js +28 -0
- package/lib/DuckDBInstance.d.ts +9 -0
- package/lib/DuckDBInstance.js +39 -0
- package/lib/DuckDBLogicalType.d.ts +70 -0
- package/lib/DuckDBLogicalType.js +292 -0
- package/lib/DuckDBPendingResult.d.ts +14 -0
- package/lib/DuckDBPendingResult.js +43 -0
- package/lib/DuckDBPreparedStatement.d.ts +40 -0
- package/lib/DuckDBPreparedStatement.js +116 -0
- package/lib/DuckDBResult.d.ts +20 -0
- package/lib/DuckDBResult.js +46 -0
- package/lib/DuckDBType.d.ts +164 -0
- package/lib/DuckDBType.js +279 -0
- package/lib/DuckDBTypeId.d.ts +39 -0
- package/lib/DuckDBTypeId.js +44 -0
- package/lib/DuckDBValue.d.ts +8 -0
- package/lib/DuckDBValue.js +2 -0
- package/lib/DuckDBVector.d.ts +491 -0
- package/lib/DuckDBVector.js +1676 -0
- package/lib/configurationOptionDescriptions.d.ts +1 -0
- package/lib/configurationOptionDescriptions.js +16 -0
- package/lib/enums.d.ts +4 -0
- package/lib/enums.js +2 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.js +32 -0
- package/lib/version.d.ts +1 -0
- package/lib/version.js +10 -0
- package/package.json +13 -0
|
@@ -0,0 +1,292 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DuckDBUnionLogicalType = exports.DuckDBArrayLogicalType = exports.DuckDBMapLogicalType = exports.DuckDBStructLogicalType = exports.DuckDBListLogicalType = exports.DuckDBEnumLogicalType = exports.DuckDBDecimalLogicalType = exports.DuckDBLogicalType = void 0;
|
|
7
|
+
const node_bindings_1 = __importDefault(require("@duckdb/node-bindings"));
|
|
8
|
+
const DuckDBType_1 = require("./DuckDBType");
|
|
9
|
+
const DuckDBTypeId_1 = require("./DuckDBTypeId");
|
|
10
|
+
class DuckDBLogicalType {
|
|
11
|
+
logical_type;
|
|
12
|
+
constructor(logical_type) {
|
|
13
|
+
this.logical_type = logical_type;
|
|
14
|
+
}
|
|
15
|
+
static consumeAsType(logical_type) {
|
|
16
|
+
const logicalType = DuckDBLogicalType.create(logical_type);
|
|
17
|
+
const type = logicalType.asType();
|
|
18
|
+
logicalType.dispose();
|
|
19
|
+
return type;
|
|
20
|
+
}
|
|
21
|
+
static create(logical_type) {
|
|
22
|
+
switch (node_bindings_1.default.get_type_id(logical_type)) {
|
|
23
|
+
case node_bindings_1.default.Type.DECIMAL:
|
|
24
|
+
return new DuckDBDecimalLogicalType(logical_type);
|
|
25
|
+
case node_bindings_1.default.Type.ENUM:
|
|
26
|
+
return new DuckDBEnumLogicalType(logical_type);
|
|
27
|
+
case node_bindings_1.default.Type.LIST:
|
|
28
|
+
return new DuckDBListLogicalType(logical_type);
|
|
29
|
+
case node_bindings_1.default.Type.STRUCT:
|
|
30
|
+
return new DuckDBStructLogicalType(logical_type);
|
|
31
|
+
case node_bindings_1.default.Type.MAP:
|
|
32
|
+
return new DuckDBMapLogicalType(logical_type);
|
|
33
|
+
case node_bindings_1.default.Type.ARRAY:
|
|
34
|
+
return new DuckDBArrayLogicalType(logical_type);
|
|
35
|
+
case node_bindings_1.default.Type.UNION:
|
|
36
|
+
return new DuckDBUnionLogicalType(logical_type);
|
|
37
|
+
default:
|
|
38
|
+
return new DuckDBLogicalType(logical_type);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
static createDecimal(width, scale) {
|
|
42
|
+
return new DuckDBDecimalLogicalType(node_bindings_1.default.create_decimal_type(width, scale));
|
|
43
|
+
}
|
|
44
|
+
static createEnum(member_names) {
|
|
45
|
+
return new DuckDBEnumLogicalType(node_bindings_1.default.create_enum_type(member_names));
|
|
46
|
+
}
|
|
47
|
+
static createList(valueType) {
|
|
48
|
+
return new DuckDBListLogicalType(node_bindings_1.default.create_list_type(valueType.logical_type));
|
|
49
|
+
}
|
|
50
|
+
static createStruct(entries) {
|
|
51
|
+
const member_types = [];
|
|
52
|
+
const member_names = [];
|
|
53
|
+
for (const entry of entries) {
|
|
54
|
+
member_types.push(entry.valueType.logical_type);
|
|
55
|
+
member_names.push(entry.name);
|
|
56
|
+
}
|
|
57
|
+
return new DuckDBStructLogicalType(node_bindings_1.default.create_struct_type(member_types, member_names));
|
|
58
|
+
}
|
|
59
|
+
static createMap(keyType, valueType) {
|
|
60
|
+
return new DuckDBMapLogicalType(node_bindings_1.default.create_map_type(keyType.logical_type, valueType.logical_type));
|
|
61
|
+
}
|
|
62
|
+
static createArray(valueType, length) {
|
|
63
|
+
return new DuckDBArrayLogicalType(node_bindings_1.default.create_array_type(valueType.logical_type, length));
|
|
64
|
+
}
|
|
65
|
+
static createUnion(alternatives) {
|
|
66
|
+
const member_types = [];
|
|
67
|
+
const member_names = [];
|
|
68
|
+
for (const alternative of alternatives) {
|
|
69
|
+
member_types.push(alternative.valueType.logical_type);
|
|
70
|
+
member_names.push(alternative.tag);
|
|
71
|
+
}
|
|
72
|
+
return new DuckDBUnionLogicalType(node_bindings_1.default.create_union_type(member_types, member_names));
|
|
73
|
+
}
|
|
74
|
+
dispose() {
|
|
75
|
+
node_bindings_1.default.destroy_logical_type(this.logical_type);
|
|
76
|
+
}
|
|
77
|
+
get typeId() {
|
|
78
|
+
return node_bindings_1.default.get_type_id(this.logical_type);
|
|
79
|
+
}
|
|
80
|
+
get alias() {
|
|
81
|
+
return node_bindings_1.default.logical_type_get_alias(this.logical_type);
|
|
82
|
+
}
|
|
83
|
+
set alias(newAlias) {
|
|
84
|
+
node_bindings_1.default.logical_type_set_alias(this.logical_type, newAlias);
|
|
85
|
+
}
|
|
86
|
+
asType() {
|
|
87
|
+
switch (this.typeId) {
|
|
88
|
+
case DuckDBTypeId_1.DuckDBTypeId.BOOLEAN:
|
|
89
|
+
return DuckDBType_1.DuckDBBooleanType.instance;
|
|
90
|
+
case DuckDBTypeId_1.DuckDBTypeId.TINYINT:
|
|
91
|
+
return DuckDBType_1.DuckDBTinyIntType.instance;
|
|
92
|
+
case DuckDBTypeId_1.DuckDBTypeId.SMALLINT:
|
|
93
|
+
return DuckDBType_1.DuckDBSmallIntType.instance;
|
|
94
|
+
case DuckDBTypeId_1.DuckDBTypeId.INTEGER:
|
|
95
|
+
return DuckDBType_1.DuckDBIntegerType.instance;
|
|
96
|
+
case DuckDBTypeId_1.DuckDBTypeId.BIGINT:
|
|
97
|
+
return DuckDBType_1.DuckDBBigIntType.instance;
|
|
98
|
+
case DuckDBTypeId_1.DuckDBTypeId.UTINYINT:
|
|
99
|
+
return DuckDBType_1.DuckDBUTinyIntType.instance;
|
|
100
|
+
case DuckDBTypeId_1.DuckDBTypeId.USMALLINT:
|
|
101
|
+
return DuckDBType_1.DuckDBUSmallIntType.instance;
|
|
102
|
+
case DuckDBTypeId_1.DuckDBTypeId.UINTEGER:
|
|
103
|
+
return DuckDBType_1.DuckDBUIntegerType.instance;
|
|
104
|
+
case DuckDBTypeId_1.DuckDBTypeId.UBIGINT:
|
|
105
|
+
return DuckDBType_1.DuckDBUBigIntType.instance;
|
|
106
|
+
case DuckDBTypeId_1.DuckDBTypeId.FLOAT:
|
|
107
|
+
return DuckDBType_1.DuckDBFloatType.instance;
|
|
108
|
+
case DuckDBTypeId_1.DuckDBTypeId.DOUBLE:
|
|
109
|
+
return DuckDBType_1.DuckDBDoubleType.instance;
|
|
110
|
+
case DuckDBTypeId_1.DuckDBTypeId.TIMESTAMP:
|
|
111
|
+
return DuckDBType_1.DuckDBTimestampType.instance;
|
|
112
|
+
case DuckDBTypeId_1.DuckDBTypeId.DATE:
|
|
113
|
+
return DuckDBType_1.DuckDBDateType.instance;
|
|
114
|
+
case DuckDBTypeId_1.DuckDBTypeId.TIME:
|
|
115
|
+
return DuckDBType_1.DuckDBTimeType.instance;
|
|
116
|
+
case DuckDBTypeId_1.DuckDBTypeId.INTERVAL:
|
|
117
|
+
return DuckDBType_1.DuckDBIntervalType.instance;
|
|
118
|
+
case DuckDBTypeId_1.DuckDBTypeId.HUGEINT:
|
|
119
|
+
return DuckDBType_1.DuckDBHugeIntType.instance;
|
|
120
|
+
case DuckDBTypeId_1.DuckDBTypeId.UHUGEINT:
|
|
121
|
+
return DuckDBType_1.DuckDBUHugeIntType.instance;
|
|
122
|
+
case DuckDBTypeId_1.DuckDBTypeId.VARCHAR:
|
|
123
|
+
return DuckDBType_1.DuckDBVarCharType.instance;
|
|
124
|
+
case DuckDBTypeId_1.DuckDBTypeId.BLOB:
|
|
125
|
+
return DuckDBType_1.DuckDBBlobType.instance;
|
|
126
|
+
case DuckDBTypeId_1.DuckDBTypeId.DECIMAL:
|
|
127
|
+
throw new Error('Expected override');
|
|
128
|
+
case DuckDBTypeId_1.DuckDBTypeId.TIMESTAMP_S:
|
|
129
|
+
return DuckDBType_1.DuckDBTimestampSecondsType.instance;
|
|
130
|
+
case DuckDBTypeId_1.DuckDBTypeId.TIMESTAMP_MS:
|
|
131
|
+
return DuckDBType_1.DuckDBTimestampMillisecondsType.instance;
|
|
132
|
+
case DuckDBTypeId_1.DuckDBTypeId.TIMESTAMP_NS:
|
|
133
|
+
return DuckDBType_1.DuckDBTimestampNanosecondsType.instance;
|
|
134
|
+
case DuckDBTypeId_1.DuckDBTypeId.ENUM:
|
|
135
|
+
throw new Error('Expected override');
|
|
136
|
+
case DuckDBTypeId_1.DuckDBTypeId.LIST:
|
|
137
|
+
throw new Error('Expected override');
|
|
138
|
+
case DuckDBTypeId_1.DuckDBTypeId.STRUCT:
|
|
139
|
+
throw new Error('Expected override');
|
|
140
|
+
case DuckDBTypeId_1.DuckDBTypeId.MAP:
|
|
141
|
+
throw new Error('Expected override');
|
|
142
|
+
case DuckDBTypeId_1.DuckDBTypeId.ARRAY:
|
|
143
|
+
throw new Error('Expected override');
|
|
144
|
+
case DuckDBTypeId_1.DuckDBTypeId.UUID:
|
|
145
|
+
return DuckDBType_1.DuckDBUUIDType.instance;
|
|
146
|
+
case DuckDBTypeId_1.DuckDBTypeId.UNION:
|
|
147
|
+
throw new Error('Expected override');
|
|
148
|
+
case DuckDBTypeId_1.DuckDBTypeId.BIT:
|
|
149
|
+
return DuckDBType_1.DuckDBBitType.instance;
|
|
150
|
+
case DuckDBTypeId_1.DuckDBTypeId.TIME_TZ:
|
|
151
|
+
return DuckDBType_1.DuckDBTimeTZType.instance;
|
|
152
|
+
case DuckDBTypeId_1.DuckDBTypeId.TIMESTAMP_TZ:
|
|
153
|
+
return DuckDBType_1.DuckDBTimestampTZType.instance;
|
|
154
|
+
case DuckDBTypeId_1.DuckDBTypeId.ANY:
|
|
155
|
+
return DuckDBType_1.DuckDBAnyType.instance;
|
|
156
|
+
case DuckDBTypeId_1.DuckDBTypeId.VARINT:
|
|
157
|
+
return DuckDBType_1.DuckDBVarIntType.instance;
|
|
158
|
+
case DuckDBTypeId_1.DuckDBTypeId.SQLNULL:
|
|
159
|
+
return DuckDBType_1.DuckDBSQLNullType.instance;
|
|
160
|
+
default:
|
|
161
|
+
throw new Error(`Unexpected type id: ${this.typeId}`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
exports.DuckDBLogicalType = DuckDBLogicalType;
|
|
166
|
+
class DuckDBDecimalLogicalType extends DuckDBLogicalType {
|
|
167
|
+
get width() {
|
|
168
|
+
return node_bindings_1.default.decimal_width(this.logical_type);
|
|
169
|
+
}
|
|
170
|
+
get scale() {
|
|
171
|
+
return node_bindings_1.default.decimal_scale(this.logical_type);
|
|
172
|
+
}
|
|
173
|
+
get internalTypeId() {
|
|
174
|
+
return node_bindings_1.default.decimal_internal_type(this.logical_type);
|
|
175
|
+
}
|
|
176
|
+
asType() {
|
|
177
|
+
return new DuckDBType_1.DuckDBDecimalType(this.width, this.scale);
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
exports.DuckDBDecimalLogicalType = DuckDBDecimalLogicalType;
|
|
181
|
+
class DuckDBEnumLogicalType extends DuckDBLogicalType {
|
|
182
|
+
get valueCount() {
|
|
183
|
+
return node_bindings_1.default.enum_dictionary_size(this.logical_type);
|
|
184
|
+
}
|
|
185
|
+
value(index) {
|
|
186
|
+
return node_bindings_1.default.enum_dictionary_value(this.logical_type, index);
|
|
187
|
+
}
|
|
188
|
+
values() {
|
|
189
|
+
const values = [];
|
|
190
|
+
const count = this.valueCount;
|
|
191
|
+
for (let i = 0; i < count; i++) {
|
|
192
|
+
values.push(this.value(i));
|
|
193
|
+
}
|
|
194
|
+
return values;
|
|
195
|
+
}
|
|
196
|
+
get internalTypeId() {
|
|
197
|
+
return node_bindings_1.default.enum_internal_type(this.logical_type);
|
|
198
|
+
}
|
|
199
|
+
asType() {
|
|
200
|
+
return new DuckDBType_1.DuckDBEnumType(this.values(), this.internalTypeId);
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
exports.DuckDBEnumLogicalType = DuckDBEnumLogicalType;
|
|
204
|
+
class DuckDBListLogicalType extends DuckDBLogicalType {
|
|
205
|
+
get valueType() {
|
|
206
|
+
return DuckDBLogicalType.create(node_bindings_1.default.list_type_child_type(this.logical_type));
|
|
207
|
+
}
|
|
208
|
+
asType() {
|
|
209
|
+
return new DuckDBType_1.DuckDBListType(this.valueType.asType());
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
exports.DuckDBListLogicalType = DuckDBListLogicalType;
|
|
213
|
+
class DuckDBStructLogicalType extends DuckDBLogicalType {
|
|
214
|
+
get entryCount() {
|
|
215
|
+
return node_bindings_1.default.struct_type_child_count(this.logical_type);
|
|
216
|
+
}
|
|
217
|
+
entryName(index) {
|
|
218
|
+
return node_bindings_1.default.struct_type_child_name(this.logical_type, index);
|
|
219
|
+
}
|
|
220
|
+
entryValueType(index) {
|
|
221
|
+
return DuckDBLogicalType.create(node_bindings_1.default.struct_type_child_type(this.logical_type, index));
|
|
222
|
+
}
|
|
223
|
+
entries() {
|
|
224
|
+
const entries = [];
|
|
225
|
+
const count = this.entryCount;
|
|
226
|
+
for (let i = 0; i < count; i++) {
|
|
227
|
+
const name = this.entryName(i);
|
|
228
|
+
const valueType = this.entryValueType(i);
|
|
229
|
+
entries.push({ name, valueType });
|
|
230
|
+
}
|
|
231
|
+
return entries;
|
|
232
|
+
}
|
|
233
|
+
asType() {
|
|
234
|
+
return new DuckDBType_1.DuckDBStructType(this.entries().map(({ name, valueType }) => ({
|
|
235
|
+
name,
|
|
236
|
+
valueType: valueType.asType(),
|
|
237
|
+
})));
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
exports.DuckDBStructLogicalType = DuckDBStructLogicalType;
|
|
241
|
+
class DuckDBMapLogicalType extends DuckDBLogicalType {
|
|
242
|
+
get keyType() {
|
|
243
|
+
return DuckDBLogicalType.create(node_bindings_1.default.map_type_key_type(this.logical_type));
|
|
244
|
+
}
|
|
245
|
+
get valueType() {
|
|
246
|
+
return DuckDBLogicalType.create(node_bindings_1.default.map_type_value_type(this.logical_type));
|
|
247
|
+
}
|
|
248
|
+
asType() {
|
|
249
|
+
return new DuckDBType_1.DuckDBMapType(this.keyType.asType(), this.valueType.asType());
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
exports.DuckDBMapLogicalType = DuckDBMapLogicalType;
|
|
253
|
+
class DuckDBArrayLogicalType extends DuckDBLogicalType {
|
|
254
|
+
get valueType() {
|
|
255
|
+
return DuckDBLogicalType.create(node_bindings_1.default.array_type_child_type(this.logical_type));
|
|
256
|
+
}
|
|
257
|
+
get length() {
|
|
258
|
+
return node_bindings_1.default.array_type_array_size(this.logical_type);
|
|
259
|
+
}
|
|
260
|
+
asType() {
|
|
261
|
+
return new DuckDBType_1.DuckDBArrayType(this.valueType.asType(), this.length);
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
exports.DuckDBArrayLogicalType = DuckDBArrayLogicalType;
|
|
265
|
+
class DuckDBUnionLogicalType extends DuckDBLogicalType {
|
|
266
|
+
get alternativeCount() {
|
|
267
|
+
return node_bindings_1.default.union_type_member_count(this.logical_type);
|
|
268
|
+
}
|
|
269
|
+
alternativeTag(index) {
|
|
270
|
+
return node_bindings_1.default.union_type_member_name(this.logical_type, index);
|
|
271
|
+
}
|
|
272
|
+
alternativeValueType(index) {
|
|
273
|
+
return DuckDBLogicalType.create(node_bindings_1.default.union_type_member_type(this.logical_type, index));
|
|
274
|
+
}
|
|
275
|
+
alternatives() {
|
|
276
|
+
const alternatives = [];
|
|
277
|
+
const count = this.alternativeCount;
|
|
278
|
+
for (let i = 0; i < count; i++) {
|
|
279
|
+
const tag = this.alternativeTag(i);
|
|
280
|
+
const valueType = this.alternativeValueType(i);
|
|
281
|
+
alternatives.push({ tag, valueType });
|
|
282
|
+
}
|
|
283
|
+
return alternatives;
|
|
284
|
+
}
|
|
285
|
+
asType() {
|
|
286
|
+
return new DuckDBType_1.DuckDBUnionType(this.alternatives().map(({ tag, valueType }) => ({
|
|
287
|
+
tag,
|
|
288
|
+
valueType: valueType.asType(),
|
|
289
|
+
})));
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
exports.DuckDBUnionLogicalType = DuckDBUnionLogicalType;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import duckdb from '@duckdb/node-bindings';
|
|
2
|
+
import { DuckDBResult } from './DuckDBResult';
|
|
3
|
+
export declare enum DuckDBPendingResultState {
|
|
4
|
+
RESULT_READY = 0,
|
|
5
|
+
RESULT_NOT_READY = 1,
|
|
6
|
+
NO_TASKS_AVAILABLE = 3
|
|
7
|
+
}
|
|
8
|
+
export declare class DuckDBPendingResult {
|
|
9
|
+
private readonly pending_result;
|
|
10
|
+
constructor(pending_result: duckdb.PendingResult);
|
|
11
|
+
dispose(): void;
|
|
12
|
+
runTask(): DuckDBPendingResultState;
|
|
13
|
+
getResult(): Promise<DuckDBResult>;
|
|
14
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DuckDBPendingResult = exports.DuckDBPendingResultState = void 0;
|
|
7
|
+
const node_bindings_1 = __importDefault(require("@duckdb/node-bindings"));
|
|
8
|
+
const DuckDBResult_1 = require("./DuckDBResult");
|
|
9
|
+
// Values match similar enum in C API.
|
|
10
|
+
var DuckDBPendingResultState;
|
|
11
|
+
(function (DuckDBPendingResultState) {
|
|
12
|
+
DuckDBPendingResultState[DuckDBPendingResultState["RESULT_READY"] = 0] = "RESULT_READY";
|
|
13
|
+
DuckDBPendingResultState[DuckDBPendingResultState["RESULT_NOT_READY"] = 1] = "RESULT_NOT_READY";
|
|
14
|
+
DuckDBPendingResultState[DuckDBPendingResultState["NO_TASKS_AVAILABLE"] = 3] = "NO_TASKS_AVAILABLE";
|
|
15
|
+
})(DuckDBPendingResultState || (exports.DuckDBPendingResultState = DuckDBPendingResultState = {}));
|
|
16
|
+
class DuckDBPendingResult {
|
|
17
|
+
pending_result;
|
|
18
|
+
constructor(pending_result) {
|
|
19
|
+
this.pending_result = pending_result;
|
|
20
|
+
}
|
|
21
|
+
dispose() {
|
|
22
|
+
node_bindings_1.default.destroy_pending(this.pending_result);
|
|
23
|
+
}
|
|
24
|
+
runTask() {
|
|
25
|
+
const pending_state = node_bindings_1.default.pending_execute_task(this.pending_result);
|
|
26
|
+
switch (pending_state) {
|
|
27
|
+
case node_bindings_1.default.PendingState.RESULT_READY:
|
|
28
|
+
return DuckDBPendingResultState.RESULT_READY;
|
|
29
|
+
case node_bindings_1.default.PendingState.RESULT_NOT_READY:
|
|
30
|
+
return DuckDBPendingResultState.RESULT_NOT_READY;
|
|
31
|
+
case node_bindings_1.default.PendingState.ERROR:
|
|
32
|
+
throw new Error(`Failure running pending result task: ${node_bindings_1.default.pending_error(this.pending_result)}`);
|
|
33
|
+
case node_bindings_1.default.PendingState.NO_TASKS_AVAILABLE:
|
|
34
|
+
return DuckDBPendingResultState.NO_TASKS_AVAILABLE;
|
|
35
|
+
default:
|
|
36
|
+
throw new Error(`Unexpected pending state: ${pending_state}`);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async getResult() {
|
|
40
|
+
return new DuckDBResult_1.DuckDBResult(await node_bindings_1.default.execute_pending(this.pending_result));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
exports.DuckDBPendingResult = DuckDBPendingResult;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import duckdb from '@duckdb/node-bindings';
|
|
2
|
+
import { DuckDBPendingResult } from './DuckDBPendingResult';
|
|
3
|
+
import { DuckDBResult } from './DuckDBResult';
|
|
4
|
+
import { DuckDBTypeId } from './DuckDBTypeId';
|
|
5
|
+
import { Date_, Decimal, Interval, Time, Timestamp } from './DuckDBValue';
|
|
6
|
+
import { StatementType } from './enums';
|
|
7
|
+
export declare class DuckDBPreparedStatement {
|
|
8
|
+
private readonly prepared_statement;
|
|
9
|
+
constructor(prepared_statement: duckdb.PreparedStatement);
|
|
10
|
+
dispose(): void;
|
|
11
|
+
get statementType(): StatementType;
|
|
12
|
+
get parameterCount(): number;
|
|
13
|
+
parameterName(parameterIndex: number): string;
|
|
14
|
+
parameterTypeId(parameterIndex: number): DuckDBTypeId;
|
|
15
|
+
clearBindings(): void;
|
|
16
|
+
parameterIndex(parameterName: string): number;
|
|
17
|
+
bindBoolean(parameterIndex: number, value: boolean): void;
|
|
18
|
+
bindTinyInt(parameterIndex: number, value: number): void;
|
|
19
|
+
bindSmallInt(parameterIndex: number, value: number): void;
|
|
20
|
+
bindInteger(parameterIndex: number, value: number): void;
|
|
21
|
+
bindBigInt(parameterIndex: number, value: bigint): void;
|
|
22
|
+
bindHugeInt(parameterIndex: number, value: bigint): void;
|
|
23
|
+
bindUTinyInt(parameterIndex: number, value: number): void;
|
|
24
|
+
bindUSmallInt(parameterIndex: number, value: number): void;
|
|
25
|
+
bindUInteger(parameterIndex: number, value: number): void;
|
|
26
|
+
bindUBigInt(parameterIndex: number, value: bigint): void;
|
|
27
|
+
bindUHugeInt(parameterIndex: number, value: bigint): void;
|
|
28
|
+
bindDecimal(parameterIndex: number, value: Decimal): void;
|
|
29
|
+
bindFloat(parameterIndex: number, value: number): void;
|
|
30
|
+
bindDouble(parameterIndex: number, value: number): void;
|
|
31
|
+
bindDate(parameterIndex: number, value: Date_): void;
|
|
32
|
+
bindTime(parameterIndex: number, value: Time): void;
|
|
33
|
+
bindTimestamp(parameterIndex: number, value: Timestamp): void;
|
|
34
|
+
bindInterval(parameterIndex: number, value: Interval): void;
|
|
35
|
+
bindVarchar(parameterIndex: number, value: string): void;
|
|
36
|
+
bindBlob(parameterIndex: number, value: Uint8Array): void;
|
|
37
|
+
bindNull(parameterIndex: number): void;
|
|
38
|
+
run(): Promise<DuckDBResult>;
|
|
39
|
+
start(): DuckDBPendingResult;
|
|
40
|
+
}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DuckDBPreparedStatement = void 0;
|
|
7
|
+
const node_bindings_1 = __importDefault(require("@duckdb/node-bindings"));
|
|
8
|
+
const DuckDBPendingResult_1 = require("./DuckDBPendingResult");
|
|
9
|
+
const DuckDBResult_1 = require("./DuckDBResult");
|
|
10
|
+
class DuckDBPreparedStatement {
|
|
11
|
+
prepared_statement;
|
|
12
|
+
constructor(prepared_statement) {
|
|
13
|
+
this.prepared_statement = prepared_statement;
|
|
14
|
+
}
|
|
15
|
+
dispose() {
|
|
16
|
+
node_bindings_1.default.destroy_prepare(this.prepared_statement);
|
|
17
|
+
}
|
|
18
|
+
get statementType() {
|
|
19
|
+
return node_bindings_1.default.prepared_statement_type(this.prepared_statement);
|
|
20
|
+
}
|
|
21
|
+
get parameterCount() {
|
|
22
|
+
return node_bindings_1.default.nparams(this.prepared_statement);
|
|
23
|
+
}
|
|
24
|
+
parameterName(parameterIndex) {
|
|
25
|
+
return node_bindings_1.default.parameter_name(this.prepared_statement, parameterIndex);
|
|
26
|
+
}
|
|
27
|
+
parameterTypeId(parameterIndex) {
|
|
28
|
+
return node_bindings_1.default.param_type(this.prepared_statement, parameterIndex);
|
|
29
|
+
}
|
|
30
|
+
clearBindings() {
|
|
31
|
+
node_bindings_1.default.clear_bindings(this.prepared_statement);
|
|
32
|
+
}
|
|
33
|
+
parameterIndex(parameterName) {
|
|
34
|
+
return node_bindings_1.default.bind_parameter_index(this.prepared_statement, parameterName);
|
|
35
|
+
}
|
|
36
|
+
bindBoolean(parameterIndex, value) {
|
|
37
|
+
node_bindings_1.default.bind_boolean(this.prepared_statement, parameterIndex, value);
|
|
38
|
+
}
|
|
39
|
+
bindTinyInt(parameterIndex, value) {
|
|
40
|
+
node_bindings_1.default.bind_int8(this.prepared_statement, parameterIndex, value);
|
|
41
|
+
}
|
|
42
|
+
bindSmallInt(parameterIndex, value) {
|
|
43
|
+
node_bindings_1.default.bind_int16(this.prepared_statement, parameterIndex, value);
|
|
44
|
+
}
|
|
45
|
+
bindInteger(parameterIndex, value) {
|
|
46
|
+
node_bindings_1.default.bind_int32(this.prepared_statement, parameterIndex, value);
|
|
47
|
+
}
|
|
48
|
+
bindBigInt(parameterIndex, value) {
|
|
49
|
+
node_bindings_1.default.bind_int64(this.prepared_statement, parameterIndex, value);
|
|
50
|
+
}
|
|
51
|
+
bindHugeInt(parameterIndex, value) {
|
|
52
|
+
node_bindings_1.default.bind_hugeint(this.prepared_statement, parameterIndex, value);
|
|
53
|
+
}
|
|
54
|
+
bindUTinyInt(parameterIndex, value) {
|
|
55
|
+
node_bindings_1.default.bind_uint8(this.prepared_statement, parameterIndex, value);
|
|
56
|
+
}
|
|
57
|
+
bindUSmallInt(parameterIndex, value) {
|
|
58
|
+
node_bindings_1.default.bind_uint16(this.prepared_statement, parameterIndex, value);
|
|
59
|
+
}
|
|
60
|
+
bindUInteger(parameterIndex, value) {
|
|
61
|
+
node_bindings_1.default.bind_uint32(this.prepared_statement, parameterIndex, value);
|
|
62
|
+
}
|
|
63
|
+
bindUBigInt(parameterIndex, value) {
|
|
64
|
+
node_bindings_1.default.bind_uint64(this.prepared_statement, parameterIndex, value);
|
|
65
|
+
}
|
|
66
|
+
bindUHugeInt(parameterIndex, value) {
|
|
67
|
+
node_bindings_1.default.bind_uhugeint(this.prepared_statement, parameterIndex, value);
|
|
68
|
+
}
|
|
69
|
+
bindDecimal(parameterIndex, value) {
|
|
70
|
+
node_bindings_1.default.bind_decimal(this.prepared_statement, parameterIndex, value);
|
|
71
|
+
}
|
|
72
|
+
bindFloat(parameterIndex, value) {
|
|
73
|
+
node_bindings_1.default.bind_float(this.prepared_statement, parameterIndex, value);
|
|
74
|
+
}
|
|
75
|
+
bindDouble(parameterIndex, value) {
|
|
76
|
+
node_bindings_1.default.bind_double(this.prepared_statement, parameterIndex, value);
|
|
77
|
+
}
|
|
78
|
+
bindDate(parameterIndex, value) {
|
|
79
|
+
node_bindings_1.default.bind_date(this.prepared_statement, parameterIndex, value);
|
|
80
|
+
}
|
|
81
|
+
bindTime(parameterIndex, value) {
|
|
82
|
+
node_bindings_1.default.bind_time(this.prepared_statement, parameterIndex, value);
|
|
83
|
+
}
|
|
84
|
+
bindTimestamp(parameterIndex, value) {
|
|
85
|
+
node_bindings_1.default.bind_timestamp(this.prepared_statement, parameterIndex, value);
|
|
86
|
+
}
|
|
87
|
+
// TODO: bind TIMESTAMPS_S/_MS/_NS?
|
|
88
|
+
// TODO: bind TIME_TZ/TIMESTAMP_TZ?
|
|
89
|
+
bindInterval(parameterIndex, value) {
|
|
90
|
+
node_bindings_1.default.bind_interval(this.prepared_statement, parameterIndex, value);
|
|
91
|
+
}
|
|
92
|
+
bindVarchar(parameterIndex, value) {
|
|
93
|
+
node_bindings_1.default.bind_varchar(this.prepared_statement, parameterIndex, value);
|
|
94
|
+
}
|
|
95
|
+
bindBlob(parameterIndex, value) {
|
|
96
|
+
node_bindings_1.default.bind_blob(this.prepared_statement, parameterIndex, value);
|
|
97
|
+
}
|
|
98
|
+
// TODO: bind ENUM?
|
|
99
|
+
// TODO: bind nested types? (ARRAY, LIST, STRUCT, MAP, UNION) (using bindValue?)
|
|
100
|
+
// TODO: bind UUID?
|
|
101
|
+
// TODO: bind BIT?
|
|
102
|
+
bindNull(parameterIndex) {
|
|
103
|
+
node_bindings_1.default.bind_null(this.prepared_statement, parameterIndex);
|
|
104
|
+
}
|
|
105
|
+
// TODO: expose bindValue, or implement bindList, bindStruct, etc.?
|
|
106
|
+
// public bindValue(parameterIndex: number, value: Value) {
|
|
107
|
+
// duckdb.bind_value(this.prepared_statement, parameterIndex, value);
|
|
108
|
+
// }
|
|
109
|
+
async run() {
|
|
110
|
+
return new DuckDBResult_1.DuckDBResult(await node_bindings_1.default.execute_prepared(this.prepared_statement));
|
|
111
|
+
}
|
|
112
|
+
start() {
|
|
113
|
+
return new DuckDBPendingResult_1.DuckDBPendingResult(node_bindings_1.default.pending_prepared(this.prepared_statement));
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
exports.DuckDBPreparedStatement = DuckDBPreparedStatement;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import duckdb from '@duckdb/node-bindings';
|
|
2
|
+
import { DuckDBDataChunk } from './DuckDBDataChunk';
|
|
3
|
+
import { DuckDBLogicalType } from './DuckDBLogicalType';
|
|
4
|
+
import { DuckDBType } from './DuckDBType';
|
|
5
|
+
import { DuckDBTypeId } from './DuckDBTypeId';
|
|
6
|
+
import { ResultReturnType, StatementType } from './enums';
|
|
7
|
+
export declare class DuckDBResult {
|
|
8
|
+
private readonly result;
|
|
9
|
+
constructor(result: duckdb.Result);
|
|
10
|
+
dispose(): void;
|
|
11
|
+
get returnType(): ResultReturnType;
|
|
12
|
+
get statementType(): StatementType;
|
|
13
|
+
get columnCount(): number;
|
|
14
|
+
columnName(columnIndex: number): string;
|
|
15
|
+
columnTypeId(columnIndex: number): DuckDBTypeId;
|
|
16
|
+
columnLogicalType(columnIndex: number): DuckDBLogicalType;
|
|
17
|
+
columnType(columnIndex: number): DuckDBType;
|
|
18
|
+
get rowsChanged(): number;
|
|
19
|
+
fetchChunk(): Promise<DuckDBDataChunk>;
|
|
20
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.DuckDBResult = void 0;
|
|
7
|
+
const node_bindings_1 = __importDefault(require("@duckdb/node-bindings"));
|
|
8
|
+
const DuckDBDataChunk_1 = require("./DuckDBDataChunk");
|
|
9
|
+
const DuckDBLogicalType_1 = require("./DuckDBLogicalType");
|
|
10
|
+
class DuckDBResult {
|
|
11
|
+
result;
|
|
12
|
+
constructor(result) {
|
|
13
|
+
this.result = result;
|
|
14
|
+
}
|
|
15
|
+
dispose() {
|
|
16
|
+
node_bindings_1.default.destroy_result(this.result);
|
|
17
|
+
}
|
|
18
|
+
get returnType() {
|
|
19
|
+
return node_bindings_1.default.result_return_type(this.result);
|
|
20
|
+
}
|
|
21
|
+
get statementType() {
|
|
22
|
+
return node_bindings_1.default.result_statement_type(this.result);
|
|
23
|
+
}
|
|
24
|
+
get columnCount() {
|
|
25
|
+
return node_bindings_1.default.column_count(this.result);
|
|
26
|
+
}
|
|
27
|
+
columnName(columnIndex) {
|
|
28
|
+
return node_bindings_1.default.column_name(this.result, columnIndex);
|
|
29
|
+
}
|
|
30
|
+
columnTypeId(columnIndex) {
|
|
31
|
+
return node_bindings_1.default.column_type(this.result, columnIndex);
|
|
32
|
+
}
|
|
33
|
+
columnLogicalType(columnIndex) {
|
|
34
|
+
return DuckDBLogicalType_1.DuckDBLogicalType.create(node_bindings_1.default.column_logical_type(this.result, columnIndex));
|
|
35
|
+
}
|
|
36
|
+
columnType(columnIndex) {
|
|
37
|
+
return DuckDBLogicalType_1.DuckDBLogicalType.consumeAsType(node_bindings_1.default.column_logical_type(this.result, columnIndex));
|
|
38
|
+
}
|
|
39
|
+
get rowsChanged() {
|
|
40
|
+
return node_bindings_1.default.rows_changed(this.result);
|
|
41
|
+
}
|
|
42
|
+
async fetchChunk() {
|
|
43
|
+
return new DuckDBDataChunk_1.DuckDBDataChunk(await node_bindings_1.default.fetch_chunk(this.result));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
exports.DuckDBResult = DuckDBResult;
|