@chkit/core 0.1.0-beta.2 → 0.1.0-beta.21
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 +57 -0
- package/dist/canonical.d.ts.map +1 -1
- package/dist/canonical.js +60 -3
- 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 +194 -0
- package/dist/codec.js.map +1 -0
- package/dist/flags.d.ts +55 -0
- package/dist/flags.d.ts.map +1 -0
- package/dist/flags.js +104 -0
- package/dist/flags.js.map +1 -0
- 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/model-types.d.ts +91 -4
- package/dist/model-types.d.ts.map +1 -1
- package/dist/planner.d.ts.map +1 -1
- package/dist/planner.js +89 -37
- package/dist/planner.js.map +1 -1
- package/dist/plugin-error.d.ts +9 -0
- package/dist/plugin-error.d.ts.map +1 -0
- package/dist/plugin-error.js +18 -0
- package/dist/plugin-error.js.map +1 -0
- 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 +15 -1
- package/dist/sql.d.ts.map +1 -1
- package/dist/sql.js +74 -3
- package/dist/sql.js.map +1 -1
- 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 +69 -0
- package/dist/validate.js.map +1 -1
- package/package.json +28 -1
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
export function splitSqlStatements(sql) {
|
|
2
|
+
const statements = [];
|
|
3
|
+
let current = '';
|
|
4
|
+
let inSingleQuote = false;
|
|
5
|
+
let inDoubleQuote = false;
|
|
6
|
+
let inBacktick = false;
|
|
7
|
+
let inBlockComment = false;
|
|
8
|
+
for (let i = 0; i < sql.length; i += 1) {
|
|
9
|
+
const ch = sql[i] ?? '';
|
|
10
|
+
const next = sql[i + 1] ?? '';
|
|
11
|
+
if (inBlockComment) {
|
|
12
|
+
current += ch;
|
|
13
|
+
if (ch === '*' && next === '/') {
|
|
14
|
+
current += next;
|
|
15
|
+
i += 1;
|
|
16
|
+
inBlockComment = false;
|
|
17
|
+
}
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (inSingleQuote) {
|
|
21
|
+
current += ch;
|
|
22
|
+
if (ch === "'" && next === "'") {
|
|
23
|
+
current += next;
|
|
24
|
+
i += 1;
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
if (ch === "'" && sql[i - 1] !== '\\') {
|
|
28
|
+
inSingleQuote = false;
|
|
29
|
+
}
|
|
30
|
+
continue;
|
|
31
|
+
}
|
|
32
|
+
if (inDoubleQuote) {
|
|
33
|
+
current += ch;
|
|
34
|
+
if (ch === '"' && sql[i - 1] !== '\\') {
|
|
35
|
+
inDoubleQuote = false;
|
|
36
|
+
}
|
|
37
|
+
continue;
|
|
38
|
+
}
|
|
39
|
+
if (inBacktick) {
|
|
40
|
+
current += ch;
|
|
41
|
+
if (ch === '`') {
|
|
42
|
+
inBacktick = false;
|
|
43
|
+
}
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
if (ch === '/' && next === '*') {
|
|
47
|
+
current += ch;
|
|
48
|
+
current += next;
|
|
49
|
+
i += 1;
|
|
50
|
+
inBlockComment = true;
|
|
51
|
+
continue;
|
|
52
|
+
}
|
|
53
|
+
if (ch === "'") {
|
|
54
|
+
current += ch;
|
|
55
|
+
inSingleQuote = true;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
if (ch === '"') {
|
|
59
|
+
current += ch;
|
|
60
|
+
inDoubleQuote = true;
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
if (ch === '`') {
|
|
64
|
+
current += ch;
|
|
65
|
+
inBacktick = true;
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (ch === ';') {
|
|
69
|
+
const trimmed = current.trim();
|
|
70
|
+
if (trimmed.length > 0)
|
|
71
|
+
statements.push(`${trimmed};`);
|
|
72
|
+
current = '';
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
current += ch;
|
|
76
|
+
}
|
|
77
|
+
const tail = current.trim();
|
|
78
|
+
if (tail.length > 0)
|
|
79
|
+
statements.push(`${tail};`);
|
|
80
|
+
return statements;
|
|
81
|
+
}
|
|
82
|
+
export function extractExecutableStatements(sql) {
|
|
83
|
+
// Strip single-line comments (--) while respecting quoted strings.
|
|
84
|
+
// We can't use a naive line-based filter because `--` inside string
|
|
85
|
+
// literals must be preserved.
|
|
86
|
+
let stripped = '';
|
|
87
|
+
let inSingleQuote = false;
|
|
88
|
+
let inDoubleQuote = false;
|
|
89
|
+
let inBacktick = false;
|
|
90
|
+
let inBlockComment = false;
|
|
91
|
+
let inLineComment = false;
|
|
92
|
+
for (let i = 0; i < sql.length; i += 1) {
|
|
93
|
+
const ch = sql[i] ?? '';
|
|
94
|
+
const next = sql[i + 1] ?? '';
|
|
95
|
+
if (inLineComment) {
|
|
96
|
+
if (ch === '\n') {
|
|
97
|
+
inLineComment = false;
|
|
98
|
+
stripped += ch;
|
|
99
|
+
}
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
if (inBlockComment) {
|
|
103
|
+
stripped += ch;
|
|
104
|
+
if (ch === '*' && next === '/') {
|
|
105
|
+
stripped += next;
|
|
106
|
+
i += 1;
|
|
107
|
+
inBlockComment = false;
|
|
108
|
+
}
|
|
109
|
+
continue;
|
|
110
|
+
}
|
|
111
|
+
if (inSingleQuote) {
|
|
112
|
+
stripped += ch;
|
|
113
|
+
if (ch === "'" && next === "'") {
|
|
114
|
+
stripped += next;
|
|
115
|
+
i += 1;
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
if (ch === "'" && sql[i - 1] !== '\\') {
|
|
119
|
+
inSingleQuote = false;
|
|
120
|
+
}
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
if (inDoubleQuote) {
|
|
124
|
+
stripped += ch;
|
|
125
|
+
if (ch === '"' && sql[i - 1] !== '\\') {
|
|
126
|
+
inDoubleQuote = false;
|
|
127
|
+
}
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (inBacktick) {
|
|
131
|
+
stripped += ch;
|
|
132
|
+
if (ch === '`') {
|
|
133
|
+
inBacktick = false;
|
|
134
|
+
}
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
if (ch === '-' && next === '-') {
|
|
138
|
+
inLineComment = true;
|
|
139
|
+
i += 1;
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (ch === '/' && next === '*') {
|
|
143
|
+
stripped += ch;
|
|
144
|
+
stripped += next;
|
|
145
|
+
i += 1;
|
|
146
|
+
inBlockComment = true;
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (ch === "'") {
|
|
150
|
+
stripped += ch;
|
|
151
|
+
inSingleQuote = true;
|
|
152
|
+
continue;
|
|
153
|
+
}
|
|
154
|
+
if (ch === '"') {
|
|
155
|
+
stripped += ch;
|
|
156
|
+
inDoubleQuote = true;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (ch === '`') {
|
|
160
|
+
stripped += ch;
|
|
161
|
+
inBacktick = true;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
stripped += ch;
|
|
165
|
+
}
|
|
166
|
+
return splitSqlStatements(stripped);
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=sql-splitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-splitter.js","sourceRoot":"","sources":["../src/sql-splitter.ts"],"names":[],"mappings":"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"}
|
package/dist/sql.d.ts
CHANGED
|
@@ -1,8 +1,22 @@
|
|
|
1
|
-
import type { ColumnDefinition, SchemaDefinition, SkipIndexDefinition, TableDefinition } from './model.js';
|
|
1
|
+
import type { ColumnDefinition, MaterializedViewDefinition, MaterializedViewRefresh, SchemaDefinition, SkipIndexDefinition, TableDefinition } from './model.js';
|
|
2
|
+
/**
|
|
3
|
+
* Renders the REFRESH clause block for a refreshable materialized view.
|
|
4
|
+
* Grammar order: REFRESH EVERY|AFTER <interval> [OFFSET <interval>] [RANDOMIZE FOR <interval>]
|
|
5
|
+
* [DEPENDS ON <list>] [SETTINGS <kv>] [APPEND]
|
|
6
|
+
* Note: EMPTY belongs after TO in CREATE, so it's NOT included here.
|
|
7
|
+
*/
|
|
8
|
+
export declare function renderRefreshClause(refresh: MaterializedViewRefresh): string;
|
|
9
|
+
/**
|
|
10
|
+
* Renders ALTER TABLE ... MODIFY REFRESH for a refresh-only change.
|
|
11
|
+
* Per live validation: APPEND must be re-included if present, because ClickHouse
|
|
12
|
+
* treats omitting APPEND as "remove APPEND" and rejects.
|
|
13
|
+
*/
|
|
14
|
+
export declare function renderAlterModifyRefresh(def: MaterializedViewDefinition): string;
|
|
2
15
|
export declare function toCreateSQL(def: SchemaDefinition): string;
|
|
3
16
|
export declare function renderAlterAddColumn(def: TableDefinition, column: ColumnDefinition): string;
|
|
4
17
|
export declare function renderAlterModifyColumn(def: TableDefinition, column: ColumnDefinition): string;
|
|
5
18
|
export declare function renderAlterDropColumn(def: TableDefinition, columnName: string): string;
|
|
19
|
+
export declare function renderAlterRemoveCodec(def: TableDefinition, columnName: string): string;
|
|
6
20
|
export declare function renderAlterAddIndex(def: TableDefinition, index: SkipIndexDefinition): string;
|
|
7
21
|
export declare function renderAlterDropIndex(def: TableDefinition, indexName: string): string;
|
|
8
22
|
export declare function renderAlterAddProjection(def: TableDefinition, projection: {
|
package/dist/sql.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"sql.d.ts","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,0BAA0B,EAC1B,uBAAuB,EACvB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAEhB,MAAM,YAAY,CAAA;AAyFnB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,uBAAuB,GAAG,MAAM,CAc5E;AAUD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,0BAA0B,GAAG,MAAM,CAOhF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAKzD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAE3F;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAE9F;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEtF;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAE5F;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,eAAe,EAAE,UAAU,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAElH;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAE9F;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAC/B,MAAM,CAER;AAED,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAEjF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAK1F"}
|
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
|
+
export 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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"}
|
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;AAsNnB,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,33 @@ 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 (let i = 0; i < steps.length; i++) {
|
|
25
|
+
const step = steps[i];
|
|
26
|
+
if (isRawCodec(step))
|
|
27
|
+
continue;
|
|
28
|
+
if (isGeneralCodec(step)) {
|
|
29
|
+
generalCount += 1;
|
|
30
|
+
generalIndex = i;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (generalCount > 1) {
|
|
34
|
+
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`);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (steps.length > 1 && generalCount === 1 && generalIndex !== steps.length - 1) {
|
|
38
|
+
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)`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
13
41
|
function validateTableDefinition(def, issues) {
|
|
14
42
|
const columnSeen = new Set();
|
|
15
43
|
const columnSet = new Set();
|
|
@@ -20,6 +48,7 @@ function validateTableDefinition(def, issues) {
|
|
|
20
48
|
}
|
|
21
49
|
columnSeen.add(column.name);
|
|
22
50
|
columnSet.add(column.name);
|
|
51
|
+
validateColumnCodec(def, column, issues);
|
|
23
52
|
}
|
|
24
53
|
const indexSeen = new Set();
|
|
25
54
|
for (const index of def.indexes ?? []) {
|
|
@@ -48,6 +77,43 @@ function validateTableDefinition(def, issues) {
|
|
|
48
77
|
}
|
|
49
78
|
}
|
|
50
79
|
}
|
|
80
|
+
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;
|
|
81
|
+
const REPLICATED_ENGINE_PATTERN = /^(Shared|Replicated)/;
|
|
82
|
+
function validateInterval(def, issues, field, value) {
|
|
83
|
+
if (value === undefined)
|
|
84
|
+
return;
|
|
85
|
+
if (!INTERVAL_PATTERN.test(value)) {
|
|
86
|
+
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")`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
function validateMaterializedViewDefinition(def, issues, definitions) {
|
|
90
|
+
const { refresh } = def;
|
|
91
|
+
if (!refresh)
|
|
92
|
+
return;
|
|
93
|
+
const hasEvery = refresh.every !== undefined && refresh.every.length > 0;
|
|
94
|
+
const hasAfter = refresh.after !== undefined && refresh.after.length > 0;
|
|
95
|
+
if (!hasEvery && !hasAfter) {
|
|
96
|
+
pushValidationIssue(issues, def, 'refresh_requires_every_or_after', `Materialized view ${def.database}.${def.name} refresh requires exactly one of "every" or "after"`);
|
|
97
|
+
}
|
|
98
|
+
else if (hasEvery && hasAfter) {
|
|
99
|
+
pushValidationIssue(issues, def, 'refresh_every_after_mutually_exclusive', `Materialized view ${def.database}.${def.name} refresh specifies both "every" and "after"; choose one`);
|
|
100
|
+
}
|
|
101
|
+
validateInterval(def, issues, 'every', refresh.every);
|
|
102
|
+
validateInterval(def, issues, 'after', refresh.after);
|
|
103
|
+
validateInterval(def, issues, 'offset', refresh.offset);
|
|
104
|
+
validateInterval(def, issues, 'randomize', refresh.randomize);
|
|
105
|
+
if (refresh.dependsOn && refresh.dependsOn.length > 0 && hasAfter && !hasEvery) {
|
|
106
|
+
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.`);
|
|
107
|
+
}
|
|
108
|
+
if (!refresh.append) {
|
|
109
|
+
const target = definitions.find((other) => other.kind === 'table' &&
|
|
110
|
+
other.database === def.to.database &&
|
|
111
|
+
other.name === def.to.name);
|
|
112
|
+
if (target && REPLICATED_ENGINE_PATTERN.test(target.engine)) {
|
|
113
|
+
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.`);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
51
117
|
export function validateDefinitions(definitions) {
|
|
52
118
|
const issues = [];
|
|
53
119
|
const objectKeys = new Set();
|
|
@@ -61,6 +127,9 @@ export function validateDefinitions(definitions) {
|
|
|
61
127
|
if (def.kind === 'table') {
|
|
62
128
|
validateTableDefinition(def, issues);
|
|
63
129
|
}
|
|
130
|
+
else if (def.kind === 'materialized_view') {
|
|
131
|
+
validateMaterializedViewDefinition(def, issues, definitions);
|
|
132
|
+
}
|
|
64
133
|
}
|
|
65
134
|
return issues;
|
|
66
135
|
}
|
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,6 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chkit/core",
|
|
3
|
-
"version": "0.1.0-beta.
|
|
3
|
+
"version": "0.1.0-beta.21",
|
|
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
|
+
],
|
|
14
|
+
"homepage": "https://chkit.obsessiondb.com",
|
|
15
|
+
"bugs": {
|
|
16
|
+
"url": "https://github.com/obsessiondb/chkit/issues"
|
|
17
|
+
},
|
|
18
|
+
"repository": {
|
|
19
|
+
"type": "git",
|
|
20
|
+
"url": "https://github.com/obsessiondb/chkit.git",
|
|
21
|
+
"directory": "packages/core"
|
|
22
|
+
},
|
|
4
23
|
"type": "module",
|
|
5
24
|
"main": "./dist/index.js",
|
|
6
25
|
"types": "./dist/index.d.ts",
|
|
@@ -9,6 +28,11 @@
|
|
|
9
28
|
"source": "./src/index.ts",
|
|
10
29
|
"types": "./dist/index.d.ts",
|
|
11
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"
|
|
12
36
|
}
|
|
13
37
|
},
|
|
14
38
|
"files": [
|
|
@@ -24,5 +48,8 @@
|
|
|
24
48
|
},
|
|
25
49
|
"dependencies": {
|
|
26
50
|
"fast-glob": "^3.3.2"
|
|
51
|
+
},
|
|
52
|
+
"devDependencies": {
|
|
53
|
+
"@clickhouse/client": "^1.11.0"
|
|
27
54
|
}
|
|
28
55
|
}
|