@avidian/duckdb-bun 0.0.0-stage → 1.0.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.
Files changed (231) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +286 -2
  3. package/package.json +96 -4
  4. package/src/bindings/api/appender.ts +288 -0
  5. package/src/bindings/api/data-chunk.ts +58 -0
  6. package/src/bindings/api/database.ts +232 -0
  7. package/src/bindings/api/datetime.ts +158 -0
  8. package/src/bindings/api/index.ts +13 -0
  9. package/src/bindings/api/logical-types.ts +227 -0
  10. package/src/bindings/api/query.ts +616 -0
  11. package/src/bindings/api/scalar-function.ts +274 -0
  12. package/src/bindings/api/table-function.ts +339 -0
  13. package/src/bindings/api/values.ts +546 -0
  14. package/src/bindings/api/vector.ts +266 -0
  15. package/src/bindings/generated/capi.ts +695 -0
  16. package/src/bindings/generated/contract.ts +162 -0
  17. package/src/bindings/index.ts +10 -0
  18. package/src/bindings/runtime/convert.ts +307 -0
  19. package/src/bindings/runtime/diagnostics.ts +45 -0
  20. package/src/bindings/runtime/dispatch.ts +213 -0
  21. package/src/bindings/runtime/exception.ts +103 -0
  22. package/src/bindings/runtime/flags.ts +19 -0
  23. package/src/bindings/runtime/handle.ts +217 -0
  24. package/src/bindings/runtime/kinds.ts +53 -0
  25. package/src/bindings/runtime/marshal.ts +190 -0
  26. package/src/bindings/runtime/native.ts +153 -0
  27. package/src/bindings/runtime/ring.ts +54 -0
  28. package/src/bindings/runtime/scope.ts +133 -0
  29. package/src/bindings/runtime/trace.ts +65 -0
  30. package/src/connection.ts +35 -0
  31. package/src/database.ts +27 -0
  32. package/src/errors.ts +30 -0
  33. package/src/file-assets.d.ts +10 -0
  34. package/src/index.ts +17 -0
  35. package/src/library.ts +83 -0
  36. package/src/neo.ts +16 -0
  37. package/src/reader.ts +47 -0
  38. package/src/statement.ts +61 -0
  39. package/src/types.ts +52 -0
  40. package/src/version.ts +6 -0
  41. package/vendor/node-api/LICENSE +7 -0
  42. package/vendor/node-api/PROVENANCE.md +54 -0
  43. package/vendor/node-api/node-bindings.d.ts +1669 -0
  44. package/vendor/node-api/src/DuckDBAppender.ts +237 -0
  45. package/vendor/node-api/src/DuckDBClientContext.ts +13 -0
  46. package/vendor/node-api/src/DuckDBConnection.ts +315 -0
  47. package/vendor/node-api/src/DuckDBDataChunk.ts +412 -0
  48. package/vendor/node-api/src/DuckDBDataChunkWriter.ts +144 -0
  49. package/vendor/node-api/src/DuckDBExtractedStatements.ts +37 -0
  50. package/vendor/node-api/src/DuckDBInstance.ts +35 -0
  51. package/vendor/node-api/src/DuckDBInstanceCache.ts +29 -0
  52. package/vendor/node-api/src/DuckDBLogicalType.ts +446 -0
  53. package/vendor/node-api/src/DuckDBMaterializedResult.ts +39 -0
  54. package/vendor/node-api/src/DuckDBPendingResult.ts +83 -0
  55. package/vendor/node-api/src/DuckDBPreparedStatement.ts +376 -0
  56. package/vendor/node-api/src/DuckDBPreparedStatementCollection.ts +5 -0
  57. package/vendor/node-api/src/DuckDBPreparedStatementWeakRefCollection.ts +31 -0
  58. package/vendor/node-api/src/DuckDBResult.ts +403 -0
  59. package/vendor/node-api/src/DuckDBResultReader.ts +283 -0
  60. package/vendor/node-api/src/DuckDBScalarFunction.ts +149 -0
  61. package/vendor/node-api/src/DuckDBScalarFunctionBindInfo.ts +34 -0
  62. package/vendor/node-api/src/DuckDBScalarFunctionInfo.ts +34 -0
  63. package/vendor/node-api/src/DuckDBScalarFunctionInitInfo.ts +35 -0
  64. package/vendor/node-api/src/DuckDBTableFunction.ts +149 -0
  65. package/vendor/node-api/src/DuckDBTableFunctionBindInfo.ts +56 -0
  66. package/vendor/node-api/src/DuckDBTableFunctionInfo.ts +36 -0
  67. package/vendor/node-api/src/DuckDBTableFunctionInitInfo.ts +52 -0
  68. package/vendor/node-api/src/DuckDBType.ts +1 -0
  69. package/vendor/node-api/src/DuckDBTypeId.ts +46 -0
  70. package/vendor/node-api/src/DuckDBValueConverter.ts +23 -0
  71. package/vendor/node-api/src/DuckDBValueConverters.ts +461 -0
  72. package/vendor/node-api/src/DuckDBVector.ts +1 -0
  73. package/vendor/node-api/src/JS.ts +11 -0
  74. package/vendor/node-api/src/JSDuckDBValueConverter.ts +85 -0
  75. package/vendor/node-api/src/JSInputTypeForTypeId.ts +101 -0
  76. package/vendor/node-api/src/JSToDuckDBValueConverter.ts +136 -0
  77. package/vendor/node-api/src/JSTypeForTypeId.ts +78 -0
  78. package/vendor/node-api/src/Json.ts +7 -0
  79. package/vendor/node-api/src/JsonDuckDBValueConverter.ts +72 -0
  80. package/vendor/node-api/src/JsonTypeForTypeId.ts +86 -0
  81. package/vendor/node-api/src/ToDuckDBValueConverter.ts +68 -0
  82. package/vendor/node-api/src/ToDuckDBValueConverters.ts +303 -0
  83. package/vendor/node-api/src/configurationOptionDescriptions.ts +13 -0
  84. package/vendor/node-api/src/conversion/bytesFromString.ts +5 -0
  85. package/vendor/node-api/src/conversion/dateTimeStringConversion.ts +343 -0
  86. package/vendor/node-api/src/conversion/displayStringForDuckDBValue.ts +12 -0
  87. package/vendor/node-api/src/conversion/stringFromBlob.ts +48 -0
  88. package/vendor/node-api/src/conversion/stringFromDecimal.ts +129 -0
  89. package/vendor/node-api/src/conversion/varintDecode.ts +42 -0
  90. package/vendor/node-api/src/convertColumnsFromChunks.ts +28 -0
  91. package/vendor/node-api/src/convertColumnsObjectFromChunks.ts +29 -0
  92. package/vendor/node-api/src/convertRowObjectsFromChunks.ts +21 -0
  93. package/vendor/node-api/src/convertRowsFromChunks.ts +16 -0
  94. package/vendor/node-api/src/createConfig.ts +14 -0
  95. package/vendor/node-api/src/createDuckDBValueConverter.ts +17 -0
  96. package/vendor/node-api/src/createResult.ts +15 -0
  97. package/vendor/node-api/src/createValue.ts +355 -0
  98. package/vendor/node-api/src/duckdb.ts +51 -0
  99. package/vendor/node-api/src/enums.ts +7 -0
  100. package/vendor/node-api/src/getColumnsFromChunks.ts +13 -0
  101. package/vendor/node-api/src/getColumnsObjectFromChunks.ts +16 -0
  102. package/vendor/node-api/src/getRowObjectsFromChunks.ts +13 -0
  103. package/vendor/node-api/src/getRowsFromChunks.ts +12 -0
  104. package/vendor/node-api/src/index.ts +3 -0
  105. package/vendor/node-api/src/readValue.ts +31 -0
  106. package/vendor/node-api/src/sleep.ts +5 -0
  107. package/vendor/node-api/src/sql.ts +7 -0
  108. package/vendor/node-api/src/tsconfig.json +7 -0
  109. package/vendor/node-api/src/typeForValue.ts +144 -0
  110. package/vendor/node-api/src/types/BaseDuckDBType.ts +31 -0
  111. package/vendor/node-api/src/types/DuckDBAnyType.ts +13 -0
  112. package/vendor/node-api/src/types/DuckDBArrayType.ts +43 -0
  113. package/vendor/node-api/src/types/DuckDBBigIntType.ts +21 -0
  114. package/vendor/node-api/src/types/DuckDBBigNumType.ts +21 -0
  115. package/vendor/node-api/src/types/DuckDBBitType.ts +13 -0
  116. package/vendor/node-api/src/types/DuckDBBlobType.ts +13 -0
  117. package/vendor/node-api/src/types/DuckDBBooleanType.ts +13 -0
  118. package/vendor/node-api/src/types/DuckDBDateType.ts +29 -0
  119. package/vendor/node-api/src/types/DuckDBDecimalType.ts +46 -0
  120. package/vendor/node-api/src/types/DuckDBDoubleType.ts +21 -0
  121. package/vendor/node-api/src/types/DuckDBEnumType.ts +111 -0
  122. package/vendor/node-api/src/types/DuckDBFloatType.ts +21 -0
  123. package/vendor/node-api/src/types/DuckDBGeometryType.ts +36 -0
  124. package/vendor/node-api/src/types/DuckDBHugeIntType.ts +21 -0
  125. package/vendor/node-api/src/types/DuckDBIntegerLiteralType.ts +13 -0
  126. package/vendor/node-api/src/types/DuckDBIntegerType.ts +21 -0
  127. package/vendor/node-api/src/types/DuckDBIntervalType.ts +13 -0
  128. package/vendor/node-api/src/types/DuckDBListType.ts +35 -0
  129. package/vendor/node-api/src/types/DuckDBMapType.ts +47 -0
  130. package/vendor/node-api/src/types/DuckDBSQLNullType.ts +17 -0
  131. package/vendor/node-api/src/types/DuckDBSmallIntType.ts +21 -0
  132. package/vendor/node-api/src/types/DuckDBStringLiteralType.ts +13 -0
  133. package/vendor/node-api/src/types/DuckDBStructType.ts +104 -0
  134. package/vendor/node-api/src/types/DuckDBTimeNSType.ts +20 -0
  135. package/vendor/node-api/src/types/DuckDBTimeTZType.ts +23 -0
  136. package/vendor/node-api/src/types/DuckDBTimeType.ts +20 -0
  137. package/vendor/node-api/src/types/DuckDBTimestampMillisecondsType.ts +29 -0
  138. package/vendor/node-api/src/types/DuckDBTimestampNanosecondsType.ts +29 -0
  139. package/vendor/node-api/src/types/DuckDBTimestampSecondsType.ts +29 -0
  140. package/vendor/node-api/src/types/DuckDBTimestampTZNanosecondsType.ts +32 -0
  141. package/vendor/node-api/src/types/DuckDBTimestampTZType.ts +32 -0
  142. package/vendor/node-api/src/types/DuckDBTimestampType.ts +32 -0
  143. package/vendor/node-api/src/types/DuckDBTinyIntType.ts +21 -0
  144. package/vendor/node-api/src/types/DuckDBType.ts +86 -0
  145. package/vendor/node-api/src/types/DuckDBUBigIntType.ts +21 -0
  146. package/vendor/node-api/src/types/DuckDBUHugeIntType.ts +21 -0
  147. package/vendor/node-api/src/types/DuckDBUIntegerType.ts +21 -0
  148. package/vendor/node-api/src/types/DuckDBUSmallIntType.ts +21 -0
  149. package/vendor/node-api/src/types/DuckDBUTinyIntType.ts +21 -0
  150. package/vendor/node-api/src/types/DuckDBUUIDType.ts +20 -0
  151. package/vendor/node-api/src/types/DuckDBUnionType.ts +74 -0
  152. package/vendor/node-api/src/types/DuckDBVarCharType.ts +13 -0
  153. package/vendor/node-api/src/types/DuckDBVariantType.ts +13 -0
  154. package/vendor/node-api/src/types/index.ts +44 -0
  155. package/vendor/node-api/src/values/DuckDBArrayValue.ts +18 -0
  156. package/vendor/node-api/src/values/DuckDBBitValue.ts +117 -0
  157. package/vendor/node-api/src/values/DuckDBBlobValue.ts +26 -0
  158. package/vendor/node-api/src/values/DuckDBDateValue.ts +43 -0
  159. package/vendor/node-api/src/values/DuckDBDecimalValue.ts +44 -0
  160. package/vendor/node-api/src/values/DuckDBGeometryValue.ts +30 -0
  161. package/vendor/node-api/src/values/DuckDBIntervalValue.ts +22 -0
  162. package/vendor/node-api/src/values/DuckDBListValue.ts +18 -0
  163. package/vendor/node-api/src/values/DuckDBMapValue.ts +25 -0
  164. package/vendor/node-api/src/values/DuckDBStructValue.ts +22 -0
  165. package/vendor/node-api/src/values/DuckDBTimeNSValue.ts +23 -0
  166. package/vendor/node-api/src/values/DuckDBTimeTZValue.ts +96 -0
  167. package/vendor/node-api/src/values/DuckDBTimeValue.ts +34 -0
  168. package/vendor/node-api/src/values/DuckDBTimestampMillisecondsValue.ts +29 -0
  169. package/vendor/node-api/src/values/DuckDBTimestampNanosecondsValue.ts +28 -0
  170. package/vendor/node-api/src/values/DuckDBTimestampSecondsValue.ts +28 -0
  171. package/vendor/node-api/src/values/DuckDBTimestampTZNanosecondsValue.ts +44 -0
  172. package/vendor/node-api/src/values/DuckDBTimestampTZValue.ts +54 -0
  173. package/vendor/node-api/src/values/DuckDBTimestampValue.ts +45 -0
  174. package/vendor/node-api/src/values/DuckDBTupleValue.ts +22 -0
  175. package/vendor/node-api/src/values/DuckDBUUIDValue.ts +48 -0
  176. package/vendor/node-api/src/values/DuckDBUnionValue.ts +22 -0
  177. package/vendor/node-api/src/values/DuckDBValue.ts +53 -0
  178. package/vendor/node-api/src/values/DuckDBVariantValue.ts +34 -0
  179. package/vendor/node-api/src/values/index.ts +24 -0
  180. package/vendor/node-api/src/vectors/DuckDBArrayVector.ts +107 -0
  181. package/vendor/node-api/src/vectors/DuckDBBigIntVector.ts +75 -0
  182. package/vendor/node-api/src/vectors/DuckDBBigNumVector.ts +98 -0
  183. package/vendor/node-api/src/vectors/DuckDBBitVector.ts +102 -0
  184. package/vendor/node-api/src/vectors/DuckDBBlobVector.ts +112 -0
  185. package/vendor/node-api/src/vectors/DuckDBBooleanVector.ts +84 -0
  186. package/vendor/node-api/src/vectors/DuckDBDateVector.ts +80 -0
  187. package/vendor/node-api/src/vectors/DuckDBDecimal128Vector.ts +107 -0
  188. package/vendor/node-api/src/vectors/DuckDBDecimal16Vector.ts +104 -0
  189. package/vendor/node-api/src/vectors/DuckDBDecimal32Vector.ts +104 -0
  190. package/vendor/node-api/src/vectors/DuckDBDecimal64Vector.ts +104 -0
  191. package/vendor/node-api/src/vectors/DuckDBDoubleVector.ts +68 -0
  192. package/vendor/node-api/src/vectors/DuckDBEnum16Vector.ts +75 -0
  193. package/vendor/node-api/src/vectors/DuckDBEnum32Vector.ts +75 -0
  194. package/vendor/node-api/src/vectors/DuckDBEnum8Vector.ts +75 -0
  195. package/vendor/node-api/src/vectors/DuckDBFloatVector.ts +68 -0
  196. package/vendor/node-api/src/vectors/DuckDBGeometryVector.ts +97 -0
  197. package/vendor/node-api/src/vectors/DuckDBHugeIntVector.ts +89 -0
  198. package/vendor/node-api/src/vectors/DuckDBIntegerVector.ts +75 -0
  199. package/vendor/node-api/src/vectors/DuckDBIntervalVector.ts +100 -0
  200. package/vendor/node-api/src/vectors/DuckDBListVector.ts +221 -0
  201. package/vendor/node-api/src/vectors/DuckDBMapVector.ts +88 -0
  202. package/vendor/node-api/src/vectors/DuckDBSQLNullVector.ts +53 -0
  203. package/vendor/node-api/src/vectors/DuckDBSmallIntVector.ts +75 -0
  204. package/vendor/node-api/src/vectors/DuckDBStructVector.ts +138 -0
  205. package/vendor/node-api/src/vectors/DuckDBTimeNSVector.ts +80 -0
  206. package/vendor/node-api/src/vectors/DuckDBTimeTZVector.ts +80 -0
  207. package/vendor/node-api/src/vectors/DuckDBTimeVector.ts +80 -0
  208. package/vendor/node-api/src/vectors/DuckDBTimestampMillisecondsVector.ts +88 -0
  209. package/vendor/node-api/src/vectors/DuckDBTimestampNanosecondsVector.ts +88 -0
  210. package/vendor/node-api/src/vectors/DuckDBTimestampSecondsVector.ts +88 -0
  211. package/vendor/node-api/src/vectors/DuckDBTimestampTZNanosecondsVector.ts +88 -0
  212. package/vendor/node-api/src/vectors/DuckDBTimestampTZVector.ts +86 -0
  213. package/vendor/node-api/src/vectors/DuckDBTimestampVector.ts +83 -0
  214. package/vendor/node-api/src/vectors/DuckDBTinyIntVector.ts +75 -0
  215. package/vendor/node-api/src/vectors/DuckDBTupleVector.ts +125 -0
  216. package/vendor/node-api/src/vectors/DuckDBUBigIntVector.ts +75 -0
  217. package/vendor/node-api/src/vectors/DuckDBUHugeIntVector.ts +89 -0
  218. package/vendor/node-api/src/vectors/DuckDBUIntegerVector.ts +75 -0
  219. package/vendor/node-api/src/vectors/DuckDBUSmallIntVector.ts +75 -0
  220. package/vendor/node-api/src/vectors/DuckDBUTinyIntVector.ts +75 -0
  221. package/vendor/node-api/src/vectors/DuckDBUUIDVector.ts +89 -0
  222. package/vendor/node-api/src/vectors/DuckDBUnionVector.ts +84 -0
  223. package/vendor/node-api/src/vectors/DuckDBValidity.ts +104 -0
  224. package/vendor/node-api/src/vectors/DuckDBVarCharVector.ts +100 -0
  225. package/vendor/node-api/src/vectors/DuckDBVariantVector.ts +609 -0
  226. package/vendor/node-api/src/vectors/DuckDBVector.ts +33 -0
  227. package/vendor/node-api/src/vectors/createVector.ts +269 -0
  228. package/vendor/node-api/src/vectors/dataAccessors.ts +387 -0
  229. package/vendor/node-api/src/vectors/index.ts +50 -0
  230. package/vendor/node-api/src/vectors/vectorRegistry.ts +24 -0
  231. package/vendor/node-api/src/version.ts +5 -0
