@haybarn/node-api 1.5.6-rc1 → 2.0.0-rc5

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.
Files changed (285) hide show
  1. package/README.md +315 -21
  2. package/lib/DuckDBAppender.d.ts +8 -2
  3. package/lib/DuckDBAppender.js +19 -1
  4. package/lib/DuckDBConnection.d.ts +2 -0
  5. package/lib/DuckDBConnection.js +4 -1
  6. package/lib/DuckDBDataChunk.d.ts +30 -0
  7. package/lib/DuckDBDataChunk.js +94 -1
  8. package/lib/DuckDBDataChunkWriter.d.ts +74 -0
  9. package/lib/DuckDBDataChunkWriter.js +109 -0
  10. package/lib/DuckDBLogicalType.d.ts +5 -1
  11. package/lib/DuckDBLogicalType.js +18 -1
  12. package/lib/DuckDBMaterializedResult.d.ts +8 -1
  13. package/lib/DuckDBMaterializedResult.js +22 -2
  14. package/lib/DuckDBPendingResult.d.ts +16 -1
  15. package/lib/DuckDBPendingResult.js +19 -2
  16. package/lib/DuckDBPreparedStatement.d.ts +4 -1
  17. package/lib/DuckDBPreparedStatement.js +17 -4
  18. package/lib/DuckDBResult.d.ts +21 -1
  19. package/lib/DuckDBResult.js +87 -5
  20. package/lib/DuckDBResultReader.d.ts +5 -0
  21. package/lib/DuckDBResultReader.js +9 -2
  22. package/lib/DuckDBScalarFunction.d.ts +9 -5
  23. package/lib/DuckDBScalarFunction.js +14 -5
  24. package/lib/DuckDBScalarFunctionBindInfo.d.ts +16 -0
  25. package/lib/{DuckDBBindInfo.js → DuckDBScalarFunctionBindInfo.js} +5 -3
  26. package/lib/DuckDBScalarFunctionInfo.d.ts +16 -0
  27. package/lib/{DuckDBFunctionInfo.js → DuckDBScalarFunctionInfo.js} +11 -3
  28. package/lib/{DuckDBBindInfo.d.ts → DuckDBScalarFunctionInitInfo.d.ts} +6 -4
  29. package/lib/DuckDBScalarFunctionInitInfo.js +39 -0
  30. package/lib/DuckDBTableFunction.d.ts +41 -0
  31. package/lib/DuckDBTableFunction.js +83 -0
  32. package/lib/DuckDBTableFunctionBindInfo.d.ts +21 -0
  33. package/lib/DuckDBTableFunctionBindInfo.js +54 -0
  34. package/lib/DuckDBTableFunctionInfo.d.ts +15 -0
  35. package/lib/DuckDBTableFunctionInfo.js +42 -0
  36. package/lib/DuckDBTableFunctionInitInfo.d.ts +22 -0
  37. package/lib/DuckDBTableFunctionInitInfo.js +58 -0
  38. package/lib/DuckDBType.d.ts +1 -373
  39. package/lib/DuckDBType.js +14 -927
  40. package/lib/DuckDBTypeId.d.ts +4 -1
  41. package/lib/DuckDBTypeId.js +3 -0
  42. package/lib/DuckDBValueConverter.d.ts +10 -0
  43. package/lib/DuckDBValueConverters.d.ts +27 -0
  44. package/lib/DuckDBValueConverters.js +128 -1
  45. package/lib/DuckDBVector.d.ts +1 -596
  46. package/lib/DuckDBVector.js +14 -2522
  47. package/lib/JSDuckDBValueConverter.d.ts +1 -2
  48. package/lib/JSDuckDBValueConverter.js +5 -2
  49. package/lib/JSInputTypeForTypeId.d.ts +104 -0
  50. package/lib/JSInputTypeForTypeId.js +3 -0
  51. package/lib/JSToDuckDBValueConverter.d.ts +30 -0
  52. package/lib/JSToDuckDBValueConverter.js +83 -0
  53. package/lib/JSTypeForTypeId.d.ts +91 -0
  54. package/lib/JSTypeForTypeId.js +3 -0
  55. package/lib/JsonDuckDBValueConverter.d.ts +1 -2
  56. package/lib/JsonDuckDBValueConverter.js +4 -1
  57. package/lib/JsonTypeForTypeId.d.ts +96 -0
  58. package/lib/JsonTypeForTypeId.js +3 -0
  59. package/lib/ToDuckDBValueConverter.d.ts +41 -0
  60. package/lib/ToDuckDBValueConverter.js +27 -0
  61. package/lib/ToDuckDBValueConverters.d.ts +54 -0
  62. package/lib/ToDuckDBValueConverters.js +199 -0
  63. package/lib/conversion/dateTimeStringConversion.d.ts +2 -2
  64. package/lib/conversion/dateTimeStringConversion.js +20 -7
  65. package/lib/conversion/varintDecode.d.ts +18 -0
  66. package/lib/conversion/varintDecode.js +42 -0
  67. package/lib/convertColumnsFromChunks.d.ts +1 -1
  68. package/lib/convertColumnsFromChunks.js +2 -2
  69. package/lib/createResult.d.ts +2 -1
  70. package/lib/createResult.js +3 -3
  71. package/lib/createValue.js +63 -5
  72. package/lib/duckdb.d.ts +15 -2
  73. package/lib/duckdb.js +15 -2
  74. package/lib/getColumnsFromChunks.d.ts +1 -1
  75. package/lib/getColumnsFromChunks.js +2 -2
  76. package/lib/getColumnsObjectFromChunks.js +3 -0
  77. package/lib/readValue.d.ts +22 -0
  78. package/lib/readValue.js +35 -0
  79. package/lib/typeForValue.js +21 -2
  80. package/lib/types/BaseDuckDBType.d.ts +11 -0
  81. package/lib/types/BaseDuckDBType.js +34 -0
  82. package/lib/types/DuckDBAnyType.d.ts +8 -0
  83. package/lib/types/DuckDBAnyType.js +16 -0
  84. package/lib/types/DuckDBArrayType.d.ts +14 -0
  85. package/lib/types/DuckDBArrayType.js +38 -0
  86. package/lib/types/DuckDBBigIntType.d.ts +12 -0
  87. package/lib/types/DuckDBBigIntType.js +24 -0
  88. package/lib/types/DuckDBBigNumType.d.ts +12 -0
  89. package/lib/types/DuckDBBigNumType.js +24 -0
  90. package/lib/types/DuckDBBitType.d.ts +8 -0
  91. package/lib/types/DuckDBBitType.js +16 -0
  92. package/lib/types/DuckDBBlobType.d.ts +8 -0
  93. package/lib/types/DuckDBBlobType.js +16 -0
  94. package/lib/types/DuckDBBooleanType.d.ts +8 -0
  95. package/lib/types/DuckDBBooleanType.js +16 -0
  96. package/lib/types/DuckDBDateType.d.ts +14 -0
  97. package/lib/types/DuckDBDateType.js +32 -0
  98. package/lib/types/DuckDBDecimalType.d.ts +14 -0
  99. package/lib/types/DuckDBDecimalType.js +45 -0
  100. package/lib/types/DuckDBDoubleType.d.ts +12 -0
  101. package/lib/types/DuckDBDoubleType.js +24 -0
  102. package/lib/types/DuckDBEnumType.d.ts +29 -0
  103. package/lib/types/DuckDBEnumType.js +100 -0
  104. package/lib/types/DuckDBFloatType.d.ts +12 -0
  105. package/lib/types/DuckDBFloatType.js +24 -0
  106. package/lib/types/DuckDBGeometryType.d.ts +19 -0
  107. package/lib/types/DuckDBGeometryType.js +38 -0
  108. package/lib/types/DuckDBHugeIntType.d.ts +12 -0
  109. package/lib/types/DuckDBHugeIntType.js +24 -0
  110. package/lib/types/DuckDBIntegerLiteralType.d.ts +8 -0
  111. package/lib/types/DuckDBIntegerLiteralType.js +16 -0
  112. package/lib/types/DuckDBIntegerType.d.ts +12 -0
  113. package/lib/types/DuckDBIntegerType.js +24 -0
  114. package/lib/types/DuckDBIntervalType.d.ts +8 -0
  115. package/lib/types/DuckDBIntervalType.js +16 -0
  116. package/lib/types/DuckDBListType.d.ts +13 -0
  117. package/lib/types/DuckDBListType.js +35 -0
  118. package/lib/types/DuckDBMapType.d.ts +14 -0
  119. package/lib/types/DuckDBMapType.js +38 -0
  120. package/lib/types/DuckDBSQLNullType.d.ts +10 -0
  121. package/lib/types/DuckDBSQLNullType.js +20 -0
  122. package/lib/types/DuckDBSmallIntType.d.ts +12 -0
  123. package/lib/types/DuckDBSmallIntType.js +24 -0
  124. package/lib/types/DuckDBStringLiteralType.d.ts +8 -0
  125. package/lib/types/DuckDBStringLiteralType.js +16 -0
  126. package/lib/types/DuckDBStructType.d.ts +29 -0
  127. package/lib/types/DuckDBStructType.js +86 -0
  128. package/lib/types/DuckDBTimeNSType.d.ts +11 -0
  129. package/lib/types/DuckDBTimeNSType.js +23 -0
  130. package/lib/types/DuckDBTimeTZType.d.ts +12 -0
  131. package/lib/types/DuckDBTimeTZType.js +26 -0
  132. package/lib/types/DuckDBTimeType.d.ts +11 -0
  133. package/lib/types/DuckDBTimeType.js +23 -0
  134. package/lib/types/DuckDBTimestampMillisecondsType.d.ts +14 -0
  135. package/lib/types/DuckDBTimestampMillisecondsType.js +32 -0
  136. package/lib/types/DuckDBTimestampNanosecondsType.d.ts +14 -0
  137. package/lib/types/DuckDBTimestampNanosecondsType.js +32 -0
  138. package/lib/types/DuckDBTimestampSecondsType.d.ts +14 -0
  139. package/lib/types/DuckDBTimestampSecondsType.js +32 -0
  140. package/lib/types/DuckDBTimestampTZNanosecondsType.d.ts +15 -0
  141. package/lib/types/DuckDBTimestampTZNanosecondsType.js +35 -0
  142. package/lib/types/DuckDBTimestampTZType.d.ts +15 -0
  143. package/lib/types/DuckDBTimestampTZType.js +35 -0
  144. package/lib/types/DuckDBTimestampType.d.ts +16 -0
  145. package/lib/types/DuckDBTimestampType.js +33 -0
  146. package/lib/types/DuckDBTinyIntType.d.ts +12 -0
  147. package/lib/types/DuckDBTinyIntType.js +24 -0
  148. package/lib/types/DuckDBType.d.ts +43 -0
  149. package/lib/types/DuckDBType.js +2 -0
  150. package/lib/types/DuckDBUBigIntType.d.ts +12 -0
  151. package/lib/types/DuckDBUBigIntType.js +24 -0
  152. package/lib/types/DuckDBUHugeIntType.d.ts +12 -0
  153. package/lib/types/DuckDBUHugeIntType.js +24 -0
  154. package/lib/types/DuckDBUIntegerType.d.ts +12 -0
  155. package/lib/types/DuckDBUIntegerType.js +24 -0
  156. package/lib/types/DuckDBUSmallIntType.d.ts +12 -0
  157. package/lib/types/DuckDBUSmallIntType.js +24 -0
  158. package/lib/types/DuckDBUTinyIntType.d.ts +12 -0
  159. package/lib/types/DuckDBUTinyIntType.js +24 -0
  160. package/lib/types/DuckDBUUIDType.d.ts +11 -0
  161. package/lib/types/DuckDBUUIDType.js +23 -0
  162. package/lib/types/DuckDBUnionType.d.ts +18 -0
  163. package/lib/types/DuckDBUnionType.js +64 -0
  164. package/lib/types/DuckDBVarCharType.d.ts +8 -0
  165. package/lib/types/DuckDBVarCharType.js +16 -0
  166. package/lib/types/DuckDBVariantType.d.ts +8 -0
  167. package/lib/types/DuckDBVariantType.js +16 -0
  168. package/lib/types/index.d.ts +44 -0
  169. package/lib/types/index.js +60 -0
  170. package/lib/values/DuckDBGeometryValue.d.ts +12 -0
  171. package/lib/values/DuckDBGeometryValue.js +30 -0
  172. package/lib/values/DuckDBTimestampTZNanosecondsValue.d.ts +14 -0
  173. package/lib/values/DuckDBTimestampTZNanosecondsValue.js +33 -0
  174. package/lib/values/DuckDBTupleValue.d.ts +11 -0
  175. package/lib/values/DuckDBTupleValue.js +22 -0
  176. package/lib/values/DuckDBUUIDValue.js +5 -1
  177. package/lib/values/DuckDBValue.d.ts +5 -1
  178. package/lib/values/DuckDBVariantValue.d.ts +19 -0
  179. package/lib/values/DuckDBVariantValue.js +30 -0
  180. package/lib/values/index.d.ts +4 -0
  181. package/lib/values/index.js +4 -0
  182. package/lib/vectors/DuckDBArrayVector.d.ts +21 -0
  183. package/lib/vectors/DuckDBArrayVector.js +79 -0
  184. package/lib/vectors/DuckDBBigIntVector.d.ts +17 -0
  185. package/lib/vectors/DuckDBBigIntVector.js +58 -0
  186. package/lib/vectors/DuckDBBigNumVector.d.ts +21 -0
  187. package/lib/vectors/DuckDBBigNumVector.js +70 -0
  188. package/lib/vectors/DuckDBBitVector.d.ts +22 -0
  189. package/lib/vectors/DuckDBBitVector.js +74 -0
  190. package/lib/vectors/DuckDBBlobVector.d.ts +32 -0
  191. package/lib/vectors/DuckDBBlobVector.js +83 -0
  192. package/lib/vectors/DuckDBBooleanVector.d.ts +18 -0
  193. package/lib/vectors/DuckDBBooleanVector.js +58 -0
  194. package/lib/vectors/DuckDBDateVector.d.ts +18 -0
  195. package/lib/vectors/DuckDBDateVector.js +64 -0
  196. package/lib/vectors/DuckDBDecimal128Vector.d.ts +21 -0
  197. package/lib/vectors/DuckDBDecimal128Vector.js +64 -0
  198. package/lib/vectors/DuckDBDecimal16Vector.d.ts +21 -0
  199. package/lib/vectors/DuckDBDecimal16Vector.js +64 -0
  200. package/lib/vectors/DuckDBDecimal32Vector.d.ts +21 -0
  201. package/lib/vectors/DuckDBDecimal32Vector.js +64 -0
  202. package/lib/vectors/DuckDBDecimal64Vector.d.ts +21 -0
  203. package/lib/vectors/DuckDBDecimal64Vector.js +64 -0
  204. package/lib/vectors/DuckDBDoubleVector.d.ts +17 -0
  205. package/lib/vectors/DuckDBDoubleVector.js +54 -0
  206. package/lib/vectors/DuckDBEnum16Vector.d.ts +18 -0
  207. package/lib/vectors/DuckDBEnum16Vector.js +57 -0
  208. package/lib/vectors/DuckDBEnum32Vector.d.ts +18 -0
  209. package/lib/vectors/DuckDBEnum32Vector.js +57 -0
  210. package/lib/vectors/DuckDBEnum8Vector.d.ts +18 -0
  211. package/lib/vectors/DuckDBEnum8Vector.js +57 -0
  212. package/lib/vectors/DuckDBFloatVector.d.ts +17 -0
  213. package/lib/vectors/DuckDBFloatVector.js +54 -0
  214. package/lib/vectors/DuckDBGeometryVector.d.ts +22 -0
  215. package/lib/vectors/DuckDBGeometryVector.js +69 -0
  216. package/lib/vectors/DuckDBHugeIntVector.d.ts +19 -0
  217. package/lib/vectors/DuckDBHugeIntVector.js +63 -0
  218. package/lib/vectors/DuckDBIntegerVector.d.ts +17 -0
  219. package/lib/vectors/DuckDBIntegerVector.js +61 -0
  220. package/lib/vectors/DuckDBIntervalVector.d.ts +19 -0
  221. package/lib/vectors/DuckDBIntervalVector.js +67 -0
  222. package/lib/vectors/DuckDBListVector.d.ts +35 -0
  223. package/lib/vectors/DuckDBListVector.js +151 -0
  224. package/lib/vectors/DuckDBMapVector.d.ts +17 -0
  225. package/lib/vectors/DuckDBMapVector.js +60 -0
  226. package/lib/vectors/DuckDBSQLNullVector.d.ts +18 -0
  227. package/lib/vectors/DuckDBSQLNullVector.js +44 -0
  228. package/lib/vectors/DuckDBSmallIntVector.d.ts +17 -0
  229. package/lib/vectors/DuckDBSmallIntVector.js +61 -0
  230. package/lib/vectors/DuckDBStructVector.d.ts +35 -0
  231. package/lib/vectors/DuckDBStructVector.js +105 -0
  232. package/lib/vectors/DuckDBTimeNSVector.d.ts +18 -0
  233. package/lib/vectors/DuckDBTimeNSVector.js +61 -0
  234. package/lib/vectors/DuckDBTimeTZVector.d.ts +18 -0
  235. package/lib/vectors/DuckDBTimeTZVector.js +61 -0
  236. package/lib/vectors/DuckDBTimeVector.d.ts +18 -0
  237. package/lib/vectors/DuckDBTimeVector.js +61 -0
  238. package/lib/vectors/DuckDBTimestampMillisecondsVector.d.ts +18 -0
  239. package/lib/vectors/DuckDBTimestampMillisecondsVector.js +61 -0
  240. package/lib/vectors/DuckDBTimestampNanosecondsVector.d.ts +18 -0
  241. package/lib/vectors/DuckDBTimestampNanosecondsVector.js +61 -0
  242. package/lib/vectors/DuckDBTimestampSecondsVector.d.ts +18 -0
  243. package/lib/vectors/DuckDBTimestampSecondsVector.js +61 -0
  244. package/lib/vectors/DuckDBTimestampTZNanosecondsVector.d.ts +18 -0
  245. package/lib/vectors/DuckDBTimestampTZNanosecondsVector.js +61 -0
  246. package/lib/vectors/DuckDBTimestampTZVector.d.ts +18 -0
  247. package/lib/vectors/DuckDBTimestampTZVector.js +61 -0
  248. package/lib/vectors/DuckDBTimestampVector.d.ts +18 -0
  249. package/lib/vectors/DuckDBTimestampVector.js +61 -0
  250. package/lib/vectors/DuckDBTinyIntVector.d.ts +17 -0
  251. package/lib/vectors/DuckDBTinyIntVector.js +61 -0
  252. package/lib/vectors/DuckDBTupleVector.d.ts +26 -0
  253. package/lib/vectors/DuckDBTupleVector.js +91 -0
  254. package/lib/vectors/DuckDBUBigIntVector.d.ts +17 -0
  255. package/lib/vectors/DuckDBUBigIntVector.js +58 -0
  256. package/lib/vectors/DuckDBUHugeIntVector.d.ts +19 -0
  257. package/lib/vectors/DuckDBUHugeIntVector.js +63 -0
  258. package/lib/vectors/DuckDBUIntegerVector.d.ts +17 -0
  259. package/lib/vectors/DuckDBUIntegerVector.js +61 -0
  260. package/lib/vectors/DuckDBUSmallIntVector.d.ts +17 -0
  261. package/lib/vectors/DuckDBUSmallIntVector.js +61 -0
  262. package/lib/vectors/DuckDBUTinyIntVector.d.ts +17 -0
  263. package/lib/vectors/DuckDBUTinyIntVector.js +61 -0
  264. package/lib/vectors/DuckDBUUIDVector.d.ts +19 -0
  265. package/lib/vectors/DuckDBUUIDVector.js +59 -0
  266. package/lib/vectors/DuckDBUnionVector.d.ts +17 -0
  267. package/lib/vectors/DuckDBUnionVector.js +70 -0
  268. package/lib/vectors/DuckDBValidity.d.ts +12 -0
  269. package/lib/vectors/DuckDBValidity.js +91 -0
  270. package/lib/vectors/DuckDBVarCharVector.d.ts +21 -0
  271. package/lib/vectors/DuckDBVarCharVector.js +74 -0
  272. package/lib/vectors/DuckDBVariantVector.d.ts +42 -0
  273. package/lib/vectors/DuckDBVariantVector.js +461 -0
  274. package/lib/vectors/DuckDBVector.d.ts +14 -0
  275. package/lib/vectors/DuckDBVector.js +27 -0
  276. package/lib/vectors/createVector.d.ts +1 -0
  277. package/lib/vectors/createVector.js +201 -0
  278. package/lib/vectors/dataAccessors.d.ts +45 -0
  279. package/lib/vectors/dataAccessors.js +344 -0
  280. package/lib/vectors/index.d.ts +47 -0
  281. package/lib/vectors/index.js +65 -0
  282. package/lib/vectors/vectorRegistry.d.ts +20 -0
  283. package/lib/vectors/vectorRegistry.js +16 -0
  284. package/package.json +3 -2
  285. package/lib/DuckDBFunctionInfo.d.ts +0 -10
