@hypequery/clickhouse 2.6.0 → 2.8.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/core/adapters/clickhouse-adapter.d.ts +1 -0
- package/dist/core/adapters/clickhouse-adapter.d.ts.map +1 -1
- package/dist/core/adapters/clickhouse-adapter.js +14 -2
- package/dist/core/adapters/database-adapter.d.ts +4 -0
- package/dist/core/adapters/database-adapter.d.ts.map +1 -1
- package/dist/core/cache/cache-manager.d.ts.map +1 -1
- package/dist/core/cache/cache-manager.js +59 -18
- package/dist/core/cache/controller.d.ts.map +1 -1
- package/dist/core/cache/controller.js +15 -7
- package/dist/core/cache/mutation-coordinator.d.ts +20 -0
- package/dist/core/cache/mutation-coordinator.d.ts.map +1 -0
- package/dist/core/cache/mutation-coordinator.js +56 -0
- package/dist/core/cache/runtime-context.d.ts +4 -1
- package/dist/core/cache/runtime-context.d.ts.map +1 -1
- package/dist/core/cache/runtime-context.js +2 -0
- package/dist/core/cache/shared-fetch.d.ts +14 -0
- package/dist/core/cache/shared-fetch.d.ts.map +1 -0
- package/dist/core/cache/shared-fetch.js +43 -0
- package/dist/core/features/executor.d.ts +5 -1
- package/dist/core/features/executor.d.ts.map +1 -1
- package/dist/core/features/executor.js +3 -1
- package/dist/core/features/insert-executor.d.ts +1 -0
- package/dist/core/features/insert-executor.d.ts.map +1 -1
- package/dist/core/features/insert-executor.js +1 -0
- package/dist/core/insert-builder.d.ts +1 -0
- package/dist/core/insert-builder.d.ts.map +1 -1
- package/dist/core/query-builder.d.ts +12 -2
- package/dist/core/query-builder.d.ts.map +1 -1
- package/dist/core/query-builder.js +12 -4
- package/dist/core/tests/integration/setup.d.ts +1 -0
- package/dist/core/tests/integration/setup.d.ts.map +1 -1
- package/dist/core/utils/abort.d.ts +5 -0
- package/dist/core/utils/abort.d.ts.map +1 -0
- package/dist/core/utils/abort.js +42 -0
- package/dist/core/utils/abortable-result.d.ts +7 -0
- package/dist/core/utils/abortable-result.d.ts.map +1 -0
- package/dist/core/utils/abortable-result.js +27 -0
- package/dist/core/utils/streaming-helpers.d.ts +1 -1
- package/dist/core/utils/streaming-helpers.d.ts.map +1 -1
- package/dist/core/utils/streaming-helpers.js +72 -26
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ export declare class ClickHouseAdapter implements DatabaseAdapter {
|
|
|
9
9
|
query<T>(sql: string, params?: unknown[], options?: QueryExecutionOptions): Promise<T[]>;
|
|
10
10
|
stream<T>(sql: string, params?: unknown[], options?: QueryExecutionOptions): Promise<ReadableStream<T[]>>;
|
|
11
11
|
insert<T extends Record<string, unknown>>(table: string, rows: T[], options?: InsertExecutionOptions): Promise<InsertResultSummary>;
|
|
12
|
+
close(): Promise<void>;
|
|
12
13
|
render(sql: string, params?: unknown[]): string;
|
|
13
14
|
}
|
|
14
15
|
export declare function createClickHouseAdapter(config: ClickHouseConfig): DatabaseAdapter;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"clickhouse-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/clickhouse-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"clickhouse-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/clickhouse-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAwC5D,qBAAa,iBAAkB,YAAW,eAAe;IAK3C,OAAO,CAAC,MAAM;IAJ1B,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,MAAM,CAAmB;gBAEb,MAAM,EAAE,gBAAgB;IAKtC,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAc5F,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC;IAc7G,MAAM,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,mBAAmB,CAAC;IAyBzB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,OAAO,EAAO,GAAG,MAAM;CAGpD;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,eAAe,CAEjF"}
|
|
@@ -4,6 +4,8 @@ import { getConnectionEndpoint } from '../utils/connection-endpoint.js';
|
|
|
4
4
|
import { createJsonEachRowStream } from '../utils/streaming-helpers.js';
|
|
5
5
|
import { getAutoClientModule } from '../env/auto-client.js';
|
|
6
6
|
import { assertSafeInsertIdentifiers } from '../utils/insert-identifiers.js';
|
|
7
|
+
import { consumeResultWithAbort } from '../utils/abortable-result.js';
|
|
8
|
+
import { throwIfAborted } from '../utils/abort.js';
|
|
7
9
|
function createClickHouseClient(config) {
|
|
8
10
|
if (isClientConfig(config)) {
|
|
9
11
|
return config.client;
|
|
@@ -38,27 +40,33 @@ export class ClickHouseAdapter {
|
|
|
38
40
|
this.client = createClickHouseClient(config);
|
|
39
41
|
}
|
|
40
42
|
async query(sql, params = [], options) {
|
|
43
|
+
// The ClickHouse clients never check an already-aborted signal, so fail before sending anything.
|
|
44
|
+
throwIfAborted(options?.abortSignal);
|
|
41
45
|
const finalSQL = substituteParameters(sql, params);
|
|
42
46
|
const result = await this.client.query({
|
|
43
47
|
query: finalSQL,
|
|
44
48
|
format: 'JSONEachRow',
|
|
45
49
|
clickhouse_settings: jsonOutputSettings(options?.clickhouseSettings),
|
|
46
50
|
query_id: options?.queryId,
|
|
51
|
+
abort_signal: options?.abortSignal,
|
|
47
52
|
});
|
|
48
|
-
return result.json();
|
|
53
|
+
return consumeResultWithAbort(options?.abortSignal, result, () => result.json());
|
|
49
54
|
}
|
|
50
55
|
async stream(sql, params = [], options) {
|
|
56
|
+
throwIfAborted(options?.abortSignal);
|
|
51
57
|
const finalSQL = substituteParameters(sql, params);
|
|
52
58
|
const result = await this.client.query({
|
|
53
59
|
query: finalSQL,
|
|
54
60
|
format: 'JSONEachRow',
|
|
55
61
|
clickhouse_settings: jsonOutputSettings(options?.clickhouseSettings),
|
|
56
62
|
query_id: options?.queryId,
|
|
63
|
+
abort_signal: options?.abortSignal,
|
|
57
64
|
});
|
|
58
65
|
const stream = result.stream();
|
|
59
|
-
return createJsonEachRowStream(stream);
|
|
66
|
+
return createJsonEachRowStream(stream, options?.abortSignal);
|
|
60
67
|
}
|
|
61
68
|
async insert(table, rows, options) {
|
|
69
|
+
throwIfAborted(options?.abortSignal);
|
|
62
70
|
assertSafeInsertIdentifiers(table, options?.columns);
|
|
63
71
|
const result = await this.client.insert({
|
|
64
72
|
table,
|
|
@@ -73,6 +81,7 @@ export class ClickHouseAdapter {
|
|
|
73
81
|
...options?.clickhouseSettings,
|
|
74
82
|
},
|
|
75
83
|
query_id: options?.queryId,
|
|
84
|
+
abort_signal: options?.abortSignal,
|
|
76
85
|
});
|
|
77
86
|
return {
|
|
78
87
|
queryId: result.query_id,
|
|
@@ -80,6 +89,9 @@ export class ClickHouseAdapter {
|
|
|
80
89
|
summary: result.summary,
|
|
81
90
|
};
|
|
82
91
|
}
|
|
92
|
+
async close() {
|
|
93
|
+
await this.client.close();
|
|
94
|
+
}
|
|
83
95
|
render(sql, params = []) {
|
|
84
96
|
return substituteParameters(sql, params);
|
|
85
97
|
}
|
|
@@ -2,10 +2,12 @@ import type { ClickHouseSettings, ClickHouseSummary } from '@clickhouse/client-c
|
|
|
2
2
|
export interface QueryExecutionOptions {
|
|
3
3
|
clickhouseSettings?: ClickHouseSettings;
|
|
4
4
|
queryId?: string;
|
|
5
|
+
abortSignal?: AbortSignal;
|
|
5
6
|
}
|
|
6
7
|
export interface InsertExecutionOptions {
|
|
7
8
|
clickhouseSettings?: ClickHouseSettings;
|
|
8
9
|
queryId?: string;
|
|
10
|
+
abortSignal?: AbortSignal;
|
|
9
11
|
/** Explicit column subset; adapters must preserve it so omitted columns take table DEFAULTs. */
|
|
10
12
|
columns?: string[];
|
|
11
13
|
}
|
|
@@ -20,6 +22,8 @@ export interface DatabaseAdapter {
|
|
|
20
22
|
readonly name: string;
|
|
21
23
|
readonly namespace?: string;
|
|
22
24
|
query<T>(sql: string, params?: unknown[], options?: QueryExecutionOptions): Promise<T[]>;
|
|
25
|
+
/** Releases connections held by the adapter. Callers must not reuse it afterwards. */
|
|
26
|
+
close?(): Promise<void>;
|
|
23
27
|
stream?<T>(sql: string, params?: unknown[], options?: QueryExecutionOptions): Promise<ReadableStream<T[]>>;
|
|
24
28
|
/**
|
|
25
29
|
* Inserts rows that have already been normalized for JSONEachRow-compatible
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/database-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEvF,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"database-adapter.d.ts","sourceRoot":"","sources":["../../../src/core/adapters/database-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAEvF,MAAM,WAAW,qBAAqB;IACpC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gGAAgG;IAChG,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,uFAAuF;IACvF,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;IAClB,mFAAmF;IACnF,OAAO,CAAC,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACzF,sFAAsF;IACtF,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACxB,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3G;;;;;OAKG;IACH,MAAM,CAAC,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,CAAC,EAAE,sBAAsB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAChC,MAAM,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC;CAClD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../../src/core/cache/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"cache-manager.d.ts","sourceRoot":"","sources":["../../../src/core/cache/cache-manager.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AA8DnF,wBAAsB,gBAAgB,CACpC,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,eAAe,EAE7B,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,EACpC,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAyM5B"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { computeCacheKey } from './key.js';
|
|
2
2
|
import { mergeCacheOptions } from './runtime-context.js';
|
|
3
|
+
import { joinSharedFetch } from './shared-fetch.js';
|
|
4
|
+
import { raceWithAbort, throwIfAborted } from '../utils/abort.js';
|
|
3
5
|
import { logger } from '../utils/logger.js';
|
|
4
6
|
function isCacheable(options) {
|
|
5
7
|
const ttl = options.ttlMs ?? 0;
|
|
@@ -33,6 +35,7 @@ async function logCacheHit({ sql, parameters, status, cacheKey, options, rowCoun
|
|
|
33
35
|
});
|
|
34
36
|
}
|
|
35
37
|
export async function executeWithCache(builder, options) {
|
|
38
|
+
throwIfAborted(options?.abortSignal);
|
|
36
39
|
const runtime = builder.getRuntimeContext();
|
|
37
40
|
const provider = runtime.provider;
|
|
38
41
|
const normalizedExecuteCache = options?.cache === false
|
|
@@ -56,7 +59,7 @@ export async function executeWithCache(builder, options) {
|
|
|
56
59
|
version: runtime.versionTag,
|
|
57
60
|
tableName
|
|
58
61
|
});
|
|
59
|
-
const entry = await activeProvider.get(key);
|
|
62
|
+
const entry = await raceWithAbort(activeProvider.get(key), options?.abortSignal);
|
|
60
63
|
if (!entry) {
|
|
61
64
|
runtime.parsedValues.delete(key);
|
|
62
65
|
}
|
|
@@ -65,13 +68,14 @@ export async function executeWithCache(builder, options) {
|
|
|
65
68
|
const deserialize = mergedOptions.deserialize || runtime.deserialize;
|
|
66
69
|
const serialize = mergedOptions.serialize || runtime.serialize;
|
|
67
70
|
const respondFromCache = async (cacheEntry, status) => {
|
|
71
|
+
throwIfAborted(options?.abortSignal);
|
|
68
72
|
const memoized = runtime.parsedValues.get(key);
|
|
69
73
|
let rows;
|
|
70
74
|
if (memoized && memoized.createdAt === cacheEntry.createdAt) {
|
|
71
75
|
rows = memoized.rows;
|
|
72
76
|
}
|
|
73
77
|
else {
|
|
74
|
-
rows = await deserialize(cacheEntry.value);
|
|
78
|
+
rows = await raceWithAbort(Promise.resolve().then(() => deserialize(cacheEntry.value)), options?.abortSignal);
|
|
75
79
|
runtime.parsedValues.set(key, { createdAt: cacheEntry.createdAt, rows, tags: cacheEntry.tags });
|
|
76
80
|
}
|
|
77
81
|
const cacheAge = Date.now() - cacheEntry.createdAt;
|
|
@@ -81,7 +85,7 @@ export async function executeWithCache(builder, options) {
|
|
|
81
85
|
else if (status === 'stale-hit') {
|
|
82
86
|
runtime.stats.staleHits += 1;
|
|
83
87
|
}
|
|
84
|
-
await logCacheHit({
|
|
88
|
+
await raceWithAbort(logCacheHit({
|
|
85
89
|
sql,
|
|
86
90
|
parameters,
|
|
87
91
|
status,
|
|
@@ -90,7 +94,7 @@ export async function executeWithCache(builder, options) {
|
|
|
90
94
|
rowCount: cacheEntry.rowCount ?? rows.length,
|
|
91
95
|
ageMs: cacheAge,
|
|
92
96
|
queryId: options?.queryId
|
|
93
|
-
});
|
|
97
|
+
}), options?.abortSignal);
|
|
94
98
|
return rows;
|
|
95
99
|
};
|
|
96
100
|
if (mode === 'cache-first') {
|
|
@@ -98,7 +102,7 @@ export async function executeWithCache(builder, options) {
|
|
|
98
102
|
return respondFromCache(entry, 'hit');
|
|
99
103
|
}
|
|
100
104
|
runtime.stats.misses += 1;
|
|
101
|
-
return fetchAndStore('miss');
|
|
105
|
+
return fetchAndStore('miss', options?.abortSignal);
|
|
102
106
|
}
|
|
103
107
|
if (mode === 'stale-while-revalidate') {
|
|
104
108
|
if (entry && fresh) {
|
|
@@ -109,14 +113,18 @@ export async function executeWithCache(builder, options) {
|
|
|
109
113
|
return respondFromCache(entry, 'stale-hit');
|
|
110
114
|
}
|
|
111
115
|
runtime.stats.misses += 1;
|
|
112
|
-
return fetchAndStore('miss');
|
|
116
|
+
return fetchAndStore('miss', options?.abortSignal);
|
|
113
117
|
}
|
|
114
118
|
if (mode === 'network-first') {
|
|
115
119
|
try {
|
|
116
120
|
runtime.stats.misses += 1;
|
|
117
|
-
return await fetchAndStore('miss');
|
|
121
|
+
return await fetchAndStore('miss', options?.abortSignal);
|
|
118
122
|
}
|
|
119
123
|
catch (error) {
|
|
124
|
+
// An abort is a caller decision, not a network failure staleIfError should mask.
|
|
125
|
+
if (options?.abortSignal?.aborted) {
|
|
126
|
+
throw error;
|
|
127
|
+
}
|
|
120
128
|
if (mergedOptions.staleIfError && entry && staleAcceptable) {
|
|
121
129
|
return respondFromCache(entry, 'stale-hit');
|
|
122
130
|
}
|
|
@@ -124,16 +132,43 @@ export async function executeWithCache(builder, options) {
|
|
|
124
132
|
}
|
|
125
133
|
}
|
|
126
134
|
return runWithoutCache('bypass');
|
|
127
|
-
async function fetchAndStore(cacheStatus) {
|
|
128
|
-
|
|
129
|
-
|
|
135
|
+
async function fetchAndStore(cacheStatus, abortSignal) {
|
|
136
|
+
// A pre-aborted creator would otherwise start a zero-waiter fetch nobody can cancel.
|
|
137
|
+
throwIfAborted(abortSignal);
|
|
138
|
+
if (mergedOptions.dedupe === false) {
|
|
139
|
+
return runFetch(cacheStatus, abortSignal);
|
|
140
|
+
}
|
|
141
|
+
// A cancelled fetch lingers in the map until its promise settles.
|
|
142
|
+
let shared = runtime.inFlight.get(key);
|
|
143
|
+
if (!shared || shared.controller.signal.aborted) {
|
|
144
|
+
const controller = new AbortController();
|
|
145
|
+
const created = {
|
|
146
|
+
promise: runFetch(cacheStatus, controller.signal),
|
|
147
|
+
controller,
|
|
148
|
+
abortableWaiters: 0,
|
|
149
|
+
pinnedWaiters: 0
|
|
150
|
+
};
|
|
151
|
+
runtime.inFlight.set(key, created);
|
|
152
|
+
created.promise
|
|
153
|
+
.catch(() => undefined)
|
|
154
|
+
.finally(() => {
|
|
155
|
+
if (runtime.inFlight.get(key) === created) {
|
|
156
|
+
runtime.inFlight.delete(key);
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
shared = created;
|
|
130
160
|
}
|
|
131
|
-
|
|
161
|
+
return joinSharedFetch(shared, abortSignal);
|
|
162
|
+
}
|
|
163
|
+
function runFetch(cacheStatus, abortSignal) {
|
|
164
|
+
return (async () => {
|
|
132
165
|
const rows = await builder.getExecutor().execute({
|
|
133
166
|
queryId: options?.queryId,
|
|
167
|
+
abortSignal,
|
|
134
168
|
logContext: { cacheStatus, cacheKey: key, cacheMode: mode }
|
|
135
169
|
});
|
|
136
|
-
|
|
170
|
+
throwIfAborted(abortSignal);
|
|
171
|
+
const encoded = await raceWithAbort(Promise.resolve().then(() => serialize(rows)), abortSignal);
|
|
137
172
|
const ttlMs = mergedOptions.ttlMs ?? 0;
|
|
138
173
|
const staleTtlMs = mergedOptions.staleTtlMs ?? 0;
|
|
139
174
|
const cacheTimeMs = mergedOptions.cacheTimeMs ?? ttlMs + staleTtlMs;
|
|
@@ -150,18 +185,23 @@ export async function executeWithCache(builder, options) {
|
|
|
150
185
|
byteSize: encoded.byteSize,
|
|
151
186
|
sqlFingerprint: key
|
|
152
187
|
};
|
|
153
|
-
|
|
188
|
+
const write = runtime.mutations.enqueueWrite({
|
|
189
|
+
key,
|
|
190
|
+
namespace,
|
|
191
|
+
tags: newEntry.tags || []
|
|
192
|
+
}, async () => {
|
|
193
|
+
// A queued write whose caller was cancelled before it started is safe to skip.
|
|
194
|
+
throwIfAborted(abortSignal);
|
|
195
|
+
await activeProvider.set(key, newEntry);
|
|
196
|
+
});
|
|
197
|
+
await raceWithAbort(write, abortSignal);
|
|
154
198
|
runtime.parsedValues.set(key, { createdAt: newEntry.createdAt, rows, tags: newEntry.tags });
|
|
155
199
|
return rows;
|
|
156
200
|
})();
|
|
157
|
-
if (mergedOptions.dedupe !== false) {
|
|
158
|
-
runtime.inFlight.set(key, promise);
|
|
159
|
-
promise.finally(() => runtime.inFlight.delete(key));
|
|
160
|
-
}
|
|
161
|
-
return promise;
|
|
162
201
|
}
|
|
163
202
|
function scheduleRevalidation() {
|
|
164
203
|
runtime.stats.revalidations += 1;
|
|
204
|
+
// Background refresh serves later callers, so it must outlive the aborting one.
|
|
165
205
|
fetchAndStore('revalidate').catch(() => undefined);
|
|
166
206
|
}
|
|
167
207
|
function runWithoutCache(cacheStatus) {
|
|
@@ -170,6 +210,7 @@ export async function executeWithCache(builder, options) {
|
|
|
170
210
|
}
|
|
171
211
|
return builder.getExecutor().execute({
|
|
172
212
|
queryId: options?.queryId,
|
|
213
|
+
abortSignal: options?.abortSignal,
|
|
173
214
|
logContext: { cacheStatus, cacheMode: mode }
|
|
174
215
|
});
|
|
175
216
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/core/cache/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,mBAAmB;IAE1C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../../src/core/cache/controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAChE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG7C,qBAAa,eAAe;IACd,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,mBAAmB;IAE1C,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWzC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuB7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAYtB,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjE,QAAQ,IAAI,UAAU,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE;IAO5C,OAAO,CAAC,wBAAwB;CAWjC"}
|
|
@@ -5,15 +5,17 @@ export class CacheController {
|
|
|
5
5
|
this.context = context;
|
|
6
6
|
}
|
|
7
7
|
async invalidateKey(key) {
|
|
8
|
+
const provider = this.context.provider;
|
|
9
|
+
if (provider) {
|
|
10
|
+
await this.context.mutations.invalidate(scope => scope.key === key, () => provider.delete(key));
|
|
11
|
+
}
|
|
8
12
|
this.context.parsedValues.delete(key);
|
|
9
|
-
if (!this.context.provider)
|
|
10
|
-
return;
|
|
11
|
-
await this.context.provider.delete(key);
|
|
12
13
|
}
|
|
13
14
|
async invalidateTags(tags) {
|
|
14
15
|
if (!tags.length)
|
|
15
16
|
return;
|
|
16
|
-
const
|
|
17
|
+
const provider = this.context.provider;
|
|
18
|
+
const deleteByTag = provider?.deleteByTag;
|
|
17
19
|
if (!deleteByTag) {
|
|
18
20
|
logger.warn('Cache provider does not support tag invalidation. Tags ignored.', {
|
|
19
21
|
namespace: this.context.namespace,
|
|
@@ -22,12 +24,18 @@ export class CacheController {
|
|
|
22
24
|
this.removeParsedValuesByTags(tags);
|
|
23
25
|
return;
|
|
24
26
|
}
|
|
25
|
-
|
|
27
|
+
const target = new Set(tags);
|
|
28
|
+
await this.context.mutations.invalidate(scope => scope.namespace === this.context.namespace
|
|
29
|
+
&& scope.tags.some(tag => target.has(tag)), async () => {
|
|
30
|
+
await Promise.all(tags.map(tag => deleteByTag.call(provider, this.context.namespace, tag)));
|
|
31
|
+
});
|
|
26
32
|
this.removeParsedValuesByTags(tags);
|
|
27
33
|
}
|
|
28
34
|
async clear() {
|
|
29
|
-
|
|
30
|
-
|
|
35
|
+
const provider = this.context.provider;
|
|
36
|
+
const clearNamespace = provider?.clearNamespace;
|
|
37
|
+
if (clearNamespace) {
|
|
38
|
+
await this.context.mutations.invalidate(scope => scope.namespace === this.context.namespace, () => clearNamespace.call(provider, this.context.namespace));
|
|
31
39
|
}
|
|
32
40
|
this.context.parsedValues.clear();
|
|
33
41
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface CacheWriteScope {
|
|
2
|
+
key: string;
|
|
3
|
+
namespace: string;
|
|
4
|
+
tags: readonly string[];
|
|
5
|
+
}
|
|
6
|
+
type ScopeMatcher = (scope: CacheWriteScope) => boolean;
|
|
7
|
+
/**
|
|
8
|
+
* Orders writes and invalidations without serializing mutations for unrelated
|
|
9
|
+
* keys. Earlier matching writes finish before an invalidation, while matching
|
|
10
|
+
* writes registered afterward wait for that invalidation to finish.
|
|
11
|
+
*/
|
|
12
|
+
export declare class CacheMutationCoordinator {
|
|
13
|
+
private tails;
|
|
14
|
+
private pendingWrites;
|
|
15
|
+
private pendingInvalidations;
|
|
16
|
+
enqueueWrite(scope: CacheWriteScope, write: () => Promise<void>): Promise<void>;
|
|
17
|
+
invalidate(matches: ScopeMatcher, operation: () => Promise<void>): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=mutation-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mutation-coordinator.d.ts","sourceRoot":"","sources":["../../../src/core/cache/mutation-coordinator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;CACzB;AAED,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC;AAgBxD;;;;GAIG;AACH,qBAAa,wBAAwB;IACnC,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,aAAa,CAA2B;IAChD,OAAO,CAAC,oBAAoB,CAAkC;IAE9D,YAAY,CAAC,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAyB/E,UAAU,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;CAuBjF"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
function settle(operation) {
|
|
2
|
+
return operation.catch(() => undefined);
|
|
3
|
+
}
|
|
4
|
+
/**
|
|
5
|
+
* Orders writes and invalidations without serializing mutations for unrelated
|
|
6
|
+
* keys. Earlier matching writes finish before an invalidation, while matching
|
|
7
|
+
* writes registered afterward wait for that invalidation to finish.
|
|
8
|
+
*/
|
|
9
|
+
export class CacheMutationCoordinator {
|
|
10
|
+
tails = new Map();
|
|
11
|
+
pendingWrites = new Set();
|
|
12
|
+
pendingInvalidations = new Set();
|
|
13
|
+
enqueueWrite(scope, write) {
|
|
14
|
+
const previous = this.tails.get(scope.key);
|
|
15
|
+
const invalidations = Array.from(this.pendingInvalidations)
|
|
16
|
+
.filter(invalidation => invalidation.matches(scope))
|
|
17
|
+
.map(invalidation => settle(invalidation.promise));
|
|
18
|
+
const prerequisites = previous
|
|
19
|
+
? [settle(previous), ...invalidations]
|
|
20
|
+
: invalidations;
|
|
21
|
+
const current = Promise.all(prerequisites).then(() => write());
|
|
22
|
+
const pending = { scope, promise: current };
|
|
23
|
+
this.tails.set(scope.key, current);
|
|
24
|
+
this.pendingWrites.add(pending);
|
|
25
|
+
void current
|
|
26
|
+
.finally(() => {
|
|
27
|
+
this.pendingWrites.delete(pending);
|
|
28
|
+
if (this.tails.get(scope.key) === current) {
|
|
29
|
+
this.tails.delete(scope.key);
|
|
30
|
+
}
|
|
31
|
+
})
|
|
32
|
+
.catch(() => undefined);
|
|
33
|
+
return current;
|
|
34
|
+
}
|
|
35
|
+
invalidate(matches, operation) {
|
|
36
|
+
const writes = Array.from(this.pendingWrites)
|
|
37
|
+
.filter(write => matches(write.scope))
|
|
38
|
+
.map(write => settle(write.promise));
|
|
39
|
+
// Invalidation is rare, and serializing overlapping calls makes their
|
|
40
|
+
// ordering deterministic without blocking unrelated cache writes.
|
|
41
|
+
const invalidations = Array.from(this.pendingInvalidations)
|
|
42
|
+
.map(invalidation => settle(invalidation.promise));
|
|
43
|
+
const current = Promise.all([...writes, ...invalidations])
|
|
44
|
+
.then(() => operation());
|
|
45
|
+
const pending = { matches, promise: current };
|
|
46
|
+
// Register the barrier synchronously so later matching writes cannot race
|
|
47
|
+
// the provider operation while this invalidation waits for earlier writes.
|
|
48
|
+
this.pendingInvalidations.add(pending);
|
|
49
|
+
void current
|
|
50
|
+
.finally(() => {
|
|
51
|
+
this.pendingInvalidations.delete(pending);
|
|
52
|
+
})
|
|
53
|
+
.catch(() => undefined);
|
|
54
|
+
return current;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { CacheConfig, CacheOptions, CacheProvider, CacheSerializeFn, CacheDeserializeFn, CacheStats } from './types.js';
|
|
2
|
+
import type { SharedFetch } from './shared-fetch.js';
|
|
3
|
+
import { CacheMutationCoordinator } from './mutation-coordinator.js';
|
|
2
4
|
export interface QueryRuntimeContext {
|
|
3
5
|
provider?: CacheProvider;
|
|
4
6
|
defaults: CacheOptions;
|
|
@@ -6,7 +8,8 @@ export interface QueryRuntimeContext {
|
|
|
6
8
|
versionTag: string;
|
|
7
9
|
serialize: CacheSerializeFn;
|
|
8
10
|
deserialize: CacheDeserializeFn;
|
|
9
|
-
inFlight: Map<string,
|
|
11
|
+
inFlight: Map<string, SharedFetch>;
|
|
12
|
+
mutations: CacheMutationCoordinator;
|
|
10
13
|
stats: CacheStats;
|
|
11
14
|
parsedValues: Map<string, ParsedValueEntry>;
|
|
12
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-context.d.ts","sourceRoot":"","sources":["../../../src/core/cache/runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACX,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-context.d.ts","sourceRoot":"","sources":["../../../src/core/cache/runtime-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACX,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAUrE,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,kBAAkB,CAAC;IAChC,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,SAAS,EAAE,wBAAwB,CAAC;IACpC,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC7C;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,gBAAgB,IAAI,UAAU,CAE7C;AAQD,wBAAgB,iBAAiB,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG,YAAY,CAe9F;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,QAAQ,EAAE,YAAY,CAAC;IACvB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,kBAAkB,CAAC;CACjC;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,kBAAkB,GAAG,mBAAmB,CAanF;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS,EAAE,iBAAiB,EAAE,MAAM,GAAG,kBAAkB,CAUjH"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { defaultSerialize, defaultDeserialize } from './serialization.js';
|
|
2
|
+
import { CacheMutationCoordinator } from './mutation-coordinator.js';
|
|
2
3
|
const DEFAULT_CACHE_OPTIONS = {
|
|
3
4
|
mode: 'no-store',
|
|
4
5
|
ttlMs: 0,
|
|
@@ -41,6 +42,7 @@ export function buildRuntimeContext(config) {
|
|
|
41
42
|
serialize: config.serialize,
|
|
42
43
|
deserialize: config.deserialize,
|
|
43
44
|
inFlight: new Map(),
|
|
45
|
+
mutations: new CacheMutationCoordinator(),
|
|
44
46
|
stats: createCacheStats(),
|
|
45
47
|
parsedValues: new Map()
|
|
46
48
|
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/** One deduplicated execution shared by every caller of the same cache key. */
|
|
2
|
+
export interface SharedFetch {
|
|
3
|
+
promise: Promise<unknown>;
|
|
4
|
+
controller: AbortController;
|
|
5
|
+
abortableWaiters: number;
|
|
6
|
+
pinnedWaiters: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Joins a caller to a shared fetch without allowing that caller to cancel
|
|
10
|
+
* anyone else. The underlying fetch is aborted only after its final waiter
|
|
11
|
+
* leaves.
|
|
12
|
+
*/
|
|
13
|
+
export declare function joinSharedFetch<T>(shared: SharedFetch, abortSignal?: AbortSignal): Promise<T>;
|
|
14
|
+
//# sourceMappingURL=shared-fetch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared-fetch.d.ts","sourceRoot":"","sources":["../../../src/core/cache/shared-fetch.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,UAAU,EAAE,eAAe,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAyC7F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { abortReason } from '../utils/abort.js';
|
|
2
|
+
/**
|
|
3
|
+
* Joins a caller to a shared fetch without allowing that caller to cancel
|
|
4
|
+
* anyone else. The underlying fetch is aborted only after its final waiter
|
|
5
|
+
* leaves.
|
|
6
|
+
*/
|
|
7
|
+
export function joinSharedFetch(shared, abortSignal) {
|
|
8
|
+
if (!abortSignal) {
|
|
9
|
+
shared.pinnedWaiters += 1;
|
|
10
|
+
return shared.promise.finally(() => {
|
|
11
|
+
shared.pinnedWaiters -= 1;
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
if (abortSignal.aborted) {
|
|
15
|
+
return Promise.reject(abortReason(abortSignal));
|
|
16
|
+
}
|
|
17
|
+
shared.abortableWaiters += 1;
|
|
18
|
+
return new Promise((resolve, reject) => {
|
|
19
|
+
let waiting = true;
|
|
20
|
+
const leave = () => {
|
|
21
|
+
if (!waiting)
|
|
22
|
+
return;
|
|
23
|
+
waiting = false;
|
|
24
|
+
shared.abortableWaiters -= 1;
|
|
25
|
+
abortSignal.removeEventListener('abort', onAbort);
|
|
26
|
+
};
|
|
27
|
+
const onAbort = () => {
|
|
28
|
+
leave();
|
|
29
|
+
if (shared.abortableWaiters === 0 && shared.pinnedWaiters === 0) {
|
|
30
|
+
shared.controller.abort(abortSignal.reason);
|
|
31
|
+
}
|
|
32
|
+
reject(abortReason(abortSignal));
|
|
33
|
+
};
|
|
34
|
+
abortSignal.addEventListener('abort', onAbort, { once: true });
|
|
35
|
+
shared.promise.then(value => {
|
|
36
|
+
leave();
|
|
37
|
+
resolve(value);
|
|
38
|
+
}, error => {
|
|
39
|
+
leave();
|
|
40
|
+
reject(error);
|
|
41
|
+
});
|
|
42
|
+
});
|
|
43
|
+
}
|
|
@@ -3,8 +3,12 @@ import { QueryBuilder } from '../query-builder.js';
|
|
|
3
3
|
import { type QueryLog } from '../utils/logger.js';
|
|
4
4
|
interface ExecutorRunOptions {
|
|
5
5
|
queryId?: string;
|
|
6
|
+
abortSignal?: AbortSignal;
|
|
6
7
|
logContext?: Partial<QueryLog>;
|
|
7
8
|
}
|
|
9
|
+
interface ExecutorStreamOptions {
|
|
10
|
+
abortSignal?: AbortSignal;
|
|
11
|
+
}
|
|
8
12
|
export declare class ExecutorFeature<Schema extends SchemaDefinition<Schema>, State extends BuilderState<Schema, string, any, keyof Schema, Partial<Record<string, keyof Schema>>, any, any>> {
|
|
9
13
|
private builder;
|
|
10
14
|
constructor(builder: QueryBuilder<Schema, State>);
|
|
@@ -14,7 +18,7 @@ export declare class ExecutorFeature<Schema extends SchemaDefinition<Schema>, St
|
|
|
14
18
|
};
|
|
15
19
|
toSQL(): string;
|
|
16
20
|
execute(options?: ExecutorRunOptions): Promise<State['output'][]>;
|
|
17
|
-
stream(): Promise<ReadableStream<State['output'][]>>;
|
|
21
|
+
stream(options?: ExecutorStreamOptions): Promise<ReadableStream<State['output'][]>>;
|
|
18
22
|
private compileQuery;
|
|
19
23
|
}
|
|
20
24
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/core/features/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAU,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CAChC;AAED,qBAAa,eAAe,CAC1B,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAElG,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAExD,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,EAAE,CAAA;KAAE;IAKrD,KAAK,IAAI,MAAM;IAMT,OAAO,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../../src/core/features/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAU,KAAK,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;CAChC;AAED,UAAU,qBAAqB;IAC7B,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,eAAe,CAC1B,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,MAAM,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC;IAElG,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC;IAExD,eAAe,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,EAAE,CAAA;KAAE;IAKrD,KAAK,IAAI,MAAM;IAMT,OAAO,CAAC,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;IAsDjE,MAAM,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAgDzF,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -31,6 +31,7 @@ export class ExecutorFeature {
|
|
|
31
31
|
const rows = await adapter.query(sql, parameters, {
|
|
32
32
|
clickhouseSettings: queryNode.settings,
|
|
33
33
|
queryId: options?.queryId,
|
|
34
|
+
abortSignal: options?.abortSignal,
|
|
34
35
|
});
|
|
35
36
|
const endTime = Date.now();
|
|
36
37
|
logger.logQuery({
|
|
@@ -63,7 +64,7 @@ export class ExecutorFeature {
|
|
|
63
64
|
throw error;
|
|
64
65
|
}
|
|
65
66
|
}
|
|
66
|
-
async stream() {
|
|
67
|
+
async stream(options) {
|
|
67
68
|
const adapter = this.builder.getAdapter();
|
|
68
69
|
const queryNode = this.builder.toQueryNode();
|
|
69
70
|
const { sql, parameters } = this.toSQLWithParams();
|
|
@@ -80,6 +81,7 @@ export class ExecutorFeature {
|
|
|
80
81
|
}
|
|
81
82
|
const webStream = await adapter.stream(sql, parameters, {
|
|
82
83
|
clickhouseSettings: queryNode.settings,
|
|
84
|
+
abortSignal: options?.abortSignal,
|
|
83
85
|
});
|
|
84
86
|
const endTime = Date.now();
|
|
85
87
|
logger.logQuery({
|
|
@@ -4,6 +4,7 @@ import type { InsertResultSummary } from '../adapters/database-adapter.js';
|
|
|
4
4
|
import { InsertBuilder } from '../insert-builder.js';
|
|
5
5
|
interface InsertExecutorRunOptions {
|
|
6
6
|
queryId?: string;
|
|
7
|
+
abortSignal?: AbortSignal;
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
10
|
* Prepares rows for JSONEachRow serialization: `Date` values become ISO-8601
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-executor.d.ts","sourceRoot":"","sources":["../../../src/core/features/insert-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrD,UAAU,wBAAwB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"insert-executor.d.ts","sourceRoot":"","sources":["../../../src/core/features/insert-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAOrD,UAAU,wBAAwB;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AA+BD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnE,IAAI,EAAE,CAAC,EAAE,GACR,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAE3B;AAED,MAAM,WAAW,wBAAwB;IACvC,mEAAmE;IACnE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,uEAAuE;IACvE,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAaD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAC5C,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,CAeR;AAED,qBAAa,qBAAqB,CAChC,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,cAAc;IAEhB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC;IAEnD,OAAO,CAAC,OAAO,CAAC,EAAE,wBAAwB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAmEhF"}
|
|
@@ -113,6 +113,7 @@ export class InsertExecutorFeature {
|
|
|
113
113
|
const result = await adapter.insert(tableName, rows, {
|
|
114
114
|
clickhouseSettings: queryNode.settings,
|
|
115
115
|
queryId: options?.queryId,
|
|
116
|
+
abortSignal: options?.abortSignal,
|
|
116
117
|
columns: queryNode.columns,
|
|
117
118
|
});
|
|
118
119
|
const endTime = Date.now();
|
|
@@ -5,6 +5,7 @@ import type { SchemaDefinition, InsertState, InitialInsertState, UpdateInsertRow
|
|
|
5
5
|
import type { InsertRowForColumns } from '../types/insert.js';
|
|
6
6
|
export interface InsertExecuteOptions {
|
|
7
7
|
queryId?: string;
|
|
8
|
+
abortSignal?: AbortSignal;
|
|
8
9
|
}
|
|
9
10
|
/**
|
|
10
11
|
* A type-safe insert builder for ClickHouse tables.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insert-builder.d.ts","sourceRoot":"","sources":["../../src/core/insert-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"insert-builder.d.ts","sourceRoot":"","sources":["../../src/core/insert-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAI9D,MAAM,WAAW,oBAAoB;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa,CACxB,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,WAAW,CAAC,MAAM,EAAE,MAAM,MAAM,EAAE,GAAG,CAAC;IAEpD,OAAO,CAAC,KAAK,CAAkB;IAC/B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,OAAO,CAAkB;IACjC,OAAO,CAAC,cAAc,CAAS;gBAG7B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,eAAe,EACxB,KAAK,CAAC,EAAE,eAAe;IASzB,OAAO,CAAC,IAAI;IAcZ,OAAO,CAAC,WAAW;IAInB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,CAAC,SAAS,OAAO,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAC7D,OAAO,EAAE,SAAS,CAAC,EAAE,GACpB,aAAa,CAAC,MAAM,EAAE,eAAe,CAAC,KAAK,EAAE,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAchG;;;;;OAKG;IACH,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,IAAI;IAU9D;;;OAGG;IACH,QAAQ,CAAC,IAAI,EAAE,kBAAkB,GAAG,IAAI;IAQxC,YAAY;IAIZ,UAAU,IAAI,eAAe;IAI7B,YAAY,IAAI,eAAe;IAI/B,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,OAAO,CAAC,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAGtE;AAED,MAAM,MAAM,QAAQ,CAClB,MAAM,SAAS,gBAAgB,CAAC,MAAM,CAAC,EACvC,KAAK,SAAS,MAAM,MAAM,IACxB,aAAa,CAAC,MAAM,EAAE,kBAAkB,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC"}
|
|
@@ -27,6 +27,10 @@ type ApplyJoinPathChainState<Schema extends SchemaDefinition<Schema>, State exte
|
|
|
27
27
|
export interface ExecuteOptions {
|
|
28
28
|
queryId?: string;
|
|
29
29
|
cache?: CacheOptions | false;
|
|
30
|
+
abortSignal?: AbortSignal;
|
|
31
|
+
}
|
|
32
|
+
export interface StreamOptions {
|
|
33
|
+
abortSignal?: AbortSignal;
|
|
30
34
|
}
|
|
31
35
|
export interface ClickHouseConnectionOptions extends Omit<BaseClickHouseClientConfigOptions, 'host'> {
|
|
32
36
|
/**
|
|
@@ -155,12 +159,12 @@ export declare class QueryBuilder<Schema extends SchemaDefinition<Schema>, State
|
|
|
155
159
|
parameters: any[];
|
|
156
160
|
};
|
|
157
161
|
execute(options?: ExecuteOptions): Promise<State['output'][]>;
|
|
158
|
-
stream(): Promise<ReadableStream<State['output'][]>>;
|
|
162
|
+
stream(options?: StreamOptions): Promise<ReadableStream<State['output'][]>>;
|
|
159
163
|
/**
|
|
160
164
|
* Processes each row in a stream with the provided callback function
|
|
161
165
|
* @param callback Function to call for each row in the stream
|
|
162
166
|
*/
|
|
163
|
-
streamForEach<R = void>(callback: (row: State['output']) => R | Promise<R
|
|
167
|
+
streamForEach<R = void>(callback: (row: State['output']) => R | Promise<R>, options?: StreamOptions): Promise<void>;
|
|
164
168
|
private validateFilterValue;
|
|
165
169
|
private applyFilter;
|
|
166
170
|
/**
|
|
@@ -314,6 +318,12 @@ export declare function createQueryBuilder<Schema extends SchemaDefinition<Schem
|
|
|
314
318
|
adapter: DatabaseAdapter;
|
|
315
319
|
dialect: SqlDialect;
|
|
316
320
|
rawQuery<TResult = any>(sql: string, params?: unknown[], options?: QueryExecutionOptions): Promise<TResult[]>;
|
|
321
|
+
/**
|
|
322
|
+
* Closes the underlying connection pool for graceful shutdown. A client
|
|
323
|
+
* passed in through config is closed too, and the builder must not be used
|
|
324
|
+
* afterwards.
|
|
325
|
+
*/
|
|
326
|
+
close(): Promise<void>;
|
|
317
327
|
/**
|
|
318
328
|
* Starts a type-safe insert into the given table.
|
|
319
329
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"query-builder.d.ts","sourceRoot":"","sources":["../../src/core/query-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -324,15 +324,15 @@ export class QueryBuilder {
|
|
|
324
324
|
execute(options) {
|
|
325
325
|
return executeWithCache(this, options);
|
|
326
326
|
}
|
|
327
|
-
async stream() {
|
|
328
|
-
return this.executor.stream();
|
|
327
|
+
async stream(options) {
|
|
328
|
+
return this.executor.stream(options);
|
|
329
329
|
}
|
|
330
330
|
/**
|
|
331
331
|
* Processes each row in a stream with the provided callback function
|
|
332
332
|
* @param callback Function to call for each row in the stream
|
|
333
333
|
*/
|
|
334
|
-
async streamForEach(callback) {
|
|
335
|
-
const stream = await this.stream();
|
|
334
|
+
async streamForEach(callback, options) {
|
|
335
|
+
const stream = await this.stream(options);
|
|
336
336
|
const reader = stream.getReader();
|
|
337
337
|
try {
|
|
338
338
|
while (true) {
|
|
@@ -578,6 +578,14 @@ export function createQueryBuilder(config) {
|
|
|
578
578
|
async rawQuery(sql, params = [], options) {
|
|
579
579
|
return resolvedAdapter.query(sql, params, options);
|
|
580
580
|
},
|
|
581
|
+
/**
|
|
582
|
+
* Closes the underlying connection pool for graceful shutdown. A client
|
|
583
|
+
* passed in through config is closed too, and the builder must not be used
|
|
584
|
+
* afterwards.
|
|
585
|
+
*/
|
|
586
|
+
async close() {
|
|
587
|
+
await resolvedAdapter.close?.();
|
|
588
|
+
},
|
|
581
589
|
/**
|
|
582
590
|
* Starts a type-safe insert into the given table.
|
|
583
591
|
*
|
|
@@ -4,6 +4,7 @@ export declare const initializeTestConnection: () => Promise<{
|
|
|
4
4
|
adapter: import("../../adapters/database-adapter.js").DatabaseAdapter;
|
|
5
5
|
dialect: import("../../dialects/sql-dialect.js").SqlDialect;
|
|
6
6
|
rawQuery<TResult = any>(sql: string, params?: unknown[], options?: import("../../adapters/database-adapter.js").QueryExecutionOptions): Promise<TResult[]>;
|
|
7
|
+
close(): Promise<void>;
|
|
7
8
|
insert<TableName extends never>(tableName: TableName): import("../../insert-builder.js").InsertQB<import("../../types/builder-state.js").SchemaDefinition<unknown>, TableName>;
|
|
8
9
|
table<TableName extends never>(tableName: TableName): import("../../query-builder.js").SelectQB<import("../../types/builder-state.js").SchemaDefinition<unknown>, TableName, import("../../../index.js").TableRecord<import("../../types/builder-state.js").SchemaDefinition<unknown>[TableName]>, TableName>;
|
|
9
10
|
from<SubqueryState extends import("../../types/builder-state.js").BuilderState<import("../../types/builder-state.js").SchemaDefinition<unknown>, string, any, never, any, any, any>>(subquery: import("../../query-builder.js").QueryBuilder<import("../../types/builder-state.js").SchemaDefinition<unknown>, SubqueryState>): import("../../query-builder.js").QueryBuilder<import("../../types/builder-state.js").SchemaDefinition<unknown>, import("../../types/builder-state.js").FromSubqueryState<import("../../types/builder-state.js").SchemaDefinition<unknown>, SubqueryState>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/core/tests/integration/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,SAAS,EAQV,MAAM,kDAAkD,CAAC;AA4B1D,eAAO,MAAM,wBAAwB
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../../src/core/tests/integration/setup.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,SAAS,EAQV,MAAM,kDAAkD,CAAC;AA4B1D,eAAO,MAAM,wBAAwB;;;;;;;;;EAyBpC,CAAC;AAGF,eAAO,MAAM,2BAA2B,yGAevC,CAAC;AAGF,eAAO,MAAM,kBAAkB,GAAU,eAAe,MAAM,KAAG,OAAO,CAAC,OAAO,CAE/E,CAAC;AAGF,eAAO,MAAM,wBAAwB,QAAa,OAAO,CAAC,IAAI,CAO7D,CAAC;AAGF,eAAO,MAAM,iBAAiB,GAC5B,oBAAgB,EAChB,sBAAoB,KACnB,OAAO,CAAC,IAAI,CAOd,CAAC;AAGF,eAAO,MAAM,uBAAuB,QAAa,OAAO,CAAC,IAAI,CAU5D,CAAC;AAGF,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,KAAK,CAAC;QAChB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,OAAO,CAAC;QACnB,IAAI,EAAE,MAAM,EAAE,CAAC;KAChB,CAAC,CAAC;IACH,KAAK,EAAE,KAAK,CAAC;QACX,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;IACH,MAAM,EAAE,KAAK,CAAC;QACZ,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAED,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,SAAS,EAAE,CAAC;AAKxE,eAAO,MAAM,iBAAiB,QAAa,OAAO,CAAC,IAAI,CAuBtD,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function abortReason(signal: AbortSignal): unknown;
|
|
2
|
+
export declare function throwIfAborted(signal?: AbortSignal): void;
|
|
3
|
+
/** Rejects promptly on abort while allowing the underlying operation to settle safely. */
|
|
4
|
+
export declare function raceWithAbort<T>(operation: Promise<T>, signal?: AbortSignal, onAbort?: () => void): Promise<T>;
|
|
5
|
+
//# sourceMappingURL=abort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abort.d.ts","sourceRoot":"","sources":["../../../src/core/utils/abort.ts"],"names":[],"mappings":"AAAA,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAExD;AAED,wBAAgB,cAAc,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,IAAI,CAIzD;AAED,0FAA0F;AAC1F,wBAAgB,aAAa,CAAC,CAAC,EAC7B,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EACrB,MAAM,CAAC,EAAE,WAAW,EACpB,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,OAAO,CAAC,CAAC,CAAC,CAsCZ"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export function abortReason(signal) {
|
|
2
|
+
return signal.reason ?? new Error('The query was aborted.');
|
|
3
|
+
}
|
|
4
|
+
export function throwIfAborted(signal) {
|
|
5
|
+
if (signal?.aborted) {
|
|
6
|
+
throw abortReason(signal);
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
/** Rejects promptly on abort while allowing the underlying operation to settle safely. */
|
|
10
|
+
export function raceWithAbort(operation, signal, onAbort) {
|
|
11
|
+
if (!signal) {
|
|
12
|
+
return operation;
|
|
13
|
+
}
|
|
14
|
+
const handleAbort = () => {
|
|
15
|
+
try {
|
|
16
|
+
onAbort?.();
|
|
17
|
+
}
|
|
18
|
+
catch {
|
|
19
|
+
// Cleanup failures must not replace the caller's abort reason.
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
if (signal.aborted) {
|
|
23
|
+
handleAbort();
|
|
24
|
+
return Promise.reject(abortReason(signal));
|
|
25
|
+
}
|
|
26
|
+
return new Promise((resolve, reject) => {
|
|
27
|
+
const detachAbort = () => signal.removeEventListener('abort', handleSignalAbort);
|
|
28
|
+
const handleSignalAbort = () => {
|
|
29
|
+
detachAbort();
|
|
30
|
+
handleAbort();
|
|
31
|
+
reject(abortReason(signal));
|
|
32
|
+
};
|
|
33
|
+
signal.addEventListener('abort', handleSignalAbort, { once: true });
|
|
34
|
+
operation.then(value => {
|
|
35
|
+
detachAbort();
|
|
36
|
+
resolve(value);
|
|
37
|
+
}, error => {
|
|
38
|
+
detachAbort();
|
|
39
|
+
reject(error);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface CloseableResult {
|
|
2
|
+
close(): void | Promise<void>;
|
|
3
|
+
}
|
|
4
|
+
/** Keeps cancellation attached while a ClickHouse result body is consumed. */
|
|
5
|
+
export declare function consumeResultWithAbort<T>(signal: AbortSignal | undefined, result: CloseableResult, consume: () => Promise<T>): Promise<T>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=abortable-result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abortable-result.d.ts","sourceRoot":"","sources":["../../../src/core/utils/abortable-result.ts"],"names":[],"mappings":"AAEA,UAAU,eAAe;IACvB,KAAK,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC/B;AAUD,8EAA8E;AAC9E,wBAAgB,sBAAsB,CAAC,CAAC,EACtC,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/B,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC,CAiBZ"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { abortReason, raceWithAbort } from './abort.js';
|
|
2
|
+
function closeResult(result) {
|
|
3
|
+
try {
|
|
4
|
+
void Promise.resolve(result.close()).catch(() => undefined);
|
|
5
|
+
}
|
|
6
|
+
catch {
|
|
7
|
+
// Closing an already-consumed result is safe to ignore.
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
/** Keeps cancellation attached while a ClickHouse result body is consumed. */
|
|
11
|
+
export function consumeResultWithAbort(signal, result, consume) {
|
|
12
|
+
if (!signal) {
|
|
13
|
+
return consume();
|
|
14
|
+
}
|
|
15
|
+
if (signal.aborted) {
|
|
16
|
+
closeResult(result);
|
|
17
|
+
return Promise.reject(abortReason(signal));
|
|
18
|
+
}
|
|
19
|
+
let pending;
|
|
20
|
+
try {
|
|
21
|
+
pending = consume();
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
return Promise.reject(error);
|
|
25
|
+
}
|
|
26
|
+
return raceWithAbort(pending, signal, () => closeResult(result));
|
|
27
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function createJsonEachRowStream<T>(stream: NodeJS.ReadableStream | ReadableStream<T[]
|
|
1
|
+
export declare function createJsonEachRowStream<T>(stream: NodeJS.ReadableStream | ReadableStream<T[]>, abortSignal?: AbortSignal): ReadableStream<T[]>;
|
|
2
2
|
//# sourceMappingURL=streaming-helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming-helpers.d.ts","sourceRoot":"","sources":["../../../src/core/utils/streaming-helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"streaming-helpers.d.ts","sourceRoot":"","sources":["../../../src/core/utils/streaming-helpers.ts"],"names":[],"mappings":"AAyJA,wBAAgB,uBAAuB,CAAC,CAAC,EACvC,MAAM,EAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC,CAAC,EAAE,CAAC,EACnD,WAAW,CAAC,EAAE,WAAW,GACxB,cAAc,CAAC,CAAC,EAAE,CAAC,CA2ErB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Readable } from 'stream';
|
|
2
|
+
import { abortReason } from './abort.js';
|
|
2
3
|
function createBufferFlusher() {
|
|
3
4
|
let buffer = '';
|
|
4
5
|
const flush = () => {
|
|
@@ -67,6 +68,7 @@ async function normalizeChunk(chunk, flush, append) {
|
|
|
67
68
|
async function createChunkReader(nodeStream) {
|
|
68
69
|
const iterator = nodeStream[Symbol.asyncIterator]?.();
|
|
69
70
|
let webReader;
|
|
71
|
+
let closePromise;
|
|
70
72
|
const readNext = async () => {
|
|
71
73
|
if (iterator) {
|
|
72
74
|
const result = await iterator.next();
|
|
@@ -79,36 +81,46 @@ async function createChunkReader(nodeStream) {
|
|
|
79
81
|
const result = await webReader.read();
|
|
80
82
|
return { done: Boolean(result.done), value: result.value };
|
|
81
83
|
};
|
|
82
|
-
const close =
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
84
|
+
const close = () => {
|
|
85
|
+
closePromise ??= (async () => {
|
|
86
|
+
// A pending iterator.next() prevents iterator.return() from settling.
|
|
87
|
+
// Destroy first so cancellation always releases the connection stream.
|
|
88
|
+
if (typeof nodeStream.destroy === 'function') {
|
|
89
|
+
nodeStream.destroy();
|
|
86
90
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
91
|
+
if (iterator && typeof iterator.return === 'function') {
|
|
92
|
+
try {
|
|
93
|
+
await iterator.return();
|
|
94
|
+
}
|
|
95
|
+
catch { }
|
|
96
|
+
}
|
|
97
|
+
})();
|
|
98
|
+
return closePromise;
|
|
92
99
|
};
|
|
93
100
|
return { readNext, close };
|
|
94
101
|
}
|
|
95
102
|
async function createWebStreamReader(webStream) {
|
|
96
103
|
const reader = webStream.getReader();
|
|
104
|
+
let closePromise;
|
|
97
105
|
const readNext = async () => {
|
|
98
106
|
const result = await reader.read();
|
|
99
107
|
return { done: Boolean(result.done), value: result.value };
|
|
100
108
|
};
|
|
101
|
-
const close =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
109
|
+
const close = () => {
|
|
110
|
+
closePromise ??= (async () => {
|
|
111
|
+
try {
|
|
112
|
+
await reader.cancel();
|
|
113
|
+
}
|
|
114
|
+
catch { }
|
|
115
|
+
})();
|
|
116
|
+
return closePromise;
|
|
106
117
|
};
|
|
107
118
|
return { readNext, close };
|
|
108
119
|
}
|
|
109
|
-
export function createJsonEachRowStream(stream) {
|
|
120
|
+
export function createJsonEachRowStream(stream, abortSignal) {
|
|
110
121
|
const { flush, append } = createBufferFlusher();
|
|
111
122
|
let readerPromise;
|
|
123
|
+
let onAbort;
|
|
112
124
|
const ensureReader = () => {
|
|
113
125
|
if (!readerPromise) {
|
|
114
126
|
if (typeof stream?.getReader === 'function') {
|
|
@@ -120,24 +132,58 @@ export function createJsonEachRowStream(stream) {
|
|
|
120
132
|
}
|
|
121
133
|
return readerPromise;
|
|
122
134
|
};
|
|
135
|
+
const detachAbort = () => {
|
|
136
|
+
if (onAbort) {
|
|
137
|
+
abortSignal?.removeEventListener('abort', onAbort);
|
|
138
|
+
onAbort = undefined;
|
|
139
|
+
}
|
|
140
|
+
};
|
|
123
141
|
return new ReadableStream({
|
|
142
|
+
start(controller) {
|
|
143
|
+
if (!abortSignal) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
// The underlying clients stop honoring the signal once response headers
|
|
147
|
+
// arrive, so aborting must both error the consumer and drop the source.
|
|
148
|
+
const fail = () => {
|
|
149
|
+
detachAbort();
|
|
150
|
+
controller.error(abortReason(abortSignal));
|
|
151
|
+
ensureReader().then(reader => reader.close()).catch(() => undefined);
|
|
152
|
+
};
|
|
153
|
+
if (abortSignal.aborted) {
|
|
154
|
+
fail();
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
onAbort = fail;
|
|
158
|
+
abortSignal.addEventListener('abort', onAbort, { once: true });
|
|
159
|
+
},
|
|
124
160
|
async pull(controller) {
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
161
|
+
try {
|
|
162
|
+
const reader = await ensureReader();
|
|
163
|
+
const { done, value } = await reader.readNext();
|
|
164
|
+
if (done) {
|
|
165
|
+
detachAbort();
|
|
166
|
+
const remaining = flush();
|
|
167
|
+
if (remaining.length) {
|
|
168
|
+
controller.enqueue(remaining);
|
|
169
|
+
}
|
|
170
|
+
controller.close();
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
const rows = await normalizeChunk(value, flush, append);
|
|
174
|
+
if (rows.length) {
|
|
175
|
+
controller.enqueue(rows);
|
|
131
176
|
}
|
|
132
|
-
controller.close();
|
|
133
|
-
return;
|
|
134
177
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
178
|
+
catch (error) {
|
|
179
|
+
detachAbort();
|
|
180
|
+
const reader = await ensureReader();
|
|
181
|
+
await reader.close();
|
|
182
|
+
throw error;
|
|
138
183
|
}
|
|
139
184
|
},
|
|
140
185
|
async cancel() {
|
|
186
|
+
detachAbort();
|
|
141
187
|
const reader = await ensureReader();
|
|
142
188
|
await reader.close();
|
|
143
189
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,9 +7,9 @@ export { ClickHouseConnection } from './core/connection.js';
|
|
|
7
7
|
export { JoinRelationships } from './core/join-relationships.js';
|
|
8
8
|
export { createClickHouseAdapter, ClickHouseAdapter } from './core/adapters/clickhouse-adapter.js';
|
|
9
9
|
export { ClickHouseDialect } from './core/dialects/clickhouse-dialect.js';
|
|
10
|
-
export type { DatabaseAdapter, InsertExecutionOptions, InsertResultSummary } from './core/adapters/database-adapter.js';
|
|
10
|
+
export type { DatabaseAdapter, InsertExecutionOptions, InsertResultSummary, QueryExecutionOptions } from './core/adapters/database-adapter.js';
|
|
11
11
|
export type { SqlDialect } from './core/dialects/sql-dialect.js';
|
|
12
|
-
export type { ClickHouseConfig, ClickHouseClientConfig, CreateQueryBuilderConfig, ExecuteOptions } from './core/query-builder.js';
|
|
12
|
+
export type { ClickHouseConfig, ClickHouseClientConfig, CreateQueryBuilderConfig, ExecuteOptions, StreamOptions } from './core/query-builder.js';
|
|
13
13
|
export { isClientConfig } from './core/query-builder.js';
|
|
14
14
|
export { substituteParameters, escapeValue } from './core/utils.js';
|
|
15
15
|
export * from './core/compiled/index.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAC/E,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,YAAY,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AACnG,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,YAAY,EACV,eAAe,EACf,sBAAsB,EACtB,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|