@qualithm/arrow-flight-sql-js 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js ADDED
@@ -0,0 +1,526 @@
1
+ /**
2
+ * Flight SQL client implementation.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import { cmdDescriptor, FlightClient, FlightError } from "@qualithm/arrow-flight-js";
7
+ import { ActionClosePreparedStatementRequest, ActionCreatePreparedStatementRequest, ActionCreatePreparedStatementResult, CommandPreparedStatementQuery, CommandPreparedStatementUpdate, CommandStatementQuery, CommandStatementUpdate, DoPutPreparedStatementResult, DoPutUpdateResult } from "./generated/arrow/flight/protocol/sql/FlightSql.js";
8
+ /**
9
+ * Flight SQL type URL prefix for encoding commands in Any messages.
10
+ */
11
+ const TYPE_URL_PREFIX = "type.googleapis.com/arrow.flight.protocol.sql";
12
+ /**
13
+ * Flight SQL action types.
14
+ */
15
+ const ACTION_CREATE_PREPARED_STATEMENT = "CreatePreparedStatement";
16
+ const ACTION_CLOSE_PREPARED_STATEMENT = "ClosePreparedStatement";
17
+ /**
18
+ * Encodes a Flight SQL command as a descriptor command buffer.
19
+ *
20
+ * Flight SQL commands are encoded as protobuf Any messages with a type URL
21
+ * and the serialised command bytes.
22
+ *
23
+ * @param typeUrl - The type URL for the command
24
+ * @param data - The serialised command bytes
25
+ * @returns The encoded Any message buffer
26
+ */
27
+ function packAny(typeUrl, data) {
28
+ // Any message format:
29
+ // field 1 (type_url): string - wire type 2 (length-delimited)
30
+ // field 2 (value): bytes - wire type 2 (length-delimited)
31
+ const typeUrlBytes = Buffer.from(typeUrl, "utf8");
32
+ const typeUrlLen = typeUrlBytes.length;
33
+ const dataLen = data.length;
34
+ // Calculate varint sizes
35
+ const typeUrlVarIntSize = varIntSize(typeUrlLen);
36
+ const dataVarIntSize = varIntSize(dataLen);
37
+ // Total size: 1 (tag) + varint + typeUrl + 1 (tag) + varint + data
38
+ const totalSize = 1 + typeUrlVarIntSize + typeUrlLen + 1 + dataVarIntSize + dataLen;
39
+ const buffer = Buffer.alloc(totalSize);
40
+ let offset = 0;
41
+ // Field 1: type_url (tag = 0x0a = field 1, wire type 2)
42
+ buffer[offset++] = 0x0a;
43
+ offset = writeVarInt(buffer, offset, typeUrlLen);
44
+ typeUrlBytes.copy(buffer, offset);
45
+ offset += typeUrlLen;
46
+ // Field 2: value (tag = 0x12 = field 2, wire type 2)
47
+ buffer[offset++] = 0x12;
48
+ offset = writeVarInt(buffer, offset, dataLen);
49
+ Buffer.from(data).copy(buffer, offset);
50
+ return buffer;
51
+ }
52
+ /**
53
+ * Calculates the size of a varint encoding.
54
+ */
55
+ function varIntSize(value) {
56
+ let size = 1;
57
+ while (value >= 0x80) {
58
+ value >>>= 7;
59
+ size++;
60
+ }
61
+ return size;
62
+ }
63
+ /**
64
+ * Writes a varint to a buffer.
65
+ */
66
+ function writeVarInt(buffer, offset, value) {
67
+ while (value >= 0x80) {
68
+ buffer[offset++] = (value & 0x7f) | 0x80;
69
+ value >>>= 7;
70
+ }
71
+ buffer[offset++] = value;
72
+ return offset;
73
+ }
74
+ /**
75
+ * Reads a varint from a buffer.
76
+ */
77
+ function readVarInt(buffer, offset) {
78
+ let value = 0;
79
+ let shift = 0;
80
+ let bytesRead = 0;
81
+ while (offset < buffer.length) {
82
+ const byte = buffer[offset++];
83
+ bytesRead++;
84
+ value |= (byte & 0x7f) << shift;
85
+ if ((byte & 0x80) === 0) {
86
+ break;
87
+ }
88
+ shift += 7;
89
+ }
90
+ return { value, bytesRead };
91
+ }
92
+ /**
93
+ * Unpacks a protobuf Any message and returns the contained value bytes.
94
+ *
95
+ * @param buffer - The encoded Any message
96
+ * @returns The value bytes from the Any message
97
+ */
98
+ function unpackAny(buffer) {
99
+ // Any message format:
100
+ // field 1 (type_url): string - wire type 2 (length-delimited)
101
+ // field 2 (value): bytes - wire type 2 (length-delimited)
102
+ let offset = 0;
103
+ let valueBytes = Buffer.alloc(0);
104
+ while (offset < buffer.length) {
105
+ const tag = buffer[offset++];
106
+ const fieldNumber = tag >> 3;
107
+ const wireType = tag & 0x07;
108
+ if (wireType !== 2) {
109
+ // Skip non-length-delimited fields (not expected in Any)
110
+ continue;
111
+ }
112
+ const { value: length, bytesRead } = readVarInt(buffer, offset);
113
+ offset += bytesRead;
114
+ if (fieldNumber === 2) {
115
+ // This is the value field
116
+ valueBytes = buffer.subarray(offset, offset + length);
117
+ }
118
+ offset += length;
119
+ }
120
+ return valueBytes;
121
+ }
122
+ /**
123
+ * Creates a command descriptor for a Flight SQL command.
124
+ *
125
+ * @param typeName - The protobuf type name (without the prefix)
126
+ * @param encodedCommand - The encoded command bytes
127
+ * @returns A Flight descriptor
128
+ */
129
+ function createCommandDescriptor(typeName, encodedCommand) {
130
+ const typeUrl = `${TYPE_URL_PREFIX}.${typeName}`;
131
+ const anyBytes = packAny(typeUrl, encodedCommand);
132
+ return cmdDescriptor(anyBytes);
133
+ }
134
+ /**
135
+ * Arrow Flight SQL client for executing SQL queries and commands.
136
+ *
137
+ * Extends the base FlightClient with SQL-specific functionality including
138
+ * query execution, updates, and metadata queries.
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * const client = new FlightSqlClient({
143
+ * host: "localhost",
144
+ * port: 8815,
145
+ * tls: false
146
+ * })
147
+ *
148
+ * await client.connect()
149
+ *
150
+ * // Execute a query
151
+ * const info = await client.query("SELECT * FROM users")
152
+ *
153
+ * // Execute an update
154
+ * const result = await client.executeUpdate("INSERT INTO users (name) VALUES ('Alice')")
155
+ * console.log("Rows affected:", result.recordCount)
156
+ *
157
+ * client.close()
158
+ * ```
159
+ */
160
+ export class FlightSqlClient extends FlightClient {
161
+ /**
162
+ * Executes a SQL query and returns flight information for retrieving results.
163
+ *
164
+ * This method sends a CommandStatementQuery to the server and returns
165
+ * FlightInfo containing endpoints for data retrieval. Use the returned
166
+ * FlightInfo with `doGet()` to retrieve the actual data.
167
+ *
168
+ * @param query - The SQL query to execute
169
+ * @param options - Optional query options
170
+ * @returns Flight information for retrieving query results
171
+ * @throws {FlightError} If the query fails
172
+ *
173
+ * @example
174
+ * ```ts
175
+ * const info = await client.query("SELECT * FROM users WHERE active = true")
176
+ *
177
+ * // Retrieve data from each endpoint
178
+ * for (const endpoint of info.endpoint) {
179
+ * for await (const data of client.doGet(endpoint.ticket!)) {
180
+ * // Process data
181
+ * }
182
+ * }
183
+ * ```
184
+ */
185
+ async query(query, options) {
186
+ const command = {
187
+ query,
188
+ transactionId: options?.transactionId
189
+ };
190
+ const encoded = CommandStatementQuery.encode(command).finish();
191
+ const descriptor = createCommandDescriptor("CommandStatementQuery", encoded);
192
+ return this.getFlightInfo(descriptor, options);
193
+ }
194
+ /**
195
+ * Executes a prepared statement query and returns flight information for retrieving results.
196
+ *
197
+ * This method sends a CommandPreparedStatementQuery to the server and returns
198
+ * FlightInfo containing endpoints for data retrieval. Use the returned
199
+ * FlightInfo with `doGet()` to retrieve the actual data.
200
+ *
201
+ * @param handle - The prepared statement handle from createPreparedStatement
202
+ * @param options - Optional call options
203
+ * @returns Flight information for retrieving query results
204
+ * @throws {FlightError} If the query fails
205
+ *
206
+ * @example
207
+ * ```ts
208
+ * const prepared = await client.createPreparedStatement("SELECT * FROM users WHERE id = ?")
209
+ *
210
+ * // Execute the prepared statement
211
+ * const info = await client.executePreparedQuery(prepared.handle)
212
+ *
213
+ * // Retrieve data from each endpoint
214
+ * for (const endpoint of info.endpoint) {
215
+ * for await (const data of client.doGet(endpoint.ticket!)) {
216
+ * // Process data
217
+ * }
218
+ * }
219
+ *
220
+ * // Clean up
221
+ * await client.closePreparedStatement(prepared.handle)
222
+ * ```
223
+ */
224
+ async executePreparedQuery(handle, options) {
225
+ const command = {
226
+ preparedStatementHandle: handle
227
+ };
228
+ const encoded = CommandPreparedStatementQuery.encode(command).finish();
229
+ const descriptor = createCommandDescriptor("CommandPreparedStatementQuery", encoded);
230
+ return this.getFlightInfo(descriptor, options);
231
+ }
232
+ /**
233
+ * Executes a prepared statement update (INSERT, UPDATE, DELETE).
234
+ *
235
+ * @param handle - The prepared statement handle from createPreparedStatement
236
+ * @param options - Optional call options
237
+ * @returns The update result containing the number of affected records
238
+ * @throws {FlightError} If the update fails
239
+ *
240
+ * @example
241
+ * ```ts
242
+ * const prepared = await client.createPreparedStatement(
243
+ * "UPDATE users SET active = false WHERE id = ?"
244
+ * )
245
+ *
246
+ * // Execute the prepared statement
247
+ * const result = await client.executePreparedUpdate(prepared.handle)
248
+ * console.log("Rows updated:", result.recordCount)
249
+ *
250
+ * // Clean up
251
+ * await client.closePreparedStatement(prepared.handle)
252
+ * ```
253
+ */
254
+ async executePreparedUpdate(handle, options) {
255
+ const command = {
256
+ preparedStatementHandle: handle
257
+ };
258
+ const encoded = CommandPreparedStatementUpdate.encode(command).finish();
259
+ const descriptor = createCommandDescriptor("CommandPreparedStatementUpdate", encoded);
260
+ const stream = this.doPut(options);
261
+ // Send the command as the first message with descriptor
262
+ stream.write({
263
+ flightDescriptor: {
264
+ type: 2, // CMD
265
+ path: [],
266
+ cmd: descriptor.cmd
267
+ },
268
+ dataHeader: Buffer.alloc(0),
269
+ appMetadata: Buffer.alloc(0),
270
+ dataBody: Buffer.alloc(0)
271
+ });
272
+ stream.end();
273
+ // Collect results
274
+ const results = await stream.collectResults();
275
+ const firstResult = results.at(0);
276
+ if (!firstResult) {
277
+ throw new FlightError("no result returned from prepared update", "INTERNAL");
278
+ }
279
+ // Decode the DoPutUpdateResult from appMetadata
280
+ const { appMetadata } = firstResult;
281
+ if (appMetadata.length === 0) {
282
+ throw new FlightError("prepared update result missing app metadata", "INTERNAL");
283
+ }
284
+ const updateResult = DoPutUpdateResult.decode(appMetadata);
285
+ return {
286
+ recordCount: updateResult.recordCount
287
+ };
288
+ }
289
+ /**
290
+ * Executes a SQL update statement (INSERT, UPDATE, DELETE).
291
+ *
292
+ * @param query - The SQL update statement to execute
293
+ * @param options - Optional query options
294
+ * @returns The update result containing the number of affected records
295
+ * @throws {FlightError} If the update fails
296
+ *
297
+ * @example
298
+ * ```ts
299
+ * const result = await client.executeUpdate(
300
+ * "UPDATE users SET active = false WHERE last_login < '2024-01-01'"
301
+ * )
302
+ * console.log("Rows updated:", result.recordCount)
303
+ * ```
304
+ */
305
+ async executeUpdate(query, options) {
306
+ const command = {
307
+ query,
308
+ transactionId: options?.transactionId
309
+ };
310
+ const encoded = CommandStatementUpdate.encode(command).finish();
311
+ const descriptor = createCommandDescriptor("CommandStatementUpdate", encoded);
312
+ const stream = this.doPut(options);
313
+ // Send the command as the first message with descriptor
314
+ stream.write({
315
+ flightDescriptor: {
316
+ type: 2, // CMD
317
+ path: [],
318
+ cmd: descriptor.cmd
319
+ },
320
+ dataHeader: Buffer.alloc(0),
321
+ appMetadata: Buffer.alloc(0),
322
+ dataBody: Buffer.alloc(0)
323
+ });
324
+ stream.end();
325
+ // Collect results
326
+ const results = await stream.collectResults();
327
+ const firstResult = results.at(0);
328
+ if (!firstResult) {
329
+ throw new FlightError("no result returned from update", "INTERNAL");
330
+ }
331
+ // Decode the DoPutUpdateResult from appMetadata
332
+ const { appMetadata } = firstResult;
333
+ if (appMetadata.length === 0) {
334
+ throw new FlightError("update result missing app metadata", "INTERNAL");
335
+ }
336
+ const updateResult = DoPutUpdateResult.decode(appMetadata);
337
+ return {
338
+ recordCount: updateResult.recordCount
339
+ };
340
+ }
341
+ /**
342
+ * Creates a prepared statement for the given SQL query.
343
+ *
344
+ * The returned handle can be used to execute the query multiple times
345
+ * with different parameters. The prepared statement should be closed
346
+ * when no longer needed using `closePreparedStatement()`.
347
+ *
348
+ * @param query - The SQL query to prepare
349
+ * @param options - Optional options including transaction ID
350
+ * @returns The prepared statement result containing the handle and schemas
351
+ * @throws {FlightError} If the preparation fails
352
+ *
353
+ * @example
354
+ * ```ts
355
+ * const prepared = await client.createPreparedStatement(
356
+ * "SELECT * FROM users WHERE id = ?"
357
+ * )
358
+ *
359
+ * // Use prepared.handle with executePreparedQuery
360
+ * // ...
361
+ *
362
+ * // Clean up when done
363
+ * await client.closePreparedStatement(prepared.handle)
364
+ * ```
365
+ */
366
+ async createPreparedStatement(query, options) {
367
+ const request = {
368
+ query,
369
+ transactionId: options?.transactionId
370
+ };
371
+ const encoded = ActionCreatePreparedStatementRequest.encode(request).finish();
372
+ const typeUrl = `${TYPE_URL_PREFIX}.ActionCreatePreparedStatementRequest`;
373
+ const body = packAny(typeUrl, encoded);
374
+ const action = {
375
+ type: ACTION_CREATE_PREPARED_STATEMENT,
376
+ body
377
+ };
378
+ // Execute the action and collect the first result
379
+ let resultBody;
380
+ for await (const result of this.doAction(action, options)) {
381
+ resultBody = result.body;
382
+ break;
383
+ }
384
+ if (!resultBody || resultBody.length === 0) {
385
+ throw new FlightError("no result returned from create prepared statement", "INTERNAL");
386
+ }
387
+ // Unpack the Any message and decode the result
388
+ const valueBytes = unpackAny(resultBody);
389
+ const preparedResult = ActionCreatePreparedStatementResult.decode(valueBytes);
390
+ return {
391
+ handle: Buffer.from(preparedResult.preparedStatementHandle),
392
+ datasetSchema: Buffer.from(preparedResult.datasetSchema),
393
+ parameterSchema: Buffer.from(preparedResult.parameterSchema)
394
+ };
395
+ }
396
+ /**
397
+ * Closes a prepared statement and releases server resources.
398
+ *
399
+ * @param handle - The prepared statement handle to close
400
+ * @param options - Optional call options
401
+ * @throws {FlightError} If closing fails
402
+ *
403
+ * @example
404
+ * ```ts
405
+ * const prepared = await client.createPreparedStatement("SELECT * FROM users")
406
+ * // ... use the prepared statement ...
407
+ * await client.closePreparedStatement(prepared.handle)
408
+ * ```
409
+ */
410
+ async closePreparedStatement(handle, options) {
411
+ const request = {
412
+ preparedStatementHandle: handle
413
+ };
414
+ const encoded = ActionClosePreparedStatementRequest.encode(request).finish();
415
+ const typeUrl = `${TYPE_URL_PREFIX}.ActionClosePreparedStatementRequest`;
416
+ const body = packAny(typeUrl, encoded);
417
+ const action = {
418
+ type: ACTION_CLOSE_PREPARED_STATEMENT,
419
+ body
420
+ };
421
+ // Execute the action - no result expected
422
+ for await (const _ of this.doAction(action, options)) {
423
+ // Consume any results (usually none for close)
424
+ }
425
+ }
426
+ /**
427
+ * Binds parameter values to a prepared statement.
428
+ *
429
+ * Parameter values are sent as Arrow IPC data matching the parameter schema
430
+ * from the prepared statement. After binding, call `executePreparedQuery()`
431
+ * or `executePreparedUpdate()` to execute with the bound parameters.
432
+ *
433
+ * @param handle - The prepared statement handle
434
+ * @param parameters - The parameter data as Arrow IPC bytes
435
+ * @param options - Optional call options
436
+ * @returns Result containing an optional updated handle
437
+ * @throws {FlightError} If binding fails
438
+ *
439
+ * @example
440
+ * ```ts
441
+ * import { tableToIPC, tableFromArrays } from "apache-arrow"
442
+ *
443
+ * const prepared = await client.createPreparedStatement(
444
+ * "SELECT * FROM users WHERE id = ?"
445
+ * )
446
+ *
447
+ * // Create parameter data as Arrow IPC
448
+ * const params = tableFromArrays({ id: [42] })
449
+ * const ipcData = tableToIPC(params)
450
+ *
451
+ * // Bind the parameters
452
+ * const result = await client.bindParameters(prepared.handle, {
453
+ * schema: ipcData.slice(0, schemaLength), // Extract schema bytes
454
+ * data: ipcData.slice(schemaLength) // Extract data bytes
455
+ * })
456
+ *
457
+ * // Use updated handle if provided
458
+ * const handle = result.handle ?? prepared.handle
459
+ *
460
+ * // Execute and retrieve results
461
+ * const info = await client.executePreparedQuery(handle)
462
+ * ```
463
+ */
464
+ async bindParameters(handle, parameters, options) {
465
+ const command = {
466
+ preparedStatementHandle: handle
467
+ };
468
+ const encoded = CommandPreparedStatementQuery.encode(command).finish();
469
+ const descriptor = createCommandDescriptor("CommandPreparedStatementQuery", encoded);
470
+ const stream = this.doPut(options);
471
+ // Send the command with schema in the first message
472
+ stream.write({
473
+ flightDescriptor: {
474
+ type: 2, // CMD
475
+ path: [],
476
+ cmd: descriptor.cmd
477
+ },
478
+ dataHeader: Buffer.from(parameters.schema),
479
+ appMetadata: Buffer.alloc(0),
480
+ dataBody: Buffer.from(parameters.data)
481
+ });
482
+ stream.end();
483
+ // Collect results
484
+ const results = await stream.collectResults();
485
+ const firstResult = results.at(0);
486
+ // Server may not return any result (legacy behavior)
487
+ if (!firstResult || firstResult.appMetadata.length === 0) {
488
+ return {};
489
+ }
490
+ // Decode the DoPutPreparedStatementResult from appMetadata
491
+ const anyBytes = unpackAny(firstResult.appMetadata);
492
+ if (anyBytes.length === 0) {
493
+ return {};
494
+ }
495
+ const bindResult = DoPutPreparedStatementResult.decode(anyBytes);
496
+ return {
497
+ handle: bindResult.preparedStatementHandle
498
+ ? Buffer.from(bindResult.preparedStatementHandle)
499
+ : undefined
500
+ };
501
+ }
502
+ }
503
+ /**
504
+ * Creates a new FlightSqlClient and connects to the server.
505
+ *
506
+ * This is a convenience function that combines creating a client
507
+ * and calling connect() in one step.
508
+ *
509
+ * @param options - Connection options
510
+ * @returns A connected FlightSqlClient
511
+ *
512
+ * @example
513
+ * ```ts
514
+ * const client = await createFlightSqlClient({
515
+ * host: "localhost",
516
+ * port: 8815,
517
+ * tls: false
518
+ * })
519
+ * ```
520
+ */
521
+ export async function createFlightSqlClient(options) {
522
+ const client = new FlightSqlClient(options);
523
+ await client.connect();
524
+ return client;
525
+ }
526
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,14 @@
1
1
  /**
2
- * Example NPM package.
2
+ * Arrow Flight SQL client for JavaScript and TypeScript.
3
+ *
4
+ * Provides SQL-specific functionality on top of Arrow Flight for database
5
+ * interactions including query execution, updates, and metadata queries.
3
6
  *
4
7
  * @packageDocumentation
5
8
  */
