@chkit/core 0.1.2-beta.5 → 0.2.0-beta.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -6
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +63 -7
- package/dist/canonical.js.map +1 -1
- package/dist/column-default.d.ts +62 -0
- package/dist/column-default.d.ts.map +1 -0
- package/dist/column-default.js +212 -0
- package/dist/column-default.js.map +1 -0
- package/dist/conflict-markers.d.ts +3 -0
- package/dist/conflict-markers.d.ts.map +1 -0
- package/dist/conflict-markers.js +9 -0
- package/dist/conflict-markers.js.map +1 -0
- package/dist/identifier.d.ts +22 -0
- package/dist/identifier.d.ts.map +1 -0
- package/dist/identifier.js +69 -0
- package/dist/identifier.js.map +1 -0
- package/dist/index.d.ts +10 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -3
- package/dist/index.js.map +1 -1
- package/dist/insert-columns.d.ts +13 -0
- package/dist/insert-columns.d.ts.map +1 -0
- package/dist/insert-columns.js +36 -0
- package/dist/insert-columns.js.map +1 -0
- package/dist/kafka.d.ts +9 -0
- package/dist/kafka.d.ts.map +1 -0
- package/dist/kafka.js +64 -0
- package/dist/kafka.js.map +1 -0
- package/dist/key-clause.d.ts +6 -1
- package/dist/key-clause.d.ts.map +1 -1
- package/dist/key-clause.js +12 -13
- package/dist/key-clause.js.map +1 -1
- package/dist/model-types.d.ts +123 -7
- package/dist/model-types.d.ts.map +1 -1
- package/dist/model.d.ts +4 -2
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +13 -3
- package/dist/model.js.map +1 -1
- package/dist/object-dependencies.d.ts +18 -0
- package/dist/object-dependencies.d.ts.map +1 -0
- package/dist/object-dependencies.js +351 -0
- package/dist/object-dependencies.js.map +1 -0
- package/dist/on-cluster.d.ts.map +1 -1
- package/dist/on-cluster.js +18 -9
- package/dist/on-cluster.js.map +1 -1
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +144 -81
- package/dist/planner.js.map +1 -1
- package/dist/projection.d.ts.map +1 -1
- package/dist/projection.js +5 -40
- package/dist/projection.js.map +1 -1
- package/dist/schema-loader.d.ts +2 -0
- package/dist/schema-loader.d.ts.map +1 -1
- package/dist/schema-loader.js +72 -5
- package/dist/schema-loader.js.map +1 -1
- package/dist/sql-lexer.d.ts +29 -0
- package/dist/sql-lexer.d.ts.map +1 -0
- package/dist/sql-lexer.js +220 -0
- package/dist/sql-lexer.js.map +1 -0
- package/dist/sql-normalizer.d.ts +48 -0
- package/dist/sql-normalizer.d.ts.map +1 -1
- package/dist/sql-normalizer.js +118 -1
- package/dist/sql-normalizer.js.map +1 -1
- package/dist/sql-scan.d.ts +20 -0
- package/dist/sql-scan.d.ts.map +1 -0
- package/dist/sql-scan.js +82 -0
- package/dist/sql-scan.js.map +1 -0
- package/dist/sql-splitter.d.ts.map +1 -1
- package/dist/sql-splitter.js +52 -5
- package/dist/sql-splitter.js.map +1 -1
- package/dist/sql.d.ts +9 -1
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +95 -36
- package/dist/sql.js.map +1 -1
- package/dist/text-index-sql.d.ts +6 -0
- package/dist/text-index-sql.d.ts.map +1 -0
- package/dist/text-index-sql.js +200 -0
- package/dist/text-index-sql.js.map +1 -0
- package/dist/text-index.d.ts +10 -0
- package/dist/text-index.d.ts.map +1 -0
- package/dist/text-index.js +121 -0
- package/dist/text-index.js.map +1 -0
- package/dist/ts-import.d.ts.map +1 -1
- package/dist/ts-import.js +23 -3
- package/dist/ts-import.js.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +350 -3
- package/dist/validate.js.map +1 -1
- package/package.json +1 -1
- package/dist/utils.d.ts +0 -2
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js +0 -2
- package/dist/utils.js.map +0 -1
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { isPlainColumnReference } from './key-clause.js';
|
|
2
|
+
import { findQuoteEnd } from './sql-scan.js';
|
|
3
|
+
// ASCII control characters (incl. NUL). ClickHouse cannot round-trip them in a
|
|
4
|
+
// name reliably, and they are never intentional in a schema object name.
|
|
5
|
+
function hasControlCharacter(name) {
|
|
6
|
+
for (let i = 0; i < name.length; i += 1) {
|
|
7
|
+
const code = name.charCodeAt(i);
|
|
8
|
+
if (code <= 0x1f || code === 0x7f)
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Wraps a name in backticks, escaping backslashes and backticks so the name can
|
|
15
|
+
* never terminate the quoted identifier early. Matches ClickHouse's own
|
|
16
|
+
* formatting of quoted identifiers.
|
|
17
|
+
*/
|
|
18
|
+
export function quoteIdentifier(name) {
|
|
19
|
+
return `\`${name.replace(/\\/g, '\\\\').replace(/`/g, '\\`')}\``;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Renders a database or object name. Plain identifiers stay bare so generated
|
|
23
|
+
* SQL is unchanged for existing schemas; anything else is quoted and escaped.
|
|
24
|
+
*/
|
|
25
|
+
export function renderIdentifier(name) {
|
|
26
|
+
return isPlainColumnReference(name) ? name : quoteIdentifier(name);
|
|
27
|
+
}
|
|
28
|
+
export function renderQualifiedName(database, name) {
|
|
29
|
+
return `${renderIdentifier(database)}.${renderIdentifier(name)}`;
|
|
30
|
+
}
|
|
31
|
+
/** Returns why a name cannot be used as a ClickHouse identifier, if it can't. */
|
|
32
|
+
export function describeInvalidIdentifier(name) {
|
|
33
|
+
if (name.length === 0)
|
|
34
|
+
return 'is empty';
|
|
35
|
+
if (hasControlCharacter(name))
|
|
36
|
+
return 'contains a control character';
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Replaces every backtick-quoted identifier in a SQL fragment with its raw,
|
|
41
|
+
* unescaped name, leaving string literals untouched. Used to compare clauses
|
|
42
|
+
* that ClickHouse re-renders with its own quoting (e.g. key clauses in drift).
|
|
43
|
+
*/
|
|
44
|
+
export function unquoteIdentifiers(sql) {
|
|
45
|
+
let out = '';
|
|
46
|
+
let i = 0;
|
|
47
|
+
while (i < sql.length) {
|
|
48
|
+
const char = sql[i];
|
|
49
|
+
if (char === "'") {
|
|
50
|
+
const end = findQuoteEnd(sql, i, "'");
|
|
51
|
+
out += sql.slice(i, end + 1);
|
|
52
|
+
i = end + 1;
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
if (char === '`') {
|
|
56
|
+
const end = findQuoteEnd(sql, i, '`');
|
|
57
|
+
out += unescapeQuoted(sql.slice(i + 1, end));
|
|
58
|
+
i = end + 1;
|
|
59
|
+
continue;
|
|
60
|
+
}
|
|
61
|
+
out += char;
|
|
62
|
+
i += 1;
|
|
63
|
+
}
|
|
64
|
+
return out;
|
|
65
|
+
}
|
|
66
|
+
export function unescapeQuoted(body, quote = '`') {
|
|
67
|
+
return body.replace(new RegExp(`\\\\(.)|${quote}${quote}`, 'g'), (_match, escaped) => escaped ?? quote);
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=identifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"identifier.js","sourceRoot":"","sources":["../src/identifier.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,+EAA+E;AAC/E,yEAAyE;AACzE,SAAS,mBAAmB,CAAC,IAAY;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;IAChD,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAA;AAClE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AACpE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAgB,EAAE,IAAY;IAChE,OAAO,GAAG,gBAAgB,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAA;AAClE,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,yBAAyB,CAAC,IAAY;IACpD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,UAAU,CAAA;IACxC,IAAI,mBAAmB,CAAC,IAAI,CAAC;QAAE,OAAO,8BAA8B,CAAA;IACpE,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,CAAC,GAAG,CAAC,CAAA;IACT,OAAO,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;YACrC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;YAC5B,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;YACX,SAAQ;QACV,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAA;YACrC,GAAG,IAAI,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAA;YAC5C,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;YACX,SAAQ;QACV,CAAC;QACD,GAAG,IAAI,IAAI,CAAA;QACX,CAAC,IAAI,CAAC,CAAA;IACR,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,KAAK,GAAG,GAAG;IACtD,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,WAAW,KAAK,GAAG,KAAK,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,OAA2B,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,CAAC,CAAA;AAC7H,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
export * from './flags.js';
|
|
2
2
|
export * from './model.js';
|
|
3
|
+
export { isKafkaEngine, parseKafkaSettings, kafkaSettingFingerprint } from './kafka.js';
|
|
4
|
+
export { findQuoteEnd, findTopLevelSQLPattern, isQuoteChar, stripWrappingParens, } from './sql-scan.js';
|
|
3
5
|
export { SYNTHESIZED_CONFIG_PATH, isSynthesizedConfigPath } from './config-path.js';
|
|
4
|
-
export {
|
|
6
|
+
export { hasConflictMarkers } from './conflict-markers.js';
|
|
7
|
+
export { canonicalizeDefinition, canonicalizeDefinitions, collectDefinitionsFromModule, definitionKey, } from './canonical.js';
|
|
5
8
|
export { planDiff } from './planner.js';
|
|
6
9
|
export { createSnapshot } from './snapshot.js';
|
|
10
|
+
export { TEXT_INDEX_GRANULARITY, canonicalizeTextIndex, normalizeTextIndexSQL, parseTextIndexParams, renderTextIndexType, textIndexFingerprint, } from './text-index.js';
|
|
7
11
|
export { splitTopLevelComma } from './key-clause.js';
|
|
12
|
+
export { insertColumnList } from './insert-columns.js';
|
|
13
|
+
export { quoteIdentifier, renderIdentifier, renderQualifiedName, unquoteIdentifiers, } from './identifier.js';
|
|
14
|
+
export { parseColumnDefault, renderDefault, type ParsedColumnDefault } from './column-default.js';
|
|
8
15
|
export { isIndexProjection, normalizeProjectionIndex } from './projection.js';
|
|
9
|
-
export { normalizeEngine, normalizeSQLFragment } from './sql-normalizer.js';
|
|
10
|
-
export { toCreateSQL } from './sql.js';
|
|
16
|
+
export { isSyntheticEphemeralDefault, normalizeEngine, normalizeSQLFragment, sqlExpressionFingerprint, } from './sql-normalizer.js';
|
|
17
|
+
export { renderDictionarySQL, renderKeyClauseColumns, toCreateSQL } from './sql.js';
|
|
11
18
|
export { applyOnClusterToPlan, onClusterClause } from './on-cluster.js';
|
|
12
19
|
export { canonicalizeCodec, codec, codecsEqual, isGeneralCodec, isPreprocessorCodec, isRawCodec, parseCodec, renderCodec, } from './codec.js';
|
|
13
20
|
export { assertValidDefinitions, validateDefinitions } from './validate.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACvF,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EACL,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
export * from './flags.js';
|
|
2
2
|
export * from './model.js';
|
|
3
|
+
export { isKafkaEngine, parseKafkaSettings, kafkaSettingFingerprint } from './kafka.js';
|
|
4
|
+
export { findQuoteEnd, findTopLevelSQLPattern, isQuoteChar, stripWrappingParens, } from './sql-scan.js';
|
|
3
5
|
export { SYNTHESIZED_CONFIG_PATH, isSynthesizedConfigPath } from './config-path.js';
|
|
4
|
-
export {
|
|
6
|
+
export { hasConflictMarkers } from './conflict-markers.js';
|
|
7
|
+
export { canonicalizeDefinition, canonicalizeDefinitions, collectDefinitionsFromModule, definitionKey, } from './canonical.js';
|
|
5
8
|
export { planDiff } from './planner.js';
|
|
6
9
|
export { createSnapshot } from './snapshot.js';
|
|
10
|
+
export { TEXT_INDEX_GRANULARITY, canonicalizeTextIndex, normalizeTextIndexSQL, parseTextIndexParams, renderTextIndexType, textIndexFingerprint, } from './text-index.js';
|
|
7
11
|
export { splitTopLevelComma } from './key-clause.js';
|
|
12
|
+
export { insertColumnList } from './insert-columns.js';
|
|
13
|
+
export { quoteIdentifier, renderIdentifier, renderQualifiedName, unquoteIdentifiers, } from './identifier.js';
|
|
14
|
+
export { parseColumnDefault, renderDefault } from './column-default.js';
|
|
8
15
|
export { isIndexProjection, normalizeProjectionIndex } from './projection.js';
|
|
9
|
-
export { normalizeEngine, normalizeSQLFragment } from './sql-normalizer.js';
|
|
10
|
-
export { toCreateSQL } from './sql.js';
|
|
16
|
+
export { isSyntheticEphemeralDefault, normalizeEngine, normalizeSQLFragment, sqlExpressionFingerprint, } from './sql-normalizer.js';
|
|
17
|
+
export { renderDictionarySQL, renderKeyClauseColumns, toCreateSQL } from './sql.js';
|
|
11
18
|
export { applyOnClusterToPlan, onClusterClause } from './on-cluster.js';
|
|
12
19
|
export { canonicalizeCodec, codec, codecsEqual, isGeneralCodec, isPreprocessorCodec, isRawCodec, parseCodec, renderCodec, } from './codec.js';
|
|
13
20
|
export { assertValidDefinitions, validateDefinitions } from './validate.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAA;AACvF,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,WAAW,EACX,mBAAmB,GACpB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAA;AACnF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,aAAa,GACd,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AACtD,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAA4B,MAAM,qBAAqB,CAAA;AACjG,OAAO,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAA;AAC7E,OAAO,EACL,2BAA2B,EAC3B,eAAe,EACf,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACnF,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EACL,iBAAiB,EACjB,KAAK,EACL,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,UAAU,EACV,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAC3E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAyB,MAAM,mBAAmB,CAAA;AAC5F,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { TableDefinition } from './model-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The INSERT column list for `INSERT ... FORMAT JSONEachRow`, or `undefined`
|
|
4
|
+
* for a table without EPHEMERAL columns. Without a list ClickHouse treats
|
|
5
|
+
* EPHEMERAL keys as unknown fields and drops them, so the list names every
|
|
6
|
+
* insertable column. Omitted keys still receive their defaults.
|
|
7
|
+
*
|
|
8
|
+
* A `Nested(...)` column is listed by its `name.field` subcolumns: with the
|
|
9
|
+
* default `flatten_nested = 1` those are the table's real columns, and the
|
|
10
|
+
* Nested name itself is rejected as an unknown column.
|
|
11
|
+
*/
|
|
12
|
+
export declare function insertColumnList(table: TableDefinition): string[] | undefined;
|
|
13
|
+
//# sourceMappingURL=insert-columns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-columns.d.ts","sourceRoot":"","sources":["../src/insert-columns.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAEvD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,EAAE,GAAG,SAAS,CAS7E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { renderIdentifier, unescapeQuoted } from './identifier.js';
|
|
2
|
+
import { findQuoteEnd } from './sql-scan.js';
|
|
3
|
+
import { splitTopLevelComma } from './key-clause.js';
|
|
4
|
+
/**
|
|
5
|
+
* The INSERT column list for `INSERT ... FORMAT JSONEachRow`, or `undefined`
|
|
6
|
+
* for a table without EPHEMERAL columns. Without a list ClickHouse treats
|
|
7
|
+
* EPHEMERAL keys as unknown fields and drops them, so the list names every
|
|
8
|
+
* insertable column. Omitted keys still receive their defaults.
|
|
9
|
+
*
|
|
10
|
+
* A `Nested(...)` column is listed by its `name.field` subcolumns: with the
|
|
11
|
+
* default `flatten_nested = 1` those are the table's real columns, and the
|
|
12
|
+
* Nested name itself is rejected as an unknown column.
|
|
13
|
+
*/
|
|
14
|
+
export function insertColumnList(table) {
|
|
15
|
+
if (!table.columns.some((column) => column.defaultKind === 'EPHEMERAL'))
|
|
16
|
+
return undefined;
|
|
17
|
+
return table.columns
|
|
18
|
+
.filter((column) => column.defaultKind !== 'MATERIALIZED' && column.defaultKind !== 'ALIAS')
|
|
19
|
+
.flatMap((column) => {
|
|
20
|
+
const fields = nestedFieldNames(column.type);
|
|
21
|
+
return fields ? fields.map((field) => `${column.name}.${field}`) : [column.name];
|
|
22
|
+
})
|
|
23
|
+
.map(renderIdentifier);
|
|
24
|
+
}
|
|
25
|
+
function nestedFieldNames(type) {
|
|
26
|
+
const fields = /^Nested\s*\((.*)\)$/s.exec(type.trim())?.[1];
|
|
27
|
+
return fields === undefined ? undefined : splitTopLevelComma(fields).map(nestedFieldName);
|
|
28
|
+
}
|
|
29
|
+
/** The leading name of a `name Type` field, unquoting a backticked or double-quoted name. */
|
|
30
|
+
function nestedFieldName(field) {
|
|
31
|
+
const quote = field.charAt(0);
|
|
32
|
+
if (quote !== '`' && quote !== '"')
|
|
33
|
+
return field.split(/\s/, 1)[0] ?? field;
|
|
34
|
+
return unescapeQuoted(field.slice(1, findQuoteEnd(field, 0, quote)), quote);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=insert-columns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insert-columns.js","sourceRoot":"","sources":["../src/insert-columns.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAGpD;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,WAAW,CAAC;QAAE,OAAO,SAAS,CAAA;IACzF,OAAO,KAAK,CAAC,OAAO;SACjB,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,KAAK,cAAc,IAAI,MAAM,CAAC,WAAW,KAAK,OAAO,CAAC;SAC3F,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAClF,CAAC,CAAC;SACD,GAAG,CAAC,gBAAgB,CAAC,CAAA;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC5D,OAAO,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;AAC3F,CAAC;AAED,6FAA6F;AAC7F,SAAS,eAAe,CAAC,KAAa;IACpC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAA;IAC3E,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AAC7E,CAAC"}
|
package/dist/kafka.d.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare function isKafkaEngine(engine: string): boolean;
|
|
2
|
+
/** Kafka has literal settings; existing engines retain their raw SQL setting contract. */
|
|
3
|
+
export declare function renderKafkaSetting(value: string | number | boolean): string;
|
|
4
|
+
/** Decode a ClickHouse literal from SHOW CREATE, without evaluating expressions. */
|
|
5
|
+
export declare function parseKafkaSetting(value: string): string | number | boolean;
|
|
6
|
+
export declare function parseKafkaSettings(settings: Record<string, string>): Record<string, string | number | boolean>;
|
|
7
|
+
export declare function kafkaSettingFingerprint(value: string | number | boolean): string;
|
|
8
|
+
export declare function normalizeKafkaEngine(engine: string): string;
|
|
9
|
+
//# sourceMappingURL=kafka.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka.d.ts","sourceRoot":"","sources":["../src/kafka.ts"],"names":[],"mappings":"AAEA,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,0FAA0F;AAC1F,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAK3E;AAED,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAkC1E;AAED,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,CAI3C;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAEhF;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQ3D"}
|
package/dist/kafka.js
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { splitTopLevelComma } from './key-clause.js';
|
|
2
|
+
export function isKafkaEngine(engine) {
|
|
3
|
+
return /^Kafka\s*(?:\(|$)/i.test(engine.trim());
|
|
4
|
+
}
|
|
5
|
+
/** Kafka has literal settings; existing engines retain their raw SQL setting contract. */
|
|
6
|
+
export function renderKafkaSetting(value) {
|
|
7
|
+
if (typeof value === 'string') {
|
|
8
|
+
return `'${value.replace(/\\/g, '\\\\').replace(/'/g, "''")}'`;
|
|
9
|
+
}
|
|
10
|
+
return typeof value === 'boolean' ? (value ? '1' : '0') : String(value);
|
|
11
|
+
}
|
|
12
|
+
/** Decode a ClickHouse literal from SHOW CREATE, without evaluating expressions. */
|
|
13
|
+
export function parseKafkaSetting(value) {
|
|
14
|
+
const trimmed = value.trim();
|
|
15
|
+
if (trimmed.startsWith("'") && trimmed.endsWith("'")) {
|
|
16
|
+
const escapes = {
|
|
17
|
+
n: '\n',
|
|
18
|
+
r: '\r',
|
|
19
|
+
t: '\t',
|
|
20
|
+
b: '\b',
|
|
21
|
+
f: '\f',
|
|
22
|
+
a: '\u0007',
|
|
23
|
+
v: '\v',
|
|
24
|
+
'0': '\0',
|
|
25
|
+
N: '',
|
|
26
|
+
'\\': '\\',
|
|
27
|
+
"'": "'",
|
|
28
|
+
'"': '"',
|
|
29
|
+
};
|
|
30
|
+
const bytes = [];
|
|
31
|
+
const encoder = new TextEncoder();
|
|
32
|
+
for (const token of trimmed.slice(1, -1).match(/\\x[\da-fA-F]{2}|\\[\s\S]|''|[\s\S]/gu) ?? []) {
|
|
33
|
+
if (/^\\x[\da-fA-F]{2}$/.test(token))
|
|
34
|
+
bytes.push(Number.parseInt(token.slice(2), 16));
|
|
35
|
+
else {
|
|
36
|
+
const decoded = token === "''" ? "'" : token.startsWith('\\') ? (escapes[token[1] ?? ''] ?? token) : token;
|
|
37
|
+
bytes.push(...encoder.encode(decoded));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return new TextDecoder().decode(new Uint8Array(bytes));
|
|
41
|
+
}
|
|
42
|
+
if (/^(true|false)$/i.test(trimmed))
|
|
43
|
+
return trimmed.toLowerCase() === 'true';
|
|
44
|
+
if (/^-?\d+(?:\.\d+)?$/.test(trimmed) && Number.isSafeInteger(Number(trimmed)))
|
|
45
|
+
return Number(trimmed);
|
|
46
|
+
// Keep large integers lossless. String comparison handles numeric metadata.
|
|
47
|
+
return trimmed;
|
|
48
|
+
}
|
|
49
|
+
export function parseKafkaSettings(settings) {
|
|
50
|
+
return Object.fromEntries(Object.entries(settings).map(([key, value]) => [key, parseKafkaSetting(value)]));
|
|
51
|
+
}
|
|
52
|
+
export function kafkaSettingFingerprint(value) {
|
|
53
|
+
return typeof value === 'boolean' ? (value ? '1' : '0') : String(value);
|
|
54
|
+
}
|
|
55
|
+
export function normalizeKafkaEngine(engine) {
|
|
56
|
+
const args = engine.trim().match(/^Kafka\s*\(([\s\S]*)\)$/i)?.[1] ?? '';
|
|
57
|
+
return `Kafka(${splitTopLevelComma(args)
|
|
58
|
+
.map((arg) => {
|
|
59
|
+
const parsed = parseKafkaSetting(arg);
|
|
60
|
+
return arg.trim().startsWith("'") ? renderKafkaSetting(parsed) : arg.trim();
|
|
61
|
+
})
|
|
62
|
+
.join(', ')})`;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=kafka.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kafka.js","sourceRoot":"","sources":["../src/kafka.ts"],"names":[],"mappings":"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"}
|
package/dist/key-clause.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export declare function splitTopLevelComma(input: string): string[];
|
|
2
|
-
|
|
2
|
+
/**
|
|
3
|
+
* Flattens key entries into one token per key part. An entry may hold several
|
|
4
|
+
* comma-separated parts (`'id, toDate(ts)'`), but one that exactly names a
|
|
5
|
+
* declared column is kept whole, since the name itself may contain a comma.
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeKeyColumns(values: string[] | undefined, declaredColumns?: ReadonlySet<string>): string[];
|
|
3
8
|
/**
|
|
4
9
|
* A key entry references a table column only when it is a bare identifier.
|
|
5
10
|
* Anything else — function calls like `toDate(ts)`, arithmetic, or tuples — is
|
package/dist/key-clause.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-clause.d.ts","sourceRoot":"","sources":["../src/key-clause.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"key-clause.d.ts","sourceRoot":"","sources":["../src/key-clause.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAyC1D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,EAC5B,eAAe,GAAE,WAAW,CAAC,MAAM,CAAa,GAC/C,MAAM,EAAE,CAIV;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
package/dist/key-clause.js
CHANGED
|
@@ -1,20 +1,14 @@
|
|
|
1
|
+
import { findQuoteEnd, isQuoteChar } from './sql-scan.js';
|
|
1
2
|
export function splitTopLevelComma(input) {
|
|
2
3
|
const out = [];
|
|
3
4
|
let current = '';
|
|
4
5
|
let depth = 0;
|
|
5
|
-
let quote = null;
|
|
6
6
|
for (let i = 0; i < input.length; i += 1) {
|
|
7
7
|
const char = input[i] ?? '';
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
current +=
|
|
11
|
-
|
|
12
|
-
quote = null;
|
|
13
|
-
continue;
|
|
14
|
-
}
|
|
15
|
-
if (char === "'" || char === '"' || char === '`') {
|
|
16
|
-
quote = char;
|
|
17
|
-
current += char;
|
|
8
|
+
if (isQuoteChar(char)) {
|
|
9
|
+
const end = findQuoteEnd(input, i, char);
|
|
10
|
+
current += input.slice(i, end + 1);
|
|
11
|
+
i = end;
|
|
18
12
|
continue;
|
|
19
13
|
}
|
|
20
14
|
if (char === '(') {
|
|
@@ -41,8 +35,13 @@ export function splitTopLevelComma(input) {
|
|
|
41
35
|
out.push(tail);
|
|
42
36
|
return out;
|
|
43
37
|
}
|
|
44
|
-
|
|
45
|
-
|
|
38
|
+
/**
|
|
39
|
+
* Flattens key entries into one token per key part. An entry may hold several
|
|
40
|
+
* comma-separated parts (`'id, toDate(ts)'`), but one that exactly names a
|
|
41
|
+
* declared column is kept whole, since the name itself may contain a comma.
|
|
42
|
+
*/
|
|
43
|
+
export function normalizeKeyColumns(values, declaredColumns = new Set()) {
|
|
44
|
+
return (values ?? []).flatMap((value) => declaredColumns.has(value.trim()) ? [value.trim()] : splitTopLevelComma(value.trim()));
|
|
46
45
|
}
|
|
47
46
|
const PLAIN_COLUMN_REFERENCE = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
48
47
|
/**
|
package/dist/key-clause.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"key-clause.js","sourceRoot":"","sources":["../src/key-clause.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,KAAK,GAAG,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"key-clause.js","sourceRoot":"","sources":["../src/key-clause.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEzD,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAE3B,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,GAAG,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAA;YACxC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAA;YAClC,CAAC,GAAG,GAAG,CAAA;YACP,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,IAAI,CAAC,CAAA;YACV,OAAO,IAAI,IAAI,CAAA;YACf,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YAC9B,OAAO,IAAI,IAAI,CAAA;YACf,SAAQ;QACV,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;YAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrC,OAAO,GAAG,EAAE,CAAA;YACZ,SAAQ;QACV,CAAC;QAED,OAAO,IAAI,IAAI,CAAA;IACjB,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;IAC3B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;QAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAEnC,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA4B,EAC5B,kBAAuC,IAAI,GAAG,EAAE;IAEhD,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACtC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CACtF,CAAA;AACH,CAAC;AAED,MAAM,sBAAsB,GAAG,0BAA0B,CAAA;AAEzD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa;IAClD,OAAO,sBAAsB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3C,CAAC"}
|
package/dist/model-types.d.ts
CHANGED
|
@@ -36,12 +36,47 @@ export interface RawColumnCodec {
|
|
|
36
36
|
export type ColumnCodec = GeneralColumnCodec | PreprocessingColumnCodec | RawColumnCodec;
|
|
37
37
|
/** Single codec or a chain (preprocessors then exactly one general codec). */
|
|
38
38
|
export type ColumnCodecSpec = ColumnCodec | ColumnCodec[];
|
|
39
|
+
export type ColumnDefaultKind = 'DEFAULT' | 'MATERIALIZED' | 'ALIAS' | 'EPHEMERAL';
|
|
40
|
+
/**
|
|
41
|
+
* Raw ClickHouse SQL, rendered unquoted (trimmed, with SQL comments removed)
|
|
42
|
+
* where chkit would otherwise render a literal: a column
|
|
43
|
+
* `default: { expression: 'now64(3)' }` renders `DEFAULT now64(3)`.
|
|
44
|
+
*/
|
|
45
|
+
export interface SQLExpression {
|
|
46
|
+
expression: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* A column default: a literal (strings are single-quoted, numbers and booleans
|
|
50
|
+
* render as written) or a {@link SQLExpression} rendered as SQL.
|
|
51
|
+
*/
|
|
52
|
+
export type ColumnDefaultValue = string | number | boolean | SQLExpression;
|
|
39
53
|
export interface ColumnDefinition {
|
|
40
54
|
name: string;
|
|
41
55
|
type: PrimitiveColumnType | string;
|
|
42
56
|
renamedFrom?: string;
|
|
43
57
|
nullable?: boolean;
|
|
44
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Value of the column's `defaultKind` clause (`DEFAULT` unless set).
|
|
60
|
+
* - `'pending'` → `DEFAULT 'pending'` (a string is always a literal)
|
|
61
|
+
* - `0` / `false` → `DEFAULT 0` / `DEFAULT false`
|
|
62
|
+
* - `{ expression: 'now64(3)' }` → `DEFAULT now64(3)` (SQL; comments are
|
|
63
|
+
* dropped when rendered)
|
|
64
|
+
*
|
|
65
|
+
* `'fn:now64(3)'` is the legacy spelling of `{ expression: 'now64(3)' }`;
|
|
66
|
+
* snapshots store both as the `fn:` string. `generate` rejects a plain string
|
|
67
|
+
* that starts with a function call as the `DEFAULT` of a column that cannot
|
|
68
|
+
* hold a string (`column_default_looks_like_expression`), and any plain
|
|
69
|
+
* string on a `MATERIALIZED` or `ALIAS` column (`column_expression_requires_fn`).
|
|
70
|
+
*/
|
|
71
|
+
default?: ColumnDefaultValue;
|
|
72
|
+
/**
|
|
73
|
+
* How ClickHouse uses `default`: `DEFAULT` (the implicit kind),
|
|
74
|
+
* `MATERIALIZED`, `ALIAS`, or `EPHEMERAL`. The literal and `{ expression }`
|
|
75
|
+
* forms of `default` work for every kind:
|
|
76
|
+
* `{ defaultKind: 'MATERIALIZED', default: { expression: 'toDate(ts)' } }`
|
|
77
|
+
* renders `MATERIALIZED toDate(ts)`.
|
|
78
|
+
*/
|
|
79
|
+
defaultKind?: ColumnDefaultKind;
|
|
45
80
|
comment?: string;
|
|
46
81
|
codec?: ColumnCodecSpec;
|
|
47
82
|
}
|
|
@@ -50,6 +85,21 @@ interface SkipIndexBase {
|
|
|
50
85
|
expression: string;
|
|
51
86
|
granularity: number;
|
|
52
87
|
}
|
|
88
|
+
/** Full-text index. ClickHouse ignores granularity and uses one index per part. */
|
|
89
|
+
export interface TextSkipIndex extends Omit<SkipIndexBase, 'granularity'> {
|
|
90
|
+
type: 'text';
|
|
91
|
+
/** SQL tokenizer, e.g. splitByNonAlpha or splitByString([' ', ';']). */
|
|
92
|
+
tokenizer: string;
|
|
93
|
+
granularity?: number;
|
|
94
|
+
preprocessor?: string;
|
|
95
|
+
/** Requires a ClickHouse version that supports postprocessing. */
|
|
96
|
+
postprocessor?: string;
|
|
97
|
+
supportPhraseSearch?: boolean;
|
|
98
|
+
dictionaryBlockSize?: number;
|
|
99
|
+
dictionaryBlockFrontcodingCompression?: boolean;
|
|
100
|
+
postingListBlockSize?: number;
|
|
101
|
+
postingListCodec?: 'none' | 'bitpacking';
|
|
102
|
+
}
|
|
53
103
|
/**
|
|
54
104
|
* Skip index with structured, discriminated args per type. Arg signatures
|
|
55
105
|
* come from ClickHouse MergeTree docs:
|
|
@@ -58,11 +108,12 @@ interface SkipIndexBase {
|
|
|
58
108
|
* - `bloom_filter([false_positive_rate])` — optional float, default 0.025
|
|
59
109
|
* - `tokenbf_v1(size_bytes, n_hash, seed)` — 3 required ints
|
|
60
110
|
* - `ngrambf_v1(n, size_bytes, n_hash, seed)` — 4 required ints
|
|
111
|
+
* - `text(tokenizer = ..., ...)` — named parameters, automatic granularity
|
|
61
112
|
*
|
|
62
113
|
* ClickHouse 26+ requires `set(0)` not bare `set`; `maxRows` is required
|
|
63
114
|
* so this is encoded naturally.
|
|
64
115
|
*/
|
|
65
|
-
export type SkipIndexDefinition = SkipIndexBase & ({
|
|
116
|
+
export type SkipIndexDefinition = TextSkipIndex | SkipIndexBase & ({
|
|
66
117
|
type: 'minmax';
|
|
67
118
|
} | {
|
|
68
119
|
type: 'set';
|
|
@@ -122,6 +173,21 @@ export interface TableDefinition {
|
|
|
122
173
|
comment?: string;
|
|
123
174
|
plugins?: TablePlugins;
|
|
124
175
|
}
|
|
176
|
+
/** Omitted primary keys inherit ORDER BY, matching ClickHouse MergeTree semantics. */
|
|
177
|
+
export type TableInput = Omit<TableDefinition, 'kind' | 'primaryKey'> & {
|
|
178
|
+
primaryKey?: string[];
|
|
179
|
+
};
|
|
180
|
+
/** Kafka queues do not have MergeTree sorting/storage clauses. */
|
|
181
|
+
export type KafkaTableInput = Omit<TableDefinition, 'kind' | 'engine' | 'primaryKey' | 'orderBy' | 'partitionBy' | 'uniqueKey' | 'ttl' | 'indexes' | 'projections'> & {
|
|
182
|
+
engine: 'Kafka' | `Kafka(${string})`;
|
|
183
|
+
primaryKey?: never;
|
|
184
|
+
orderBy?: never;
|
|
185
|
+
partitionBy?: never;
|
|
186
|
+
uniqueKey?: never;
|
|
187
|
+
ttl?: never;
|
|
188
|
+
indexes?: never;
|
|
189
|
+
projections?: never;
|
|
190
|
+
};
|
|
125
191
|
export interface ViewDefinition {
|
|
126
192
|
kind: 'view';
|
|
127
193
|
database: string;
|
|
@@ -154,7 +220,45 @@ export interface MaterializedViewDefinition {
|
|
|
154
220
|
as: string;
|
|
155
221
|
comment?: string;
|
|
156
222
|
}
|
|
157
|
-
export
|
|
223
|
+
export interface DictionaryAttribute {
|
|
224
|
+
name: string;
|
|
225
|
+
type: PrimitiveColumnType | string;
|
|
226
|
+
/** DEFAULT / null_value for missing keys. A literal: ClickHouse accepts no expression here. */
|
|
227
|
+
default?: string | number | boolean;
|
|
228
|
+
/** EXPRESSION — computed from source columns. Mutually exclusive with default. */
|
|
229
|
+
expression?: string;
|
|
230
|
+
hierarchical?: boolean;
|
|
231
|
+
/** Enables bidirectional parent/child lookups. Only valid alongside hierarchical. */
|
|
232
|
+
bidirectional?: boolean;
|
|
233
|
+
injective?: boolean;
|
|
234
|
+
isObjectId?: boolean;
|
|
235
|
+
}
|
|
236
|
+
export interface DictionaryDefinition {
|
|
237
|
+
kind: 'dictionary';
|
|
238
|
+
database: string;
|
|
239
|
+
name: string;
|
|
240
|
+
renamedFrom?: {
|
|
241
|
+
database?: string;
|
|
242
|
+
name: string;
|
|
243
|
+
};
|
|
244
|
+
attributes: DictionaryAttribute[];
|
|
245
|
+
primaryKey: string[];
|
|
246
|
+
/** Raw SOURCE(...) body, e.g. `MYSQL(host '...' password '${env}' ...)`. */
|
|
247
|
+
source: string;
|
|
248
|
+
/** Raw LAYOUT(...) body, e.g. `HASHED()` / `COMPLEX_KEY_HASHED()`. */
|
|
249
|
+
layout: string;
|
|
250
|
+
/** Raw LIFETIME(...) body, e.g. `300` / `MIN 300 MAX 360`. */
|
|
251
|
+
lifetime: string;
|
|
252
|
+
/** RANGE(MIN ... MAX ...) — required by RANGE_HASHED / COMPLEX_KEY_RANGE_HASHED layouts. */
|
|
253
|
+
range?: {
|
|
254
|
+
min: string;
|
|
255
|
+
max: string;
|
|
256
|
+
};
|
|
257
|
+
/** Raw SETTINGS(...) key/value pairs. */
|
|
258
|
+
settings?: Record<string, string | number>;
|
|
259
|
+
comment?: string;
|
|
260
|
+
}
|
|
261
|
+
export type SchemaDefinition = TableDefinition | ViewDefinition | MaterializedViewDefinition | DictionaryDefinition;
|
|
158
262
|
export interface ChxCheckConfig {
|
|
159
263
|
failOnPending?: boolean;
|
|
160
264
|
failOnChecksumMismatch?: boolean;
|
|
@@ -199,9 +303,19 @@ export interface ChxInlinePluginRegistration<TPlugin = unknown, TOptions extends
|
|
|
199
303
|
enabled?: boolean;
|
|
200
304
|
options?: TOptions;
|
|
201
305
|
}
|
|
202
|
-
export type ChxPluginRegistration = ChxInlinePluginRegistration
|
|
306
|
+
export type ChxPluginRegistration = ChxInlinePluginRegistration<unknown, object>;
|
|
203
307
|
export interface ChxUserConfig {
|
|
204
|
-
|
|
308
|
+
/**
|
|
309
|
+
* Glob patterns for schema files. Mutually exclusive with `entry`.
|
|
310
|
+
*/
|
|
311
|
+
schema?: string | string[];
|
|
312
|
+
/**
|
|
313
|
+
* Single project entry module. It is imported once: exported schema
|
|
314
|
+
* definitions are collected from it, and exported plugin-domain definitions
|
|
315
|
+
* (for example ingestion pipelines) are collected by their plugins. Mutually
|
|
316
|
+
* exclusive with `schema`.
|
|
317
|
+
*/
|
|
318
|
+
entry?: string;
|
|
205
319
|
outDir?: string;
|
|
206
320
|
migrationsDir?: string;
|
|
207
321
|
metaDir?: string;
|
|
@@ -212,6 +326,7 @@ export interface ChxUserConfig {
|
|
|
212
326
|
}
|
|
213
327
|
export interface ChxResolvedConfig {
|
|
214
328
|
schema: string[];
|
|
329
|
+
entry?: string;
|
|
215
330
|
outDir: string;
|
|
216
331
|
migrationsDir: string;
|
|
217
332
|
metaDir: string;
|
|
@@ -235,12 +350,13 @@ export interface SnapshotV1 {
|
|
|
235
350
|
}
|
|
236
351
|
export type Snapshot = SnapshotV1;
|
|
237
352
|
export type RiskLevel = 'safe' | 'caution' | 'danger';
|
|
238
|
-
export type MigrationOperationType = 'create_database' | 'create_table' | 'drop_table' | 'create_view' | 'drop_view' | 'create_materialized_view' | 'drop_materialized_view' | 'alter_materialized_view_modify_refresh' | 'alter_table_add_column' | 'alter_table_modify_column' | 'alter_table_drop_column' | 'alter_table_rename_column' | 'alter_table_rename_table' | 'alter_table_add_index' | 'alter_table_add_projection' | 'alter_table_modify_setting' | 'alter_table_drop_index' | 'alter_table_drop_projection' | 'alter_table_reset_setting' | 'alter_table_modify_ttl';
|
|
353
|
+
export type MigrationOperationType = 'create_database' | 'create_table' | 'drop_table' | 'create_view' | 'drop_view' | 'create_materialized_view' | 'drop_materialized_view' | 'alter_materialized_view_modify_refresh' | 'alter_table_add_column' | 'alter_table_modify_column' | 'alter_table_drop_column' | 'alter_table_rename_column' | 'alter_table_rename_table' | 'alter_table_add_index' | 'alter_table_add_projection' | 'alter_table_modify_setting' | 'alter_table_drop_index' | 'alter_table_drop_projection' | 'alter_table_reset_setting' | 'alter_table_modify_ttl' | 'create_dictionary' | 'drop_dictionary' | 'rename_dictionary';
|
|
239
354
|
export interface MigrationOperation {
|
|
240
355
|
type: MigrationOperationType;
|
|
241
356
|
key: string;
|
|
242
357
|
risk: RiskLevel;
|
|
243
358
|
sql: string;
|
|
359
|
+
warning?: string;
|
|
244
360
|
}
|
|
245
361
|
export interface ColumnRenameSuggestion {
|
|
246
362
|
kind: 'column';
|
|
@@ -259,7 +375,7 @@ export interface MigrationPlan {
|
|
|
259
375
|
riskSummary: Record<RiskLevel, number>;
|
|
260
376
|
renameSuggestions: ColumnRenameSuggestion[];
|
|
261
377
|
}
|
|
262
|
-
export type ValidationIssueCode = 'duplicate_object_name' | 'duplicate_column_name' | 'duplicate_index_name' | 'duplicate_projection_name' | 'projection_ambiguous_kind' | 'projection_empty_index' | 'primary_key_missing_column' | 'order_by_missing_column' | 'refresh_requires_every_or_after' | 'refresh_every_after_mutually_exclusive' | 'refresh_interval_format' | 'refresh_append_required_for_replicated_target' | 'refresh_depends_on_requires_every' | 'codec_chain_must_end_with_general' | 'codec_chain_multiple_general' | 'codec_chain_empty';
|
|
378
|
+
export type ValidationIssueCode = 'kafka_unsupported_clause' | 'kafka_column_default' | 'kafka_missing_setting' | 'kafka_invalid_setting' | 'kafka_change_requires_replacement' | 'column_kind_change_unsupported' | 'duplicate_object_name' | 'duplicate_column_name' | 'duplicate_index_name' | 'text_index_invalid_parameters' | 'duplicate_projection_name' | 'projection_ambiguous_kind' | 'projection_empty_index' | 'primary_key_missing_column' | 'order_by_missing_column' | 'refresh_requires_every_or_after' | 'refresh_every_after_mutually_exclusive' | 'refresh_interval_format' | 'refresh_append_required_for_replicated_target' | 'refresh_depends_on_requires_every' | 'codec_chain_must_end_with_general' | 'codec_chain_multiple_general' | 'codec_chain_empty' | 'column_default_kind_invalid' | 'column_expression_required' | 'column_expression_requires_fn' | 'column_kind_not_stored' | 'column_ephemeral_in_projection' | 'column_kind_codec_unsupported' | 'column_default_looks_like_expression' | 'column_default_invalid' | 'dictionary_missing_primary_key' | 'dictionary_primary_key_missing_attribute' | 'dictionary_missing_source' | 'dictionary_missing_layout' | 'dictionary_missing_lifetime' | 'dictionary_attribute_default_expression_exclusive' | 'dictionary_range_missing_attribute' | 'dictionary_bidirectional_requires_hierarchical' | 'invalid_identifier';
|
|
263
379
|
export interface ValidationIssue {
|
|
264
380
|
code: ValidationIssueCode;
|
|
265
381
|
kind: SchemaDefinition['kind'];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-types.d.ts","sourceRoot":"","sources":["../src/model-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,SAAS,GACT,MAAM,GACN,SAAS,GACT,MAAM,GACN,UAAU,GACV,YAAY,CAAA;AAEhB;;;GAGG;AACH,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,MAAM,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,CAAA;CAAE,GAChD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpC;;;GAGG;AACH,MAAM,MAAM,wBAAwB,GAChC;IAAE,IAAI,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;IAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;CAAE,GACnE;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,KAAK,CAAA;IACX,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,MAAM,WAAW,GAAG,kBAAkB,GAAG,wBAAwB,GAAG,cAAc,CAAA;AAExF,8EAA8E;AAC9E,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,WAAW,EAAE,CAAA;AAEzD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,mBAAmB,GAAG,MAAM,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,OAAO,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"model-types.d.ts","sourceRoot":"","sources":["../src/model-types.ts"],"names":[],"mappings":"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"}
|