@qualithm/arrow-flight-sql-js 1.3.0 → 1.5.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/README.md +122 -22
- package/dist/client.d.ts +299 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +416 -7
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +103 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +125 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/results.d.ts +11 -2
- package/dist/results.d.ts.map +1 -1
- package/dist/results.js +18 -4
- package/dist/results.js.map +1 -1
- package/package.json +3 -3
package/dist/errors.js
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Flight SQL error types and utilities.
|
|
3
|
+
*
|
|
4
|
+
* @packageDocumentation
|
|
5
|
+
*/
|
|
6
|
+
import { FlightError } from "@qualithm/arrow-flight-js";
|
|
7
|
+
/**
|
|
8
|
+
* Error class for Flight SQL specific errors.
|
|
9
|
+
*
|
|
10
|
+
* Extends FlightError to provide SQL-specific error information while
|
|
11
|
+
* maintaining compatibility with the base error handling.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* try {
|
|
16
|
+
* await client.query("")
|
|
17
|
+
* } catch (error) {
|
|
18
|
+
* if (FlightSqlError.isFlightSqlError(error)) {
|
|
19
|
+
* console.log("SQL error code:", error.sqlCode)
|
|
20
|
+
* console.log("Flight code:", error.code)
|
|
21
|
+
* }
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export class FlightSqlError extends FlightError {
|
|
26
|
+
/**
|
|
27
|
+
* The SQL-specific error code.
|
|
28
|
+
*/
|
|
29
|
+
sqlCode;
|
|
30
|
+
constructor(message, sqlCode, options) {
|
|
31
|
+
super(message, options?.flightCode ?? "INVALID_ARGUMENT", {
|
|
32
|
+
details: options?.details,
|
|
33
|
+
cause: options?.cause
|
|
34
|
+
});
|
|
35
|
+
this.sqlCode = sqlCode;
|
|
36
|
+
this.name = "FlightSqlError";
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Checks if an error is a FlightSqlError.
|
|
40
|
+
*/
|
|
41
|
+
static isFlightSqlError(error) {
|
|
42
|
+
return error instanceof FlightSqlError;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Checks if an error indicates an invalid query.
|
|
46
|
+
*/
|
|
47
|
+
static isInvalidQuery(error) {
|
|
48
|
+
return FlightSqlError.isFlightSqlError(error) && error.sqlCode === "INVALID_QUERY";
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Checks if an error indicates an invalid handle (prepared statement, transaction).
|
|
52
|
+
*/
|
|
53
|
+
static isInvalidHandle(error) {
|
|
54
|
+
return FlightSqlError.isFlightSqlError(error) && error.sqlCode === "INVALID_HANDLE";
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Checks if an error indicates an invalid parameter.
|
|
58
|
+
*/
|
|
59
|
+
static isInvalidParameter(error) {
|
|
60
|
+
return FlightSqlError.isFlightSqlError(error) && error.sqlCode === "INVALID_PARAMETER";
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Checks if an error indicates a transaction error.
|
|
64
|
+
*/
|
|
65
|
+
static isTransactionError(error) {
|
|
66
|
+
return FlightSqlError.isFlightSqlError(error) && error.sqlCode === "TRANSACTION_ERROR";
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Checks if an error indicates a result error.
|
|
70
|
+
*/
|
|
71
|
+
static isResultError(error) {
|
|
72
|
+
return FlightSqlError.isFlightSqlError(error) && error.sqlCode === "RESULT_ERROR";
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validates that a query string is not empty.
|
|
77
|
+
*
|
|
78
|
+
* @param query - The query string to validate
|
|
79
|
+
* @throws {FlightSqlError} If the query is empty or whitespace-only
|
|
80
|
+
*/
|
|
81
|
+
export function validateQuery(query) {
|
|
82
|
+
if (!query || query.trim().length === 0) {
|
|
83
|
+
throw new FlightSqlError("query cannot be empty", "INVALID_QUERY");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Validates that a prepared statement handle is valid.
|
|
88
|
+
*
|
|
89
|
+
* @param handle - The handle buffer to validate
|
|
90
|
+
* @param name - The parameter name for error messages
|
|
91
|
+
* @throws {FlightSqlError} If the handle is invalid
|
|
92
|
+
*/
|
|
93
|
+
export function validateHandle(handle, name = "handle") {
|
|
94
|
+
if (handle.length === 0) {
|
|
95
|
+
throw new FlightSqlError(`${name} cannot be empty`, "INVALID_HANDLE");
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Validates that a transaction ID is valid.
|
|
100
|
+
*
|
|
101
|
+
* @param transactionId - The transaction ID buffer to validate
|
|
102
|
+
* @throws {FlightSqlError} If the transaction ID is invalid
|
|
103
|
+
*/
|
|
104
|
+
export function validateTransactionId(transactionId) {
|
|
105
|
+
if (transactionId.length === 0) {
|
|
106
|
+
throw new FlightSqlError("transaction ID cannot be empty", "TRANSACTION_ERROR", {
|
|
107
|
+
flightCode: "FAILED_PRECONDITION"
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Validates that parameter data contains required schema.
|
|
113
|
+
*
|
|
114
|
+
* @param params - The parameter data to validate
|
|
115
|
+
* @throws {FlightSqlError} If the parameter data is invalid
|
|
116
|
+
*/
|
|
117
|
+
export function validateParameterData(params) {
|
|
118
|
+
if (params.schema.length === 0) {
|
|
119
|
+
throw new FlightSqlError("parameter schema is required", "INVALID_PARAMETER");
|
|
120
|
+
}
|
|
121
|
+
if (params.data.length === 0) {
|
|
122
|
+
throw new FlightSqlError("parameter data is required", "INVALID_PARAMETER");
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,9 +6,11 @@
|
|
|
6
6
|
*
|
|
7
7
|
* @packageDocumentation
|
|
8
8
|
*/
|
|
9
|
-
export type { BindParametersResult, FlightSqlClientOptions, ParameterData, PreparedStatementOptions, PreparedStatementResult, QueryOptions, UpdateResult } from "./client.js";
|
|
9
|
+
export type { BindParametersResult, FlightSqlClientOptions, ParameterData, PreparedStatementOptions, PreparedStatementResult, QueryOptions, TransactionAction, TransactionResult, UpdateResult } from "./client.js";
|
|
10
10
|
export { createFlightSqlClient, FlightSqlClient } from "./client.js";
|
|
11
|
+
export type { FlightSqlErrorCode, FlightSqlErrorOptions } from "./errors.js";
|
|
12
|
+
export { FlightSqlError, validateHandle, validateParameterData, validateQuery, validateTransactionId } from "./errors.js";
|
|
11
13
|
export type { ResultIteratorOptions } from "./results.js";
|
|
12
14
|
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";
|
|
15
|
+
export { type CallOptions, type CancelStatus, type FlightClientOptions, type FlightData, FlightError, type FlightInfo, type Ticket } from "@qualithm/arrow-flight-js";
|
|
14
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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"}
|
|
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,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACb,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAGpE,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAC5E,OAAO,EACL,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACtB,MAAM,aAAa,CAAA;AAGpB,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,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,UAAU,EACf,WAAW,EACX,KAAK,UAAU,EACf,KAAK,MAAM,EACZ,MAAM,2BAA2B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
* @packageDocumentation
|
|
8
8
|
*/
|
|
9
9
|
export { createFlightSqlClient, FlightSqlClient } from "./client.js";
|
|
10
|
+
export { FlightSqlError, validateHandle, validateParameterData, validateQuery, validateTransactionId } from "./errors.js";
|
|
10
11
|
export { flightInfoToTable, iterateResults, queryToTable, ticketToTable } from "./results.js";
|
|
11
12
|
// Re-export base Flight client types for convenience
|
|
12
13
|
export { FlightError } from "@qualithm/arrow-flight-js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAcH,OAAO,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAA;AAIpE,OAAO,EACL,cAAc,EACd,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,qBAAqB,EACtB,MAAM,aAAa,CAAA;AAIpB,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE7F,qDAAqD;AACrD,OAAO,EAKL,WAAW,EAGZ,MAAM,2BAA2B,CAAA"}
|
package/dist/results.d.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import type { FlightData, FlightInfo, Ticket } from "@qualithm/arrow-flight-js";
|
|
7
7
|
import { tableFromIPC } from "apache-arrow";
|
|
8
|
-
import type { FlightSqlClient } from "./client.js";
|
|
8
|
+
import type { FlightSqlClient, QueryOptions } from "./client.js";
|
|
9
9
|
/**
|
|
10
10
|
* Options for iterating over query results.
|
|
11
11
|
*/
|
|
@@ -26,6 +26,7 @@ export type ResultIteratorOptions = {
|
|
|
26
26
|
*
|
|
27
27
|
* @param client - The FlightSqlClient to use
|
|
28
28
|
* @param query - The SQL query to execute
|
|
29
|
+
* @param options - Optional query options including transactionId
|
|
29
30
|
* @returns An Arrow Table containing all query results
|
|
30
31
|
*
|
|
31
32
|
* @example
|
|
@@ -40,9 +41,17 @@ export type ResultIteratorOptions = {
|
|
|
40
41
|
* for (const row of table) {
|
|
41
42
|
* console.log(row.toJSON())
|
|
42
43
|
* }
|
|
44
|
+
*
|
|
45
|
+
* // Query within a transaction
|
|
46
|
+
* const txn = await client.beginTransaction()
|
|
47
|
+
* const uncommittedData = await queryToTable(
|
|
48
|
+
* client,
|
|
49
|
+
* "SELECT * FROM users WHERE id = 999",
|
|
50
|
+
* { transactionId: txn.transactionId }
|
|
51
|
+
* )
|
|
43
52
|
* ```
|
|
44
53
|
*/
|
|
45
|
-
export declare function queryToTable(client: FlightSqlClient, query: string): Promise<ReturnType<typeof tableFromIPC>>;
|
|
54
|
+
export declare function queryToTable(client: FlightSqlClient, query: string, options?: QueryOptions): Promise<ReturnType<typeof tableFromIPC>>;
|
|
46
55
|
/**
|
|
47
56
|
* Retrieves data from FlightInfo and returns it as an Arrow Table.
|
|
48
57
|
*
|
package/dist/results.d.ts.map
CHANGED
|
@@ -1 +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;
|
|
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,YAAY,EAAE,MAAM,aAAa,CAAA;AAGhE;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAA;AA2BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,YAAY,GACrB,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,CA6B1C;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,CAmB1C"}
|
package/dist/results.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { tableFromIPC } from "apache-arrow";
|
|
2
|
+
import { FlightSqlError } from "./errors.js";
|
|
2
3
|
/**
|
|
3
4
|
* Collects all FlightData from a doGet stream into Arrow IPC bytes.
|
|
4
5
|
*
|
|
@@ -29,6 +30,7 @@ async function collectFlightData(dataStream) {
|
|
|
29
30
|
*
|
|
30
31
|
* @param client - The FlightSqlClient to use
|
|
31
32
|
* @param query - The SQL query to execute
|
|
33
|
+
* @param options - Optional query options including transactionId
|
|
32
34
|
* @returns An Arrow Table containing all query results
|
|
33
35
|
*
|
|
34
36
|
* @example
|
|
@@ -43,10 +45,18 @@ async function collectFlightData(dataStream) {
|
|
|
43
45
|
* for (const row of table) {
|
|
44
46
|
* console.log(row.toJSON())
|
|
45
47
|
* }
|
|
48
|
+
*
|
|
49
|
+
* // Query within a transaction
|
|
50
|
+
* const txn = await client.beginTransaction()
|
|
51
|
+
* const uncommittedData = await queryToTable(
|
|
52
|
+
* client,
|
|
53
|
+
* "SELECT * FROM users WHERE id = 999",
|
|
54
|
+
* { transactionId: txn.transactionId }
|
|
55
|
+
* )
|
|
46
56
|
* ```
|
|
47
57
|
*/
|
|
48
|
-
export async function queryToTable(client, query) {
|
|
49
|
-
const info = await client.query(query);
|
|
58
|
+
export async function queryToTable(client, query, options) {
|
|
59
|
+
const info = await client.query(query, options);
|
|
50
60
|
return flightInfoToTable(client, info);
|
|
51
61
|
}
|
|
52
62
|
/**
|
|
@@ -73,7 +83,9 @@ export async function flightInfoToTable(client, info) {
|
|
|
73
83
|
allChunks.push(...chunks);
|
|
74
84
|
}
|
|
75
85
|
if (allChunks.length === 0) {
|
|
76
|
-
throw new
|
|
86
|
+
throw new FlightSqlError("no data returned from query", "RESULT_ERROR", {
|
|
87
|
+
flightCode: "NOT_FOUND"
|
|
88
|
+
});
|
|
77
89
|
}
|
|
78
90
|
// Combine all chunks and parse as IPC
|
|
79
91
|
const totalLength = allChunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
@@ -124,7 +136,9 @@ export async function ticketToTable(client, ticket) {
|
|
|
124
136
|
const dataStream = client.doGet(ticket);
|
|
125
137
|
const chunks = await collectFlightData(dataStream);
|
|
126
138
|
if (chunks.length === 0) {
|
|
127
|
-
throw new
|
|
139
|
+
throw new FlightSqlError("no data returned from ticket", "RESULT_ERROR", {
|
|
140
|
+
flightCode: "NOT_FOUND"
|
|
141
|
+
});
|
|
128
142
|
}
|
|
129
143
|
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
|
|
130
144
|
const combined = new Uint8Array(totalLength);
|
package/dist/results.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"results.js","sourceRoot":"","sources":["../src/results.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qualithm/arrow-flight-sql-js",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Arrow Flight SQL client for JavaScript and TypeScript runtimes.",
|
|
5
5
|
"private": false,
|
|
6
6
|
"type": "module",
|
|
@@ -68,8 +68,8 @@
|
|
|
68
68
|
"apache-arrow": ">=17.0.0"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
|
-
"@qualithm/arrow-flight-js": "1.
|
|
72
|
-
"apache-arrow": "
|
|
71
|
+
"@qualithm/arrow-flight-js": "1.6.0",
|
|
72
|
+
"apache-arrow": "21.1.0",
|
|
73
73
|
"@eslint/js": "10.0.1",
|
|
74
74
|
"grpc-tools": "1.13.1",
|
|
75
75
|
"ts-proto": "2.11.2",
|