@chkit/core 0.1.0-beta.9 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +67 -5
- package/dist/canonical.js.map +1 -1
- package/dist/codec.d.ts +23 -0
- package/dist/codec.d.ts.map +1 -0
- package/dist/codec.js +193 -0
- package/dist/codec.js.map +1 -0
- package/dist/config-path.d.ts +3 -0
- package/dist/config-path.d.ts.map +1 -0
- package/dist/config-path.js +5 -0
- package/dist/config-path.js.map +1 -0
- package/dist/diff-primitives.d.ts +5 -4
- package/dist/diff-primitives.d.ts.map +1 -1
- package/dist/flags.d.ts +26 -0
- package/dist/flags.d.ts.map +1 -1
- package/dist/flags.js +63 -17
- package/dist/flags.js.map +1 -1
- package/dist/index.d.ts +6 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/key-clause.d.ts +1 -1
- package/dist/key-clause.d.ts.map +1 -1
- package/dist/key-clause.js +1 -1
- package/dist/key-clause.js.map +1 -1
- package/dist/model-types.d.ts +108 -11
- package/dist/model-types.d.ts.map +1 -1
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +15 -0
- package/dist/model.js.map +1 -1
- package/dist/on-cluster.d.ts +17 -0
- package/dist/on-cluster.d.ts.map +1 -0
- package/dist/on-cluster.js +123 -0
- package/dist/on-cluster.js.map +1 -0
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +116 -13
- package/dist/planner.js.map +1 -1
- package/dist/schema-loader.d.ts.map +1 -1
- package/dist/schema-loader.js +2 -2
- package/dist/schema-loader.js.map +1 -1
- package/dist/sql-normalizer.d.ts +1 -0
- package/dist/sql-normalizer.d.ts.map +1 -1
- package/dist/sql-normalizer.js +7 -0
- package/dist/sql-normalizer.js.map +1 -1
- package/dist/sql-splitter.d.ts +3 -0
- package/dist/sql-splitter.d.ts.map +1 -0
- package/dist/sql-splitter.js +168 -0
- package/dist/sql-splitter.js.map +1 -0
- package/dist/sql.d.ts +8 -1
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +74 -3
- package/dist/sql.js.map +1 -1
- package/dist/ts-import.d.ts +12 -0
- package/dist/ts-import.d.ts.map +1 -0
- package/dist/ts-import.js +29 -0
- package/dist/ts-import.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +2 -0
- package/dist/utils.js.map +1 -0
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +68 -0
- package/dist/validate.js.map +1 -1
- package/package.json +24 -2
package/dist/sql.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { renderCodec } from './codec.js';
|
|
1
2
|
import { normalizeKeyColumns } from './key-clause.js';
|
|
2
3
|
import { assertValidDefinitions } from './validate.js';
|
|
3
4
|
function renderDefault(value) {
|
|
@@ -14,6 +15,8 @@ function renderColumn(col) {
|
|
|
14
15
|
out += ` DEFAULT ${renderDefault(col.default)}`;
|
|
15
16
|
if (col.comment)
|
|
16
17
|
out += ` COMMENT '${col.comment.replace(/'/g, "''")}'`;
|
|
18
|
+
if (col.codec)
|
|
19
|
+
out += ` ${renderCodec(col.codec)}`;
|
|
17
20
|
return out;
|
|
18
21
|
}
|
|
19
22
|
function renderKeyClauseColumns(columns) {
|
|
@@ -21,9 +24,25 @@ function renderKeyClauseColumns(columns) {
|
|
|
21
24
|
.map((column) => `\`${column}\``)
|
|
22
25
|
.join(', ');
|
|
23
26
|
}
|
|
27
|
+
function renderIndexType(idx) {
|
|
28
|
+
switch (idx.type) {
|
|
29
|
+
case 'minmax':
|
|
30
|
+
return 'minmax';
|
|
31
|
+
case 'set':
|
|
32
|
+
return `set(${idx.maxRows})`;
|
|
33
|
+
case 'bloom_filter':
|
|
34
|
+
return idx.falsePositiveRate !== undefined
|
|
35
|
+
? `bloom_filter(${idx.falsePositiveRate})`
|
|
36
|
+
: 'bloom_filter';
|
|
37
|
+
case 'tokenbf_v1':
|
|
38
|
+
return `tokenbf_v1(${idx.sizeBytes}, ${idx.hashFunctions}, ${idx.randomSeed})`;
|
|
39
|
+
case 'ngrambf_v1':
|
|
40
|
+
return `ngrambf_v1(${idx.ngramSize}, ${idx.sizeBytes}, ${idx.hashFunctions}, ${idx.randomSeed})`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
24
43
|
function renderTableSQL(def) {
|
|
25
44
|
const columns = def.columns.map(renderColumn);
|
|
26
|
-
const indexes = (def.indexes ?? []).map((idx) => `INDEX \`${idx.name}\` (${idx.expression}) TYPE ${idx
|
|
45
|
+
const indexes = (def.indexes ?? []).map((idx) => `INDEX \`${idx.name}\` (${idx.expression}) TYPE ${renderIndexType(idx)} GRANULARITY ${idx.granularity}`);
|
|
27
46
|
const projections = (def.projections ?? []).map((projection) => `PROJECTION \`${projection.name}\` (${projection.query})`);
|
|
28
47
|
const body = [...columns, ...indexes, ...projections].join(',\n ');
|
|
29
48
|
const clauses = [];
|
|
@@ -48,8 +67,57 @@ function renderTableSQL(def) {
|
|
|
48
67
|
function renderViewSQL(def) {
|
|
49
68
|
return `CREATE VIEW IF NOT EXISTS ${def.database}.${def.name} AS\n${def.as};`;
|
|
50
69
|
}
|
|
70
|
+
function renderRefreshSettings(settings) {
|
|
71
|
+
return Object.entries(settings)
|
|
72
|
+
.map(([k, v]) => `${k} = ${typeof v === 'string' ? `'${v.replace(/'/g, "''")}'` : v}`)
|
|
73
|
+
.join(', ');
|
|
74
|
+
}
|
|
75
|
+
function renderDependsOn(dependsOn) {
|
|
76
|
+
return dependsOn.map((dep) => `${dep.database}.${dep.name}`).join(', ');
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Renders the REFRESH clause block for a refreshable materialized view.
|
|
80
|
+
* Grammar order: REFRESH EVERY|AFTER <interval> [OFFSET <interval>] [RANDOMIZE FOR <interval>]
|
|
81
|
+
* [DEPENDS ON <list>] [SETTINGS <kv>] [APPEND]
|
|
82
|
+
* Note: EMPTY belongs after TO in CREATE, so it's NOT included here.
|
|
83
|
+
*/
|
|
84
|
+
function renderRefreshClause(refresh) {
|
|
85
|
+
const parts = [];
|
|
86
|
+
if (refresh.every)
|
|
87
|
+
parts.push(`REFRESH EVERY ${refresh.every}`);
|
|
88
|
+
else if (refresh.after)
|
|
89
|
+
parts.push(`REFRESH AFTER ${refresh.after}`);
|
|
90
|
+
if (refresh.offset)
|
|
91
|
+
parts.push(`OFFSET ${refresh.offset}`);
|
|
92
|
+
if (refresh.randomize)
|
|
93
|
+
parts.push(`RANDOMIZE FOR ${refresh.randomize}`);
|
|
94
|
+
if (refresh.dependsOn && refresh.dependsOn.length > 0) {
|
|
95
|
+
parts.push(`DEPENDS ON ${renderDependsOn(refresh.dependsOn)}`);
|
|
96
|
+
}
|
|
97
|
+
if (refresh.settings && Object.keys(refresh.settings).length > 0) {
|
|
98
|
+
parts.push(`SETTINGS ${renderRefreshSettings(refresh.settings)}`);
|
|
99
|
+
}
|
|
100
|
+
if (refresh.append)
|
|
101
|
+
parts.push('APPEND');
|
|
102
|
+
return parts.join(' ');
|
|
103
|
+
}
|
|
51
104
|
function renderMaterializedViewSQL(def) {
|
|
52
|
-
|
|
105
|
+
const header = `CREATE MATERIALIZED VIEW IF NOT EXISTS ${def.database}.${def.name}`;
|
|
106
|
+
const refreshBlock = def.refresh ? `\n${renderRefreshClause(def.refresh)}` : '';
|
|
107
|
+
const toClause = ` TO ${def.to.database}.${def.to.name}`;
|
|
108
|
+
const emptyClause = def.refresh?.empty ? ' EMPTY' : '';
|
|
109
|
+
return `${header}${refreshBlock}${toClause}${emptyClause} AS\n${def.as};`;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Renders ALTER TABLE ... MODIFY REFRESH for a refresh-only change.
|
|
113
|
+
* Per live validation: APPEND must be re-included if present, because ClickHouse
|
|
114
|
+
* treats omitting APPEND as "remove APPEND" and rejects.
|
|
115
|
+
*/
|
|
116
|
+
export function renderAlterModifyRefresh(def) {
|
|
117
|
+
if (!def.refresh) {
|
|
118
|
+
throw new Error(`Cannot render MODIFY REFRESH for ${def.database}.${def.name}: refresh is not set`);
|
|
119
|
+
}
|
|
120
|
+
return `ALTER TABLE ${def.database}.${def.name} MODIFY ${renderRefreshClause(def.refresh)};`;
|
|
53
121
|
}
|
|
54
122
|
export function toCreateSQL(def) {
|
|
55
123
|
assertValidDefinitions([def]);
|
|
@@ -68,8 +136,11 @@ export function renderAlterModifyColumn(def, column) {
|
|
|
68
136
|
export function renderAlterDropColumn(def, columnName) {
|
|
69
137
|
return `ALTER TABLE ${def.database}.${def.name} DROP COLUMN IF EXISTS \`${columnName}\`;`;
|
|
70
138
|
}
|
|
139
|
+
export function renderAlterRemoveCodec(def, columnName) {
|
|
140
|
+
return `ALTER TABLE ${def.database}.${def.name} MODIFY COLUMN \`${columnName}\` REMOVE CODEC;`;
|
|
141
|
+
}
|
|
71
142
|
export function renderAlterAddIndex(def, index) {
|
|
72
|
-
return `ALTER TABLE ${def.database}.${def.name} ADD INDEX IF NOT EXISTS \`${index.name}\` (${index.expression}) TYPE ${index
|
|
143
|
+
return `ALTER TABLE ${def.database}.${def.name} ADD INDEX IF NOT EXISTS \`${index.name}\` (${index.expression}) TYPE ${renderIndexType(index)} GRANULARITY ${index.granularity};`;
|
|
73
144
|
}
|
|
74
145
|
export function renderAlterDropIndex(def, indexName) {
|
|
75
146
|
return `ALTER TABLE ${def.database}.${def.name} DROP INDEX IF EXISTS \`${indexName}\`;`;
|
package/dist/sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
type ModuleNamespace = Record<string, unknown>;
|
|
2
|
+
/**
|
|
3
|
+
* Import a user config or schema module by absolute path.
|
|
4
|
+
*
|
|
5
|
+
* Bun transpiles TypeScript natively, so it uses a plain dynamic import. Under
|
|
6
|
+
* Node, `.ts` files are loaded through jiti so they work without a separate
|
|
7
|
+
* build step — matching the documented "Node.js 20+" support. Plain `.js`/`.mjs`
|
|
8
|
+
* modules load the same way under either runtime.
|
|
9
|
+
*/
|
|
10
|
+
export declare function importModuleFile(absolutePath: string): Promise<ModuleNamespace>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=ts-import.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-import.d.ts","sourceRoot":"","sources":["../src/ts-import.ts"],"names":[],"mappings":"AAEA,KAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;AAiB9C;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAMrF"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { pathToFileURL } from 'node:url';
|
|
2
|
+
let cachedNodeImporter = null;
|
|
3
|
+
function isBun() {
|
|
4
|
+
return typeof globalThis.Bun !== 'undefined';
|
|
5
|
+
}
|
|
6
|
+
async function getNodeImporter() {
|
|
7
|
+
if (cachedNodeImporter)
|
|
8
|
+
return cachedNodeImporter;
|
|
9
|
+
const { createJiti } = await import('jiti');
|
|
10
|
+
const jiti = createJiti(import.meta.url);
|
|
11
|
+
cachedNodeImporter = (id) => jiti.import(id);
|
|
12
|
+
return cachedNodeImporter;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Import a user config or schema module by absolute path.
|
|
16
|
+
*
|
|
17
|
+
* Bun transpiles TypeScript natively, so it uses a plain dynamic import. Under
|
|
18
|
+
* Node, `.ts` files are loaded through jiti so they work without a separate
|
|
19
|
+
* build step — matching the documented "Node.js 20+" support. Plain `.js`/`.mjs`
|
|
20
|
+
* modules load the same way under either runtime.
|
|
21
|
+
*/
|
|
22
|
+
export async function importModuleFile(absolutePath) {
|
|
23
|
+
if (isBun()) {
|
|
24
|
+
return (await import(pathToFileURL(absolutePath).href));
|
|
25
|
+
}
|
|
26
|
+
const nodeImport = await getNodeImporter();
|
|
27
|
+
return nodeImport(absolutePath);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ts-import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ts-import.js","sourceRoot":"","sources":["../src/ts-import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAKxC,IAAI,kBAAkB,GAA0B,IAAI,CAAA;AAEpD,SAAS,KAAK;IACZ,OAAO,OAAQ,UAAgC,CAAC,GAAG,KAAK,WAAW,CAAA;AACrE,CAAC;AAED,KAAK,UAAU,eAAe;IAC5B,IAAI,kBAAkB;QAAE,OAAO,kBAAkB,CAAA;IACjD,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAA;IAC3C,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxC,kBAAkB,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAA6B,CAAA;IACxE,OAAO,kBAAkB,CAAA;AAC3B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,YAAoB;IACzD,IAAI,KAAK,EAAE,EAAE,CAAC;QACZ,OAAO,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAoB,CAAA;IAC5E,CAAC;IACD,MAAM,UAAU,GAAG,MAAM,eAAe,EAAE,CAAA;IAC1C,OAAO,UAAU,CAAC,YAAY,CAAC,CAAA;AACjC,CAAC"}
|
package/dist/utils.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/utils.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,mBAAmB,CAAA"}
|
package/dist/validate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAIV,gBAAgB,EAEhB,eAAe,EAEhB,MAAM,YAAY,CAAA;AAqNnB,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,eAAe,EAAE,CAwBtF;AAED,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAG5E"}
|
package/dist/validate.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { definitionKey } from './canonical.js';
|
|
2
|
+
import { canonicalizeCodec, isGeneralCodec, isRawCodec } from './codec.js';
|
|
2
3
|
import { normalizeKeyColumns } from './key-clause.js';
|
|
3
4
|
import { ChxValidationError as ValidationError } from './model.js';
|
|
4
5
|
function pushValidationIssue(issues, def, code, message) {
|
|
@@ -10,6 +11,32 @@ function pushValidationIssue(issues, def, code, message) {
|
|
|
10
11
|
message,
|
|
11
12
|
});
|
|
12
13
|
}
|
|
14
|
+
function validateColumnCodec(def, column, issues) {
|
|
15
|
+
if (!column.codec)
|
|
16
|
+
return;
|
|
17
|
+
const steps = canonicalizeCodec(column.codec);
|
|
18
|
+
if (steps.length === 0) {
|
|
19
|
+
pushValidationIssue(issues, def, 'codec_chain_empty', `Table ${def.database}.${def.name} column "${column.name}" codec chain is empty; provide at least one codec or omit the field`);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
let generalCount = 0;
|
|
23
|
+
let generalIndex = -1;
|
|
24
|
+
for (const [i, step] of steps.entries()) {
|
|
25
|
+
if (isRawCodec(step))
|
|
26
|
+
continue;
|
|
27
|
+
if (isGeneralCodec(step)) {
|
|
28
|
+
generalCount += 1;
|
|
29
|
+
generalIndex = i;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
if (generalCount > 1) {
|
|
33
|
+
pushValidationIssue(issues, def, 'codec_chain_multiple_general', `Table ${def.database}.${def.name} column "${column.name}" codec chain has more than one general codec; only one general codec is allowed at the end of a chain`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
if (steps.length > 1 && generalCount === 1 && generalIndex !== steps.length - 1) {
|
|
37
|
+
pushValidationIssue(issues, def, 'codec_chain_must_end_with_general', `Table ${def.database}.${def.name} column "${column.name}" codec chain must end with a general codec (NONE, LZ4, LZ4HC, ZSTD, T64, GCD, ALP)`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
13
40
|
function validateTableDefinition(def, issues) {
|
|
14
41
|
const columnSeen = new Set();
|
|
15
42
|
const columnSet = new Set();
|
|
@@ -20,6 +47,7 @@ function validateTableDefinition(def, issues) {
|
|
|
20
47
|
}
|
|
21
48
|
columnSeen.add(column.name);
|
|
22
49
|
columnSet.add(column.name);
|
|
50
|
+
validateColumnCodec(def, column, issues);
|
|
23
51
|
}
|
|
24
52
|
const indexSeen = new Set();
|
|
25
53
|
for (const index of def.indexes ?? []) {
|
|
@@ -48,6 +76,43 @@ function validateTableDefinition(def, issues) {
|
|
|
48
76
|
}
|
|
49
77
|
}
|
|
50
78
|
}
|
|
79
|
+
const INTERVAL_PATTERN = /^\s*\d+\s+(SECOND|MINUTE|HOUR|DAY|WEEK|MONTH|YEAR)(\s+\d+\s+(SECOND|MINUTE|HOUR|DAY|WEEK|MONTH|YEAR))*\s*$/i;
|
|
80
|
+
const REPLICATED_ENGINE_PATTERN = /^(Shared|Replicated)/;
|
|
81
|
+
function validateInterval(def, issues, field, value) {
|
|
82
|
+
if (value === undefined)
|
|
83
|
+
return;
|
|
84
|
+
if (!INTERVAL_PATTERN.test(value)) {
|
|
85
|
+
pushValidationIssue(issues, def, 'refresh_interval_format', `Materialized view ${def.database}.${def.name} refresh.${String(field)} "${value}" is not a valid interval (expected e.g. "1 HOUR", "30 SECOND")`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function validateMaterializedViewDefinition(def, issues, definitions) {
|
|
89
|
+
const { refresh } = def;
|
|
90
|
+
if (!refresh)
|
|
91
|
+
return;
|
|
92
|
+
const hasEvery = refresh.every !== undefined && refresh.every.length > 0;
|
|
93
|
+
const hasAfter = refresh.after !== undefined && refresh.after.length > 0;
|
|
94
|
+
if (!hasEvery && !hasAfter) {
|
|
95
|
+
pushValidationIssue(issues, def, 'refresh_requires_every_or_after', `Materialized view ${def.database}.${def.name} refresh requires exactly one of "every" or "after"`);
|
|
96
|
+
}
|
|
97
|
+
else if (hasEvery && hasAfter) {
|
|
98
|
+
pushValidationIssue(issues, def, 'refresh_every_after_mutually_exclusive', `Materialized view ${def.database}.${def.name} refresh specifies both "every" and "after"; choose one`);
|
|
99
|
+
}
|
|
100
|
+
validateInterval(def, issues, 'every', refresh.every);
|
|
101
|
+
validateInterval(def, issues, 'after', refresh.after);
|
|
102
|
+
validateInterval(def, issues, 'offset', refresh.offset);
|
|
103
|
+
validateInterval(def, issues, 'randomize', refresh.randomize);
|
|
104
|
+
if (refresh.dependsOn && refresh.dependsOn.length > 0 && hasAfter && !hasEvery) {
|
|
105
|
+
pushValidationIssue(issues, def, 'refresh_depends_on_requires_every', `Materialized view ${def.database}.${def.name} uses DEPENDS ON with REFRESH AFTER; ClickHouse only allows DEPENDS ON with REFRESH EVERY.`);
|
|
106
|
+
}
|
|
107
|
+
if (!refresh.append) {
|
|
108
|
+
const target = definitions.find((other) => other.kind === 'table' &&
|
|
109
|
+
other.database === def.to.database &&
|
|
110
|
+
other.name === def.to.name);
|
|
111
|
+
if (target && REPLICATED_ENGINE_PATTERN.test(target.engine)) {
|
|
112
|
+
pushValidationIssue(issues, def, 'refresh_append_required_for_replicated_target', `Materialized view ${def.database}.${def.name} refreshes a replicated target ${target.database}.${target.name} (${target.engine}) without APPEND. ClickHouse rejects this combination. Set refresh.append = true, or target a non-replicated table.`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
51
116
|
export function validateDefinitions(definitions) {
|
|
52
117
|
const issues = [];
|
|
53
118
|
const objectKeys = new Set();
|
|
@@ -61,6 +126,9 @@ export function validateDefinitions(definitions) {
|
|
|
61
126
|
if (def.kind === 'table') {
|
|
62
127
|
validateTableDefinition(def, issues);
|
|
63
128
|
}
|
|
129
|
+
else if (def.kind === 'materialized_view') {
|
|
130
|
+
validateMaterializedViewDefinition(def, issues, definitions);
|
|
131
|
+
}
|
|
64
132
|
}
|
|
65
133
|
return issues;
|
|
66
134
|
}
|
package/dist/validate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../src/validate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chkit/core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Schema DSL, config, diff engine, and migration planner for chkit",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"author": "ObsessionDB",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"clickhouse",
|
|
9
|
+
"schema",
|
|
10
|
+
"migrations",
|
|
11
|
+
"typescript",
|
|
12
|
+
"database"
|
|
13
|
+
],
|
|
4
14
|
"homepage": "https://chkit.obsessiondb.com",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/obsessiondb/chkit/issues"
|
|
17
|
+
},
|
|
5
18
|
"repository": {
|
|
6
19
|
"type": "git",
|
|
7
20
|
"url": "https://github.com/obsessiondb/chkit.git",
|
|
@@ -15,6 +28,11 @@
|
|
|
15
28
|
"source": "./src/index.ts",
|
|
16
29
|
"types": "./dist/index.d.ts",
|
|
17
30
|
"default": "./dist/index.js"
|
|
31
|
+
},
|
|
32
|
+
"./schema-loader": {
|
|
33
|
+
"source": "./src/schema-loader.ts",
|
|
34
|
+
"types": "./dist/schema-loader.d.ts",
|
|
35
|
+
"default": "./dist/schema-loader.js"
|
|
18
36
|
}
|
|
19
37
|
},
|
|
20
38
|
"files": [
|
|
@@ -29,6 +47,10 @@
|
|
|
29
47
|
"clean": "rm -rf dist"
|
|
30
48
|
},
|
|
31
49
|
"dependencies": {
|
|
32
|
-
"fast-glob": "^3.3.2"
|
|
50
|
+
"fast-glob": "^3.3.2",
|
|
51
|
+
"jiti": "^2.7.0"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@clickhouse/client": "^1.11.0"
|
|
33
55
|
}
|
|
34
56
|
}
|