6
- export type { GreetOptions } from "./greet.js";
7
- export { greet } from "./greet.js";
9
+ export type { BindParametersResult, FlightSqlClientOptions, ParameterData, PreparedStatementOptions, PreparedStatementResult, QueryOptions, UpdateResult } from "./client.js";
10
+ export { createFlightSqlClient, FlightSqlClient } from "./client.js";
11
+ export type { ResultIteratorOptions } from "./results.js";
12
+ export { flightInfoToTable, iterateResults, queryToTable, ticketToTable } from "./results.js";
13
+ export { type CallOptions, type FlightClientOptions, type FlightData, FlightError, type FlightInfo, type Ticket } from "@qualithm/arrow-flight-js";
8
14
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,oBAAoB,EACpB,sBAAsB,EACtB,aAAa,EACb,wBAAwB,EACxB,uBAAuB,EACvB,YAAY,EACZ,YAAY,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAGpE,YAAY,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AACzD,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAG7F,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,WAAW,EACX,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAA"}
package/dist/index.js CHANGED
@@ -1,7 +1,13 @@
1
1
  /**
2
- * Example NPM package.
2
+ * Arrow Flight SQL client for JavaScript and TypeScript.
3
+ *
4
+ * Provides SQL-specific functionality on top of Arrow Flight for database
5
+ * interactions including query execution, updates, and metadata queries.
3
6
  *
4
7
  * @packageDocumentation
5
8
  */
