@chkit/clickhouse 0.2.0-beta.11 → 0.2.0-beta.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/dist/alter-column-statement.d.ts +32 -0
  2. package/dist/alter-column-statement.d.ts.map +1 -0
  3. package/dist/alter-column-statement.js +137 -0
  4. package/dist/alter-column-statement.js.map +1 -0
  5. package/dist/async-insert-guard.d.ts +31 -0
  6. package/dist/async-insert-guard.d.ts.map +1 -0
  7. package/dist/async-insert-guard.js +55 -0
  8. package/dist/async-insert-guard.js.map +1 -0
  9. package/dist/create-table-parser.d.ts +3 -0
  10. package/dist/create-table-parser.d.ts.map +1 -1
  11. package/dist/create-table-parser.js +18 -0
  12. package/dist/create-table-parser.js.map +1 -1
  13. package/dist/ddl-propagation.d.ts +62 -6
  14. package/dist/ddl-propagation.d.ts.map +1 -1
  15. package/dist/ddl-propagation.js +420 -46
  16. package/dist/ddl-propagation.js.map +1 -1
  17. package/dist/e2e-testkit.d.ts +4 -1
  18. package/dist/e2e-testkit.d.ts.map +1 -1
  19. package/dist/e2e-testkit.js +9 -5
  20. package/dist/e2e-testkit.js.map +1 -1
  21. package/dist/exact-json.d.ts +27 -0
  22. package/dist/exact-json.d.ts.map +1 -0
  23. package/dist/exact-json.js +128 -0
  24. package/dist/exact-json.js.map +1 -0
  25. package/dist/index.d.ts +32 -9
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +177 -60
  28. package/dist/index.js.map +1 -1
  29. package/dist/insert-barrier.d.ts +32 -0
  30. package/dist/insert-barrier.d.ts.map +1 -0
  31. package/dist/insert-barrier.js +57 -0
  32. package/dist/insert-barrier.js.map +1 -0
  33. package/dist/replicas.d.ts +21 -0
  34. package/dist/replicas.d.ts.map +1 -0
  35. package/dist/replicas.js +39 -0
  36. package/dist/replicas.js.map +1 -0
  37. package/dist/view-details.d.ts +30 -0
  38. package/dist/view-details.d.ts.map +1 -0
  39. package/dist/view-details.js +73 -0
  40. package/dist/view-details.js.map +1 -0
  41. package/package.json +5 -2
package/dist/index.js CHANGED
@@ -1,8 +1,11 @@
1
1
  import { createRequire } from 'node:module';
2
- import { isSyntheticEphemeralDefault, normalizeSQLFragment, parseCodec, parseTextIndexParams, normalizeTextIndexSQL, } from '@chkit/core';
2
+ import { Readable } from 'node:stream';
3
+ import { isSyntheticEphemeralDefault, normalizeSQLFragment, parseCodec, parseTextIndexParams, parseVectorIndexArgs, normalizeTextIndexSQL, } from '@chkit/core';
3
4
  import { ClickHouseLogLevel, createClient } from '@clickhouse/client';
4
5
  import { getLogger } from '@logtape/logtape';
5
- import { parseEngineFromCreateTableQuery, parseOrderByFromCreateTableQuery, parsePartitionByFromCreateTableQuery, parsePrimaryKeyFromCreateTableQuery, parseProjectionsFromCreateTableQuery, parseSettingsFromCreateTableQuery, parseTTLFromCreateTableQuery, parseUniqueKeyFromCreateTableQuery, } from './create-table-parser.js';
6
+ import { parseJsonEachRow, parseJsonResult } from './exact-json.js';
7
+ import { allReplicas, resolveReplicaFanout } from './replicas.js';
8
+ import { parseConstraintsFromCreateTableQuery, parseEngineFromCreateTableQuery, parseOrderByFromCreateTableQuery, parsePartitionByFromCreateTableQuery, parsePrimaryKeyFromCreateTableQuery, parseProjectionsFromCreateTableQuery, parseSettingsFromCreateTableQuery, parseTTLFromCreateTableQuery, parseUniqueKeyFromCreateTableQuery, } from './create-table-parser.js';
6
9
  const pkg = createRequire(import.meta.url)('../package.json');
7
10
  const CHKIT_APPLICATION_ID = `chkit/${pkg.version}`;
8
11
  /**
@@ -12,8 +15,9 @@ const CHKIT_APPLICATION_ID = `chkit/${pkg.version}`;
12
15
  export function observableSystemTable(executor, table) {
13
16
  return executor.systemTableSource?.(table) ?? `system.${table}`;
14
17
  }
15
- export { parseEngineFromCreateTableQuery, parseOrderByFromCreateTableQuery, parsePartitionByFromCreateTableQuery, parsePrimaryKeyFromCreateTableQuery, parseProjectionsFromCreateTableQuery, parseSettingsFromCreateTableQuery, parseTTLFromCreateTableQuery, parseUniqueKeyFromCreateTableQuery, } from './create-table-parser.js';
18
+ export { parseConstraintsFromCreateTableQuery, parseEngineFromCreateTableQuery, parseOrderByFromCreateTableQuery, parsePartitionByFromCreateTableQuery, parsePrimaryKeyFromCreateTableQuery, parseProjectionsFromCreateTableQuery, parseSettingsFromCreateTableQuery, parseTTLFromCreateTableQuery, parseUniqueKeyFromCreateTableQuery, } from './create-table-parser.js';
16
19
  export { canonicalizeSqlFragments } from './canonicalize.js';
20
+ export { listViewDetails, parseMaterializedViewTarget } from './view-details.js';
17
21
  export { parseCommentFromCreateDictionaryQuery, parseDictionaryAttributesFromCreateDictionaryQuery, parseDictionaryPrimaryKeyFromCreateDictionaryQuery, parseDictionaryRangeFromCreateDictionaryQuery, parseDictionarySettingsFromCreateDictionaryQuery, parseLayoutFromCreateDictionaryQuery, parseLifetimeFromCreateDictionaryQuery, parseSourceFromCreateDictionaryQuery, } from './create-dictionary-parser.js';
18
22
  export function inferSchemaKindFromEngine(engine) {
19
23
  if (engine === 'View')
@@ -56,52 +60,72 @@ export function normalizeColumnFromSystemRow(row) {
56
60
  codec: codecSteps,
57
61
  };
58
62
  }
59
- function splitArgs(args) {
60
- if (args === undefined)
61
- return [];
62
- return args
63
- .split(',')
64
- .map((part) => Number(part.trim()))
65
- .filter((value) => !Number.isNaN(value));
66
- }
63
+ /**
64
+ * Maps `system.data_skipping_indices.type_full` onto the structured DSL shape.
65
+ * A type chkit has no structured form for, or arguments that do not fit one
66
+ * (`set` without a row limit, an unknown text parameter, a newer vector
67
+ * similarity option), become a raw index carrying `type_full` verbatim, so pull
68
+ * and drift never rewrite an index into a different one.
69
+ */
67
70
  function parseIndexType(value) {
68
71
  const match = value.match(/^(\w+)\((.*)\)$/s);
69
- const baseName = match?.[1] ?? value;
70
- if (baseName === 'text')
71
- return { type: 'text', ...parseTextIndexParams(match?.[2] ?? '') };
72
- const args = splitArgs(match?.[2]);
72
+ const baseName = match?.[1] ?? value.trim();
73
+ const args = match?.[2];
74
+ const raw = { type: 'raw', rawType: normalizeSQLFragment(value) };
75
+ const numbers = args === undefined ? [] : splitArgs(args);
76
+ const numeric = (count) => args !== undefined && numbers.length === count;
73
77
  switch (baseName) {
78
+ case 'text':
79
+ try {
80
+ return { type: 'text', ...parseTextIndexParams(args ?? '') };
81
+ }
82
+ catch {
83
+ return raw;
84
+ }
85
+ case 'vector_similarity': {
86
+ const parsed = args === undefined ? undefined : parseVectorIndexArgs(args);
87
+ return parsed ?? raw;
88
+ }
74
89
  case 'minmax':
75
- return { type: 'minmax' };
90
+ return args === undefined ? { type: 'minmax' } : raw;
91
+ case 'set':
92
+ return numeric(1) ? { type: 'set', maxRows: numbers[0] ?? 0 } : raw;
76
93
  case 'bloom_filter':
77
- return args[0] !== undefined
78
- ? { type: 'bloom_filter', falsePositiveRate: args[0] }
79
- : { type: 'bloom_filter' };
94
+ if (args === undefined)
95
+ return { type: 'bloom_filter' };
96
+ return numeric(1) ? { type: 'bloom_filter', falsePositiveRate: numbers[0] } : raw;
80
97
  case 'tokenbf_v1':
81
- return {
82
- type: 'tokenbf_v1',
83
- sizeBytes: args[0] ?? 0,
84
- hashFunctions: args[1] ?? 0,
85
- randomSeed: args[2] ?? 0,
86
- };
98
+ return numeric(3)
99
+ ? { type: 'tokenbf_v1', sizeBytes: numbers[0] ?? 0, hashFunctions: numbers[1] ?? 0, randomSeed: numbers[2] ?? 0 }
100
+ : raw;
87
101
  case 'ngrambf_v1':
88
- return {
89
- type: 'ngrambf_v1',
90
- ngramSize: args[0] ?? 0,
91
- sizeBytes: args[1] ?? 0,
92
- hashFunctions: args[2] ?? 0,
93
- randomSeed: args[3] ?? 0,
94
- };
102
+ return numeric(4)
103
+ ? {
104
+ type: 'ngrambf_v1',
105
+ ngramSize: numbers[0] ?? 0,
106
+ sizeBytes: numbers[1] ?? 0,
107
+ hashFunctions: numbers[2] ?? 0,
108
+ randomSeed: numbers[3] ?? 0,
109
+ }
110
+ : raw;
95
111
  default:
96
- return { type: 'set', maxRows: args[0] ?? 0 };
112
+ return raw;
97
113
  }
98
114
  }