@@ -0,0 +1,104 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBDecimalType,
4
+ } from '../DuckDBType';
5
+ import {
6
+ DuckDBDecimalValue,
7
+ } from '../values';
8
+ import { DuckDBVector } from './DuckDBVector';
9
+ import { DuckDBValidity } from './DuckDBValidity';
10
+ import {
11
+ getDecimal64,
12
+ getInt64,
13
+ setInt64,
14
+ vectorData,
15
+ } from './dataAccessors';
16
+
17
+ export class DuckDBDecimal64Vector extends DuckDBVector<DuckDBDecimalValue> {
18
+ private readonly decimalType: DuckDBDecimalType;
19
+ private readonly dataView: DataView;
20
+ private readonly validity: DuckDBValidity;
21
+ private readonly vector: duckdb.Vector;
22
+ private readonly _itemCount: number;
23
+ constructor(
24
+ decimalType: DuckDBDecimalType,
25
+ dataView: DataView,
26
+ validity: DuckDBValidity,
27
+ vector: duckdb.Vector,
28
+ itemCount: number
29
+ ) {
30
+ super();
31
+ this.decimalType = decimalType;
32
+ this.dataView = dataView;
33
+ this.validity = validity;
34
+ this.vector = vector;
35
+ this._itemCount = itemCount;
36
+ }
37
+ static fromRawVector(
38
+ decimalType: DuckDBDecimalType,
39
+ vector: duckdb.Vector,
40
+ itemCount: number
41
+ ): DuckDBDecimal64Vector {
42
+ const data = vectorData(vector, itemCount * 8);
43
+ const dataView = new DataView(
44
+ data.buffer,
45
+ data.byteOffset,
46
+ data.byteLength
47
+ );
48
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
49
+ return new DuckDBDecimal64Vector(
50
+ decimalType,
51
+ dataView,
52
+ validity,
53
+ vector,
54
+ itemCount
55
+ );
56
+ }
57
+ public override get type(): DuckDBDecimalType {
58
+ return this.decimalType;
59
+ }
60
+ public override get itemCount(): number {
61
+ return this._itemCount;
62
+ }
63
+ public override getItem(itemIndex: number): DuckDBDecimalValue | null {
64
+ return this.validity.itemValid(itemIndex)
65
+ ? getDecimal64(this.dataView, itemIndex * 8, this.decimalType)
66
+ : null;
67
+ }
68
+ public getScaledValue(itemIndex: number): bigint | null {
69
+ return this.validity.itemValid(itemIndex)
70
+ ? getInt64(this.dataView, itemIndex * 8)
71
+ : null;
72
+ }
73
+ public override setItem(itemIndex: number, value: DuckDBDecimalValue | null) {
74
+ if (value != null) {
75
+ setInt64(this.dataView, itemIndex * 8, value.value);
76
+ this.validity.setItemValid(itemIndex, true);
77
+ } else {
78
+ this.validity.setItemValid(itemIndex, false);
79
+ }
80
+ }
81
+ public override flush() {
82
+ duckdb.copy_data_to_vector(
83
+ this.vector,
84
+ 0,
85
+ this.dataView.buffer as ArrayBuffer,
86
+ this.dataView.byteOffset,
87
+ this.dataView.byteLength
88
+ );
89
+ this.validity.flush(this.vector);
90
+ }
91
+ public override slice(offset: number, length: number): DuckDBDecimal64Vector {
92
+ return new DuckDBDecimal64Vector(
93
+ this.decimalType,
94
+ new DataView(
95
+ this.dataView.buffer,
96
+ this.dataView.byteOffset + offset * 8,
97
+ length * 8
98
+ ),
99
+ this.validity.slice(offset, length),
100
+ this.vector,
101
+ length
102
+ );
103
+ }
104
+ }
@@ -0,0 +1,68 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBDoubleType,
4
+ } from '../DuckDBType';
5
+ import { DuckDBVector } from './DuckDBVector';
6
+ import { DuckDBValidity } from './DuckDBValidity';
7
+ import {
8
+ vectorData,
9
+ } from './dataAccessors';
10
+
11
+ export class DuckDBDoubleVector extends DuckDBVector<number> {
12
+ private readonly items: Float64Array;
13
+ private readonly validity: DuckDBValidity;
14
+ private readonly vector: duckdb.Vector;
15
+ constructor(
16
+ items: Float64Array,
17
+ validity: DuckDBValidity,
18
+ vector: duckdb.Vector
19
+ ) {
20
+ super();
21
+ this.items = items;
22
+ this.validity = validity;
23
+ this.vector = vector;
24
+ }
25
+ static fromRawVector(
26
+ vector: duckdb.Vector,
27
+ itemCount: number
28
+ ): DuckDBDoubleVector {
29
+ const data = vectorData(vector, itemCount * Float64Array.BYTES_PER_ELEMENT);
30
+ const items = new Float64Array(data.buffer, data.byteOffset, itemCount);
31
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
32
+ return new DuckDBDoubleVector(items, validity, vector);
33
+ }
34
+ public override get type(): DuckDBDoubleType {
35
+ return DuckDBDoubleType.instance;
36
+ }
37
+ public override get itemCount(): number {
38
+ return this.items.length;
39
+ }
40
+ public override getItem(itemIndex: number): number | null {
41
+ return this.validity.itemValid(itemIndex) ? this.items[itemIndex] : null;
42
+ }
43
+ public override setItem(itemIndex: number, value: number | null) {
44
+ if (value != null) {
45
+ this.items[itemIndex] = value;
46
+ this.validity.setItemValid(itemIndex, true);
47
+ } else {
48
+ this.validity.setItemValid(itemIndex, false);
49
+ }
50
+ }
51
+ public override flush() {
52
+ duckdb.copy_data_to_vector(
53
+ this.vector,
54
+ 0,
55
+ this.items.buffer as ArrayBuffer,
56
+ this.items.byteOffset,
57
+ this.items.byteLength
58
+ );
59
+ this.validity.flush(this.vector);
60
+ }
61
+ public override slice(offset: number, length: number): DuckDBDoubleVector {
62
+ return new DuckDBDoubleVector(
63
+ this.items.slice(offset, offset + length),
64
+ this.validity.slice(offset, length),
65
+ this.vector
66
+ );
67
+ }
68
+ }
@@ -0,0 +1,75 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBEnumType,
4
+ } from '../DuckDBType';
5
+ import { DuckDBVector } from './DuckDBVector';
6
+ import { DuckDBValidity } from './DuckDBValidity';
7
+ import {
8
+ vectorData,
9
+ } from './dataAccessors';
10
+
11
+ export class DuckDBEnum16Vector extends DuckDBVector<string> {
12
+ private readonly enumType: DuckDBEnumType;
13
+ private readonly items: Uint16Array;
14
+ private readonly validity: DuckDBValidity;
15
+ private readonly vector: duckdb.Vector;
16
+ constructor(
17
+ enumType: DuckDBEnumType,
18
+ items: Uint16Array,
19
+ validity: DuckDBValidity,
20
+ vector: duckdb.Vector
21
+ ) {
22
+ super();
23
+ this.enumType = enumType;
24
+ this.items = items;
25
+ this.validity = validity;
26
+ this.vector = vector;
27
+ }
28
+ static fromRawVector(
29
+ enumType: DuckDBEnumType,
30
+ vector: duckdb.Vector,
31
+ itemCount: number
32
+ ): DuckDBEnum16Vector {
33
+ const data = vectorData(vector, itemCount * 2);
34
+ const items = new Uint16Array(data.buffer, data.byteOffset, itemCount);
35
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
36
+ return new DuckDBEnum16Vector(enumType, items, validity, vector);
37
+ }
38
+ public override get type(): DuckDBEnumType {
39
+ return this.enumType;
40
+ }
41
+ public override get itemCount(): number {
42
+ return this.items.length;
43
+ }
44
+ public override getItem(itemIndex: number): string | null {
45
+ return this.validity.itemValid(itemIndex)
46
+ ? this.enumType.values[this.items[itemIndex]]
47
+ : null;
48
+ }
49
+ public override setItem(itemIndex: number, value: string | null) {
50
+ if (value != null) {
51
+ this.items[itemIndex] = this.enumType.indexForValue(value);
52
+ this.validity.setItemValid(itemIndex, true);
53
+ } else {
54
+ this.validity.setItemValid(itemIndex, false);
55
+ }
56
+ }
57
+ public override flush() {
58
+ duckdb.copy_data_to_vector(
59
+ this.vector,
60
+ 0,
61
+ this.items.buffer as ArrayBuffer,
62
+ this.items.byteOffset,
63
+ this.items.byteLength
64
+ );
65
+ this.validity.flush(this.vector);
66
+ }
67
+ public override slice(offset: number, length: number): DuckDBEnum16Vector {
68
+ return new DuckDBEnum16Vector(
69
+ this.enumType,
70
+ this.items.slice(offset, offset + length),
71
+ this.validity.slice(offset, length),
72
+ this.vector
73
+ );
74
+ }
75
+ }
@@ -0,0 +1,75 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBEnumType,
4
+ } from '../DuckDBType';
5
+ import { DuckDBVector } from './DuckDBVector';
6
+ import { DuckDBValidity } from './DuckDBValidity';
7
+ import {
8
+ vectorData,
9
+ } from './dataAccessors';
10
+
11
+ export class DuckDBEnum32Vector extends DuckDBVector<string> {
12
+ private readonly enumType: DuckDBEnumType;
13
+ private readonly items: Uint32Array;
14
+ private readonly validity: DuckDBValidity;
15
+ private readonly vector: duckdb.Vector;
16
+ constructor(
17
+ enumType: DuckDBEnumType,
18
+ items: Uint32Array,
19
+ validity: DuckDBValidity,
20
+ vector: duckdb.Vector
21
+ ) {
22
+ super();
23
+ this.enumType = enumType;
24
+ this.items = items;
25
+ this.validity = validity;
26
+ this.vector = vector;
27
+ }
28
+ static fromRawVector(
29
+ enumType: DuckDBEnumType,
30
+ vector: duckdb.Vector,
31
+ itemCount: number
32
+ ): DuckDBEnum32Vector {
33
+ const data = vectorData(vector, itemCount * 4);
34
+ const items = new Uint32Array(data.buffer, data.byteOffset, itemCount);
35
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
36
+ return new DuckDBEnum32Vector(enumType, items, validity, vector);
37
+ }
38
+ public override get type(): DuckDBEnumType {
39
+ return this.enumType;
40
+ }
41
+ public override get itemCount(): number {
42
+ return this.items.length;
43
+ }
44
+ public override getItem(itemIndex: number): string | null {
45
+ return this.validity.itemValid(itemIndex)
46
+ ? this.enumType.values[this.items[itemIndex]]
47
+ : null;
48
+ }
49
+ public override setItem(itemIndex: number, value: string | null) {
50
+ if (value != null) {
51
+ this.items[itemIndex] = this.enumType.indexForValue(value);
52
+ this.validity.setItemValid(itemIndex, true);
53
+ } else {
54
+ this.validity.setItemValid(itemIndex, false);
55
+ }
56
+ }
57
+ public override flush() {
58
+ duckdb.copy_data_to_vector(
59
+ this.vector,
60
+ 0,
61
+ this.items.buffer as ArrayBuffer,
62
+ this.items.byteOffset,
63
+ this.items.byteLength
64
+ );
65
+ this.validity.flush(this.vector);
66
+ }
67
+ public override slice(offset: number, length: number): DuckDBEnum32Vector {
68
+ return new DuckDBEnum32Vector(
69
+ this.enumType,
70
+ this.items.slice(offset, offset + length),
71
+ this.validity.slice(offset, length),
72
+ this.vector
73
+ );
74
+ }
75
+ }
@@ -0,0 +1,75 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBEnumType,
4
+ } from '../DuckDBType';
5
+ import { DuckDBVector } from './DuckDBVector';
6
+ import { DuckDBValidity } from './DuckDBValidity';
7
+ import {
8
+ vectorData,
9
+ } from './dataAccessors';
10
+
11
+ export class DuckDBEnum8Vector extends DuckDBVector<string> {
12
+ private readonly enumType: DuckDBEnumType;
13
+ private readonly items: Uint8Array;
14
+ private readonly validity: DuckDBValidity;
15
+ private readonly vector: duckdb.Vector;
16
+ constructor(
17
+ enumType: DuckDBEnumType,
18
+ items: Uint8Array,
19
+ validity: DuckDBValidity,
20
+ vector: duckdb.Vector
21
+ ) {
22
+ super();
23
+ this.enumType = enumType;
24
+ this.items = items;
25
+ this.validity = validity;
26
+ this.vector = vector;
27
+ }
28
+ static fromRawVector(
29
+ enumType: DuckDBEnumType,
30
+ vector: duckdb.Vector,
31
+ itemCount: number
32
+ ): DuckDBEnum8Vector {
33
+ const data = vectorData(vector, itemCount);
34
+ const items = new Uint8Array(data.buffer, data.byteOffset, itemCount);
35
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
36
+ return new DuckDBEnum8Vector(enumType, items, validity, vector);
37
+ }
38
+ public override get type(): DuckDBEnumType {
39
+ return this.enumType;
40
+ }
41
+ public override get itemCount(): number {
42
+ return this.items.length;
43
+ }
44
+ public override getItem(itemIndex: number): string | null {
45
+ return this.validity.itemValid(itemIndex)
46
+ ? this.enumType.values[this.items[itemIndex]]
47
+ : null;
48
+ }
49
+ public override setItem(itemIndex: number, value: string | null) {
50
+ if (value != null) {
51
+ this.items[itemIndex] = this.enumType.indexForValue(value);
52
+ this.validity.setItemValid(itemIndex, true);
53
+ } else {
54
+ this.validity.setItemValid(itemIndex, false);
55
+ }
56
+ }
57
+ public override flush() {
58
+ duckdb.copy_data_to_vector(
59
+ this.vector,
60
+ 0,
61
+ this.items.buffer as ArrayBuffer,
62
+ this.items.byteOffset,
63
+ this.items.byteLength
64
+ );
65
+ this.validity.flush(this.vector);
66
+ }
67
+ public override slice(offset: number, length: number): DuckDBEnum8Vector {
68
+ return new DuckDBEnum8Vector(
69
+ this.enumType,
70
+ this.items.slice(offset, offset + length),
71
+ this.validity.slice(offset, length),
72
+ this.vector
73
+ );
74
+ }
75
+ }
@@ -0,0 +1,68 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBFloatType,
4
+ } from '../DuckDBType';
5
+ import { DuckDBVector } from './DuckDBVector';
6
+ import { DuckDBValidity } from './DuckDBValidity';
7
+ import {
8
+ vectorData,
9
+ } from './dataAccessors';
10
+
11
+ export class DuckDBFloatVector extends DuckDBVector<number> {
12
+ private readonly items: Float32Array;
13
+ private readonly validity: DuckDBValidity;
14
+ private readonly vector: duckdb.Vector;
15
+ constructor(
16
+ items: Float32Array,
17
+ validity: DuckDBValidity,
18
+ vector: duckdb.Vector
19
+ ) {
20
+ super();
21
+ this.items = items;
22
+ this.validity = validity;
23
+ this.vector = vector;
24
+ }
25
+ static fromRawVector(
26
+ vector: duckdb.Vector,
27
+ itemCount: number
28
+ ): DuckDBFloatVector {
29
+ const data = vectorData(vector, itemCount * Float32Array.BYTES_PER_ELEMENT);
30
+ const items = new Float32Array(data.buffer, data.byteOffset, itemCount);
31
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
32
+ return new DuckDBFloatVector(items, validity, vector);
33
+ }
34
+ public override get type(): DuckDBFloatType {
35
+ return DuckDBFloatType.instance;
36
+ }
37
+ public override get itemCount(): number {
38
+ return this.items.length;
39
+ }
40
+ public override getItem(itemIndex: number): number | null {
41
+ return this.validity.itemValid(itemIndex) ? this.items[itemIndex] : null;
42
+ }
43
+ public override setItem(itemIndex: number, value: number | null) {
44
+ if (value != null) {
45
+ this.items[itemIndex] = value;
46
+ this.validity.setItemValid(itemIndex, true);
47
+ } else {
48
+ this.validity.setItemValid(itemIndex, false);
49
+ }
50
+ }
51
+ public override flush() {
52
+ duckdb.copy_data_to_vector(
53
+ this.vector,
54
+ 0,
55
+ this.items.buffer as ArrayBuffer,
56
+ this.items.byteOffset,
57
+ this.items.byteLength
58
+ );
59
+ this.validity.flush(this.vector);
60
+ }
61
+ public override slice(offset: number, length: number): DuckDBFloatVector {
62
+ return new DuckDBFloatVector(
63
+ this.items.slice(offset, offset + length),
64
+ this.validity.slice(offset, length),
65
+ this.vector
66
+ );
67
+ }
68
+ }
@@ -0,0 +1,97 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBGeometryType,
4
+ } from '../DuckDBType';
5
+ import {
6
+ DuckDBGeometryValue,
7
+ } from '../values';
8
+ import { DuckDBVector } from './DuckDBVector';
9
+ import { DuckDBValidity } from './DuckDBValidity';
10
+ import {
11
+ getBuffer,
12
+ vectorData,
13
+ } from './dataAccessors';
14
+
15
+ export class DuckDBGeometryVector extends DuckDBVector<DuckDBGeometryValue> {
16
+ private readonly dataView: DataView;
17
+ private readonly validity: DuckDBValidity;
18
+ private readonly vector: duckdb.Vector;
19
+ private readonly itemOffset: number;
20
+ private readonly _itemCount: number;
21
+ private readonly itemCache: (DuckDBGeometryValue | null | undefined)[];
22
+ private readonly itemCacheDirty: boolean[];
23
+ constructor(
24
+ dataView: DataView,
25
+ validity: DuckDBValidity,
26
+ vector: duckdb.Vector,
27
+ itemOffset: number,
28
+ itemCount: number
29
+ ) {
30
+ super();
31
+ this.dataView = dataView;
32
+ this.validity = validity;
33
+ this.vector = vector;
34
+ this.itemOffset = itemOffset;
35
+ this._itemCount = itemCount;
36
+ this.itemCache = [];
37
+ this.itemCacheDirty = [];
38
+ }
39
+ static fromRawVector(
40
+ vector: duckdb.Vector,
41
+ itemCount: number
42
+ ): DuckDBGeometryVector {
43
+ const data = vectorData(vector, itemCount * 16);
44
+ const dataView = new DataView(
45
+ data.buffer,
46
+ data.byteOffset,
47
+ data.byteLength
48
+ );
49
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
50
+ return new DuckDBGeometryVector(dataView, validity, vector, 0, itemCount);
51
+ }
52
+ public override get type(): DuckDBGeometryType {
53
+ return DuckDBGeometryType.instance;
54
+ }
55
+ public override get itemCount(): number {
56
+ return this._itemCount;
57
+ }
58
+ public override getItem(itemIndex: number): DuckDBGeometryValue | null {
59
+ return this.validity.itemValid(itemIndex)
60
+ ? new DuckDBGeometryValue(getBuffer(this.dataView, itemIndex * 16))
61
+ : null;
62
+ }
63
+ public override setItem(itemIndex: number, value: DuckDBGeometryValue | null) {
64
+ this.itemCache[itemIndex] = value;
65
+ this.validity.setItemValid(itemIndex, value != null);
66
+ this.itemCacheDirty[itemIndex] = true;
67
+ }
68
+ public override flush() {
69
+ for (let itemIndex = 0; itemIndex < this._itemCount; itemIndex++) {
70
+ if (this.itemCacheDirty[itemIndex]) {
71
+ const cachedItem = this.itemCache[itemIndex];
72
+ if (cachedItem !== undefined && cachedItem !== null) {
73
+ duckdb.vector_assign_string_element_len(
74
+ this.vector,
75
+ this.itemOffset + itemIndex,
76
+ cachedItem.bytes
77
+ );
78
+ }
79
+ this.itemCacheDirty[itemIndex] = false;
80
+ }
81
+ }
82
+ this.validity.flush(this.vector);
83
+ }
84
+ public override slice(offset: number, length: number): DuckDBGeometryVector {
85
+ return new DuckDBGeometryVector(
86
+ new DataView(
87
+ this.dataView.buffer,
88
+ this.dataView.byteOffset + offset * 16,
89
+ length * 16
90
+ ),
91
+ this.validity.slice(offset, length),
92
+ this.vector,
93
+ offset,
94
+ length
95
+ );
96
+ }
97
+ }
@@ -0,0 +1,89 @@
1
+ import duckdb from "../../../../src/bindings/index.ts";
2
+ import {
3
+ DuckDBHugeIntType,
4
+ } from '../DuckDBType';
5
+ import { DuckDBVector } from './DuckDBVector';
6
+ import { DuckDBValidity } from './DuckDBValidity';
7
+ import {
8
+ getInt128,
9
+ setInt128,
10
+ vectorData,
11
+ } from './dataAccessors';
12
+
13
+ export class DuckDBHugeIntVector extends DuckDBVector<bigint> {
14
+ private readonly dataView: DataView;
15
+ private readonly validity: DuckDBValidity;
16
+ private readonly vector: duckdb.Vector;
17
+ private readonly _itemCount: number;
18
+ constructor(
19
+ dataView: DataView,
20
+ validity: DuckDBValidity,
21
+ vector: duckdb.Vector,
22
+ itemCount: number
23
+ ) {
24
+ super();
25
+ this.dataView = dataView;
26
+ this.validity = validity;
27
+ this.vector = vector;
28
+ this._itemCount = itemCount;
29
+ }
30
+ static fromRawVector(
31
+ vector: duckdb.Vector,
32
+ itemCount: number
33
+ ): DuckDBHugeIntVector {
34
+ const data = vectorData(vector, itemCount * 16);
35
+ const dataView = new DataView(
36
+ data.buffer,
37
+ data.byteOffset,
38
+ data.byteLength
39
+ );
40
+ const validity = DuckDBValidity.fromVector(vector, itemCount);
41
+ return new DuckDBHugeIntVector(dataView, validity, vector, itemCount);
42
+ }
43
+ public override get type(): DuckDBHugeIntType {
44
+ return DuckDBHugeIntType.instance;
45
+ }
46
+ public override get itemCount(): number {
47
+ return this._itemCount;
48
+ }
49
+ public override getItem(itemIndex: number): bigint | null {
50
+ return this.validity.itemValid(itemIndex)
51
+ ? getInt128(this.dataView, itemIndex * 16)
52
+ : null;
53
+ }
54
+ public getDouble(itemIndex: number): number | null {
55
+ return this.validity.itemValid(itemIndex)
56
+ ? duckdb.hugeint_to_double(getInt128(this.dataView, itemIndex * 16))
57
+ : null;
58
+ }
59
+ public override setItem(itemIndex: number, value: bigint | null) {
60
+ if (value != null) {
61
+ setInt128(this.dataView, itemIndex * 16, value);
62
+ this.validity.setItemValid(itemIndex, true);
63
+ } else {
64
+ this.validity.setItemValid(itemIndex, false);
65
+ }
66
+ }
67
+ public override flush() {
68
+ duckdb.copy_data_to_vector(
69
+ this.vector,
70
+ 0,
71
+ this.dataView.buffer as ArrayBuffer,
72
+ this.dataView.byteOffset,
73
+ this.dataView.byteLength
74
+ );
75
+ this.validity.flush(this.vector);
76
+ }
77
+ public override slice(offset: number, length: number): DuckDBHugeIntVector {
78
+ return new DuckDBHugeIntVector(
79
+ new DataView(
80
+ this.dataView.buffer,
81
+ this.dataView.byteOffset + offset * 16,
82
+ length * 16
83
+ ),
84
+ this.validity.slice(offset, length),
85
+ this.vector,
86
+ length
87
+ );
88
+ }
89
+ }