6
- export { greet } from "./greet.js";
9
+ export { createFlightSqlClient, FlightSqlClient } from "./client.js";
10
+ export { flightInfoToTable, iterateResults, queryToTable, ticketToTable } from "./results.js";
11
+ // Re-export base Flight client types for convenience
12
+ export { FlightError } from "@qualithm/arrow-flight-js";
7
13
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAYH,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIpE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE7F,qDAAqD;AACrD,OAAO,EAIL,WAAW,EAGZ,MAAM,2BAA2B,CAAA"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Result set iteration utilities for Flight SQL queries.
3
+ *
4
+ * @packageDocumentation
5
+ */
6
+ import type { FlightData, FlightInfo, Ticket } from "@qualithm/arrow-flight-js";
7
+ import { tableFromIPC } from "apache-arrow";
8
+ import type { FlightSqlClient } from "./client.js";
9
+ /**
10
+ * Options for iterating over query results.
11
+ */
12
+ export type ResultIteratorOptions = {
13
+ /**
14
+ * Maximum number of rows to return.
15
+ * If not specified, all rows are returned.
16
+ */
17
+ limit?: number;
18
+ };
19
+ /**
20
+ * Executes a query and returns results as an Arrow Table.
21
+ *
22
+ * This is a convenience function that handles the entire query workflow:
23
+ * 1. Executes the query to get FlightInfo
24
+ * 2. Retrieves data from all endpoints
25
+ * 3. Combines the data into an Arrow Table
26
+ *
27
+ * @param client - The FlightSqlClient to use
28
+ * @param query - The SQL query to execute
29
+ * @returns An Arrow Table containing all query results
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * import { queryToTable } from "@qualithm/arrow-flight-sql-js"
34
+ *
35
+ * const table = await queryToTable(client, "SELECT * FROM users LIMIT 100")
36
+ * console.log("Rows:", table.numRows)
37
+ * console.log("Columns:", table.schema.fields.map(f => f.name))
38
+ *
39
+ * // Iterate over rows
40
+ * for (const row of table) {
41
+ * console.log(row.toJSON())
42
+ * }
43
+ * ```
44
+ */
45
+ export declare function queryToTable(client: FlightSqlClient, query: string): Promise<ReturnType<typeof tableFromIPC>>;
46
+ /**
47
+ * Retrieves data from FlightInfo and returns it as an Arrow Table.
48
+ *
49
+ * @param client - The FlightSqlClient to use
50
+ * @param info - The FlightInfo from a query
51
+ * @returns An Arrow Table containing all data from the endpoints
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * const info = await client.query("SELECT * FROM users")
56
+ * const table = await flightInfoToTable(client, info)
57
+ * ```
58
+ */
59
+ export declare function flightInfoToTable(client: FlightSqlClient, info: FlightInfo): Promise<ReturnType<typeof tableFromIPC>>;
60
+ /**
61
+ * Iterates over query results as Arrow record batches.
62
+ *
63
+ * This is useful for processing large result sets without loading
64
+ * everything into memory at once.
65
+ *
66
+ * @param client - The FlightSqlClient to use
67
+ * @param info - The FlightInfo from a query
68
+ * @yields FlightData messages containing Arrow IPC data
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const info = await client.query("SELECT * FROM large_table")
73
+ *
74
+ * for await (const data of iterateResults(client, info)) {
75
+ * // Process each batch of data
76
+ * console.log("Received batch:", data.dataBody.length, "bytes")
77
+ * }
78
+ * ```
79
+ */
80
+ export declare function iterateResults(client: FlightSqlClient, info: FlightInfo): AsyncGenerator<FlightData, void, undefined>;
81
+ /**
82
+ * Gets a single ticket's data as an Arrow Table.
83
+ *
84
+ * @param client - The FlightSqlClient to use
85
+ * @param ticket - The ticket to retrieve
86
+ * @returns An Arrow Table containing the ticket's data
87
+ */
88
+ export declare function ticketToTable(client: FlightSqlClient, ticket: Ticket): Promise<ReturnType<typeof tableFromIPC>>;
89
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAA;AAC/E,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAElD;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA2BD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAG1C;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,GACf,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CA2B1C;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAuB,cAAc,CACnC,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,UAAU,GACf,cAAc,CAAC,UAAU,EAAE,IAAI,EAAE,SAAS,CAAC,CAO7C;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,UAAU,CAAC,OAAO,YAAY,CAAC,CAAC,CAiB1C"}