@@ -0,0 +1,69 @@
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.DuckDBGeometryVector = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const DuckDBType_1 = require("../DuckDBType");
9
+ const values_1 = require("../values");
10
+ const DuckDBVector_1 = require("./DuckDBVector");
11
+ const DuckDBValidity_1 = require("./DuckDBValidity");
12
+ const dataAccessors_1 = require("./dataAccessors");
13
+ class DuckDBGeometryVector extends DuckDBVector_1.DuckDBVector {
14
+ dataView;
15
+ validity;
16
+ vector;
17
+ itemOffset;
18
+ _itemCount;
19
+ itemCache;
20
+ itemCacheDirty;
21
+ constructor(dataView, validity, vector, itemOffset, itemCount) {
22
+ super();
23
+ this.dataView = dataView;
24
+ this.validity = validity;
25
+ this.vector = vector;
26
+ this.itemOffset = itemOffset;
27
+ this._itemCount = itemCount;
28
+ this.itemCache = [];
29
+ this.itemCacheDirty = [];
30
+ }
31
+ static fromRawVector(vector, itemCount) {
32
+ const data = (0, dataAccessors_1.vectorData)(vector, itemCount * 16);
33
+ const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);
34
+ const validity = DuckDBValidity_1.DuckDBValidity.fromVector(vector, itemCount);
35
+ return new DuckDBGeometryVector(dataView, validity, vector, 0, itemCount);
36
+ }
37
+ get type() {
38
+ return DuckDBType_1.DuckDBGeometryType.instance;
39
+ }
40
+ get itemCount() {
41
+ return this._itemCount;
42
+ }
43
+ getItem(itemIndex) {
44
+ return this.validity.itemValid(itemIndex)
45
+ ? new values_1.DuckDBGeometryValue((0, dataAccessors_1.getBuffer)(this.dataView, itemIndex * 16))
46
+ : null;
47
+ }
48
+ setItem(itemIndex, value) {
49
+ this.itemCache[itemIndex] = value;
50
+ this.validity.setItemValid(itemIndex, value != null);
51
+ this.itemCacheDirty[itemIndex] = true;
52
+ }
53
+ flush() {
54
+ for (let itemIndex = 0; itemIndex < this._itemCount; itemIndex++) {
55
+ if (this.itemCacheDirty[itemIndex]) {
56
+ const cachedItem = this.itemCache[itemIndex];
57
+ if (cachedItem !== undefined && cachedItem !== null) {
58
+ node_bindings_1.default.vector_assign_string_element_len(this.vector, this.itemOffset + itemIndex, cachedItem.bytes);
59
+ }
60
+ this.itemCacheDirty[itemIndex] = false;
61
+ }
62
+ }
63
+ this.validity.flush(this.vector);
64
+ }
65
+ slice(offset, length) {
66
+ return new DuckDBGeometryVector(new DataView(this.dataView.buffer, this.dataView.byteOffset + offset * 16, length * 16), this.validity.slice(offset, length), this.vector, offset, length);
67
+ }
68
+ }
69
+ exports.DuckDBGeometryVector = DuckDBGeometryVector;
@@ -0,0 +1,19 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBHugeIntType } from '../DuckDBType';
3
+ import { DuckDBVector } from './DuckDBVector';
4
+ import { DuckDBValidity } from './DuckDBValidity';
5
+ export declare class DuckDBHugeIntVector extends DuckDBVector<bigint> {
6
+ private readonly dataView;
7
+ private readonly validity;
8
+ private readonly vector;
9
+ private readonly _itemCount;
10
+ constructor(dataView: DataView, validity: DuckDBValidity, vector: duckdb.Vector, itemCount: number);
11
+ static fromRawVector(vector: duckdb.Vector, itemCount: number): DuckDBHugeIntVector;
12
+ get type(): DuckDBHugeIntType;
13
+ get itemCount(): number;
14
+ getItem(itemIndex: number): bigint | null;
15
+ getDouble(itemIndex: number): number | null;
16
+ setItem(itemIndex: number, value: bigint | null): void;
17
+ flush(): void;
18
+ slice(offset: number, length: number): DuckDBHugeIntVector;
19
+ }
@@ -0,0 +1,63 @@
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.DuckDBHugeIntVector = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const DuckDBType_1 = require("../DuckDBType");
9
+ const DuckDBVector_1 = require("./DuckDBVector");
10
+ const DuckDBValidity_1 = require("./DuckDBValidity");
11
+ const dataAccessors_1 = require("./dataAccessors");
12
+ class DuckDBHugeIntVector extends DuckDBVector_1.DuckDBVector {
13
+ dataView;
14
+ validity;
15
+ vector;
16
+ _itemCount;
17
+ constructor(dataView, validity, vector, itemCount) {
18
+ super();
19
+ this.dataView = dataView;
20
+ this.validity = validity;
21
+ this.vector = vector;
22
+ this._itemCount = itemCount;
23
+ }
24
+ static fromRawVector(vector, itemCount) {
25
+ const data = (0, dataAccessors_1.vectorData)(vector, itemCount * 16);
26
+ const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);
27
+ const validity = DuckDBValidity_1.DuckDBValidity.fromVector(vector, itemCount);
28
+ return new DuckDBHugeIntVector(dataView, validity, vector, itemCount);
29
+ }
30
+ get type() {
31
+ return DuckDBType_1.DuckDBHugeIntType.instance;
32
+ }
33
+ get itemCount() {
34
+ return this._itemCount;
35
+ }
36
+ getItem(itemIndex) {
37
+ return this.validity.itemValid(itemIndex)
38
+ ? (0, dataAccessors_1.getInt128)(this.dataView, itemIndex * 16)
39
+ : null;
40
+ }
41
+ getDouble(itemIndex) {
42
+ return this.validity.itemValid(itemIndex)
43
+ ? node_bindings_1.default.hugeint_to_double((0, dataAccessors_1.getInt128)(this.dataView, itemIndex * 16))
44
+ : null;
45
+ }
46
+ setItem(itemIndex, value) {
47
+ if (value != null) {
48
+ (0, dataAccessors_1.setInt128)(this.dataView, itemIndex * 16, value);
49
+ this.validity.setItemValid(itemIndex, true);
50
+ }
51
+ else {
52
+ this.validity.setItemValid(itemIndex, false);
53
+ }
54
+ }
55
+ flush() {
56
+ node_bindings_1.default.copy_data_to_vector(this.vector, 0, this.dataView.buffer, this.dataView.byteOffset, this.dataView.byteLength);
57
+ this.validity.flush(this.vector);
58
+ }
59
+ slice(offset, length) {
60
+ return new DuckDBHugeIntVector(new DataView(this.dataView.buffer, this.dataView.byteOffset + offset * 16, length * 16), this.validity.slice(offset, length), this.vector, length);
61
+ }
62
+ }
63
+ exports.DuckDBHugeIntVector = DuckDBHugeIntVector;
@@ -0,0 +1,17 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBIntegerType } from '../DuckDBType';
3
+ import { DuckDBVector } from './DuckDBVector';
4
+ import { DuckDBValidity } from './DuckDBValidity';
5
+ export declare class DuckDBIntegerVector extends DuckDBVector<number> {
6
+ private readonly items;
7
+ private readonly validity;
8
+ private readonly vector;
9
+ constructor(items: Int32Array, validity: DuckDBValidity, vector: duckdb.Vector);
10
+ static fromRawVector(vector: duckdb.Vector, itemCount: number): DuckDBIntegerVector;
11
+ get type(): DuckDBIntegerType;
12
+ get itemCount(): number;
13
+ getItem(itemIndex: number): number | null;
14
+ setItem(itemIndex: number, value: number | null): void;
15
+ flush(): void;
16
+ slice(offset: number, length: number): DuckDBIntegerVector;
17
+ }
@@ -0,0 +1,61 @@
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.DuckDBIntegerVector = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const DuckDBType_1 = require("../DuckDBType");
9
+ const DuckDBVector_1 = require("./DuckDBVector");
10
+ const DuckDBValidity_1 = require("./DuckDBValidity");
11
+ const dataAccessors_1 = require("./dataAccessors");
12
+ class DuckDBIntegerVector extends DuckDBVector_1.DuckDBVector {
13
+ items;
14
+ validity;
15
+ vector;
16
+ constructor(items, validity, vector) {
17
+ super();
18
+ this.items = items;
19
+ this.validity = validity;
20
+ this.vector = vector;
21
+ }
22
+ static fromRawVector(vector, itemCount) {
23
+ const data = (0, dataAccessors_1.vectorData)(vector, itemCount * Int32Array.BYTES_PER_ELEMENT);
24
+ const items = new Int32Array(data.buffer, data.byteOffset, itemCount);
25
+ const validity = DuckDBValidity_1.DuckDBValidity.fromVector(vector, itemCount);
26
+ return new DuckDBIntegerVector(items, validity, vector);
27
+ }
28
+ get type() {
29
+ return DuckDBType_1.DuckDBIntegerType.instance;
30
+ }
31
+ get itemCount() {
32
+ return this.items.length;
33
+ }
34
+ getItem(itemIndex) {
35
+ return this.validity.itemValid(itemIndex) ? this.items[itemIndex] : null;
36
+ }
37
+ setItem(itemIndex, value) {
38
+ if (value != null) {
39
+ // Checked inline for bulk-write throughput; see dataAccessors.ts.
40
+ if (!Number.isInteger(value)) {
41
+ throw new Error(`number is not an integer`);
42
+ }
43
+ if (value < -2147483648 || value > 2147483647) {
44
+ throw new Error(`number out of int32 range`);
45
+ }
46
+ this.items[itemIndex] = value;
47
+ this.validity.setItemValid(itemIndex, true);
48
+ }
49
+ else {
50
+ this.validity.setItemValid(itemIndex, false);
51
+ }
52
+ }
53
+ flush() {
54
+ node_bindings_1.default.copy_data_to_vector(this.vector, 0, this.items.buffer, this.items.byteOffset, this.items.byteLength);
55
+ this.validity.flush(this.vector);
56
+ }
57
+ slice(offset, length) {
58
+ return new DuckDBIntegerVector(this.items.slice(offset, offset + length), this.validity.slice(offset, length), this.vector);
59
+ }
60
+ }
61
+ exports.DuckDBIntegerVector = DuckDBIntegerVector;
@@ -0,0 +1,19 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBIntervalType } from '../DuckDBType';
3
+ import { DuckDBIntervalValue } from '../values';
4
+ import { DuckDBVector } from './DuckDBVector';
5
+ import { DuckDBValidity } from './DuckDBValidity';
6
+ export declare class DuckDBIntervalVector extends DuckDBVector<DuckDBIntervalValue> {
7
+ private readonly dataView;
8
+ private readonly validity;
9
+ private readonly vector;
10
+ private readonly _itemCount;
11
+ constructor(dataView: DataView, validity: DuckDBValidity, vector: duckdb.Vector, itemCount: number);
12
+ static fromRawVector(vector: duckdb.Vector, itemCount: number): DuckDBIntervalVector;
13
+ get type(): DuckDBIntervalType;
14
+ get itemCount(): number;
15
+ getItem(itemIndex: number): DuckDBIntervalValue | null;
16
+ setItem(itemIndex: number, value: DuckDBIntervalValue | null): void;
17
+ flush(): void;
18
+ slice(offset: number, length: number): DuckDBIntervalVector;
19
+ }
@@ -0,0 +1,67 @@
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.DuckDBIntervalVector = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const DuckDBType_1 = require("../DuckDBType");
9
+ const values_1 = require("../values");
10
+ const DuckDBVector_1 = require("./DuckDBVector");
11
+ const DuckDBValidity_1 = require("./DuckDBValidity");
12
+ const dataAccessors_1 = require("./dataAccessors");
13
+ class DuckDBIntervalVector extends DuckDBVector_1.DuckDBVector {
14
+ dataView;
15
+ validity;
16
+ vector;
17
+ _itemCount;
18
+ constructor(dataView, validity, vector, itemCount) {
19
+ super();
20
+ this.dataView = dataView;
21
+ this.validity = validity;
22
+ this.vector = vector;
23
+ this._itemCount = itemCount;
24
+ }
25
+ static fromRawVector(vector, itemCount) {
26
+ const data = (0, dataAccessors_1.vectorData)(vector, itemCount * 16);
27
+ const dataView = new DataView(data.buffer, data.byteOffset, data.byteLength);
28
+ const validity = DuckDBValidity_1.DuckDBValidity.fromVector(vector, itemCount);
29
+ return new DuckDBIntervalVector(dataView, validity, vector, itemCount);
30
+ }
31
+ get type() {
32
+ return DuckDBType_1.DuckDBIntervalType.instance;
33
+ }
34
+ get itemCount() {
35
+ return this._itemCount;
36
+ }
37
+ getItem(itemIndex) {
38
+ if (!this.validity.itemValid(itemIndex)) {
39
+ return null;
40
+ }
41
+ const itemStart = itemIndex * 16;
42
+ const months = (0, dataAccessors_1.getInt32)(this.dataView, itemStart);
43
+ const days = (0, dataAccessors_1.getInt32)(this.dataView, itemStart + 4);
44
+ const micros = (0, dataAccessors_1.getInt64)(this.dataView, itemStart + 8);
45
+ return new values_1.DuckDBIntervalValue(months, days, micros);
46
+ }
47
+ setItem(itemIndex, value) {
48
+ if (value != null) {
49
+ const itemStart = itemIndex * 16;
50
+ (0, dataAccessors_1.setInt32)(this.dataView, itemStart, value.months);
51
+ (0, dataAccessors_1.setInt32)(this.dataView, itemStart + 4, value.days);
52
+ (0, dataAccessors_1.setInt64)(this.dataView, itemStart + 8, value.micros);
53
+ this.validity.setItemValid(itemIndex, true);
54
+ }
55
+ else {
56
+ this.validity.setItemValid(itemIndex, false);
57
+ }
58
+ }
59
+ flush() {
60
+ node_bindings_1.default.copy_data_to_vector(this.vector, 0, this.dataView.buffer, this.dataView.byteOffset, this.dataView.byteLength);
61
+ this.validity.flush(this.vector);
62
+ }
63
+ slice(offset, length) {
64
+ return new DuckDBIntervalVector(new DataView(this.dataView.buffer, this.dataView.byteOffset + offset * 16, length * 16), this.validity.slice(offset, length), this.vector, length);
65
+ }
66
+ }
67
+ exports.DuckDBIntervalVector = DuckDBIntervalVector;
@@ -0,0 +1,35 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBListType } from '../DuckDBType';
3
+ import { DuckDBListValue } from '../values';
4
+ import { DuckDBVector } from './DuckDBVector';
5
+ import { DuckDBValidity } from './DuckDBValidity';
6
+ export declare class DuckDBListVector extends DuckDBVector<DuckDBListValue> {
7
+ private readonly parentList;
8
+ private readonly listType;
9
+ private readonly entryData;
10
+ private readonly validity;
11
+ private readonly vector;
12
+ private childData;
13
+ private readonly itemOffset;
14
+ private readonly _itemCount;
15
+ private readonly itemCache;
16
+ constructor(parentList: DuckDBListVector | null, listType: DuckDBListType, entryData: BigUint64Array, validity: DuckDBValidity, vector: duckdb.Vector, childData: DuckDBVector, itemOffset: number, itemCount: number);
17
+ static fromRawVector(listType: DuckDBListType, vector: duckdb.Vector, itemCount: number): DuckDBListVector;
18
+ get type(): DuckDBListType;
19
+ get itemCount(): number;
20
+ getItemVector(itemIndex: number): DuckDBVector | null;
21
+ /**
22
+ * Returns the offset into `childVector` where this row's elements begin.
23
+ * Combined with `childVector`, this allows callers to index directly into
24
+ * the flat backing storage without allocating a per-row sliced vector.
25
+ */
26
+ getEntryOffset(itemIndex: number): number;
27
+ /** Returns the number of elements this row contributes to `childVector`. */
28
+ getEntryLength(itemIndex: number): number;
29
+ /** The (flat) child vector backing all rows' list elements. */
30
+ get childVector(): DuckDBVector;
31
+ getItem(itemIndex: number): DuckDBListValue | null;
32
+ setItem(itemIndex: number, value: DuckDBListValue | null): void;
33
+ flush(): void;
34
+ slice(offset: number, length: number): DuckDBListVector;
35
+ }
@@ -0,0 +1,151 @@
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.DuckDBListVector = void 0;
7
+ const node_bindings_1 = __importDefault(require("@haybarn/node-bindings"));
8
+ const values_1 = require("../values");
9
+ const DuckDBVector_1 = require("./DuckDBVector");
10
+ const DuckDBValidity_1 = require("./DuckDBValidity");
11
+ const dataAccessors_1 = require("./dataAccessors");
12
+ class DuckDBListVector extends DuckDBVector_1.DuckDBVector {
13
+ parentList;
14
+ listType;
15
+ entryData;
16
+ validity;
17
+ vector;
18
+ childData;
19
+ itemOffset;
20
+ _itemCount;
21
+ itemCache;
22
+ constructor(parentList, listType, entryData, validity, vector, childData, itemOffset, itemCount) {
23
+ super();
24
+ this.parentList = parentList;
25
+ this.listType = listType;
26
+ this.entryData = entryData;
27
+ this.validity = validity;
28
+ this.vector = vector;
29
+ this.childData = childData;
30
+ this.itemOffset = itemOffset;
31
+ this._itemCount = itemCount;
32
+ this.itemCache = [];
33
+ }
34
+ static fromRawVector(listType, vector, itemCount) {
35
+ const data = (0, dataAccessors_1.vectorData)(vector, itemCount * BigUint64Array.BYTES_PER_ELEMENT * 2);
36
+ const entryData = new BigUint64Array(data.buffer, data.byteOffset, itemCount * 2);
37
+ const validity = DuckDBValidity_1.DuckDBValidity.fromVector(vector, itemCount);
38
+ const child_vector = node_bindings_1.default.list_vector_get_child(vector);
39
+ const child_vector_size = node_bindings_1.default.list_vector_get_size(vector);
40
+ const childData = DuckDBVector_1.DuckDBVector.create(child_vector, child_vector_size, listType.valueType);
41
+ return new DuckDBListVector(null, listType, entryData, validity, vector, childData, 0, itemCount);
42
+ }
43
+ get type() {
44
+ return this.listType;
45
+ }
46
+ get itemCount() {
47
+ return this._itemCount;
48
+ }
49
+ getItemVector(itemIndex) {
50
+ if (!this.validity.itemValid(itemIndex)) {
51
+ return null;
52
+ }
53
+ const entryDataStartIndex = itemIndex * 2;
54
+ const offset = Number(this.entryData[entryDataStartIndex]);
55
+ const length = Number(this.entryData[entryDataStartIndex + 1]);
56
+ return this.childData.slice(offset, length);
57
+ }
58
+ /**
59
+ * Returns the offset into `childVector` where this row's elements begin.
60
+ * Combined with `childVector`, this allows callers to index directly into
61
+ * the flat backing storage without allocating a per-row sliced vector.
62
+ */
63
+ getEntryOffset(itemIndex) {
64
+ return Number(this.entryData[itemIndex * 2]);
65
+ }
66
+ /** Returns the number of elements this row contributes to `childVector`. */
67
+ getEntryLength(itemIndex) {
68
+ return Number(this.entryData[itemIndex * 2 + 1]);
69
+ }
70
+ /** The (flat) child vector backing all rows' list elements. */
71
+ get childVector() {
72
+ return this.childData;
73
+ }
74
+ getItem(itemIndex) {
75
+ const cachedItem = this.itemCache[itemIndex];
76
+ if (cachedItem !== undefined) {
77
+ return cachedItem;
78
+ }
79
+ const vector = this.getItemVector(itemIndex);
80
+ if (!vector) {
81
+ return null;
82
+ }
83
+ const item = new values_1.DuckDBListValue(vector.toArray());
84
+ this.itemCache[itemIndex] = item;
85
+ return item;
86
+ }
87
+ setItem(itemIndex, value) {
88
+ this.itemCache[itemIndex] = value;
89
+ if (this.parentList) {
90
+ this.parentList.setItem(this.itemOffset + itemIndex, value);
91
+ }
92
+ else {
93
+ this.validity.setItemValid(itemIndex, value != null);
94
+ }
95
+ }
96
+ flush() {
97
+ if (this.parentList) {
98
+ this.parentList.flush();
99
+ for (let i = 0; i < this.itemCount; i++) {
100
+ this.itemCache[i] = undefined;
101
+ }
102
+ }
103
+ else {
104
+ // update entryData offset & lengths
105
+ // calculate new child vector size (sum of all item lengths)
106
+ let totalLength = 0;
107
+ for (let itemIndex = 0; itemIndex < this._itemCount; itemIndex++) {
108
+ const entryDataStartIndex = itemIndex * 2;
109
+ this.entryData[entryDataStartIndex] = BigInt(totalLength);
110
+ // ensure the cache is populated for all items
111
+ const item = this.getItem(itemIndex);
112
+ if (item) {
113
+ this.entryData[entryDataStartIndex + 1] = BigInt(item.items.length);
114
+ totalLength += item.items.length;
115
+ }
116
+ else {
117
+ this.entryData[entryDataStartIndex + 1] = 0n;
118
+ }
119
+ }
120
+ // grow child vector capacity (set_size does not allocate)
121
+ node_bindings_1.default.list_vector_reserve(this.vector, totalLength);
122
+ // set new child vector size
123
+ node_bindings_1.default.list_vector_set_size(this.vector, totalLength);
124
+ // recreate childData after resize
125
+ const child_vector = node_bindings_1.default.list_vector_get_child(this.vector);
126
+ const child_vector_size = node_bindings_1.default.list_vector_get_size(this.vector);
127
+ this.childData = DuckDBVector_1.DuckDBVector.create(child_vector, child_vector_size, this.listType.valueType);
128
+ // set all childData items
129
+ let childItemAbsoluteIndex = 0;
130
+ for (let listIndex = 0; listIndex < this._itemCount; listIndex++) {
131
+ const list = this.getItem(listIndex);
132
+ if (list) {
133
+ for (let childItemRelativeIndex = 0; childItemRelativeIndex < list.items.length; childItemRelativeIndex++) {
134
+ this.childData.setItem(childItemAbsoluteIndex++, list.items[childItemRelativeIndex]);
135
+ }
136
+ }
137
+ }
138
+ // copy childData to child vector
139
+ this.childData.flush();
140
+ // copy entryData to vector
141
+ node_bindings_1.default.copy_data_to_vector(this.vector, 0, this.entryData.buffer, this.entryData.byteOffset, this.entryData.byteLength);
142
+ // flush validity
143
+ this.validity.flush(this.vector);
144
+ }
145
+ }
146
+ slice(offset, length) {
147
+ const entryDataStartIndex = offset * 2;
148
+ return new DuckDBListVector(this, this.listType, this.entryData.slice(entryDataStartIndex, entryDataStartIndex + length * 2), this.validity.slice(offset, length), this.vector, this.childData, offset, length);
149
+ }
150
+ }
151
+ exports.DuckDBListVector = DuckDBListVector;
@@ -0,0 +1,17 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBMapType } from '../DuckDBType';
3
+ import { DuckDBMapValue } from '../values';
4
+ import { DuckDBVector } from './DuckDBVector';
5
+ import { DuckDBListVector } from './DuckDBListVector';
6
+ export declare class DuckDBMapVector extends DuckDBVector<DuckDBMapValue> {
7
+ private readonly mapType;
8
+ private readonly listVector;
9
+ constructor(mapType: DuckDBMapType, listVector: DuckDBListVector);
10
+ static fromRawVector(mapType: DuckDBMapType, vector: duckdb.Vector, itemCount: number): DuckDBMapVector;
11
+ get type(): DuckDBMapType;
12
+ get itemCount(): number;
13
+ getItem(itemIndex: number): DuckDBMapValue | null;
14
+ setItem(itemIndex: number, value: DuckDBMapValue | null): void;
15
+ flush(): void;
16
+ slice(offset: number, length: number): DuckDBMapVector;
17
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DuckDBMapVector = void 0;
4
+ const DuckDBType_1 = require("../DuckDBType");
5
+ const values_1 = require("../values");
6
+ const DuckDBVector_1 = require("./DuckDBVector");
7
+ const DuckDBListVector_1 = require("./DuckDBListVector");
8
+ const DuckDBStructVector_1 = require("./DuckDBStructVector");
9
+ // MAP = LIST(STRUCT(key KEY_TYPE, value VALUE_TYPE))
10
+ class DuckDBMapVector extends DuckDBVector_1.DuckDBVector {
11
+ mapType;
12
+ listVector;
13
+ constructor(mapType, listVector) {
14
+ super();
15
+ this.mapType = mapType;
16
+ this.listVector = listVector;
17
+ }
18
+ static fromRawVector(mapType, vector, itemCount) {
19
+ const listVectorType = new DuckDBType_1.DuckDBListType(new DuckDBType_1.DuckDBStructType(['key', 'value'], [mapType.keyType, mapType.valueType]));
20
+ return new DuckDBMapVector(mapType, DuckDBListVector_1.DuckDBListVector.fromRawVector(listVectorType, vector, itemCount));
21
+ }
22
+ get type() {
23
+ return this.mapType;
24
+ }
25
+ get itemCount() {
26
+ return this.listVector.itemCount;
27
+ }
28
+ getItem(itemIndex) {
29
+ const itemVector = this.listVector.getItemVector(itemIndex);
30
+ if (!itemVector) {
31
+ return null;
32
+ }
33
+ if (!(itemVector instanceof DuckDBStructVector_1.DuckDBStructVector)) {
34
+ throw new Error('item in map list vector is not a struct');
35
+ }
36
+ const entries = [];
37
+ const itemEntryCount = itemVector.itemCount;
38
+ for (let i = 0; i < itemEntryCount; i++) {
39
+ const key = itemVector.getItemValue(i, 0);
40
+ const value = itemVector.getItemValue(i, 1);
41
+ entries.push({ key, value });
42
+ }
43
+ return new values_1.DuckDBMapValue(entries);
44
+ }
45
+ setItem(itemIndex, value) {
46
+ if (value != null) {
47
+ this.listVector.setItem(itemIndex, (0, values_1.listValue)(value.entries.map((entry) => (0, values_1.structValue)({ 'key': entry.key, 'value': entry.value }))));
48
+ }
49
+ else {
50
+ this.listVector.setItem(itemIndex, null);
51
+ }
52
+ }
53
+ flush() {
54
+ this.listVector.flush();
55
+ }
56
+ slice(offset, length) {
57
+ return new DuckDBMapVector(this.mapType, this.listVector.slice(offset, length));
58
+ }
59
+ }
60
+ exports.DuckDBMapVector = DuckDBMapVector;
@@ -0,0 +1,18 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBSQLNullType } from '../DuckDBType';
3
+ import { DuckDBVector } from './DuckDBVector';
4
+ import { DuckDBValidity } from './DuckDBValidity';
5
+ /** A vector of the SQLNULL type, whose items are all null. */
6
+ export declare class DuckDBSQLNullVector extends DuckDBVector<null> {
7
+ private readonly validity;
8
+ private readonly vector;
9
+ private readonly _itemCount;
10
+ constructor(validity: DuckDBValidity, vector: duckdb.Vector, itemCount: number);
11
+ static fromRawVector(vector: duckdb.Vector, itemCount: number): DuckDBSQLNullVector;
12
+ get type(): DuckDBSQLNullType;
13
+ get itemCount(): number;
14
+ getItem(_itemIndex: number): null;
15
+ setItem(itemIndex: number, value: null): void;
16
+ flush(): void;
17
+ slice(offset: number, length: number): DuckDBSQLNullVector;
18
+ }
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DuckDBSQLNullVector = void 0;
4
+ const DuckDBType_1 = require("../DuckDBType");
5
+ const DuckDBVector_1 = require("./DuckDBVector");
6
+ const DuckDBValidity_1 = require("./DuckDBValidity");
7
+ /** A vector of the SQLNULL type, whose items are all null. */
8
+ class DuckDBSQLNullVector extends DuckDBVector_1.DuckDBVector {
9
+ validity;
10
+ vector;
11
+ _itemCount;
12
+ constructor(validity, vector, itemCount) {
13
+ super();
14
+ this.validity = validity;
15
+ this.vector = vector;
16
+ this._itemCount = itemCount;
17
+ }
18
+ static fromRawVector(vector, itemCount) {
19
+ const validity = DuckDBValidity_1.DuckDBValidity.fromVector(vector, itemCount);
20
+ return new DuckDBSQLNullVector(validity, vector, itemCount);
21
+ }
22
+ get type() {
23
+ return DuckDBType_1.DuckDBSQLNullType.instance;
24
+ }
25
+ get itemCount() {
26
+ return this._itemCount;
27
+ }
28
+ getItem(_itemIndex) {
29
+ return null;
30
+ }
31
+ setItem(itemIndex, value) {
32
+ if (value !== null) {
33
+ throw new Error(`Cannot set a non-null value in a SQLNULL vector`);
34
+ }
35
+ this.validity.setItemValid(itemIndex, false);
36
+ }
37
+ flush() {
38
+ this.validity.flush(this.vector);
39
+ }
40
+ slice(offset, length) {
41
+ return new DuckDBSQLNullVector(this.validity.slice(offset, length), this.vector, length);
42
+ }
43
+ }
44
+ exports.DuckDBSQLNullVector = DuckDBSQLNullVector;
@@ -0,0 +1,17 @@
1
+ import duckdb from '@haybarn/node-bindings';
2
+ import { DuckDBSmallIntType } from '../DuckDBType';
3
+ import { DuckDBVector } from './DuckDBVector';
4
+ import { DuckDBValidity } from './DuckDBValidity';
5
+ export declare class DuckDBSmallIntVector extends DuckDBVector<number> {
6
+ private readonly items;
7
+ private readonly validity;
8
+ private readonly vector;
9
+ constructor(items: Int16Array, validity: DuckDBValidity, vector: duckdb.Vector);
10
+ static fromRawVector(vector: duckdb.Vector, itemCount: number): DuckDBSmallIntVector;
11
+ get type(): DuckDBSmallIntType;
12
+ get itemCount(): number;
13
+ getItem(itemIndex: number): number | null;
14
+ setItem(itemIndex: number, value: number | null): void;
15
+ flush(): void;
16
+ slice(offset: number, length: number): DuckDBSmallIntVector;
17
+ }