@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
package/dist/sql-splitter.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { isTrivia, tokenizeSQL } from './sql-lexer.js';
|
|
1
2
|
export function splitSqlStatements(sql) {
|
|
2
3
|
const statements = [];
|
|
3
4
|
let current = '';
|
|
@@ -19,19 +20,29 @@ export function splitSqlStatements(sql) {
|
|
|
19
20
|
}
|
|
20
21
|
if (inSingleQuote) {
|
|
21
22
|
current += ch;
|
|
23
|
+
if (ch === '\\' && next) {
|
|
24
|
+
current += next;
|
|
25
|
+
i += 1;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
22
28
|
if (ch === "'" && next === "'") {
|
|
23
29
|
current += next;
|
|
24
30
|
i += 1;
|
|
25
31
|
continue;
|
|
26
32
|
}
|
|
27
|
-
if (ch === "'"
|
|
33
|
+
if (ch === "'") {
|
|
28
34
|
inSingleQuote = false;
|
|
29
35
|
}
|
|
30
36
|
continue;
|
|
31
37
|
}
|
|
32
38
|
if (inDoubleQuote) {
|
|
33
39
|
current += ch;
|
|
34
|
-
if (ch === '
|
|
40
|
+
if (ch === '\\' && next) {
|
|
41
|
+
current += next;
|
|
42
|
+
i += 1;
|
|
43
|
+
continue;
|
|
44
|
+
}
|
|
45
|
+
if (ch === '"') {
|
|
35
46
|
inDoubleQuote = false;
|
|
36
47
|
}
|
|
37
48
|
continue;
|
|
@@ -110,19 +121,29 @@ export function extractExecutableStatements(sql) {
|
|
|
110
121
|
}
|
|
111
122
|
if (inSingleQuote) {
|
|
112
123
|
stripped += ch;
|
|
124
|
+
if (ch === '\\' && next) {
|
|
125
|
+
stripped += next;
|
|
126
|
+
i += 1;
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
113
129
|
if (ch === "'" && next === "'") {
|
|
114
130
|
stripped += next;
|
|
115
131
|
i += 1;
|
|
116
132
|
continue;
|
|
117
133
|
}
|
|
118
|
-
if (ch === "'"
|
|
134
|
+
if (ch === "'") {
|
|
119
135
|
inSingleQuote = false;
|
|
120
136
|
}
|
|
121
137
|
continue;
|
|
122
138
|
}
|
|
123
139
|
if (inDoubleQuote) {
|
|
124
140
|
stripped += ch;
|
|
125
|
-
if (ch === '
|
|
141
|
+
if (ch === '\\' && next) {
|
|
142
|
+
stripped += next;
|
|
143
|
+
i += 1;
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (ch === '"') {
|
|
126
147
|
inDoubleQuote = false;
|
|
127
148
|
}
|
|
128
149
|
continue;
|
|
@@ -163,6 +184,32 @@ export function extractExecutableStatements(sql) {
|
|
|
163
184
|
}
|
|
164
185
|
stripped += ch;
|
|
165
186
|
}
|
|
166
|
-
|
|
187
|
+
const statements = splitSqlStatements(stripped);
|
|
188
|
+
// A statement made only of comments is not executable: ClickHouse rejects it
|
|
189
|
+
// as "Empty query" (for example a block comment after the last statement).
|
|
190
|
+
const executable = statements.filter(hasExecutableContent);
|
|
191
|
+
if (executable.length === statements.length)
|
|
192
|
+
return statements;
|
|
193
|
+
// The splitter does not know `#` and `//` line comments (#197). When one of
|
|
194
|
+
// them holds a `;`, the splitter cut that comment line in two; keeping the
|
|
195
|
+
// comment-only piece makes ClickHouse reject the file instead of running the
|
|
196
|
+
// commented-out text after the `;`.
|
|
197
|
+
if (tokenizeSQL(stripped).some(isLineCommentWithSemicolon))
|
|
198
|
+
return statements;
|
|
199
|
+
return executable;
|
|
200
|
+
}
|
|
201
|
+
// True unless every token is whitespace or a terminated comment (`/* */`,
|
|
202
|
+
// nested or not, `# `, `#!`, `//`; `--` comments are already stripped). An
|
|
203
|
+
// unterminated comment counts as content, so ClickHouse reports it.
|
|
204
|
+
function hasExecutableContent(statement) {
|
|
205
|
+
// Only a statement that starts like a comment can be made only of comments.
|
|
206
|
+
if (!/^[-/#]/.test(statement))
|
|
207
|
+
return true;
|
|
208
|
+
// The splitter appended the `;`; a trailing line comment would swallow it.
|
|
209
|
+
const body = statement.endsWith(';') ? statement.slice(0, -1) : statement;
|
|
210
|
+
return tokenizeSQL(body).some((token) => !isTrivia(token) || !token.terminated);
|
|
211
|
+
}
|
|
212
|
+
function isLineCommentWithSemicolon(token) {
|
|
213
|
+
return token.kind === 'line_comment' && token.text.includes(';');
|
|
167
214
|
}
|
|
168
215
|
//# sourceMappingURL=sql-splitter.js.map
|
package/dist/sql-splitter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql-splitter.js","sourceRoot":"","sources":["../src/sql-splitter.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,GAAW;IAC5C,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,IAAI,OAAO,GAAG,EAAE,CAAA;IAChB,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,IAAI,aAAa,GAAG,KAAK,CAAA;IACzB,IAAI,UAAU,GAAG,KAAK,CAAA;IACtB,IAAI,cAAc,GAAG,KAAK,CAAA;IAE1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QACvB,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;QAE7B,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,IAAI,EAAE,CAAA;YACb,IAAI,EAAE,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBAC/B,OAAO,IAAI,IAAI,CAAA;gBACf,CAAC,IAAI,CAAC,CAAA;gBACN,cAAc,GAAG,KAAK,CAAA;YACxB,CAAC;YACD,SAAQ;QACV,CAAC;QAED,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,IAAI,EAAE,CAAA;YACb,IAAI,EAAE,KAAK,
|
|
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,13 +1,21 @@
|
|
|
1
|
-
import type { ColumnDefinition, MaterializedViewDefinition, ProjectionDefinition, SchemaDefinition, SkipIndexDefinition, TableDefinition } from './model.js';
|
|
1
|
+
import type { ColumnDefinition, DictionaryDefinition, MaterializedViewDefinition, ProjectionDefinition, SchemaDefinition, SkipIndexDefinition, TableDefinition } from './model.js';
|
|
2
|
+
export declare function renderKeyClauseColumns(columns: string[], columnNames: ReadonlySet<string>): string;
|
|
2
3
|
/**
|
|
3
4
|
* Renders ALTER TABLE ... MODIFY REFRESH for a refresh-only change.
|
|
4
5
|
* Per live validation: APPEND must be re-included if present, because ClickHouse
|
|
5
6
|
* treats omitting APPEND as "remove APPEND" and rejects.
|
|
6
7
|
*/
|
|
7
8
|
export declare function renderAlterModifyRefresh(def: MaterializedViewDefinition): string;
|
|
9
|
+
export declare function renderDictionarySQL(def: DictionaryDefinition, replace?: boolean): string;
|
|
8
10
|
export declare function toCreateSQL(def: SchemaDefinition): string;
|
|
9
11
|
export declare function renderAlterAddColumn(def: TableDefinition, column: ColumnDefinition): string;
|
|
10
12
|
export declare function renderAlterModifyColumn(def: TableDefinition, column: ColumnDefinition): string;
|
|
13
|
+
/**
|
|
14
|
+
* MODIFY COLUMN without an expression keeps the old one, so dropping it needs an
|
|
15
|
+
* explicit REMOVE. It must run before the MODIFY: in one statement ClickHouse
|
|
16
|
+
* casts the retained default to the new type first, so `'abc'` -> UInt64 fails.
|
|
17
|
+
*/
|
|
18
|
+
export declare function renderAlterRemoveColumnExpression(def: TableDefinition, column: ColumnDefinition, previous: ColumnDefinition): string | undefined;
|
|
11
19
|
export declare function renderAlterDropColumn(def: TableDefinition, columnName: string): string;
|
|
12
20
|
export declare function renderAlterRemoveCodec(def: TableDefinition, columnName: string): string;
|
|
13
21
|
export declare function renderAlterAddIndex(def: TableDefinition, index: SkipIndexDefinition): string;
|
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,EAEhB,oBAAoB,EACpB,0BAA0B,EAE1B,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EAEhB,MAAM,YAAY,CAAA;AAmBnB,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,WAAW,CAAC,MAAM,CAAC,GAC/B,MAAM,CASR;AAmGD;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,0BAA0B,GAAG,MAAM,CAOhF;AAuBD,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,EAAE,OAAO,UAAQ,GAAG,MAAM,CAqBtF;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,MAAM,CAMzD;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;;;;GAIG;AACH,wBAAgB,iCAAiC,CAC/C,GAAG,EAAE,eAAe,EACpB,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,gBAAgB,GACzB,MAAM,GAAG,SAAS,CAGpB;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,CACtC,GAAG,EAAE,eAAe,EACpB,UAAU,EAAE,oBAAoB,GAC/B,MAAM,CAER;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,36 +1,36 @@
|
|
|
1
1
|
import { renderCodec } from './codec.js';
|
|
2
|
+
import { renderDefault } from './column-default.js';
|
|
3
|
+
import { quoteIdentifier, renderQualifiedName } from './identifier.js';
|
|
4
|
+
import { isKafkaEngine, renderKafkaSetting } from './kafka.js';
|
|
2
5
|
import { isPlainColumnReference, normalizeKeyColumns } from './key-clause.js';
|
|
3
6
|
import { renderProjectionBody } from './projection.js';
|
|
7
|
+
import { TEXT_INDEX_GRANULARITY, renderTextIndexType } from './text-index.js';
|
|
4
8
|
import { assertValidDefinitions } from './validate.js';
|
|
5
|
-
function renderDefault(value) {
|
|
6
|
-
if (typeof value === 'string') {
|
|
7
|
-
if (value.startsWith('fn:'))
|
|
8
|
-
return value.slice(3);
|
|
9
|
-
return `'${value.replace(/'/g, "''")}'`;
|
|
10
|
-
}
|
|
11
|
-
return String(value);
|
|
12
|
-
}
|
|
13
9
|
function renderColumn(col) {
|
|
14
|
-
let out =
|
|
10
|
+
let out = `${quoteIdentifier(col.name)} ${col.nullable ? `Nullable(${col.type})` : col.type}`;
|
|
15
11
|
if (col.default !== undefined)
|
|
16
|
-
out += ` DEFAULT ${renderDefault(col.default)}`;
|
|
12
|
+
out += ` ${col.defaultKind ?? 'DEFAULT'} ${renderDefault(col.default)}`;
|
|
13
|
+
else if (col.defaultKind === 'EPHEMERAL')
|
|
14
|
+
out += ' EPHEMERAL';
|
|
17
15
|
if (col.comment)
|
|
18
16
|
out += ` COMMENT '${col.comment.replace(/'/g, "''")}'`;
|
|
19
17
|
if (col.codec)
|
|
20
18
|
out += ` ${renderCodec(col.codec)}`;
|
|
21
19
|
return out;
|
|
22
20
|
}
|
|
23
|
-
function renderKeyClauseColumns(columns, columnNames) {
|
|
24
|
-
return normalizeKeyColumns(columns)
|
|
21
|
+
export function renderKeyClauseColumns(columns, columnNames) {
|
|
22
|
+
return normalizeKeyColumns(columns, columnNames)
|
|
25
23
|
.map((column) =>
|
|
26
24
|
// Quote a token when it names a declared column (including names that
|
|
27
25
|
// need quoting like `user-id`) or is a bare identifier. Only true
|
|
28
26
|
// expressions (e.g. `toStartOfHour(ts)`) are emitted verbatim.
|
|
29
|
-
columnNames.has(column) || isPlainColumnReference(column) ?
|
|
27
|
+
columnNames.has(column) || isPlainColumnReference(column) ? quoteIdentifier(column) : column)
|
|
30
28
|
.join(', ');
|
|
31
29
|
}
|
|
32
30
|
function renderIndexType(idx) {
|
|
33
31
|
switch (idx.type) {
|
|
32
|
+
case 'text':
|
|
33
|
+
return renderTextIndexType(idx);
|
|
34
34
|
case 'minmax':
|
|
35
35
|
return 'minmax';
|
|
36
36
|
case 'set':
|
|
@@ -47,15 +47,17 @@ function renderIndexType(idx) {
|
|
|
47
47
|
}
|
|
48
48
|
function renderTableSQL(def) {
|
|
49
49
|
const columns = def.columns.map(renderColumn);
|
|
50
|
-
const indexes = (def.indexes ?? []).map((idx) => `INDEX
|
|
51
|
-
const projections = (def.projections ?? []).map((projection) => `PROJECTION
|
|
50
|
+
const indexes = (def.indexes ?? []).map((idx) => `INDEX ${quoteIdentifier(idx.name)} (${idx.expression}) TYPE ${renderIndexType(idx)} GRANULARITY ${idx.type === 'text' ? TEXT_INDEX_GRANULARITY : idx.granularity}`);
|
|
51
|
+
const projections = (def.projections ?? []).map((projection) => `PROJECTION ${quoteIdentifier(projection.name)} ${renderProjectionBody(projection)}`);
|
|
52
52
|
const body = [...columns, ...indexes, ...projections].join(',\n ');
|
|
53
53
|
const columnNames = new Set(def.columns.map((column) => column.name));
|
|
54
54
|
const clauses = [];
|
|
55
55
|
if (def.partitionBy)
|
|
56
56
|
clauses.push(`PARTITION BY ${def.partitionBy}`);
|
|
57
|
-
|
|
58
|
-
|
|
57
|
+
if (!isKafkaEngine(def.engine)) {
|
|
58
|
+
clauses.push(`PRIMARY KEY (${renderKeyClauseColumns(def.primaryKey, columnNames)})`);
|
|
59
|
+
clauses.push(`ORDER BY (${renderKeyClauseColumns(def.orderBy, columnNames)})`);
|
|
60
|
+
}
|
|
59
61
|
if (def.uniqueKey && def.uniqueKey.length > 0) {
|
|
60
62
|
clauses.push(`UNIQUE KEY (${renderKeyClauseColumns(def.uniqueKey, columnNames)})`);
|
|
61
63
|
}
|
|
@@ -63,15 +65,15 @@ function renderTableSQL(def) {
|
|
|
63
65
|
clauses.push(`TTL ${def.ttl}`);
|
|
64
66
|
if (def.settings && Object.keys(def.settings).length > 0) {
|
|
65
67
|
clauses.push(`SETTINGS ${Object.entries(def.settings)
|
|
66
|
-
.map(([k, v]) => `${k} = ${v}`)
|
|
68
|
+
.map(([k, v]) => `${k} = ${isKafkaEngine(def.engine) ? renderKafkaSetting(v) : v}`)
|
|
67
69
|
.join(', ')}`);
|
|
68
70
|
}
|
|
69
71
|
if (def.comment)
|
|
70
72
|
clauses.push(`COMMENT '${def.comment.replace(/'/g, "''")}'`);
|
|
71
|
-
return `CREATE TABLE IF NOT EXISTS ${def.database
|
|
73
|
+
return `CREATE TABLE IF NOT EXISTS ${renderQualifiedName(def.database, def.name)}\n(\n ${body}\n) ENGINE = ${def.engine}\n${clauses.join('\n')};`;
|
|
72
74
|
}
|
|
73
75
|
function renderViewSQL(def) {
|
|
74
|
-
return `CREATE VIEW IF NOT EXISTS ${def.database
|
|
76
|
+
return `CREATE VIEW IF NOT EXISTS ${renderQualifiedName(def.database, def.name)} AS\n${def.as};`;
|
|
75
77
|
}
|
|
76
78
|
function renderRefreshSettings(settings) {
|
|
77
79
|
return Object.entries(settings)
|
|
@@ -79,7 +81,7 @@ function renderRefreshSettings(settings) {
|
|
|
79
81
|
.join(', ');
|
|
80
82
|
}
|
|
81
83
|
function renderDependsOn(dependsOn) {
|
|
82
|
-
return dependsOn.map((dep) =>
|
|
84
|
+
return dependsOn.map((dep) => renderQualifiedName(dep.database, dep.name)).join(', ');
|
|
83
85
|
}
|
|
84
86
|
/**
|
|
85
87
|
* Renders the REFRESH clause block for a refreshable materialized view.
|
|
@@ -108,9 +110,9 @@ function renderRefreshClause(refresh) {
|
|
|
108
110
|
return parts.join(' ');
|
|
109
111
|
}
|
|
110
112
|
function renderMaterializedViewSQL(def) {
|
|
111
|
-
const header = `CREATE MATERIALIZED VIEW IF NOT EXISTS ${def.database
|
|
113
|
+
const header = `CREATE MATERIALIZED VIEW IF NOT EXISTS ${renderQualifiedName(def.database, def.name)}`;
|
|
112
114
|
const refreshBlock = def.refresh ? `\n${renderRefreshClause(def.refresh)}` : '';
|
|
113
|
-
const toClause = ` TO ${def.to.database
|
|
115
|
+
const toClause = ` TO ${renderQualifiedName(def.to.database, def.to.name)}`;
|
|
114
116
|
const emptyClause = def.refresh?.empty ? ' EMPTY' : '';
|
|
115
117
|
return `${header}${refreshBlock}${toClause}${emptyClause} AS\n${def.as};`;
|
|
116
118
|
}
|
|
@@ -123,7 +125,52 @@ export function renderAlterModifyRefresh(def) {
|
|
|
123
125
|
if (!def.refresh) {
|
|
124
126
|
throw new Error(`Cannot render MODIFY REFRESH for ${def.database}.${def.name}: refresh is not set`);
|
|
125
127
|
}
|
|
126
|
-
return `ALTER TABLE ${def.database
|
|
128
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} MODIFY ${renderRefreshClause(def.refresh)};`;
|
|
129
|
+
}
|
|
130
|
+
function renderDictionaryAttribute(attr) {
|
|
131
|
+
let out = `${quoteIdentifier(attr.name)} ${attr.type}`;
|
|
132
|
+
if (attr.expression !== undefined)
|
|
133
|
+
out += ` EXPRESSION ${attr.expression}`;
|
|
134
|
+
else if (attr.default !== undefined)
|
|
135
|
+
out += ` DEFAULT ${renderDefault(attr.default)}`;
|
|
136
|
+
if (attr.hierarchical)
|
|
137
|
+
out += ' HIERARCHICAL';
|
|
138
|
+
if (attr.bidirectional)
|
|
139
|
+
out += ' BIDIRECTIONAL';
|
|
140
|
+
if (attr.injective)
|
|
141
|
+
out += ' INJECTIVE';
|
|
142
|
+
if (attr.isObjectId)
|
|
143
|
+
out += ' IS_OBJECT_ID';
|
|
144
|
+
return out;
|
|
145
|
+
}
|
|
146
|
+
function renderDictionaryRangeColumn(column, columnNames) {
|
|
147
|
+
return columnNames.has(column) || isPlainColumnReference(column) ? quoteIdentifier(column) : column;
|
|
148
|
+
}
|
|
149
|
+
function renderDictionarySettings(settings) {
|
|
150
|
+
return Object.entries(settings)
|
|
151
|
+
.map(([k, v]) => `${k} = ${typeof v === 'string' ? `'${v.replace(/'/g, "''")}'` : v}`)
|
|
152
|
+
.join(', ');
|
|
153
|
+
}
|
|
154
|
+
export function renderDictionarySQL(def, replace = false) {
|
|
155
|
+
const verb = replace ? 'CREATE OR REPLACE DICTIONARY' : 'CREATE DICTIONARY IF NOT EXISTS';
|
|
156
|
+
const attrs = def.attributes.map(renderDictionaryAttribute).join(',\n ');
|
|
157
|
+
const columnNames = new Set(def.attributes.map((a) => a.name));
|
|
158
|
+
const pk = renderKeyClauseColumns(def.primaryKey, columnNames);
|
|
159
|
+
const clauses = [
|
|
160
|
+
`PRIMARY KEY ${pk}`,
|
|
161
|
+
`SOURCE(${def.source})`,
|
|
162
|
+
`LAYOUT(${def.layout})`,
|
|
163
|
+
`LIFETIME(${def.lifetime})`,
|
|
164
|
+
];
|
|
165
|
+
if (def.range) {
|
|
166
|
+
clauses.push(`RANGE(MIN ${renderDictionaryRangeColumn(def.range.min, columnNames)} MAX ${renderDictionaryRangeColumn(def.range.max, columnNames)})`);
|
|
167
|
+
}
|
|
168
|
+
if (def.settings && Object.keys(def.settings).length > 0) {
|
|
169
|
+
clauses.push(`SETTINGS(${renderDictionarySettings(def.settings)})`);
|
|
170
|
+
}
|
|
171
|
+
if (def.comment)
|
|
172
|
+
clauses.push(`COMMENT '${def.comment.replace(/'/g, "''")}'`);
|
|
173
|
+
return `${verb} ${renderQualifiedName(def.database, def.name)}\n(\n ${attrs}\n)\n${clauses.join('\n')};`;
|
|
127
174
|
}
|
|
128
175
|
export function toCreateSQL(def) {
|
|
129
176
|
assertValidDefinitions([def]);
|
|
@@ -131,42 +178,54 @@ export function toCreateSQL(def) {
|
|
|
131
178
|
return renderTableSQL(def);
|
|
132
179
|
if (def.kind === 'view')
|
|
133
180
|
return renderViewSQL(def);
|
|
181
|
+
if (def.kind === 'dictionary')
|
|
182
|
+
return renderDictionarySQL(def);
|
|
134
183
|
return renderMaterializedViewSQL(def);
|
|
135
184
|
}
|
|
136
185
|
export function renderAlterAddColumn(def, column) {
|
|
137
|
-
return `ALTER TABLE ${def.database
|
|
186
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} ADD COLUMN IF NOT EXISTS ${renderColumn(column)};`;
|
|
138
187
|
}
|
|
139
188
|
export function renderAlterModifyColumn(def, column) {
|
|
140
|
-
return `ALTER TABLE ${def.database
|
|
189
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} MODIFY COLUMN ${renderColumn(column)};`;
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* MODIFY COLUMN without an expression keeps the old one, so dropping it needs an
|
|
193
|
+
* explicit REMOVE. It must run before the MODIFY: in one statement ClickHouse
|
|
194
|
+
* casts the retained default to the new type first, so `'abc'` -> UInt64 fails.
|
|
195
|
+
*/
|
|
196
|
+
export function renderAlterRemoveColumnExpression(def, column, previous) {
|
|
197
|
+
if (previous.default === undefined || column.default !== undefined || column.defaultKind === 'EPHEMERAL')
|
|
198
|
+
return undefined;
|
|
199
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} MODIFY COLUMN ${quoteIdentifier(column.name)} REMOVE ${previous.defaultKind ?? 'DEFAULT'};`;
|
|
141
200
|
}
|
|
142
201
|
export function renderAlterDropColumn(def, columnName) {
|
|
143
|
-
return `ALTER TABLE ${def.database
|
|
202
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} DROP COLUMN IF EXISTS ${quoteIdentifier(columnName)};`;
|
|
144
203
|
}
|
|
145
204
|
export function renderAlterRemoveCodec(def, columnName) {
|
|
146
|
-
return `ALTER TABLE ${def.database
|
|
205
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} MODIFY COLUMN ${quoteIdentifier(columnName)} REMOVE CODEC;`;
|
|
147
206
|
}
|
|
148
207
|
export function renderAlterAddIndex(def, index) {
|
|
149
|
-
return `ALTER TABLE ${def.database
|
|
208
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} ADD INDEX IF NOT EXISTS ${quoteIdentifier(index.name)} (${index.expression}) TYPE ${renderIndexType(index)} GRANULARITY ${index.type === 'text' ? TEXT_INDEX_GRANULARITY : index.granularity};`;
|
|
150
209
|
}
|
|
151
210
|
export function renderAlterDropIndex(def, indexName) {
|
|
152
|
-
return `ALTER TABLE ${def.database
|
|
211
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} DROP INDEX IF EXISTS ${quoteIdentifier(indexName)};`;
|
|
153
212
|
}
|
|
154
213
|
export function renderAlterAddProjection(def, projection) {
|
|
155
|
-
return `ALTER TABLE ${def.database
|
|
214
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} ADD PROJECTION IF NOT EXISTS ${quoteIdentifier(projection.name)} ${renderProjectionBody(projection)};`;
|
|
156
215
|
}
|
|
157
216
|
export function renderAlterDropProjection(def, projectionName) {
|
|
158
|
-
return `ALTER TABLE ${def.database
|
|
217
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} DROP PROJECTION IF EXISTS ${quoteIdentifier(projectionName)};`;
|
|
159
218
|
}
|
|
160
219
|
export function renderAlterModifySetting(def, key, value) {
|
|
161
|
-
return `ALTER TABLE ${def.database
|
|
220
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} MODIFY SETTING ${key} = ${value};`;
|
|
162
221
|
}
|
|
163
222
|
export function renderAlterResetSetting(def, key) {
|
|
164
|
-
return `ALTER TABLE ${def.database
|
|
223
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} RESET SETTING ${key};`;
|
|
165
224
|
}
|
|
166
225
|
export function renderAlterModifyTTL(def, ttl) {
|
|
167
226
|
if (ttl === undefined) {
|
|
168
|
-
return `ALTER TABLE ${def.database
|
|
227
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} REMOVE TTL;`;
|
|
169
228
|
}
|
|
170
|
-
return `ALTER TABLE ${def.database
|
|
229
|
+
return `ALTER TABLE ${renderQualifiedName(def.database, def.name)} MODIFY TTL ${ttl};`;
|
|
171
230
|
}
|
|
172
231
|
//# sourceMappingURL=sql.js.map
|
package/dist/sql.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sql.js","sourceRoot":"","sources":["../src/sql.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function textSQLTokens(sql: string): string[];
|
|
2
|
+
export declare function formatTextSQL(tokens: string[]): string;
|
|
3
|
+
export declare function normalizeTextIndexSQL(sql: string): string;
|
|
4
|
+
export declare function textExpressionFingerprint(sql: string): string;
|
|
5
|
+
export declare function textSQLFingerprint(sql: string): string;
|
|
6
|
+
//# sourceMappingURL=text-index-sql.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-index-sql.d.ts","sourceRoot":"","sources":["../src/text-index-sql.ts"],"names":[],"mappings":"AAoFA,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAiEnD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAYtD;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAc7D;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAStD"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
// A small lexer for text-index SQL fragments, not a SQL grammar. Keep literals
|
|
2
|
+
// opaque to whitespace/parenthesis handling and canonicalize their byte escapes.
|
|
3
|
+
const ESCAPES = {
|
|
4
|
+
'0': 0,
|
|
5
|
+
a: 7,
|
|
6
|
+
b: 8,
|
|
7
|
+
t: 9,
|
|
8
|
+
n: 10,
|
|
9
|
+
v: 11,
|
|
10
|
+
f: 12,
|
|
11
|
+
r: 13,
|
|
12
|
+
e: 27,
|
|
13
|
+
};
|
|
14
|
+
const UTF8 = new TextEncoder();
|
|
15
|
+
// Literal names and ambiguous keywords must remain identifiers when compared.
|
|
16
|
+
// Match ClickHouse's writeProbablyQuotedStringImpl (src/IO/WriteHelpers.cpp),
|
|
17
|
+
// including NULL, which its isValidIdentifier helper excludes separately.
|
|
18
|
+
const QUOTED_IDENTIFIERS = new Set([
|
|
19
|
+
'null',
|
|
20
|
+
'true',
|
|
21
|
+
'false',
|
|
22
|
+
'inf',
|
|
23
|
+
'infinity',
|
|
24
|
+
'nan',
|
|
25
|
+
'distinct',
|
|
26
|
+
'all',
|
|
27
|
+
'some',
|
|
28
|
+
'table',
|
|
29
|
+
'select',
|
|
30
|
+
'from',
|
|
31
|
+
'top',
|
|
32
|
+
'values',
|
|
33
|
+
]);
|
|
34
|
+
function stringLiteral(body) {
|
|
35
|
+
const bytes = [];
|
|
36
|
+
for (let i = 0; i < body.length;) {
|
|
37
|
+
const char = body[i] ?? '';
|
|
38
|
+
if (char === "'" && body[i + 1] === "'") {
|
|
39
|
+
bytes.push(39);
|
|
40
|
+
i += 2;
|
|
41
|
+
}
|
|
42
|
+
else if (char === '\\') {
|
|
43
|
+
const next = String.fromCodePoint(body.codePointAt(i + 1) ?? 0);
|
|
44
|
+
const hex = body.slice(i + 2, i + 4);
|
|
45
|
+
if (next === 'x' && /^[\da-f]{2}$/i.test(hex)) {
|
|
46
|
+
bytes.push(Number.parseInt(hex, 16));
|
|
47
|
+
i += 4;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
// Unknown escapes (including regex \s and LIKE \%) keep their backslash.
|
|
51
|
+
if (next === 'x')
|
|
52
|
+
throw new Error('Invalid hexadecimal SQL escape');
|
|
53
|
+
if (next === 'N') {
|
|
54
|
+
i += 2;
|
|
55
|
+
continue;
|
|
56
|
+
}
|
|
57
|
+
if (ESCAPES[next] === undefined && !["'", '"', '`', '\\', '/', '='].includes(next))
|
|
58
|
+
bytes.push(92);
|
|
59
|
+
bytes.push(...(ESCAPES[next] !== undefined ? [ESCAPES[next] ?? 0] : UTF8.encode(next)));
|
|
60
|
+
i += 1 + next.length;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
const point = String.fromCodePoint(body.codePointAt(i) ?? 0);
|
|
65
|
+
bytes.push(...UTF8.encode(point));
|
|
66
|
+
i += point.length;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return literalFromBytes(bytes);
|
|
70
|
+
}
|
|
71
|
+
function literalFromBytes(bytes) {
|
|
72
|
+
return ("'" +
|
|
73
|
+
Array.from(bytes)
|
|
74
|
+
.map((byte) => {
|
|
75
|
+
if (byte === 39)
|
|
76
|
+
return "\\'";
|
|
77
|
+
if (byte === 92)
|
|
78
|
+
return '\\\\';
|
|
79
|
+
if (byte >= 32 && byte < 127)
|
|
80
|
+
return String.fromCharCode(byte);
|
|
81
|
+
return `\\x${byte.toString(16).padStart(2, '0')}`;
|
|
82
|
+
})
|
|
83
|
+
.join('') +
|
|
84
|
+
"'");
|
|
85
|
+
}
|
|
86
|
+
export function textSQLTokens(sql) {
|
|
87
|
+
const tokens = [];
|
|
88
|
+
const brackets = [];
|
|
89
|
+
for (let i = 0; i < sql.length;) {
|
|
90
|
+
const char = sql[i] ?? '';
|
|
91
|
+
if (/\s/.test(char)) {
|
|
92
|
+
i++;
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
if (sql.startsWith('--', i)) {
|
|
96
|
+
const end = sql.indexOf('\n', i + 2);
|
|
97
|
+
i = end < 0 ? sql.length : end + 1;
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
if (sql.startsWith('/*', i)) {
|
|
101
|
+
const end = sql.indexOf('*/', i + 2);
|
|
102
|
+
if (end < 0)
|
|
103
|
+
throw new Error('Unterminated SQL comment');
|
|
104
|
+
i = end + 2;
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
if (char === "'" || char === '"' || char === '`') {
|
|
108
|
+
const start = i++;
|
|
109
|
+
let closed = false;
|
|
110
|
+
while (i < sql.length) {
|
|
111
|
+
if (sql[i] === '\\') {
|
|
112
|
+
i += 2;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (sql[i++] === char) {
|
|
116
|
+
if (sql[i] === char) {
|
|
117
|
+
i++;
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
closed = true;
|
|
121
|
+
break;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
if (!closed)
|
|
125
|
+
throw new Error('Unterminated SQL quote');
|
|
126
|
+
const raw = sql.slice(start, i);
|
|
127
|
+
tokens.push(char === "'" ? stringLiteral(raw.slice(1, -1)) : raw);
|
|
128
|
+
continue;
|
|
129
|
+
}
|
|
130
|
+
if (char === '$') {
|
|
131
|
+
// ClickHouse reads $tag$...$tag$ as a raw string and stores it as '...'.
|
|
132
|
+
const tag = /^\$[A-Za-z0-9_]*\$/.exec(sql.slice(i))?.[0];
|
|
133
|
+
const end = tag === undefined ? -1 : sql.indexOf(tag, i + tag.length);
|
|
134
|
+
if (tag !== undefined && end >= 0) {
|
|
135
|
+
tokens.push(literalFromBytes(UTF8.encode(sql.slice(i + tag.length, end))));
|
|
136
|
+
i = end + tag.length;
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
if (char === ';')
|
|
141
|
+
throw new Error('Expected a SQL expression, not a statement');
|
|
142
|
+
if ('([{'.includes(char))
|
|
143
|
+
brackets.push(char);
|
|
144
|
+
if (')]}'.includes(char) && brackets.pop() !== { ')': '(', ']': '[', '}': '{' }[char]) {
|
|
145
|
+
throw new Error('Unbalanced SQL brackets');
|
|
146
|
+
}
|
|
147
|
+
const word = sql
|
|
148
|
+
.slice(i)
|
|
149
|
+
.match(/^(?:\d+(?:\.\d*)?(?:[eE][+-]?\d+)?|[\p{L}\p{N}_$]+|->|<=|>=|!=|<>|\|\||::|==)/u)?.[0];
|
|
150
|
+
tokens.push(word ?? char);
|
|
151
|
+
i += word?.length ?? 1;
|
|
152
|
+
}
|
|
153
|
+
if (brackets.length)
|
|
154
|
+
throw new Error('Unbalanced SQL brackets');
|
|
155
|
+
return tokens;
|
|
156
|
+
}
|
|
157
|
+
export function formatTextSQL(tokens) {
|
|
158
|
+
let sql = '';
|
|
159
|
+
for (const [i, token] of tokens.entries()) {
|
|
160
|
+
const previous = tokens[i - 1];
|
|
161
|
+
const tight = i === 0 ||
|
|
162
|
+
[')', ']', '}', ',', '.'].includes(token) ||
|
|
163
|
+
['(', '[', '{', '.'].includes(previous ?? '') ||
|
|
164
|
+
(token === '(' && /^[\p{L}_][\p{L}\p{N}_]*$/u.test(previous ?? ''));
|
|
165
|
+
sql += (tight ? '' : ' ') + token;
|
|
166
|
+
}
|
|
167
|
+
return sql;
|
|
168
|
+
}
|
|
169
|
+
export function normalizeTextIndexSQL(sql) {
|
|
170
|
+
return formatTextSQL(textSQLTokens(sql));
|
|
171
|
+
}
|
|
172
|
+
export function textExpressionFingerprint(sql) {
|
|
173
|
+
let tokens = textSQLTokens(sql);
|
|
174
|
+
// ClickHouse may add or remove the outer INDEX expression parentheses.
|
|
175
|
+
while (tokens[0] === '(' && tokens.at(-1) === ')') {
|
|
176
|
+
let depth = 0;
|
|
177
|
+
const wraps = tokens.every((token, i) => {
|
|
178
|
+
if (token === '(')
|
|
179
|
+
depth++;
|
|
180
|
+
if (token === ')')
|
|
181
|
+
depth--;
|
|
182
|
+
return depth !== 0 || i === tokens.length - 1;
|
|
183
|
+
});
|
|
184
|
+
if (!wraps)
|
|
185
|
+
break;
|
|
186
|
+
tokens = tokens.slice(1, -1);
|
|
187
|
+
}
|
|
188
|
+
return formatTextSQL(tokens);
|
|
189
|
+
}
|
|
190
|
+
// Compare redundant identifier quotes without removing them from generated SQL.
|
|
191
|
+
export function textSQLFingerprint(sql) {
|
|
192
|
+
return JSON.stringify(textSQLTokens(sql).map((token) => {
|
|
193
|
+
const identifier = token.match(/^([`"])([A-Za-z_][A-Za-z0-9_]*)\1$/)?.[2];
|
|
194
|
+
if (identifier === undefined)
|
|
195
|
+
return token;
|
|
196
|
+
// Backticks and double quotes name the same identifier; preserve its case.
|
|
197
|
+
return QUOTED_IDENTIFIERS.has(identifier.toLowerCase()) ? `\`${identifier}\`` : identifier;
|
|
198
|
+
}));
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=text-index-sql.js.map
|