@chkit/plugin-backfill 0.1.0-beta.20 → 0.1.0-beta.22

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 (133) hide show
  1. package/README.md +130 -0
  2. package/dist/async-backfill.d.ts +4 -4
  3. package/dist/async-backfill.d.ts.map +1 -1
  4. package/dist/async-backfill.js +2 -2
  5. package/dist/async-backfill.js.map +1 -1
  6. package/dist/chunking/analyze.d.ts +5 -35
  7. package/dist/chunking/analyze.d.ts.map +1 -1
  8. package/dist/chunking/analyze.js +3 -71
  9. package/dist/chunking/analyze.js.map +1 -1
  10. package/dist/chunking/boundary-codec.d.ts +4 -0
  11. package/dist/chunking/boundary-codec.d.ts.map +1 -0
  12. package/dist/chunking/boundary-codec.js +79 -0
  13. package/dist/chunking/boundary-codec.js.map +1 -0
  14. package/dist/chunking/e2e/constants.d.ts +2 -0
  15. package/dist/chunking/e2e/constants.d.ts.map +1 -0
  16. package/dist/chunking/e2e/constants.js +2 -0
  17. package/dist/chunking/e2e/constants.js.map +1 -0
  18. package/dist/chunking/e2e/seed-datasets.script.d.ts +20 -0
  19. package/dist/chunking/e2e/seed-datasets.script.d.ts.map +1 -0
  20. package/dist/chunking/e2e/seed-datasets.script.js +134 -0
  21. package/dist/chunking/e2e/seed-datasets.script.js.map +1 -0
  22. package/dist/chunking/introspect.d.ts +6 -0
  23. package/dist/chunking/introspect.d.ts.map +1 -1
  24. package/dist/chunking/introspect.js +113 -22
  25. package/dist/chunking/introspect.js.map +1 -1
  26. package/dist/chunking/partition-slices.d.ts +14 -0
  27. package/dist/chunking/partition-slices.d.ts.map +1 -0
  28. package/dist/chunking/partition-slices.js +111 -0
  29. package/dist/chunking/partition-slices.js.map +1 -0
  30. package/dist/chunking/planner.d.ts +3 -0
  31. package/dist/chunking/planner.d.ts.map +1 -0
  32. package/dist/chunking/planner.js +343 -0
  33. package/dist/chunking/planner.js.map +1 -0
  34. package/dist/chunking/services/distribution-source.d.ts +11 -0
  35. package/dist/chunking/services/distribution-source.d.ts.map +1 -0
  36. package/dist/chunking/services/distribution-source.js +60 -0
  37. package/dist/chunking/services/distribution-source.js.map +1 -0
  38. package/dist/chunking/services/metadata-source.d.ts +4 -0
  39. package/dist/chunking/services/metadata-source.d.ts.map +1 -0
  40. package/dist/chunking/services/metadata-source.js +138 -0
  41. package/dist/chunking/services/metadata-source.js.map +1 -0
  42. package/dist/chunking/services/row-probe.d.ts +12 -0
  43. package/dist/chunking/services/row-probe.d.ts.map +1 -0
  44. package/dist/chunking/services/row-probe.js +49 -0
  45. package/dist/chunking/services/row-probe.js.map +1 -0
  46. package/dist/chunking/sql.d.ts +11 -5
  47. package/dist/chunking/sql.d.ts.map +1 -1
  48. package/dist/chunking/sql.js +190 -107
  49. package/dist/chunking/sql.js.map +1 -1
  50. package/dist/chunking/strategies/equal-width-split.d.ts +3 -0
  51. package/dist/chunking/strategies/equal-width-split.d.ts.map +1 -0
  52. package/dist/chunking/strategies/equal-width-split.js +46 -0
  53. package/dist/chunking/strategies/equal-width-split.js.map +1 -0
  54. package/dist/chunking/strategies/group-by-key-split.d.ts +3 -0
  55. package/dist/chunking/strategies/group-by-key-split.d.ts.map +1 -0
  56. package/dist/chunking/strategies/group-by-key-split.js +54 -0
  57. package/dist/chunking/strategies/group-by-key-split.js.map +1 -0
  58. package/dist/chunking/strategies/metadata-single-chunk.d.ts +3 -0
  59. package/dist/chunking/strategies/metadata-single-chunk.d.ts.map +1 -0
  60. package/dist/chunking/strategies/metadata-single-chunk.js +5 -0
  61. package/dist/chunking/strategies/metadata-single-chunk.js.map +1 -0
  62. package/dist/chunking/strategies/quantile-range-split.d.ts +5 -0
  63. package/dist/chunking/strategies/quantile-range-split.d.ts.map +1 -0
  64. package/dist/chunking/strategies/quantile-range-split.js +132 -0
  65. package/dist/chunking/strategies/quantile-range-split.js.map +1 -0
  66. package/dist/chunking/strategies/refinement.d.ts +3 -0
  67. package/dist/chunking/strategies/refinement.d.ts.map +1 -0
  68. package/dist/chunking/strategies/refinement.js +61 -0
  69. package/dist/chunking/strategies/refinement.js.map +1 -0
  70. package/dist/chunking/strategies/string-prefix-split.d.ts +4 -0
  71. package/dist/chunking/strategies/string-prefix-split.d.ts.map +1 -0
  72. package/dist/chunking/strategies/string-prefix-split.js +73 -0
  73. package/dist/chunking/strategies/string-prefix-split.js.map +1 -0
  74. package/dist/chunking/strategies/temporal-bucket-split.d.ts +3 -0
  75. package/dist/chunking/strategies/temporal-bucket-split.d.ts.map +1 -0
  76. package/dist/chunking/strategies/temporal-bucket-split.js +67 -0
  77. package/dist/chunking/strategies/temporal-bucket-split.js.map +1 -0
  78. package/dist/chunking/strategy-policy.d.ts +3 -0
  79. package/dist/chunking/strategy-policy.d.ts.map +1 -0
  80. package/dist/chunking/strategy-policy.js +4 -0
  81. package/dist/chunking/strategy-policy.js.map +1 -0
  82. package/dist/chunking/types.d.ts +126 -18
  83. package/dist/chunking/types.d.ts.map +1 -1
  84. package/dist/chunking/utils/binary-string.d.ts +8 -0
  85. package/dist/chunking/utils/binary-string.d.ts.map +1 -0
  86. package/dist/chunking/utils/binary-string.js +52 -0
  87. package/dist/chunking/utils/binary-string.js.map +1 -0
  88. package/dist/chunking/utils/ids.d.ts +4 -0
  89. package/dist/chunking/utils/ids.d.ts.map +1 -0
  90. package/dist/chunking/utils/ids.js +11 -0
  91. package/dist/chunking/utils/ids.js.map +1 -0
  92. package/dist/chunking/utils/ranges.d.ts +5 -0
  93. package/dist/chunking/utils/ranges.d.ts.map +1 -0
  94. package/dist/chunking/utils/ranges.js +19 -0
  95. package/dist/chunking/utils/ranges.js.map +1 -0
  96. package/dist/detect.d.ts +0 -5
  97. package/dist/detect.d.ts.map +1 -1
  98. package/dist/detect.js +0 -41
  99. package/dist/detect.js.map +1 -1
  100. package/dist/index.d.ts +0 -5
  101. package/dist/index.d.ts.map +1 -1
  102. package/dist/index.js +0 -2
  103. package/dist/index.js.map +1 -1
  104. package/dist/logging.d.ts +12 -0
  105. package/dist/logging.d.ts.map +1 -0
  106. package/dist/logging.js +61 -0
  107. package/dist/logging.js.map +1 -0
  108. package/dist/options.d.ts +6 -15
  109. package/dist/options.d.ts.map +1 -1
  110. package/dist/options.js +1 -3
  111. package/dist/options.js.map +1 -1
  112. package/dist/payload.d.ts.map +1 -1
  113. package/dist/payload.js +4 -6
  114. package/dist/payload.js.map +1 -1
  115. package/dist/planner.d.ts +2 -1
  116. package/dist/planner.d.ts.map +1 -1
  117. package/dist/planner.js +31 -52
  118. package/dist/planner.js.map +1 -1
  119. package/dist/plugin.d.ts.map +1 -1
  120. package/dist/plugin.js +27 -11
  121. package/dist/plugin.js.map +1 -1
  122. package/dist/queries.js +3 -3
  123. package/dist/queries.js.map +1 -1
  124. package/dist/sdk.d.ts +12 -0
  125. package/dist/sdk.d.ts.map +1 -0
  126. package/dist/sdk.js +9 -0
  127. package/dist/sdk.js.map +1 -0
  128. package/dist/state.d.ts.map +1 -1
  129. package/dist/state.js +16 -5
  130. package/dist/state.js.map +1 -1
  131. package/dist/types.d.ts +12 -25
  132. package/dist/types.d.ts.map +1 -1
  133. package/package.json +11 -3