115
+ /** Numeric arguments, or none when any argument is not a plain number. */
116
+ function splitArgs(args) {
117
+ const parts = args.split(',').map((part) => part.trim());
118
+ if (parts.some((part) => !/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i.test(part)))
119
+ return [];
120
+ return parts.map(Number);
121
+ }
99
122
  export function normalizeIndexFromSystemRow(row) {
100
123
  const parsed = parseIndexType(row.type);
101
124
  return {
102
125
  name: row.name,
103
126
  expression: parsed.type === 'text' ? normalizeTextIndexSQL(row.expr) : normalizeSQLFragment(row.expr),
104
- granularity: row.granularity,
127
+ // UInt64 arrives as a JSON string when the server quotes 64-bit integers.
128
+ granularity: Number(row.granularity),
105
129
  ...parsed,
106
130
  };
107
131
  }
@@ -144,6 +168,7 @@ export function buildIntrospectedTables(tables, columns, indexes) {
144
168
  settings: parseSettingsFromCreateTableQuery(row.create_table_query),
145
169
  indexes: indexRows.map(normalizeIndexFromSystemRow),
146
170
  projections: parseProjectionsFromCreateTableQuery(row.create_table_query),
171
+ constraints: parseConstraintsFromCreateTableQuery(row.create_table_query),
147
172
  ttl: parseTTLFromCreateTableQuery(row.create_table_query),
148
173
  };
149
174
  })