@@ -0,0 +1,49 @@
1
+ import { buildCountSql, buildEstimateSql, buildWhereClauseFromRanges } from '../sql.js';
2
+ export function getRowProbeStrategy(context) {
3
+ return context.rowProbeStrategy;
4
+ }
5
+ export async function estimateRows(context, filter, sortKeys) {
6
+ if (getRowProbeStrategy(context) === 'count') {
7
+ return countRowsExact(context, filter, sortKeys);
8
+ }
9
+ const rows = await context.query(buildEstimateSql(filter, sortKeys, context, getRowProbeStrategy(context)), context.querySettings);
10
+ const firstRow = rows[0];
11
+ if (!firstRow)
12
+ return 0;
13
+ for (const [key, value] of Object.entries(firstRow)) {
14
+ if (!key.toLowerCase().includes('row'))
15
+ continue;
16
+ const parsed = Number(value ?? 0);
17
+ if (Number.isFinite(parsed))
18
+ return parsed;
19
+ }
20
+ for (const value of Object.values(firstRow)) {
21
+ const parsed = Number(value ?? 0);
22
+ if (Number.isFinite(parsed))
23
+ return parsed;
24
+ }
25
+ return 0;
26
+ }
27
+ export async function countRowsExact(context, filter, sortKeys) {
28
+ const rows = await context.query(buildCountSql(filter, sortKeys, context), context.querySettings);
29
+ return Number(rows[0]?.cnt ?? 0);
30
+ }
31
+ export async function getSortKeyRange(context, partitionId, ranges, sortKeys, sortKey) {
32
+ const rows = await context.query(`
33
+ SELECT
34
+ toString(min(${sortKey.name})) AS minVal,
35
+ toString(max(${sortKey.name})) AS maxVal
36
+ FROM ${context.database}.${context.table}
37
+ WHERE ${buildWhereClauseFromRanges(partitionId, ranges, sortKeys)}`, context.querySettings);
38
+ if (rows.length === 0)
39
+ return undefined;
40
+ return {
41
+ min: rows[0]?.minVal ?? '',
42
+ max: rows[0]?.maxVal ?? '',
43
+ };
44
+ }
45
+ export function parsePlannerDateTime(value) {
46
+ const normalized = value.includes('T') ? value : value.replace(' ', 'T');
47
+ return Date.parse(normalized.endsWith('Z') ? normalized : `${normalized}Z`);
48
+ }
49
+ //# sourceMappingURL=row-probe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-probe.js","sourceRoot":"","sources":["../../../src/chunking/services/row-probe.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,18 @@
1
- import type { PlannedChunk, SortKeyInfo } from './types.js';
2
- export declare function buildChunkSql(input: {
1
+ import type { Chunk, ChunkRange, EstimateFilter, PlannerContext, RowProbeStrategy, SortKey, TableProfile } from './types.js';
2
+ export declare function buildWhereClauseFromRanges(partitionId: string, ranges: ChunkRange[], sortKeys: SortKey[]): string;
3
+ export declare function buildWhereClauseFromChunk(chunk: Pick<Chunk, 'partitionId' | 'ranges'>, table: Pick<TableProfile, 'sortKeys'>): string;
4
+ export declare function buildChunkExecutionSql(input: {
3
5
  planId: string;
4
- chunk: PlannedChunk;
6
+ chunk: Chunk;
5
7
  target: string;
6
- sortKey?: SortKeyInfo;
8
+ table: Pick<TableProfile, 'sortKeys'>;
9
+ sourceTarget?: string;
7
10
  mvAsQuery?: string;
8
11
  targetColumns?: string[];
12
+ idempotencyToken?: string;
9
13
  }): string;
10
- export declare function injectSortKeyFilter(query: string, sortKeyColumn: string, category: SortKeyInfo['category'], from: string, to: string): string;
14
+ export declare function buildEstimateSql(filter: EstimateFilter, sortKeys: SortKey[], context: PlannerContext, rowProbeStrategy: RowProbeStrategy): string;
15
+ export declare function buildCountSql(filter: EstimateFilter, sortKeys: SortKey[], context: Pick<PlannerContext, 'database' | 'table'>): string;
16
+ export declare function injectSortKeyFilter(query: string, sortKeyColumn: string, category: SortKey['category'], from: string, to: string): string;
11
17
  export declare function rewriteSelectColumns(query: string, targetColumns: string[]): string;
12
18
  //# sourceMappingURL=sql.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/chunking/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAA;AAsB3D,wBAAgB,aAAa,CAAC,KAAK,EAAE;IACnC,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,YAAY,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,WAAW,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;CACzB,GAAG,MAAM,CA2CT;AASD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,WAAW,CAAC,UAAU,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,MAAM,CAQR;AAmDD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAoGnF"}
1
+ {"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../../src/chunking/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,KAAK,EACL,UAAU,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,OAAO,EACP,YAAY,EACb,MAAM,YAAY,CAAA;AAmBnB,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,UAAU,EAAE,EACpB,QAAQ,EAAE,OAAO,EAAE,GAClB,MAAM,CAgBR;AAED,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,GAAG,QAAQ,CAAC,EAC5C,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,GACpC,MAAM,CAER;AAyBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,KAAK,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;IACrC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAA;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,GAAG,MAAM,CA+BT;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,cAAc,EACvB,gBAAgB,EAAE,gBAAgB,GACjC,MAAM,CAMR;AAED,wBAAgB,aAAa,CAC3B,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,EAAE,IAAI,CAAC,cAAc,EAAE,UAAU,GAAG,OAAO,CAAC,GAClD,MAAM,CAER;AAgCD,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,EAC7B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,GACT,MAAM,CAkBR;AA+DD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAqInF"}
@@ -1,57 +1,130 @@
1
+ function quoteSqlString(value) {
2
+ return `'${value.replaceAll('\\', '\\\\').replaceAll('\'', '\\\'')}'`;
3
+ }
4
+ function formatBound(value, sortKey) {
5
+ if (sortKey.category === 'datetime') {
6
+ return `parseDateTimeBestEffort(${quoteSqlString(value)})`;
7
+ }
8
+ if (sortKey.category === 'string') {
9
+ return `unhex('${Buffer.from(value, 'latin1').toString('hex')}')`;
10
+ }
11
+ return quoteSqlString(value);
12
+ }
13
+ export function buildWhereClauseFromRanges(partitionId, ranges, sortKeys) {
14
+ const conditions = [`_partition_id = ${quoteSqlString(partitionId)}`];
15
+ for (const range of ranges) {
16
+ const sortKey = sortKeys[range.dimensionIndex];
17
+ if (!sortKey)
18
+ continue;
19
+ if (range.from !== undefined) {
20
+ conditions.push(`${sortKey.name} >= ${formatBound(range.from, sortKey)}`);
21
+ }
22
+ if (range.to !== undefined) {
23
+ conditions.push(`${sortKey.name} < ${formatBound(range.to, sortKey)}`);
24
+ }
25
+ }
26
+ return conditions.join('\n AND ');
27
+ }
28
+ export function buildWhereClauseFromChunk(chunk, table) {
29
+ return buildWhereClauseFromRanges(chunk.partitionId, chunk.ranges, table.sortKeys);
30
+ }
1
31
  function buildSettingsClause(token) {
2
32
  if (token) {
3
33
  return `SETTINGS async_insert=0, insert_deduplication_token='${token}'`;
4
34
  }
5
- return `SETTINGS async_insert=0`;
35
+ return 'SETTINGS async_insert=0';
6
36
  }
7
- function buildSortKeyCondition(sortKeyColumn, category, from, to) {
8
- if (category === 'datetime') {
9
- return ` AND ${sortKeyColumn} >= parseDateTimeBestEffort('${from}')\n AND ${sortKeyColumn} < parseDateTimeBestEffort('${to}')`;
10
- }
11
- // numeric and string use direct comparison
12
- return ` AND ${sortKeyColumn} >= '${from}'\n AND ${sortKeyColumn} < '${to}'`;
37
+ function buildChunkConditions(chunk, sortKeys) {
38
+ return chunk.ranges.flatMap((range) => {
39
+ const sortKey = sortKeys[range.dimensionIndex];
40
+ if (!sortKey)
41
+ return [];
42
+ const conditions = [];
43
+ if (range.from !== undefined) {
44
+ conditions.push(`${sortKey.name} >= ${formatBound(range.from, sortKey)}`);
45
+ }
46
+ if (range.to !== undefined) {
47
+ conditions.push(`${sortKey.name} < ${formatBound(range.to, sortKey)}`);
48
+ }
49
+ return conditions;
50
+ });
13
51
  }
14
- export function buildChunkSql(input) {
15
- const header = `/* chkit backfill plan=${input.planId} chunk=${input.chunk.id} token=${input.chunk.idempotencyToken} */`;
16
- const settings = buildSettingsClause(input.chunk.idempotencyToken);
17
- const { chunk } = input;
52
+ export function buildChunkExecutionSql(input) {
53
+ const sourceTarget = input.sourceTarget ?? input.target;
54
+ const header = `/* chkit backfill plan=${input.planId} chunk=${input.chunk.id} token=${input.idempotencyToken ?? ''} */`;
55
+ const settings = buildSettingsClause(input.idempotencyToken ?? '');
56
+ const chunkConditions = buildChunkConditions(input.chunk, input.table.sortKeys);
18
57
  if (input.mvAsQuery) {
19
- // MV replay: inject partition + sort key filters into the MV's AS query
20
- let filtered = injectPartitionFilter(input.mvAsQuery, chunk.partitionId);
21
- if (chunk.sortKeyFrom !== undefined && chunk.sortKeyTo !== undefined && input.sortKey) {
22
- filtered = injectSortKeyFilter(filtered, input.sortKey.column, input.sortKey.category, chunk.sortKeyFrom, chunk.sortKeyTo);
58
+ let filtered = injectPartitionFilter(input.mvAsQuery, input.chunk.partitionId);
59
+ for (const condition of chunkConditions) {
60
+ filtered = injectWhereCondition(filtered, condition);
23
61
  }
24
62
  if (input.targetColumns?.length) {
25
63
  filtered = rewriteSelectColumns(filtered, input.targetColumns);
26
64
  }
27
65
  return [header, `INSERT INTO ${input.target}`, filtered, settings].join('\n');
28
66
  }
29
- // Direct table copy
30
67
  const lines = [
31
68
  header,
32
69
  `INSERT INTO ${input.target}`,
33
- `SELECT *`,
34
- `FROM ${input.target}`,
35
- `WHERE _partition_id = '${chunk.partitionId}'`,
70
+ 'SELECT *',
71
+ `FROM ${sourceTarget}`,
72
+ `WHERE _partition_id = ${quoteSqlString(input.chunk.partitionId)}`,
36
73
  ];
37
- if (chunk.sortKeyFrom !== undefined && chunk.sortKeyTo !== undefined && input.sortKey) {
38
- lines.push(buildSortKeyCondition(input.sortKey.column, input.sortKey.category, chunk.sortKeyFrom, chunk.sortKeyTo));
74
+ for (const condition of chunkConditions) {
75
+ lines.push(` AND ${condition}`);
39
76
  }
40
77
  lines.push(settings);
41
78
  return lines.join('\n');
42
79
  }
43
- // --- SQL helpers ---
80
+ export function buildEstimateSql(filter, sortKeys, context, rowProbeStrategy) {
81
+ const whereClause = buildWhereClauseFromFilter(filter, sortKeys);
82
+ if (rowProbeStrategy === 'count') {
83
+ return `SELECT count() AS cnt FROM ${context.database}.${context.table} WHERE ${whereClause}`;
84
+ }
85
+ return `EXPLAIN ESTIMATE SELECT count() FROM ${context.database}.${context.table} WHERE ${whereClause}`;
86
+ }
87
+ export function buildCountSql(filter, sortKeys, context) {
88
+ return `SELECT count() AS cnt FROM ${context.database}.${context.table} WHERE ${buildWhereClauseFromFilter(filter, sortKeys)}`;
89
+ }
90
+ function buildWhereClauseFromFilter(filter, sortKeys) {
91
+ const conditions = [`_partition_id = ${quoteSqlString(filter.partitionId)}`];
92
+ for (const range of filter.ranges) {
93
+ const sortKey = sortKeys[range.dimensionIndex];
94
+ if (!sortKey)
95
+ continue;
96
+ if (filter.exactDimensionIndex === range.dimensionIndex && filter.exactValue !== undefined) {
97
+ conditions.push(`${sortKey.name} = ${formatBound(filter.exactValue, sortKey)}`);
98
+ continue;
99
+ }
100
+ if (range.from !== undefined) {
101
+ conditions.push(`${sortKey.name} >= ${formatBound(range.from, sortKey)}`);
102
+ }
103
+ if (range.to !== undefined) {
104
+ conditions.push(`${sortKey.name} < ${formatBound(range.to, sortKey)}`);
105
+ }
106
+ }
107
+ return conditions.join(' AND ');
108
+ }
44
109
  function injectPartitionFilter(query, partitionId) {
45
- const condition = `_partition_id = '${partitionId}'`;
46
- return injectWhereCondition(query, condition);
110
+ return injectWhereCondition(query, `_partition_id = ${quoteSqlString(partitionId)}`);
47
111
  }
48
112
  export function injectSortKeyFilter(query, sortKeyColumn, category, from, to) {
49
113
  let condition;
50
114
  if (category === 'datetime') {
51
- condition = `${sortKeyColumn} >= parseDateTimeBestEffort('${from}')\n AND ${sortKeyColumn} < parseDateTimeBestEffort('${to}')`;
115
+ condition =
116
+ `${sortKeyColumn} >= parseDateTimeBestEffort(${quoteSqlString(from)})\n` +
117
+ ` AND ${sortKeyColumn} < parseDateTimeBestEffort(${quoteSqlString(to)})`;
118
+ }
119
+ else if (category === 'string') {
120
+ condition =
121
+ `${sortKeyColumn} >= unhex('${Buffer.from(from, 'latin1').toString('hex')}')\n` +
122
+ ` AND ${sortKeyColumn} < unhex('${Buffer.from(to, 'latin1').toString('hex')}')`;
52
123
  }
53
124
  else {
54
- condition = `${sortKeyColumn} >= '${from}'\n AND ${sortKeyColumn} < '${to}'`;
125
+ condition =
126
+ `${sortKeyColumn} >= ${quoteSqlString(from)}\n` +
127
+ ` AND ${sortKeyColumn} < ${quoteSqlString(to)}`;
55
128
  }
56
129
  return injectWhereCondition(query, condition);
57
130
  }
@@ -60,42 +133,42 @@ function injectWhereCondition(query, condition) {
60
133
  const upper = trimmed.toUpperCase();
61
134
  const hits = [];
62
135
  let depth = 0;
63
- for (let i = 0; i < trimmed.length; i++) {
64
- const ch = trimmed[i];
65
- if (ch === '(') {
66
- depth++;
136
+ for (let index = 0; index < trimmed.length; index++) {
137
+ const char = trimmed[index];
138
+ if (char === '(') {
139
+ depth += 1;
67
140
  continue;
68
141
  }
69
- if (ch === ')') {
70
- depth--;
142
+ if (char === ')') {
143
+ depth -= 1;
71
144
  continue;
72
145
  }
73
- if (ch === "'") {
74
- i++;
75
- while (i < trimmed.length && trimmed[i] !== "'") {
76
- if (trimmed[i] === '\\')
77
- i++;
78
- i++;
146
+ if (char === '\'') {
147
+ index += 1;
148
+ while (index < trimmed.length && trimmed[index] !== '\'') {
149
+ if (trimmed[index] === '\\')
150
+ index += 1;
151
+ index += 1;
79
152
  }
80
153
  continue;
81
154
  }
82
155
  if (depth !== 0)
83
156
  continue;
84
- if (i > 0 && /\S/.test(trimmed[i - 1] ?? ''))
157
+ if (index > 0 && /\S/.test(trimmed[index - 1] ?? ''))
85
158
  continue;
86
- const rest = upper.slice(i);
87
- for (const kw of ['WHERE', 'GROUP BY', 'HAVING', 'ORDER BY', 'QUALIFY', 'LIMIT', 'SETTINGS']) {
88
- if (rest.startsWith(kw) && (i + kw.length >= trimmed.length || /\s/.test(trimmed[i + kw.length] ?? ''))) {
89
- hits.push({ keyword: kw, position: i });
159
+ const rest = upper.slice(index);
160
+ for (const keyword of ['WHERE', 'GROUP BY', 'HAVING', 'ORDER BY', 'QUALIFY', 'LIMIT', 'SETTINGS']) {
161
+ if (rest.startsWith(keyword) &&
162
+ (index + keyword.length >= trimmed.length || /\s/.test(trimmed[index + keyword.length] ?? ''))) {
163
+ hits.push({ keyword, position: index });
90
164
  break;
91
165
  }
92
166
  }
93
167
  }
94
- const whereHit = hits.find(h => h.keyword === 'WHERE');
95
- const trailingKeywords = ['GROUP BY', 'HAVING', 'ORDER BY', 'QUALIFY', 'LIMIT', 'SETTINGS'];
168
+ const whereHit = hits.find((hit) => hit.keyword === 'WHERE');
96
169
  const firstTrailing = hits
97
- .filter(h => trailingKeywords.includes(h.keyword))
98
- .filter(h => !whereHit || h.position > whereHit.position)[0];
170
+ .filter((hit) => hit.keyword !== 'WHERE')
171
+ .filter((hit) => !whereHit || hit.position > whereHit.position)[0];
99
172
  const insertAt = firstTrailing ? firstTrailing.position : trimmed.length;
100
173
  const before = trimmed.slice(0, insertAt).trimEnd();
101
174
  const after = trimmed.slice(insertAt);
@@ -110,112 +183,122 @@ export function rewriteSelectColumns(query, targetColumns) {
110
183
  let selectPos = -1;
111
184
  let fromPos = -1;
112
185
  let depth = 0;
113
- for (let i = 0; i < trimmed.length; i++) {
114
- const ch = trimmed[i];
115
- if (ch === '(') {
116
- depth++;
186
+ for (let index = 0; index < trimmed.length; index++) {
187
+ const char = trimmed[index];
188
+ if (char === '(') {
189
+ depth += 1;
117
190
  continue;
118
191
  }
119
- if (ch === ')') {
120
- depth--;
192
+ if (char === ')') {
193
+ depth -= 1;
121
194
  continue;
122
195
  }
123
- if (ch === "'") {
124
- i++;
125
- while (i < trimmed.length && trimmed[i] !== "'") {
126
- if (trimmed[i] === '\\')
127
- i++;
128
- i++;
196
+ if (char === '\'') {
197
+ index += 1;
198
+ while (index < trimmed.length && trimmed[index] !== '\'') {
199
+ if (trimmed[index] === '\\')
200
+ index += 1;
201
+ index += 1;
129
202
  }
130
203
  continue;
131
204
  }
132
205
  if (depth !== 0)
133
206
  continue;
134
- if (i > 0 && /\S/.test(trimmed[i - 1] ?? ''))
207
+ if (index > 0 && /\S/.test(trimmed[index - 1] ?? ''))
135
208
  continue;
136
- const rest = upper.slice(i);
137
- if (selectPos === -1 && rest.startsWith('SELECT') && (i + 6 >= trimmed.length || /\s/.test(trimmed[i + 6] ?? ''))) {
138
- selectPos = i;
209
+ const rest = upper.slice(index);
210
+ if (selectPos === -1 &&
211
+ rest.startsWith('SELECT') &&
212
+ (index + 6 >= trimmed.length || /\s/.test(trimmed[index + 6] ?? ''))) {
213
+ selectPos = index;
139
214
  }
140
- else if (selectPos !== -1 && fromPos === -1 && rest.startsWith('FROM') && (i + 4 >= trimmed.length || /\s/.test(trimmed[i + 4] ?? ''))) {
141
- fromPos = i;
215
+ else if (selectPos !== -1 &&
216
+ fromPos === -1 &&
217
+ rest.startsWith('FROM') &&
218
+ (index + 4 >= trimmed.length || /\s/.test(trimmed[index + 4] ?? ''))) {
219
+ fromPos = index;
142
220
  }
143
221
  }
144
222
  if (selectPos === -1 || fromPos === -1)
145
223
  return query;
146
- const projStart = selectPos + 6;
147
- const projText = trimmed.slice(projStart, fromPos).trim();
224
+ const projectionStart = selectPos + 6;
225
+ const rawProjection = trimmed.slice(projectionStart, fromPos).trim();
226
+ let projectionPrefix = '';
227
+ let projection = rawProjection;
228
+ const distinctMatch = rawProjection.match(/^DISTINCT\b\s*/i);
229
+ if (distinctMatch) {
230
+ projectionPrefix = distinctMatch[0] ?? '';
231
+ projection = rawProjection.slice(projectionPrefix.length).trim();
232
+ }
148
233
  const items = [];
149
234
  let itemStart = 0;
150
235
  depth = 0;
151
- for (let i = 0; i < projText.length; i++) {
152
- const ch = projText[i];
153
- if (ch === '(') {
154
- depth++;
236
+ for (let index = 0; index < projection.length; index++) {
237
+ const char = projection[index];
238
+ if (char === '(') {
239
+ depth += 1;
155
240
  continue;
156
241
  }
157
- if (ch === ')') {
158
- depth--;
242
+ if (char === ')') {
243
+ depth -= 1;
159
244
  continue;
160
245
  }
161
- if (ch === "'") {
162
- i++;
163
- while (i < projText.length && projText[i] !== "'") {
164
- if (projText[i] === '\\')
165
- i++;
166
- i++;
246
+ if (char === '\'') {
247
+ index += 1;
248
+ while (index < projection.length && projection[index] !== '\'') {
249
+ if (projection[index] === '\\')
250
+ index += 1;
251
+ index += 1;
167
252
  }
168
253
  continue;
169
254
  }
170
- if (depth === 0 && ch === ',') {
171
- items.push(projText.slice(itemStart, i).trim());
172
- itemStart = i + 1;
255
+ if (depth === 0 && char === ',') {
256
+ items.push(projection.slice(itemStart, index).trim());
257
+ itemStart = index + 1;
173
258
  }
174
259
  }
175
- items.push(projText.slice(itemStart).trim());
260
+ items.push(projection.slice(itemStart).trim());
176
261
  const aliasMap = new Map();
177
262
  for (const item of items) {
178
263
  if (item === '*')
179
264
  continue;
180
265
  const itemUpper = item.toUpperCase();
181
266
  let asPos = -1;
182
- let d = 0;
183
- for (let i = 0; i < item.length; i++) {
184
- const ch = item[i];
185
- if (ch === '(') {
186
- d++;
267
+ let itemDepth = 0;
268
+ for (let index = 0; index < item.length; index++) {
269
+ const char = item[index];
270
+ if (char === '(') {
271
+ itemDepth += 1;
187
272
  continue;
188
273
  }
189
- if (ch === ')') {
190
- d--;
274
+ if (char === ')') {
275
+ itemDepth -= 1;
191
276
  continue;
192
277
  }
193
- if (ch === "'") {
194
- i++;
195
- while (i < item.length && item[i] !== "'") {
196
- if (item[i] === '\\')
197
- i++;
198
- i++;
278
+ if (char === '\'') {
279
+ index += 1;
280
+ while (index < item.length && item[index] !== '\'') {
281
+ if (item[index] === '\\')
282
+ index += 1;
283
+ index += 1;
199
284
  }
200
285
  continue;
201
286
  }
202
- if (d !== 0)
287
+ if (itemDepth !== 0)
203
288
  continue;
204
- if (i > 0 && /\S/.test(item[i - 1] ?? ''))
289
+ if (index > 0 && /\S/.test(item[index - 1] ?? ''))
205
290
  continue;
206
- const rest = itemUpper.slice(i);
207
- if (rest.startsWith('AS') && (i + 2 >= item.length || /\s/.test(item[i + 2] ?? ''))) {
208
- asPos = i;
291
+ const rest = itemUpper.slice(index);
292
+ if (rest.startsWith('AS') &&
293
+ (index + 2 >= item.length || /\s/.test(item[index + 2] ?? ''))) {
294
+ asPos = index;
209
295
  }
210
296
  }
211
297
  if (asPos !== -1) {
212
- const alias = item.slice(asPos + 2).trim();
213
- aliasMap.set(alias, item);
298
+ aliasMap.set(item.slice(asPos + 2).trim(), item);
214
299
  }
215
300
  }
216
- const rewrittenCols = targetColumns.map(col => aliasMap.get(col) ?? col);
217
- const before = trimmed.slice(0, projStart);
218
- const after = trimmed.slice(fromPos);
219
- return `${before} ${rewrittenCols.join(', ')}\n${after}`;
301
+ const rewrittenProjection = targetColumns.map((column) => aliasMap.get(column) ?? column);
302
+ return `${trimmed.slice(0, projectionStart)} ${projectionPrefix}${rewrittenProjection.join(', ')}\n${trimmed.slice(fromPos)}`;
220
303
  }
221
304
  //# sourceMappingURL=sql.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/chunking/sql.ts"],"names":[],"mappings":"AAEA,SAAS,mBAAmB,CAAC,KAAa;IACxC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,wDAAwD,KAAK,GAAG,CAAA;IACzE,CAAC;IACD,OAAO,yBAAyB,CAAA;AAClC,CAAC;AAED,SAAS,qBAAqB,CAC5B,aAAqB,EACrB,QAAiC,EACjC,IAAY,EACZ,EAAU;IAEV,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,OAAO,SAAS,aAAa,gCAAgC,IAAI,aAAa,aAAa,+BAA+B,EAAE,IAAI,CAAA;IAClI,CAAC;IACD,2CAA2C;IAC3C,OAAO,SAAS,aAAa,QAAQ,IAAI,YAAY,aAAa,OAAO,EAAE,GAAG,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAO7B;IACC,MAAM,MAAM,GAAG,0BAA0B,KAAK,CAAC,MAAM,UAAU,KAAK,CAAC,KAAK,CAAC,EAAE,UAAU,KAAK,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAA;IACxH,MAAM,QAAQ,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;IAClE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAA;IAEvB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,wEAAwE;QACxE,IAAI,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAA;QACxE,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;YACtF,QAAQ,GAAG,mBAAmB,CAC5B,QAAQ,EACR,KAAK,CAAC,OAAO,CAAC,MAAM,EACpB,KAAK,CAAC,OAAO,CAAC,QAAQ,EACtB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,CAChB,CAAA;QACH,CAAC;QACD,IAAI,KAAK,CAAC,aAAa,EAAE,MAAM,EAAE,CAAC;YAChC,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,CAAA;QAChE,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,eAAe,KAAK,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/E,CAAC;IAED,oBAAoB;IACpB,MAAM,KAAK,GAAG;QACZ,MAAM;QACN,eAAe,KAAK,CAAC,MAAM,EAAE;QAC7B,UAAU;QACV,QAAQ,KAAK,CAAC,MAAM,EAAE;QACtB,0BAA0B,KAAK,CAAC,WAAW,GAAG;KAC/C,CAAA;IAED,IAAI,KAAK,CAAC,WAAW,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QACtF,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAC9B,KAAK,CAAC,OAAO,CAAC,MAAM,EACpB,KAAK,CAAC,OAAO,CAAC,QAAQ,EACtB,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,SAAS,CAChB,CAAC,CAAA;IACJ,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,sBAAsB;AAEtB,SAAS,qBAAqB,CAAC,KAAa,EAAE,WAAmB;IAC/D,MAAM,SAAS,GAAG,oBAAoB,WAAW,GAAG,CAAA;IACpD,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,KAAa,EACb,aAAqB,EACrB,QAAiC,EACjC,IAAY,EACZ,EAAU;IAEV,IAAI,SAAiB,CAAA;IACrB,IAAI,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC5B,SAAS,GAAG,GAAG,aAAa,gCAAgC,IAAI,aAAa,aAAa,+BAA+B,EAAE,IAAI,CAAA;IACjI,CAAC;SAAM,CAAC;QACN,SAAS,GAAG,GAAG,aAAa,QAAQ,IAAI,YAAY,aAAa,OAAO,EAAE,GAAG,CAAA;IAC/E,CAAC;IACD,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAa,EAAE,SAAiB;IAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAGnC,MAAM,IAAI,GAAY,EAAE,CAAA;IACxB,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACrC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACrC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,CAAC,EAAE,CAAA;YACH,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,CAAC,EAAE,CAAA;gBAC5B,CAAC,EAAE,CAAA;YACL,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,KAAK,CAAC;YAAE,SAAQ;QAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,SAAQ;QAEtD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3B,KAAK,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YAC7F,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACxG,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;gBACvC,MAAK;YACP,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAA;IACtD,MAAM,gBAAgB,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;IAC3F,MAAM,aAAa,GAAG,IAAI;SACvB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;SACjD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;IAE9D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAA;IACxE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,OAAO,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAErC,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,WAAW,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;IACpE,CAAC;IACD,OAAO,GAAG,MAAM,WAAW,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAA;AACpE,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,KAAa,EAAE,aAAuB;IACzE,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;IAEnC,IAAI,SAAS,GAAG,CAAC,CAAC,CAAA;IAClB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAA;IAChB,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACrB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACrC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACrC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,CAAC,EAAE,CAAA;YACH,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,CAAC,EAAE,CAAA;gBAC5B,CAAC,EAAE,CAAA;YACL,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,KAAK,CAAC;YAAE,SAAQ;QAEzB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YAAE,SAAQ;QAEtD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC3B,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YAClH,SAAS,GAAG,CAAC,CAAA;QACf,CAAC;aAAM,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;YACzI,OAAO,GAAG,CAAC,CAAA;QACb,CAAC;IACH,CAAC;IAED,IAAI,SAAS,KAAK,CAAC,CAAC,IAAI,OAAO,KAAK,CAAC,CAAC;QAAE,OAAO,KAAK,CAAA;IAEpD,MAAM,SAAS,GAAG,SAAS,GAAG,CAAC,CAAA;IAC/B,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAA;IAEzD,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,SAAS,GAAG,CAAC,CAAA;IACjB,KAAK,GAAG,CAAC,CAAA;IAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACrC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAAC,KAAK,EAAE,CAAC;YAAC,SAAQ;QAAC,CAAC;QACrC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACf,CAAC,EAAE,CAAA;YACH,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClD,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI;oBAAE,CAAC,EAAE,CAAA;gBAC7B,CAAC,EAAE,CAAA;YACL,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YAC9B,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;YAC/C,SAAS,GAAG,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAE5C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,GAAG;YAAE,SAAQ;QAE1B,MAAM,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAA;QACpC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAA;QACd,IAAI,CAAC,GAAG,CAAC,CAAA;QAET,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAClB,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAQ;YAAC,CAAC;YACjC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBAAC,CAAC,EAAE,CAAC;gBAAC,SAAQ;YAAC,CAAC;YACjC,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;gBACf,CAAC,EAAE,CAAA;gBACH,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI;wBAAE,CAAC,EAAE,CAAA;oBACzB,CAAC,EAAE,CAAA;gBACL,CAAC;gBACD,SAAQ;YACV,CAAC;YACD,IAAI,CAAC,KAAK,CAAC;gBAAE,SAAQ;YACrB,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gBAAE,SAAQ;YAEnD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YAC/B,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpF,KAAK,GAAG,CAAC,CAAA;YACX,CAAC;QACH,CAAC;QAED,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;YAC1C,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QAC3B,CAAC;IACH,CAAC;IAED,MAAM,aAAa,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAA;IAExE,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;IACpC,OAAO,GAAG,MAAM,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,EAAE,CAAA;AAC1D,CAAC"}
1
+ {"version":3,"file":"sql.js","sourceRoot":"","sources":["../../src/chunking/sql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Partition, PartitionSlice, PlannerContext, SortKey } from '../types.js';
2
+ export declare function splitSliceWithEqualWidthRanges(context: PlannerContext, partition: Partition, slice: PartitionSlice, sortKeys: SortKey[], dimensionIndex: number, rangeFrom: string, rangeTo: string, subCount: number, oversamplingMultiplier?: number): Promise<PartitionSlice[]>;
3
+ //# sourceMappingURL=equal-width-split.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equal-width-split.d.ts","sourceRoot":"","sources":["../../../src/chunking/strategies/equal-width-split.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,OAAO,EACR,MAAM,aAAa,CAAA;AAOpB,wBAAsB,8BAA8B,CAClD,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,sBAAsB,GAAE,MAAwC,GAC/D,OAAO,CAAC,cAAc,EAAE,CAAC,CA+C3B"}
@@ -0,0 +1,46 @@
1
+ import pMap from 'p-map';
2
+ import { buildSliceFromRows } from '../partition-slices.js';
3
+ import { estimateRows } from '../services/row-probe.js';
4
+ import { replaceChunkRange } from '../utils/ranges.js';
5
+ import { buildEvenlySpacedBoundaries } from './quantile-range-split.js';
6
+ const DEFAULT_OVERSAMPLING_MULTIPLIER = 3;
7
+ const ESTIMATE_CONCURRENCY = 50;
8
+ export async function splitSliceWithEqualWidthRanges(context, partition, slice, sortKeys, dimensionIndex, rangeFrom, rangeTo, subCount, oversamplingMultiplier = DEFAULT_OVERSAMPLING_MULTIPLIER) {
9
+ const sortKey = sortKeys[dimensionIndex];
10
+ if (!sortKey)
11
+ return [slice];
12
+ const boundaries = Array.from(new Set(buildEvenlySpacedBoundaries(rangeFrom, rangeTo, subCount * oversamplingMultiplier, sortKey)));
13
+ if (boundaries.length <= 2)
14
+ return [slice];
15
+ const intervals = [];
16
+ for (let index = 0; index < boundaries.length - 1; index++) {
17
+ const from = boundaries[index];
18
+ const to = boundaries[index + 1];
19
+ if (from === undefined || to === undefined || from === to)
20
+ continue;
21
+ intervals.push({ from, to });
22
+ }
23
+ const results = await pMap(intervals, async ({ from, to }) => {
24
+ const ranges = replaceChunkRange(slice, dimensionIndex, from, to);
25
+ const rows = await estimateRows(context, { partitionId: partition.partitionId, ranges }, sortKeys);
26
+ if (rows <= 0)
27
+ return null;
28
+ return buildSliceFromRows(partition, {
29
+ ranges,
30
+ rows,
31
+ focusedValue: slice.analysis.focusedValue,
32
+ confidence: context.rowProbeStrategy === 'count' ? 'exact' : 'low',
33
+ reason: context.rowProbeStrategy === 'count' ? 'exact-count' : 'equal-width-distribution',
34
+ lineage: slice.analysis.lineage.concat([
35
+ {
36
+ strategyId: 'equal-width-split',
37
+ dimensionIndex,
38
+ reason: 'fallback to equal-width ranges',
39
+ },
40
+ ]),
41
+ });
42
+ }, { concurrency: ESTIMATE_CONCURRENCY });
43
+ const slices = results.filter((s) => s !== null);
44
+ return slices.length > 0 ? slices : [slice];
45
+ }
46
+ //# sourceMappingURL=equal-width-split.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"equal-width-split.js","sourceRoot":"","sources":["../../../src/chunking/strategies/equal-width-split.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Partition, PartitionSlice, PlannerContext, SortKey } from '../types.js';
2
+ export declare function splitSliceWithGroupByKey(context: PlannerContext, partition: Partition, slice: PartitionSlice, sortKeys: SortKey[], dimensionIndex: number): Promise<PartitionSlice[] | undefined>;
3
+ //# sourceMappingURL=group-by-key-split.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"group-by-key-split.d.ts","sourceRoot":"","sources":["../../../src/chunking/strategies/group-by-key-split.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACd,cAAc,EACd,OAAO,EACR,MAAM,aAAa,CAAA;AAMpB,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,cAAc,EACvB,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,cAAc,EACrB,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,CAuBvC"}