@@ -208,9 +233,12 @@ function isAuthError(error) {
208
233
  export function formatConnectionError(error, url, username) {
209
234
  if (!(error instanceof Error))
210
235
  return undefined;
236
+ const shownUrl = urlWithoutCredentials(url);
211
237
  if (isAuthError(error)) {
212
- const who = username ? `user "${username}"` : 'the configured user';
213
- return `Authentication failed for ${who} at ${url}. Check CLICKHOUSE_USER / CLICKHOUSE_PASSWORD.`;
238
+ // A user in the URL is the one the client signs in as (see credentialOptions).
239
+ const user = urlUsername(url) || username;
240
+ const who = user ? `user "${user}"` : 'the configured user';
241
+ return `Authentication failed for ${who} at ${shownUrl}. Check CLICKHOUSE_USER / CLICKHOUSE_PASSWORD.`;
214
242
  }
215
243
  const label = networkLabelFromError(error);
216
244
  if (label) {
@@ -219,10 +247,27 @@ export function formatConnectionError(error, url, username) {
219
247
  const hint = isLocalhostDefault && envUnset
220
248
  ? '\n Hint: CLICKHOUSE_URL is not set — chkit fell back to the default localhost endpoint. Set CLICKHOUSE_URL to point at your ClickHouse instance.'
221
249
  : '';
222
- return `Could not connect to ClickHouse at ${url} (${label})${hint}`;
250
+ return `Could not connect to ClickHouse at ${shownUrl} (${label})${hint}`;
223
251
  }
224
252
  return undefined;
225
253
  }
254
+ /** The URL without its `user:password@` part, for messages and logs. */
255
+ export function urlWithoutCredentials(url) {
256
+ return url.replace(/^([a-z][a-z\d+.-]*:\/\/)[^/?#]*@/i, '$1');
257
+ }
258
+ /** The user set in the URL, decoded as `@clickhouse/client` does, or '' when it sets none. */
259
+ function urlUsername(url) {
260
+ if (!URL.canParse(url))
261
+ return '';
262
+ const username = new URL(url).username;
263
+ try {
264
+ return decodeURIComponent(username);
265
+ }
266
+ catch {
267
+ // Malformed escapes: keep them as written, as Python's unquote does.
268
+ return username;
269
+ }
270
+ }
226
271
  export function wrapConnectionError(error, url, username) {
227
272
  const message = formatConnectionError(error, url, username);
228
273
  if (message !== undefined)
@@ -283,7 +328,10 @@ export function assertStreamedQuerySucceeded(input) {
283
328
  sql: input.sql,
284
329
  });
285
330
  }
286
- export { waitForColumn, waitForDDLPropagation, waitForDictionary, waitForTable, waitForTableAbsent, waitForView, } from './ddl-propagation.js';
331
+ export { waitForColumn, waitForColumnAbsent, parseExchangeTables, waitForDDLPropagation, waitForDictionary, waitForExchange, waitForTable, waitForTableAbsent, waitForView, } from './ddl-propagation.js';
332
+ export { allReplicas, resolveReplicaFanout } from './replicas.js';
333
+ export { assertNoFireAndForgetAsyncInserts } from './async-insert-guard.js';
334
+ export { waitForInsertBarrier } from './insert-barrier.js';
287
335
  function parseSummaryFromHeaders(headers) {
288
336
  const raw = headers['x-clickhouse-summary'];
289
337
  if (!raw || typeof raw !== 'string')
@@ -308,11 +356,36 @@ function logProfiling(logger, query, queryId, summary) {
308
356
  resultBytes: Number(summary?.result_bytes ?? 0),
309
357
  });
310
358
  }
359
+ // Sent with every request. wait_end_of_query is an HTTP parameter, not a
360
+ // setting, so a readonly = 1 user, who cannot change any setting, can send it
361
+ // too (#402).
311
362
  const DEFAULT_CLICKHOUSE_SETTINGS = {
312
363
  wait_end_of_query: 1,
313
- async_insert: 0,
364
+ };
365
+ // Progress headers keep a long query's connection alive through proxies with
366
+ // an idle timeout (often 60 s), since wait_end_of_query holds back the body.
367
+ // Node and Bun reject a response once its headers pass ~16 KB, which the
368
+ // default 100 ms interval reaches after about 10 s, so send one every 30 s.
369
+ const PROGRESS_SETTINGS = {
314
370
  send_progress_in_http_headers: 1,
371
+ http_headers_progress_interval_ms: '30000',
315
372
  };
373
+ // Sent with writes only (command and insert): no asynchronous INSERTs, and
374
+ // progress headers that keep a long migration's connection alive.
375
+ const WRITE_SETTINGS = {
376
+ async_insert: 0,
377
+ ...PROGRESS_SETTINGS,
378
+ };
379
+ // A readonly = 1 user cannot change any setting: ClickHouse rejects a query
380
+ // that carries one with READONLY (164). readonly = 2 allows them.
381
+ async function canChangeSettings(client) {
382
+ const result = await client.query({
383
+ query: "SELECT getSetting('readonly') AS readonly",
384
+ format: 'JSONEachRow',
385
+ });
386
+ const row = JSON.parse((await result.text()).trim());
387
+ return Number(row.readonly) !== 1;
388
+ }
316
389
  // chkit emits its own clean, one-line connection errors (see wrapConnectionError).
317
390
  // The built-in @clickhouse/client DefaultLogger defaults to WARN since v1.18, which
318
391
  // logs the full raw server remediation blurb to stderr on any connection ERROR and
@@ -325,11 +398,20 @@ const SILENT_CLIENT_LOG = { level: ClickHouseLogLevel.OFF };
325
398
  // completes, so any finite timeout eventually trips. 0 disables the idle
326
399
  // timeout entirely — TCP keepalive still detects dead connections.
327
400
  const NO_REQUEST_TIMEOUT = 0;
401
+ // @clickhouse/client takes credentials in the URL over username/password and logs
402
+ // a warning for each override, whatever the log level. Leaving out what the URL
403
+ // sets keeps the same credentials without the warnings.
404
+ function credentialOptions(config) {
405
+ const url = URL.canParse(config.url) ? new URL(config.url) : undefined;
406
+ return {
407
+ ...(url?.username ? {} : { username: config.username }),
408
+ ...(url?.password ? {} : { password: config.password }),
409
+ };
410
+ }
328
411
  export function createStatelessClickHouseClient(config, clickhouseSettings = DEFAULT_CLICKHOUSE_SETTINGS, options = {}) {
329
412
  return createClient({
330
413
  url: config.url,
331
- username: config.username,
332
- password: config.password,
414
+ ...credentialOptions(config),
333
415
  database: config.database,
334
416
  application: CHKIT_APPLICATION_ID,
335
417
  request_timeout: NO_REQUEST_TIMEOUT,
@@ -347,8 +429,7 @@ export function createStatelessClickHouseClient(config, clickhouseSettings = DEF
347
429
  export function createSessionClickHouseClient(config, clickhouseSettings = DEFAULT_CLICKHOUSE_SETTINGS, sessionId = crypto.randomUUID(), options = {}) {
348
430
  return createClient({
349
431
  url: config.url,
350
- username: config.username,
351
- password: config.password,
432
+ ...credentialOptions(config),
352
433
  database: config.database,
353
434
  session_id: sessionId,
354
435
  application: CHKIT_APPLICATION_ID,
@@ -364,12 +445,27 @@ export function createExecutorWithClient(config, client, options = {}) {
364
445
  wait_end_of_query: 0,
365
446
  });
366
447
  let compressedClient;
448
+ // Reads add the progress settings unless the user cannot change settings,
449
+ // looked up once per executor. A failed lookup is not cached: the database
450
+ // may not exist yet (#370).
451
+ let settingsChangeable;
452
+ function settingsChangeableOnce() {
453
+ settingsChangeable ??= canChangeSettings(client).catch((error) => {
454
+ settingsChangeable = undefined;
455
+ throw error;
456
+ });
457
+ return settingsChangeable;
458
+ }
459
+ async function readSettings(settings) {
460
+ return (await settingsChangeableOnce()) ? { ...PROGRESS_SETTINGS, ...settings } : settings;
461
+ }
367
462
  return {
368
- async command(sql) {
463
+ async command(sql, settings) {
369
464
  try {
370
465
  const result = await client.command({
371
466
  query: sql,
372
467
  http_headers: { 'X-DDL': '1' },
468
+ clickhouse_settings: { ...WRITE_SETTINGS, ...settings },
373
469
  });
374
470
  assertStreamedQuerySucceeded({
375
471
  response_headers: result.response_headers,
@@ -382,8 +478,7 @@ export function createExecutorWithClient(config, client, options = {}) {
382
478
  if (isUnknownDatabaseError(error)) {
383
479
  const fallback = createClient({
384
480
  url: config.url,
385
- username: config.username,
386
- password: config.password,
481
+ ...credentialOptions(config),
387
482
  application: CHKIT_APPLICATION_ID,
388
483
  request_timeout: NO_REQUEST_TIMEOUT,
389
484
  clickhouse_settings: { wait_end_of_query: 1, async_insert: 0 },
@@ -393,6 +488,7 @@ export function createExecutorWithClient(config, client, options = {}) {
393
488
  const fallbackResult = await fallback.command({
394
489
  query: sql,
395
490
  http_headers: { 'X-DDL': '1' },
491
+ clickhouse_settings: { ...WRITE_SETTINGS, ...settings },
396
492
  });
397
493
  assertStreamedQuerySucceeded({
398
494
  response_headers: fallbackResult.response_headers,
@@ -410,11 +506,12 @@ export function createExecutorWithClient(config, client, options = {}) {
410
506
  },
411
507
  async query(sql, settings) {
412
508
  try {
509
+ const clickhouseSettings = await readSettings(settings);
413
510
  const result = await client.query({
414
511
  query: sql,
415
512
  format: 'JSONEachRow',
416
513
  http_headers: { 'X-DDL': '1' },
417
- ...(settings ? { clickhouse_settings: settings } : {}),
514
+ ...(clickhouseSettings ? { clickhouse_settings: clickhouseSettings } : {}),
418
515
  });
419
516
  // Check headers before decoding the body. With
420
517
  // send_progress_in_http_headers=1, ClickHouse can return HTTP 200
@@ -426,7 +523,10 @@ export function createExecutorWithClient(config, client, options = {}) {
426
523
  query_id: result.query_id,
427
524
  sql,
428
525
  });
429
- const rows = await result.json();
526
+ // The client's JSONEachRow decoder drops the final row when the
527
+ // response ends without a newline. Decode every nonempty line,
528
+ // without rounding 64-bit integers and Decimals (#415).
529
+ const rows = parseJsonEachRow(await result.text());
430
530
  logProfiling(profiler, sql, result.query_id, parseSummaryFromHeaders(result.response_headers));
431
531
  return rows;
432
532
  }
@@ -436,18 +536,19 @@ export function createExecutorWithClient(config, client, options = {}) {
436
536
  },
437
537
  async queryJson(sql, settings) {
438
538
  try {
539
+ const clickhouseSettings = await readSettings(settings);
439
540
  const result = await client.query({
440
541
  query: sql,
441
542
  format: 'JSON',
442
543
  http_headers: { 'X-DDL': '1' },
443
- ...(settings ? { clickhouse_settings: settings } : {}),
544
+ ...(clickhouseSettings ? { clickhouse_settings: clickhouseSettings } : {}),
444
545
  });
445
546
  assertStreamedQuerySucceeded({
446
547
  response_headers: result.response_headers,
447
548
  query_id: result.query_id,
448
549
  sql,
449
550
  });
450
- const payload = (await result.json());
551
+ const payload = parseJsonResult(await result.text());
451
552
  logProfiling(profiler, sql, result.query_id, parseSummaryFromHeaders(result.response_headers));
452
553
  return {
453
554
  ...payload,
@@ -471,10 +572,10 @@ export function createExecutorWithClient(config, client, options = {}) {
471
572
  }
472
573
  const result = await insertClient.insert({
473
574
  table: params.table,
474
- values: params.values,
575
+ values: params.stream ? Readable.from(params.values) : params.values,
475
576
  format: 'JSONEachRow',
476
577
  ...(isNonEmpty(params.columns) ? { columns: params.columns } : {}),
477
- ...(params.settings ? { clickhouse_settings: params.settings } : {}),
578
+ clickhouse_settings: { ...WRITE_SETTINGS, ...params.settings },
478
579
  });
479
580
  assertStreamedQuerySucceeded({
480
581
  response_headers: result.response_headers,
@@ -487,10 +588,17 @@ export function createExecutorWithClient(config, client, options = {}) {
487
588
  wrapConnectionError(error, config.url, config.username);
488
589
  }
489
590
  },
490
- async submit(sql, queryId) {
591
+ async submit(sql, queryId, settings) {
491
592
  const id = queryId ?? crypto.randomUUID();
593
+ // A query_id in the settings would put a second query_id on the URL, and
594
+ // the server could run the query under an id queryStatus() never sees (#353).
595
+ const { query_id: _ignored, ...clickhouseSettings } = settings ?? {};
492
596
  try {
493
- await fireAndForgetClient.command({ query: sql, query_id: id });
597
+ await fireAndForgetClient.command({
598
+ query: sql,
599
+ query_id: id,
600
+ ...(settings ? { clickhouse_settings: clickhouseSettings } : {}),
601
+ });
494
602
  }
495
603
  catch (error) {
496
604
  wrapConnectionError(error, config.url, config.username);
@@ -506,15 +614,24 @@ export function createExecutorWithClient(config, client, options = {}) {
506
614
  }
507
615
  return `system.${table}`;
508
616
  },
617
+ canChangeSettings: settingsChangeableOnce,
509
618
  async queryStatus(queryId, options) {
619
+ // Without clickhouse.cluster, a multi-replica ObsessionDB service still
620
+ // runs the query on one replica only (#246).
621
+ const fanout = await resolveReplicaFanout(this, config.cluster);
622
+ const from = (table) => fanout ? allReplicas(fanout, `system.${table}`) : observableSystemTable(this, table);
623
+ const skipUnavailable = options?.everyReplica ? 0 : 1;
510
624
  try {
511
- const processesFrom = observableSystemTable(this, 'processes');
625
+ const processesFrom = from('processes');
512
626
  const running = await client.query({
513
- query: `SELECT read_rows, read_bytes, written_rows, written_bytes, elapsed FROM ${processesFrom} WHERE user = currentUser() AND query_id = {qid:String} SETTINGS skip_unavailable_shards = 1`,
627
+ query: `SELECT read_rows, read_bytes, written_rows, written_bytes, elapsed FROM ${processesFrom} WHERE user = currentUser() AND query_id = {qid:String} SETTINGS skip_unavailable_shards = ${skipUnavailable}`,
514
628
  query_params: { qid: queryId },
515
629
  format: 'JSONEachRow',
516
630
  });
517
- const runningRows = await running.json();
631
+ // Decoded as executor.query() does (#436). A UInt64 count arrives as a
632
+ // number, or as a string of its digits beyond 2^53 or when the
633
+ // profile sets output_format_json_quote_64bit_integers.
634
+ const runningRows = parseJsonEachRow(await running.text());
518
635
  const [proc] = runningRows;
519
636
  if (proc) {
520
637
  return {
@@ -527,7 +644,7 @@ export function createExecutorWithClient(config, client, options = {}) {
527
644
  };
528
645
  }
529
646
  const afterTime = options?.afterTime ?? '1970-01-01T00:00:00Z';
530
- const queryLogFrom = observableSystemTable(this, 'query_log');
647
+ const queryLogFrom = from('query_log');
531
648
  const log = await client.query({
532
649
  query: `SELECT type, written_rows, written_bytes, query_duration_ms, exception
533
650
  FROM ${queryLogFrom}
@@ -538,11 +655,11 @@ WHERE user = currentUser()
538
655
  AND query_start_time >= parseDateTimeBestEffort({after:String})
539
656
  ORDER BY event_time DESC
540
657
  LIMIT 1
541
- SETTINGS skip_unavailable_shards = 1`,
658
+ SETTINGS skip_unavailable_shards = ${skipUnavailable}`,
542
659
  query_params: { qid: queryId, after: afterTime },
543
660
  format: 'JSONEachRow',
544
661
  });
545
- const logRows = await log.json();
662
+ const logRows = parseJsonEachRow(await log.text());
546
663
  if (logRows.length === 0) {
547
664
  return { status: 'unknown' };
548
665
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAGN,2BAA2B,EAC3B,oBAAoB,EAEpB,UAAU,EAGV,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,GACrB,MAAM,aAAa,CAAA;AACpB,OAAO,EAA2B,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACjE,OAAO,EACN,oCAAoC,EACpC,+BAA+B,EAC/B,gCAAgC,EAChC,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,iCAAiC,EACjC,4BAA4B,EAC5B,kCAAkC,GAClC,MAAM,0BAA0B,CAAA;AAEjC,MAAM,GAAG,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,iBAAiB,CAE3D,CAAA;AACD,MAAM,oBAAoB,GAAG,SAAS,GAAG,CAAC,OAAO,EAAE,CAAA;AAoGnD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACpC,QAAuD,EACvD,KAA4B;IAE5B,OAAO,QAAQ,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,IAAI,UAAU,KAAK,EAAE,CAAA;AAChE,CAAC;AA8DD,OAAO,EACN,oCAAoC,EACpC,+BAA+B,EAC/B,gCAAgC,EAChC,oCAAoC,EACpC,mCAAmC,EACnC,oCAAoC,EACpC,iCAAiC,EACjC,4BAA4B,EAC5B,kCAAkC,GAClC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAyB,MAAM,mBAAmB,CAAA;AACvG,OAAO,EACN,qCAAqC,EACrC,kDAAkD,EAClD,kDAAkD,EAClD,6CAA6C,EAC7C,gDAAgD,EAChD,oCAAoC,EACpC,sCAAsC,EACtC,oCAAoC,GAEpC,MAAM,+BAA+B,CAAA;AAEtC,MAAM,UAAU,yBAAyB,CACxC,MAAc;IAEd,IAAI,MAAM,KAAK,MAAM;QAAE,OAAO,MAAM,CAAA;IACpC,IAAI,MAAM,KAAK,kBAAkB;QAAE,OAAO,mBAAmB,CAAA;IAC7D,IAAI,MAAM,KAAK,YAAY;QAAE,OAAO,YAAY,CAAA;IAChD,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,OAAO,OAAO,CAAA;AACf,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC3C,GAAoB;IAEpB,MAAM,aAAa,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC1D,MAAM,IAAI,GAAG,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAA;IAC7D,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,IAAI,YAAqD,CAAA;IACzD,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAA;IACpC,IAAI,WAAW,IAAI,CAAC,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,oCAAoC,WAAW,EAAE,CAAC,CAAA;IACnE,CAAC;IACD,IAAI,GAAG,CAAC,kBAAkB,IAAI,WAAW,EAAE,CAAC;QAC3C,2EAA2E;QAC3E,YAAY,GAAG,GAAG,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAA;IAC7C,CAAC;IACD,iEAAiE;IACjE,IAAI,WAAW,KAAK,WAAW,IAAI,YAAY,KAAK,SAAS,IAAI,2BAA2B,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACpH,YAAY,GAAG,SAAS,CAAA;IACzB,CAAC;IACD,MAAM,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;IACpD,OAAO;QACN,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI;QACJ,QAAQ,EAAE,QAAQ,IAAI,SAAS;QAC/B,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,WAAW,IAAI,WAAW,KAAK,SAAS;YACpD,CAAC,CAAC,WAA8C;YAChD,CAAC,CAAC,SAAS;QACZ,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,SAAS;QACzC,KAAK,EAAE,UAAU;KACjB,CAAA;AACF,CAAC;AAQD;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,KAAa;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAA;IAC7C,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAA;IAC3C,MAAM,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACvB,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,EAAW,CAAA;IAC1E,MAAM,OAAO,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IACzD,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAA;IAEjF,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,MAAM;YACV,IAAI,CAAC;gBACJ,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,oBAAoB,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAA;YAC7D,CAAC;YAAC,MAAM,CAAC;gBACR,OAAO,GAAG,CAAA;YACX,CAAC;QACF,KAAK,mBAAmB,CAAC,CAAC,CAAC;YAC1B,MAAM,MAAM,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAA;YAC1E,OAAO,MAAM,IAAI,GAAG,CAAA;QACrB,CAAC;QACD,KAAK,QAAQ;YACZ,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QACrD,KAAK,KAAK;YACT,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QACpE,KAAK,cAAc;YAClB,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,CAAA;YACvD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,iBAAiB,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAA;QAClF,KAAK,YAAY;YAChB,OAAO,OAAO,CAAC,CAAC,CAAC;gBAChB,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE;gBACjH,CAAC,CAAC,GAAG,CAAA;QACP,KAAK,YAAY;YAChB,OAAO,OAAO,CAAC,CAAC,CAAC;gBAChB,CAAC,CAAC;oBACA,IAAI,EAAE,YAAY;oBAClB,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC1B,aAAa,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC9B,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC3B;gBACF,CAAC,CAAC,GAAG,CAAA;QACP;YACC,OAAO,GAAG,CAAA;IACZ,CAAC;AACF,CAAC;AAED,0EAA0E;AAC1E,SAAS,SAAS,CAAC,IAAY;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IACxD,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IACnF,OAAO,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;AACzB,CAAC;AAED,MAAM,UAAU,2BAA2B,CAC1C,GAA2B;IAE3B,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IACvC,OAAO;QACN,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;QACrG,0EAA0E;QAC1E,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QACpC,GAAG,MAAM;KACT,CAAA;AACF,CAAC;AAED,MAAM,UAAU,uBAAuB,CACtC,MAAwB,EACxB,OAA0B,EAC1B,OAAiC;IAEjC,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAC9B,CAAC,GAAG,EAAE,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,OAAO,CAC1D,CAAA;IACD,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAErC,MAAM,cAAc,GAAG,IAAI,GAAG,EAA6B,CAAA;IAC3D,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAA;QAC1C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;YACnB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAoC,CAAA;IAClE,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAA;QAC1C,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpC,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;;YACnB,cAAc,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,SAAS;SACd,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;QACzC,MAAM,UAAU,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CACtD,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CACjC,CAAA;QACD,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAA;QAC/C,OAAO;YACN,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,IAAI,EAAE,GAAG,CAAC,IAAI;YACb,MAAM,EAAE,+BAA+B,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,MAAM;YAC9E,UAAU,EAAE,mCAAmC,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,SAAS,CAAC;YACzG,OAAO,EAAE,gCAAgC,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACjE,SAAS,EAAE,kCAAkC,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACrE,WAAW,EAAE,oCAAoC,CAChD,GAAG,CAAC,kBAAkB,CACtB;YACD,OAAO,EAAE,UAAU,CAAC,GAAG,CAAC,4BAA4B,CAAC;YACrD,QAAQ,EAAE,iCAAiC,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACnE,OAAO,EAAE,SAAS,CAAC,GAAG,CAAC,2BAA2B,CAAC;YACnD,WAAW,EAAE,oCAAoC,CAChD,GAAG,CAAC,kBAAkB,CACtB;YACD,WAAW,EAAE,oCAAoC,CAAC,GAAG,CAAC,kBAAkB,CAAC;YACzE,GAAG,EAAE,4BAA4B,CAAC,GAAG,CAAC,kBAAkB,CAAC;SACzD,CAAA;IACF,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACd,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;QACpD,IAAI,OAAO,KAAK,CAAC;YAAE,OAAO,OAAO,CAAA;QACjC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;IACpC,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,oBAAoB,GAA2B;IACpD,YAAY,EAAE,oBAAoB;IAClC,SAAS,EAAE,gBAAgB;IAC3B,SAAS,EAAE,sBAAsB;IACjC,UAAU,EAAE,kBAAkB;IAC9B,YAAY,EAAE,kBAAkB;CAChC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,wBAAwB,GAA4B;IACzD,CAAC,mDAAmD,EAAE,gBAAgB,CAAC;IACvE,CAAC,eAAe,EAAE,oBAAoB,CAAC;IACvC,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAChD,CAAC,aAAa,EAAE,kBAAkB,CAAC;IACnC,CAAC,eAAe,EAAE,kBAAkB,CAAC;CACrC,CAAA;AAED,SAAS,qBAAqB,CAAC,KAAY;IAC1C,MAAM,IAAI,GACT,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,MAAM,CAAE,KAA+B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC3E,IAAI,IAAI,IAAI,oBAAoB,CAAC,IAAI,CAAC;QAAE,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAA;IACzE,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,wBAAwB,EAAE,CAAC;QACzD,IAAI,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAAE,OAAO,KAAK,CAAA;IAC9C,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAAC,KAAY;IAChC,MAAM,IAAI,GAAG,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC7D,MAAM,IAAI,GAAG,MAAM,CAAE,KAA4B,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;IAC7D,IAAI,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK;QAAE,OAAO,IAAI,CAAA;IACjD,IAAI,IAAI,KAAK,mBAAmB,IAAI,IAAI,KAAK,uBAAuB;QAAE,OAAO,IAAI,CAAA;IACjF,OAAO,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACpC,KAAc,EACd,GAAW,EACX,QAAiB;IAEjB,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,SAAS,CAAA;IAC/C,MAAM,QAAQ,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAA;IAC3C,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,+EAA+E;QAC/E,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAA;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAC,qBAAqB,CAAA;QAC3D,OAAO,6BAA6B,GAAG,OAAO,QAAQ,gDAAgD,CAAA;IACvG,CAAC;IACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,KAAK,EAAE,CAAC;QACX,MAAM,kBAAkB,GACvB,+CAA+C,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1D,MAAM,QAAQ,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;QAC5C,MAAM,IAAI,GACT,kBAAkB,IAAI,QAAQ;YAC7B,CAAC,CAAC,mJAAmJ;YACrJ,CAAC,CAAC,EAAE,CAAA;QACN,OAAO,sCAAsC,QAAQ,KAAK,KAAK,IAAI,IAAI,EAAE,CAAA;IAC1E,CAAC;IACD,OAAO,SAAS,CAAA;AACjB,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,GAAW;IAChD,OAAO,GAAG,CAAC,OAAO,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAA;AAC9D,CAAC;AAED,8FAA8F;AAC9F,SAAS,WAAW,CAAC,GAAW;IAC/B,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IACjC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAA;IACtC,IAAI,CAAC;QACJ,OAAO,kBAAkB,CAAC,QAAQ,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACR,qEAAqE;QACrE,OAAO,QAAQ,CAAA;IAChB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAc,EAAE,GAAW,EAAE,QAAiB;IACjF,MAAM,OAAO,GAAG,qBAAqB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;IAC3D,IAAI,OAAO,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAA;IACnD,MAAM,KAAK,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACpD,IAAI,CAAC,CAAC,KAAK,YAAY,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAA;AACnC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,OAAO,2BAA4B,SAAQ,KAAK;IAC5C,IAAI,CAAQ;IACZ,YAAY,CAAoB;IAChC,QAAQ,CAAoB;IACrC,YAAY,KAKX;QACA,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,cAAc,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;QACpE,MAAM,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;QACjF,MAAM,UAAU,GAAG,KAAK,CAAC,GAAG;YAC3B,CAAC,CAAC,YAAY,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAClF,CAAC,CAAC,EAAE,CAAA;QACL,KAAK,CACJ,+CAA+C,KAAK,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM,IAAI,UAAU,EAAE,CAC5F,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAA;QACzC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;QACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAA;QACtC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;IAC/B,CAAC;CACD;AAED;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,KAI5C;IACA,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAA;IACtC,IAAI,CAAC,OAAO;QAAE,OAAM;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,6BAA6B,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAC1D,IAAI,CAAC,IAAI,IAAI,IAAI,KAAK,GAAG;QAAE,OAAM;IACjC,MAAM,MAAM,GAAG,OAAO,CAAC,4BAA4B,CAAC,CAAA;IACpD,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACtD,MAAM,IAAI,2BAA2B,CAAC;QACrC,IAAI;QACJ,YAAY,EAAE,GAAG;QACjB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,GAAG,EAAE,KAAK,CAAC,GAAG;KACd,CAAC,CAAA;AACH,CAAC;AAED,OAAO,EAEN,aAAa,EACb,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,iBAAiB,EACjB,eAAe,EACf,YAAY,EACZ,kBAAkB,EAClB,WAAW,GACX,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,WAAW,EAAE,oBAAoB,EAAsB,MAAM,eAAe,CAAA;AACrF,OAAO,EAAqD,iCAAiC,EAAE,MAAM,yBAAyB,CAAA;AAC9H,OAAO,EAA6B,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAErF,SAAS,uBAAuB,CAC/B,OAAsD;IAYtD,MAAM,GAAG,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAA;IAC3C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IACrD,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,SAAS,CAAA;IACjB,CAAC;AACF,CAAC;AAED,SAAS,YAAY,CACpB,MAAoC,EACpC,KAAa,EACb,OAAe,EACf,OAQC;IAED,MAAM,CAAC,KAAK,CAAC,0BAA0B,EAAE;QACxC,KAAK;QACL,OAAO;QACP,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,SAAS,IAAI,CAAC,CAAC;QACzC,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC;QAC3C,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC;QAC/C,YAAY,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,IAAI,CAAC,CAAC;QACjD,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,UAAU,IAAI,CAAC,CAAC,GAAG,SAAS;QACvD,UAAU,EAAE,MAAM,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;QAC7C,WAAW,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC;KAC/C,CAAC,CAAA;AACH,CAAC;AAED,yEAAyE;AACzE,8EAA8E;AAC9E,cAAc;AACd,MAAM,2BAA2B,GAAuB;IACvD,iBAAiB,EAAE,CAAC;CACpB,CAAA;AAED,6EAA6E;AAC7E,6EAA6E;AAC7E,yEAAyE;AACzE,4EAA4E;AAC5E,MAAM,iBAAiB,GAAuB;IAC7C,6BAA6B,EAAE,CAAC;IAChC,iCAAiC,EAAE,OAAO;CAC1C,CAAA;AAED,2EAA2E;AAC3E,kEAAkE;AAClE,MAAM,cAAc,GAAuB;IAC1C,YAAY,EAAE,CAAC;IACf,GAAG,iBAAiB;CACpB,CAAA;AAED,4EAA4E;AAC5E,kEAAkE;AAClE,KAAK,UAAU,iBAAiB,CAAC,MAAwB;IACxD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QACjC,KAAK,EAAE,2CAA2C;QAClD,MAAM,EAAE,aAAa;KACrB,CAAC,CAAA;IACF,MAAM,GAAG,GAAkC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IACnF,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,mFAAmF;AACnF,oFAAoF;AACpF,mFAAmF;AACnF,qFAAqF;AACrF,wFAAwF;AACxF,MAAM,iBAAiB,GAAG,EAAE,KAAK,EAAE,kBAAkB,CAAC,GAAG,EAAE,CAAA;AAE3D,wEAAwE;AACxE,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,mEAAmE;AACnE,MAAM,kBAAkB,GAAG,CAAC,CAAA;AAE5B,kFAAkF;AAClF,gFAAgF;AAChF,wDAAwD;AACxD,SAAS,iBAAiB,CAAC,MAAwB;IAClD,MAAM,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACtE,OAAO;QACN,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACvD,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;KACvD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAC9C,MAAwB,EACxB,qBAAyC,2BAA2B,EACpE,UAAmC,EAAE;IAErC,OAAO,YAAY,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,WAAW,EAAE,oBAAoB;QACjC,eAAe,EAAE,kBAAkB;QACnC,mBAAmB,EAAE,kBAAkB;QACvC,GAAG,EAAE,iBAAiB;QACtB,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,CAAA;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAC5C,MAAwB,EACxB,qBAAyC,2BAA2B,EACpE,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,EAC/B,UAAmC,EAAE;IAErC,OAAO,YAAY,CAAC;QACnB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,GAAG,iBAAiB,CAAC,MAAM,CAAC;QAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,SAAS;QACrB,WAAW,EAAE,oBAAoB;QACjC,eAAe,EAAE,kBAAkB;QACnC,mBAAmB,EAAE,kBAAkB;QACvC,GAAG,EAAE,iBAAiB;QACtB,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,MAAwB,EACxB,MAAwB,EACxB,UAA+D,EAAE;IAEjE,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,CAAA;IAElD,MAAM,mBAAmB,GAAG,+BAA+B,CAAC,MAAM,EAAE;QACnE,iBAAiB,EAAE,CAAC;KACpB,CAAC,CAAA;IACF,IAAI,gBAA8C,CAAA;IAElD,0EAA0E;IAC1E,2EAA2E;IAC3E,4BAA4B;IAC5B,IAAI,kBAAgD,CAAA;IACpD,SAAS,sBAAsB;QAC9B,kBAAkB,KAAK,iBAAiB,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACzE,kBAAkB,GAAG,SAAS,CAAA;YAC9B,MAAM,KAAK,CAAA;QACZ,CAAC,CAAC,CAAA;QACF,OAAO,kBAAkB,CAAA;IAC1B,CAAC;IACD,KAAK,UAAU,YAAY,CAC1B,QAA6B;QAE7B,OAAO,CAAC,MAAM,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,iBAAiB,EAAE,GAAG,QAAQ,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;IAC3F,CAAC;IAED,OAAO;QACN,KAAK,CAAC,OAAO,CAAC,GAAW,EAAE,QAA6B;YACvD,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC;oBACnC,KAAK,EAAE,GAAG;oBACV,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;oBAC9B,mBAAmB,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,EAAE;iBACvD,CAAC,CAAA;gBACF,4BAA4B,CAAC;oBAC5B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG;iBACH,CAAC,CAAA;gBACF,YAAY,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YAC7D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,IAAI,sBAAsB,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAM,QAAQ,GAAG,YAAY,CAAC;wBAC7B,GAAG,EAAE,MAAM,CAAC,GAAG;wBACf,GAAG,iBAAiB,CAAC,MAAM,CAAC;wBAC5B,WAAW,EAAE,oBAAoB;wBACjC,eAAe,EAAE,kBAAkB;wBACnC,mBAAmB,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE;wBAC9D,GAAG,EAAE,iBAAiB;qBACtB,CAAC,CAAA;oBACF,IAAI,CAAC;wBACJ,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;4BAC7C,KAAK,EAAE,GAAG;4BACV,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;4BAC9B,mBAAmB,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,QAAQ,EAAE;yBACvD,CAAC,CAAA;wBACF,4BAA4B,CAAC;4BAC5B,gBAAgB,EAAE,cAAc,CAAC,gBAAgB;4BACjD,QAAQ,EAAE,cAAc,CAAC,QAAQ;4BACjC,GAAG;yBACH,CAAC,CAAA;oBACH,CAAC;4BAAS,CAAC;wBACV,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;oBACvB,CAAC;oBACD,OAAM;gBACP,CAAC;gBACD,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxD,CAAC;QACF,CAAC;QACD,KAAK,CAAC,KAAK,CAAI,GAAW,EAAE,QAA6B;YACxD,IAAI,CAAC;gBACJ,MAAM,kBAAkB,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;gBACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBACjC,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,aAAa;oBACrB,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;oBAC9B,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1E,CAAC,CAAA;gBACF,+CAA+C;gBAC/C,kEAAkE;gBAClE,8DAA8D;gBAC9D,0DAA0D;gBAC1D,yBAAyB;gBACzB,4BAA4B,CAAC;oBAC5B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG;iBACH,CAAC,CAAA;gBACF,gEAAgE;gBAChE,+DAA+D;gBAC/D,wDAAwD;gBACxD,MAAM,IAAI,GAAG,gBAAgB,CAAI,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;gBACrD,YAAY,CACX,QAAQ,EACR,GAAG,EACH,MAAM,CAAC,QAAQ,EACf,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAChD,CAAA;gBACD,OAAO,IAAI,CAAA;YACZ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxD,CAAC;QACF,CAAC;QACD,KAAK,CAAC,SAAS,CACd,GAAW,EACX,QAA6B;YAE7B,IAAI,CAAC;gBACJ,MAAM,kBAAkB,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAA;gBACvD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBACjC,KAAK,EAAE,GAAG;oBACV,MAAM,EAAE,MAAM;oBACd,YAAY,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;oBAC9B,GAAG,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAC1E,CAAC,CAAA;gBACF,4BAA4B,CAAC;oBAC5B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG;iBACH,CAAC,CAAA;gBACF,MAAM,OAAO,GAAG,eAAe,CAAI,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;gBACvD,YAAY,CACX,QAAQ,EACR,GAAG,EACH,MAAM,CAAC,QAAQ,EACf,uBAAuB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAChD,CAAA;gBACD,OAAO;oBACN,GAAG,OAAO;oBACV,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBACzB,CAAA;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxD,CAAC;QACF,CAAC;QACD,KAAK,CAAC,MAAM,CACX,MAAiC;YAEjC,IAAI,CAAC;gBACJ,IAAI,YAAY,GAAG,MAAM,CAAA;gBACzB,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;oBAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;wBACvB,gBAAgB;4BACf,OAAO,CAAC,sBAAsB,EAAE,EAAE;gCAClC,+BAA+B,CAC9B,MAAM,EACN,2BAA2B,EAC3B,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAClC,CAAA;oBACH,CAAC;oBACD,YAAY,GAAG,gBAAgB,CAAA;gBAChC,CAAC;gBACD,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC;oBACxC,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM;oBACpE,MAAM,EAAE,aAAa;oBACrB,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAClE,mBAAmB,EAAE,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;iBAC9D,CAAC,CAAA;gBACF,4BAA4B,CAAC;oBAC5B,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;oBACzC,QAAQ,EAAE,MAAM,CAAC,QAAQ;oBACzB,GAAG,EAAE,eAAe,MAAM,CAAC,KAAK,EAAE;iBAClC,CAAC,CAAA;gBACF,YAAY,CACX,QAAQ,EACR,eAAe,MAAM,CAAC,KAAK,EAAE,EAC7B,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,OAAO,CACd,CAAA;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxD,CAAC;QACF,CAAC;QACD,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,OAAgB,EAAE,QAA6B;YACxE,MAAM,EAAE,GAAG,OAAO,IAAI,MAAM,CAAC,UAAU,EAAE,CAAA;YACzC,yEAAyE;YACzE,8EAA8E;YAC9E,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,kBAAkB,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAA;YACpE,IAAI,CAAC;gBACJ,MAAM,mBAAmB,CAAC,OAAO,CAAC;oBACjC,KAAK,EAAE,GAAG;oBACV,QAAQ,EAAE,EAAE;oBACZ,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAChE,CAAC,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxD,CAAC;YACD,OAAO,EAAE,CAAA;QACV,CAAC;QACD,iBAAiB,CAAC,KAA4B;YAC7C,oFAAoF;YACpF,gFAAgF;YAChF,0EAA0E;YAC1E,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,OAAO,uBAAuB,MAAM,CAAC,OAAO,aAAa,KAAK,GAAG,CAAA;YAClE,CAAC;YACD,OAAO,UAAU,KAAK,EAAE,CAAA;QACzB,CAAC;QACD,iBAAiB,EAAE,sBAAsB;QACzC,KAAK,CAAC,WAAW,CAAC,OAAe,EAAE,OAA4B;YAC9D,wEAAwE;YACxE,6CAA6C;YAC7C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;YAC/D,MAAM,IAAI,GAAG,CAAC,KAA4B,EAAE,EAAE,CAC7C,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;YACrF,MAAM,eAAe,GAAG,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;YACrD,IAAI,CAAC;gBACJ,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;gBACvC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBAClC,KAAK,EAAE,2EAA2E,aAAa,8FAA8F,eAAe,EAAE;oBAC9M,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE;oBAC9B,MAAM,EAAE,aAAa;iBACrB,CAAC,CAAA;gBACF,uEAAuE;gBACvE,+DAA+D;gBAC/D,wDAAwD;gBACxD,MAAM,WAAW,GAAG,gBAAgB,CAMjC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gBACxB,MAAM,CAAC,IAAI,CAAC,GAAG,WAAW,CAAA;gBAC1B,IAAI,IAAI,EAAE,CAAC;oBACV,OAAO;wBACN,MAAM,EAAE,SAAS;wBACjB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;wBAChC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;wBAClC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC;wBACtC,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;wBACxC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;qBAClD,CAAA;gBACF,CAAC;gBAED,MAAM,SAAS,GAAG,OAAO,EAAE,SAAS,IAAI,sBAAsB,CAAA;gBAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAA;gBACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;oBAC9B,KAAK,EAAE;OACL,YAAY;;;;;;;;qCAQkB,eAAe,EAAE;oBACjD,YAAY,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE;oBAChD,MAAM,EAAE,aAAa;iBACrB,CAAC,CAAA;gBACF,MAAM,OAAO,GAAG,gBAAgB,CAM7B,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;gBAEpB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;gBAC7B,CAAC;gBAED,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA;gBACrB,IAAI,CAAC,GAAG,EAAE,CAAC;oBACV,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;gBAC7B,CAAC;gBACD,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;oBAChC,OAAO;wBACN,MAAM,EAAE,UAAU;wBAClB,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;wBACrC,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;wBACvC,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;qBACzC,CAAA;gBACF,CAAC;gBAED,OAAO;oBACN,MAAM,EAAE,QAAQ;oBAChB,UAAU,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;oBACzC,KAAK,EAAE,GAAG,CAAC,SAAS;iBACpB,CAAA;YACF,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxD,CAAC;QACF,CAAC;QACD,KAAK,CAAC,KAAK;YACV,MAAM,OAAO,CAAC,GAAG,CAAC;gBACjB,MAAM,CAAC,KAAK,EAAE;gBACd,mBAAmB,CAAC,KAAK,EAAE;gBAC3B,gBAAgB,EAAE,KAAK,EAAE;aACzB,CAAC,CAAA;QACH,CAAC;QACD,KAAK,CAAC,iBAAiB;YACtB,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,KAAK,CAC5B;;;;+BAI2B,CAC3B,CAAA;YAED,MAAM,GAAG,GAAsB,EAAE,CAAA;YACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxB,MAAM,IAAI,GAAG,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBAClD,IAAI,CAAC,IAAI;oBAAE,SAAQ;gBACnB,GAAG,CAAC,IAAI,CAAC;oBACR,IAAI;oBACJ,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,IAAI,EAAE,GAAG,CAAC,IAAI;iBACd,CAAC,CAAA;YACH,CAAC;YACD,OAAO,GAAG,CAAA;QACX,CAAC;QACD,KAAK,CAAC,gBAAgB,CAAC,SAAmB;YACzC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAA;YAErC,MAAM,eAAe,GAAG,SAAS;iBAC/B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;iBAClD,IAAI,CAAC,IAAI,CAAC,CAAA;YACZ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAC9B;;;qBAGiB,eAAe,GAAG,CACnC,CAAA;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;qBAEiB,eAAe,GAAG,CACnC,CAAA;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,KAAK,CAC/B;;qBAEiB,eAAe,GAAG,CACnC,CAAA;YAED,OAAO,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACzD,CAAC;KACD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACvC,MAAwB;IAExB,yEAAyE;IACzE,8EAA8E;IAC9E,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,EAAE,CAAA;IACrC,OAAO,wBAAwB,CAC9B,MAAM,EACN,6BAA6B,CAC5B,MAAM,EACN,2BAA2B,EAC3B,SAAS,CACT,EACD;QACC,sBAAsB,EAAE,GAAG,EAAE,CAC5B,6BAA6B,CAC5B,MAAM,EACN,2BAA2B,EAC3B,SAAS,EACT,EAAE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAClC;KACF,CACD,CAAA;AACF,CAAC;AAED,MAAM,UAAU,iCAAiC,CAChD,MAAwB;IAExB,OAAO,wBAAwB,CAC9B,MAAM,EACN,+BAA+B,CAAC,MAAM,CAAC,EACvC;QACC,sBAAsB,EAAE,GAAG,EAAE,CAC5B,+BAA+B,CAAC,MAAM,EAAE,2BAA2B,EAAE;YACpE,WAAW,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC9B,CAAC;KACH,CACD,CAAA;AACF,CAAC;AAED,2DAA2D;AAC3D,SAAS,UAAU,CAAI,MAAuB;IAC7C,OAAO,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;AACjD,CAAC"}
@@ -0,0 +1,32 @@
1
+ import type { ClickHouseExecutor, ClickHouseSettings } from './index.js';
2
+ export interface InsertBarrierOptions {
3
+ /** `clickhouse.cluster`; without it the `default` cluster is probed (ObsessionDB). */
4
+ cluster?: string;
5
+ /** Settings sent with each read of `sql` (`migrate --setting`). */
6
+ settings?: ClickHouseSettings;
7
+ timeoutMs?: number;
8
+ pollIntervalMs?: number;
9
+ log?: (line: string) => void;
10
+ sleep?: (ms: number) => Promise<void>;
11
+ now?: () => number;
12
+ }
13
+ /**
14
+ * Runs `sql` (a SELECT over `system.processes` that returns a `query_id`
15
+ * column) on every replica once, then again until none of the query ids it
16
+ * returned the first time is still listed.
17
+ *
18
+ * An INSERT builds its pipeline, including the materialized views it feeds,
19
+ * when it starts. After a mirror view is created, the INSERTs that were
20
+ * already running do not write to it. Every one of them is listed in
21
+ * `system.processes` until it ends, so once the ids listed after the view
22
+ * existed on every replica are gone, every INSERT without the mirror has
23
+ * committed. No clock is involved: the first read only has to happen after
24
+ * the view exists, which is why a resumed run can simply read again.
25
+ *
26
+ * On a target with several replicas `system.processes` is read through
27
+ * `clusterAllReplicas`, because an INSERT runs on the replica that received it.
28
+ */
29
+ export declare function waitForInsertBarrier(executor: ClickHouseExecutor, sql: string, options?: InsertBarrierOptions): Promise<{
30
+ waitedFor: number;
31
+ }>;
32
+ //# sourceMappingURL=insert-barrier.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insert-barrier.d.ts","sourceRoot":"","sources":["../src/insert-barrier.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAOxE,MAAM,WAAW,oBAAoB;IACnC,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,mEAAmE;IACnE,QAAQ,CAAC,EAAE,kBAAkB,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5B,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;IACrC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAA;CACnB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,kBAAkB,EAC5B,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC,CAmChC"}
@@ -0,0 +1,57 @@
1
+ import { setTimeout as defaultSleep } from 'node:timers/promises';
2
+ import { allReplicas, resolveReplicaFanout } from './replicas.js';
3
+ const DEFAULT_TIMEOUT_MS = 10 * 60_000;
4
+ const DEFAULT_POLL_INTERVAL_MS = 1_000;
5
+ const PROGRESS_EVERY_MS = 30_000;
6
+ /**
7
+ * Runs `sql` (a SELECT over `system.processes` that returns a `query_id`
8
+ * column) on every replica once, then again until none of the query ids it
9
+ * returned the first time is still listed.
10
+ *
11
+ * An INSERT builds its pipeline, including the materialized views it feeds,
12
+ * when it starts. After a mirror view is created, the INSERTs that were
13
+ * already running do not write to it. Every one of them is listed in
14
+ * `system.processes` until it ends, so once the ids listed after the view
15
+ * existed on every replica are gone, every INSERT without the mirror has
16
+ * committed. No clock is involved: the first read only has to happen after
17
+ * the view exists, which is why a resumed run can simply read again.
18
+ *
19
+ * On a target with several replicas `system.processes` is read through
20
+ * `clusterAllReplicas`, because an INSERT runs on the replica that received it.
21
+ */
22
+ export async function waitForInsertBarrier(executor, sql, options = {}) {
23
+ const timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
24
+ const pollIntervalMs = options.pollIntervalMs ?? DEFAULT_POLL_INTERVAL_MS;
25
+ const sleep = options.sleep ?? defaultSleep;
26
+ const now = options.now ?? Date.now;
27
+ const log = options.log ?? (() => { });
28
+ const fanout = await resolveReplicaFanout(executor, options.cluster);
29
+ const query = fanout ? sql.replace(/\bsystem\.processes\b/, allReplicas(fanout, 'system.processes')) : sql;
30
+ const read = async () => new Set((await executor.query(stripTrailingSemicolon(query), options.settings)).map((row) => row.query_id));
31
+ const initial = await read();
32
+ if (initial.size === 0)
33
+ return { waitedFor: 0 };
34
+ log(` waiting for ${initial.size} running INSERT ${initial.size === 1 ? 'query' : 'queries'} to finish`);
35
+ const started = now();
36
+ let lastProgress = started;
37
+ for (;;) {
38
+ await sleep(pollIntervalMs);
39
+ const current = await read();
40
+ const remaining = [...initial].filter((id) => current.has(id));
41
+ if (remaining.length === 0)
42
+ return { waitedFor: initial.size };
43
+ const elapsed = now() - started;
44
+ if (elapsed >= timeoutMs) {
45
+ throw new Error(`${remaining.length} INSERT ${remaining.length === 1 ? 'query' : 'queries'} that started before this step ${remaining.length === 1 ? 'is' : 'are'} still running after ${Math.round(elapsed / 1000)}s (query_id ${remaining.slice(0, 10).join(', ')}${remaining.length > 10 ? ', …' : ''}). ` +
46
+ 'Their rows may not be mirrored or snapshotted yet. Let them finish, then run chkit migrate --apply again: this step reads the running INSERTs anew. A killed INSERT may have committed part of its rows, so inserting them again would reuse keys.');
47
+ }
48
+ if (now() - lastProgress >= PROGRESS_EVERY_MS) {
49
+ lastProgress = now();
50
+ log(` still waiting for ${remaining.length} INSERT ${remaining.length === 1 ? 'query' : 'queries'} (elapsed ${Math.round(elapsed / 1000)}s)`);
51
+ }
52
+ }
53
+ }
54
+ function stripTrailingSemicolon(sql) {
55
+ return sql.replace(/;\s*$/, '');
56
+ }
57
+ //# sourceMappingURL=insert-barrier.js.map