@uwdata/mosaic-sql 0.21.1 → 0.23.0
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/src/ast/query.d.ts +50 -0
- package/dist/src/ast/query.d.ts.map +1 -1
- package/dist/src/ast/query.js +59 -2
- package/dist/src/ast/query.js.map +1 -1
- package/dist/src/constants.d.ts +2 -0
- package/dist/src/constants.d.ts.map +1 -1
- package/dist/src/constants.js +2 -0
- package/dist/src/constants.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/load/create.d.ts +4 -9
- package/dist/src/load/create.d.ts.map +1 -1
- package/dist/src/load/create.js +5 -11
- package/dist/src/load/create.js.map +1 -1
- package/dist/src/load/load.d.ts +7 -7
- package/dist/src/load/load.d.ts.map +1 -1
- package/dist/src/load/load.js.map +1 -1
- package/dist/src/visit/codegen/duckdb.d.ts +3 -1
- package/dist/src/visit/codegen/duckdb.d.ts.map +1 -1
- package/dist/src/visit/codegen/duckdb.js +15 -0
- package/dist/src/visit/codegen/duckdb.js.map +1 -1
- package/dist/src/visit/codegen/sql.d.ts +4 -2
- package/dist/src/visit/codegen/sql.d.ts.map +1 -1
- package/dist/src/visit/codegen/sql.js +3 -1
- package/dist/src/visit/codegen/sql.js.map +1 -1
- package/dist/src/visit/recurse.d.ts.map +1 -1
- package/dist/src/visit/recurse.js +3 -1
- package/dist/src/visit/recurse.js.map +1 -1
- package/package.json +3 -3
- package/src/ast/query.ts +83 -3
- package/src/constants.ts +2 -0
- package/src/index.ts +1 -1
- package/src/load/create.ts +6 -22
- package/src/load/load.ts +2 -1
- package/src/visit/codegen/duckdb.ts +19 -0
- package/src/visit/codegen/sql.ts +8 -0
- package/src/visit/recurse.ts +4 -0
- package/dist/src/visit/duckdb-visitor.d.ts +0 -50
- package/dist/src/visit/duckdb-visitor.d.ts.map +0 -1
- package/dist/src/visit/duckdb-visitor.js +0 -350
- package/dist/src/visit/duckdb-visitor.js.map +0 -1
- package/dist/src/visit/to-string-visitor.d.ts +0 -60
- package/dist/src/visit/to-string-visitor.d.ts.map +0 -1
- package/dist/src/visit/to-string-visitor.js +0 -80
- package/dist/src/visit/to-string-visitor.js.map +0 -1
|
@@ -1,350 +0,0 @@
|
|
|
1
|
-
import { ToStringVisitor } from './to-string-visitor.js';
|
|
2
|
-
import { ColumnRefNode } from '../index.js';
|
|
3
|
-
import { quoteIdentifier } from '../util/string.js';
|
|
4
|
-
import { literalToSQL } from '../ast/literal.js';
|
|
5
|
-
function betweenToString(node, op) {
|
|
6
|
-
const { extent: r, expr } = node;
|
|
7
|
-
return r ? `(${expr} ${op} ${r[0]} AND ${r[1]})` : '';
|
|
8
|
-
}
|
|
9
|
-
function isColumnRefFor(expr, name) {
|
|
10
|
-
return expr instanceof ColumnRefNode
|
|
11
|
-
&& expr.table == null
|
|
12
|
-
&& expr.column === name;
|
|
13
|
-
}
|
|
14
|
-
/**
|
|
15
|
-
* DuckDB SQL dialect visitor for converting AST nodes to DuckDB-compatible SQL.
|
|
16
|
-
*/
|
|
17
|
-
export class DuckDBVisitor extends ToStringVisitor {
|
|
18
|
-
visitAggregate(node) {
|
|
19
|
-
const { name, args, isDistinct, filter, order } = node;
|
|
20
|
-
const arg = [
|
|
21
|
-
isDistinct ? 'DISTINCT' : '',
|
|
22
|
-
args?.length ? this.mapToString(args).join(', ')
|
|
23
|
-
: name.toLowerCase() === 'count' ? '*'
|
|
24
|
-
: '',
|
|
25
|
-
order.length ? `ORDER BY ${this.mapToString(order).join(', ')}` : ''
|
|
26
|
-
].filter(x => x).join(' ');
|
|
27
|
-
const filt = filter ? ` FILTER (WHERE ${this.toString(filter)})` : '';
|
|
28
|
-
return `${name}(${arg})${filt}`;
|
|
29
|
-
}
|
|
30
|
-
visitBetween(node) {
|
|
31
|
-
return betweenToString(node, 'BETWEEN');
|
|
32
|
-
}
|
|
33
|
-
visitBinary(node) {
|
|
34
|
-
const { left, right, op } = node;
|
|
35
|
-
return `(${this.toString(left)} ${op} ${this.toString(right)})`;
|
|
36
|
-
}
|
|
37
|
-
visitCase(node) {
|
|
38
|
-
const { expr, _when, _else } = node;
|
|
39
|
-
return 'CASE '
|
|
40
|
-
+ (expr ? `${this.toString(expr)} ` : '')
|
|
41
|
-
+ this.mapToString(_when).join(' ')
|
|
42
|
-
+ (_else ? ` ELSE ${this.toString(_else)}` : '')
|
|
43
|
-
+ ' END';
|
|
44
|
-
}
|
|
45
|
-
visitCast(node) {
|
|
46
|
-
const { expr, cast } = node;
|
|
47
|
-
return `(${this.toString(expr)})::${cast}`;
|
|
48
|
-
}
|
|
49
|
-
visitCollate(node) {
|
|
50
|
-
const { expr, collation } = node;
|
|
51
|
-
return `${this.toString(expr)} COLLATE ${collation}`;
|
|
52
|
-
}
|
|
53
|
-
visitColumnParam(node) {
|
|
54
|
-
const { param, table } = node;
|
|
55
|
-
const tref = table ? `${this.toString(table)}.` : '';
|
|
56
|
-
return `${tref}${this.toString(param)}`;
|
|
57
|
-
}
|
|
58
|
-
visitColumnRef(node) {
|
|
59
|
-
const { column, table } = node;
|
|
60
|
-
const tref = table ? `${this.toString(table)}.` : '';
|
|
61
|
-
const id = column === '*' ? '*' : quoteIdentifier(column);
|
|
62
|
-
return `${tref}${id}`;
|
|
63
|
-
}
|
|
64
|
-
visitDescribeQuery(node) {
|
|
65
|
-
const { query } = node;
|
|
66
|
-
return `DESCRIBE ${this.toString(query)}`;
|
|
67
|
-
}
|
|
68
|
-
visitExpression(node) {
|
|
69
|
-
// This method might not be used in practice, but needs to exist for the interface
|
|
70
|
-
// If we reach here, it might be an error or a generic fallback
|
|
71
|
-
throw new Error(`Unexpected EXPRESSION node type. Node: ${JSON.stringify(node)}`);
|
|
72
|
-
}
|
|
73
|
-
visitFragment(node) {
|
|
74
|
-
const { spans } = node;
|
|
75
|
-
return spans.map((span) => {
|
|
76
|
-
return typeof span === 'string' ? span : this.toString(span);
|
|
77
|
-
}).join('');
|
|
78
|
-
}
|
|
79
|
-
visitFromClause(node) {
|
|
80
|
-
const { expr, alias, sample } = node;
|
|
81
|
-
const isQuery = expr.type === 'SELECT_QUERY' || expr.type === 'SET_OPERATION';
|
|
82
|
-
const isTableRef = expr.type === 'TABLE_REF';
|
|
83
|
-
const ref = isQuery ? `(${this.toString(expr)})` : `${this.toString(expr)}`;
|
|
84
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
85
|
-
const from = alias && !(isTableRef && expr.table?.join('.') === alias)
|
|
86
|
-
? `${ref} AS ${quoteIdentifier(alias)}`
|
|
87
|
-
: `${ref}`;
|
|
88
|
-
return `${from}${sample ? ` TABLESAMPLE ${this.toString(sample)}` : ''}`;
|
|
89
|
-
}
|
|
90
|
-
visitFunction(node) {
|
|
91
|
-
const { name, args } = node;
|
|
92
|
-
return `${name}(${this.mapToString(args).join(', ')})`;
|
|
93
|
-
}
|
|
94
|
-
visitIn(node) {
|
|
95
|
-
const { expr, values } = node;
|
|
96
|
-
return `(${this.toString(expr)} IN (${this.mapToString(values).join(', ')}))`;
|
|
97
|
-
}
|
|
98
|
-
visitInterval(node) {
|
|
99
|
-
const { steps, name } = node;
|
|
100
|
-
return `INTERVAL ${steps} ${name}`;
|
|
101
|
-
}
|
|
102
|
-
visitJoinClause(node) {
|
|
103
|
-
const { left, right, joinVariant, joinType, condition, using, sample } = node;
|
|
104
|
-
const variant = joinVariant === 'REGULAR' ? '' : `${joinVariant} `;
|
|
105
|
-
let type = '';
|
|
106
|
-
let cond = '';
|
|
107
|
-
if (joinVariant !== 'CROSS') {
|
|
108
|
-
type = joinType !== 'INNER' ? `${joinType} ` : '';
|
|
109
|
-
cond = condition ? ` ON ${condition}`
|
|
110
|
-
: using ? ` USING (${using?.join(', ')})`
|
|
111
|
-
: '';
|
|
112
|
-
}
|
|
113
|
-
const samp = sample ? ` USING SAMPLE ${sample}` : '';
|
|
114
|
-
return `${left} ${variant}${type}JOIN ${right}${cond}${samp}`;
|
|
115
|
-
}
|
|
116
|
-
visitList(node) {
|
|
117
|
-
const { values } = node;
|
|
118
|
-
return `[${this.mapToString(values).join(', ')}]`;
|
|
119
|
-
}
|
|
120
|
-
visitLiteral(node) {
|
|
121
|
-
const { value } = node;
|
|
122
|
-
return literalToSQL(value);
|
|
123
|
-
}
|
|
124
|
-
visitLogicalOperator(node) {
|
|
125
|
-
const { clauses, op } = node;
|
|
126
|
-
const c = this.mapToString(clauses);
|
|
127
|
-
return c.length === 0 ? ''
|
|
128
|
-
: c.length === 1 ? `${c[0]}`
|
|
129
|
-
: `(${c.join(` ${op} `)})`;
|
|
130
|
-
}
|
|
131
|
-
visitNotBetween(node) {
|
|
132
|
-
return betweenToString(node, 'NOT BETWEEN');
|
|
133
|
-
}
|
|
134
|
-
visitOrderBy(node) {
|
|
135
|
-
const { expr, desc, nullsFirst } = node;
|
|
136
|
-
const dir = desc ? ' DESC'
|
|
137
|
-
: desc === false ? ' ASC'
|
|
138
|
-
: '';
|
|
139
|
-
const nf = nullsFirst ? ' NULLS FIRST'
|
|
140
|
-
: nullsFirst === false ? ' NULLS LAST'
|
|
141
|
-
: '';
|
|
142
|
-
return `${this.toString(expr)}${dir}${nf}`;
|
|
143
|
-
}
|
|
144
|
-
visitParam(node) {
|
|
145
|
-
const { param } = node;
|
|
146
|
-
// Get the current value from the parameter and format it as a literal
|
|
147
|
-
return literalToSQL(param.value);
|
|
148
|
-
}
|
|
149
|
-
visitSampleClause(node) {
|
|
150
|
-
const { size, perc, method, seed } = node;
|
|
151
|
-
const m = method ? `${method} ` : '';
|
|
152
|
-
const s = seed != null ? ` REPEATABLE (${seed})` : '';
|
|
153
|
-
return `${m}(${size}${perc ? '%' : ' ROWS'})${s}`;
|
|
154
|
-
}
|
|
155
|
-
visitScalarSubquery(node) {
|
|
156
|
-
return `(${this.toString(node.subquery)})`;
|
|
157
|
-
}
|
|
158
|
-
visitSelectClause(node) {
|
|
159
|
-
const { expr, alias } = node;
|
|
160
|
-
return !alias || isColumnRefFor(expr, alias)
|
|
161
|
-
? this.toString(expr)
|
|
162
|
-
: `${this.toString(expr)} AS ${quoteIdentifier(alias)}`;
|
|
163
|
-
}
|
|
164
|
-
visitSelectQuery(node) {
|
|
165
|
-
const { _with, _select, _distinct, _from, _sample, _where, _groupby, _having, _window, _qualify, _orderby, _limitPerc, _limit, _offset } = node;
|
|
166
|
-
const sql = [];
|
|
167
|
-
// WITH
|
|
168
|
-
if (_with.length) {
|
|
169
|
-
sql.push(`WITH ${this.mapToString(_with).join(', ')}`);
|
|
170
|
-
}
|
|
171
|
-
// SELECT
|
|
172
|
-
sql.push(`SELECT${_distinct ? ' DISTINCT' : ''} ${this.mapToString(_select).join(', ')}`);
|
|
173
|
-
// FROM
|
|
174
|
-
if (_from.length) {
|
|
175
|
-
sql.push(`FROM ${this.mapToString(_from).join(', ')}`);
|
|
176
|
-
}
|
|
177
|
-
// SAMPLE
|
|
178
|
-
if (_sample) {
|
|
179
|
-
sql.push(`USING SAMPLE ${this.toString(_sample)}`);
|
|
180
|
-
}
|
|
181
|
-
// WHERE
|
|
182
|
-
if (_where.length) {
|
|
183
|
-
const clauses = this.mapToString(_where).filter(x => x).join(' AND ');
|
|
184
|
-
if (clauses)
|
|
185
|
-
sql.push(`WHERE ${clauses}`);
|
|
186
|
-
}
|
|
187
|
-
// GROUP BY
|
|
188
|
-
if (_groupby.length) {
|
|
189
|
-
sql.push(`GROUP BY ${this.mapToString(_groupby).join(', ')}`);
|
|
190
|
-
}
|
|
191
|
-
// HAVING
|
|
192
|
-
if (_having.length) {
|
|
193
|
-
const clauses = this.mapToString(_having).filter(x => x).join(' AND ');
|
|
194
|
-
if (clauses)
|
|
195
|
-
sql.push(`HAVING ${clauses}`);
|
|
196
|
-
}
|
|
197
|
-
// WINDOW
|
|
198
|
-
if (_window.length) {
|
|
199
|
-
sql.push(`WINDOW ${this.mapToString(_window).join(', ')}`);
|
|
200
|
-
}
|
|
201
|
-
// QUALIFY
|
|
202
|
-
if (_qualify.length) {
|
|
203
|
-
const clauses = this.mapToString(_qualify).filter(x => x).join(' AND ');
|
|
204
|
-
if (clauses)
|
|
205
|
-
sql.push(`QUALIFY ${clauses}`);
|
|
206
|
-
}
|
|
207
|
-
// ORDER BY
|
|
208
|
-
if (_orderby.length) {
|
|
209
|
-
sql.push(`ORDER BY ${this.mapToString(_orderby).join(', ')}`);
|
|
210
|
-
}
|
|
211
|
-
// LIMIT
|
|
212
|
-
if (_limit) {
|
|
213
|
-
sql.push(`LIMIT ${this.toString(_limit)}${_limitPerc ? '%' : ''}`);
|
|
214
|
-
}
|
|
215
|
-
// OFFSET
|
|
216
|
-
if (_offset != null) {
|
|
217
|
-
sql.push(`OFFSET ${this.toString(_offset)}`);
|
|
218
|
-
}
|
|
219
|
-
return sql.join(' ');
|
|
220
|
-
}
|
|
221
|
-
visitSetOperation(node) {
|
|
222
|
-
const { queries, op, _orderby } = node;
|
|
223
|
-
let sql = this.mapToString(queries).join(` ${op} `);
|
|
224
|
-
if (_orderby.length) {
|
|
225
|
-
sql += ` ORDER BY ${this.mapToString(_orderby).join(', ')}`;
|
|
226
|
-
}
|
|
227
|
-
return sql;
|
|
228
|
-
}
|
|
229
|
-
visitTableRef(node) {
|
|
230
|
-
const { table } = node;
|
|
231
|
-
return table.map((t) => quoteIdentifier(t)).join('.');
|
|
232
|
-
}
|
|
233
|
-
visitUnary(node) {
|
|
234
|
-
const { expr, op } = node;
|
|
235
|
-
return `(${op} ${this.toString(expr)})`;
|
|
236
|
-
}
|
|
237
|
-
visitUnaryPostfix(node) {
|
|
238
|
-
const { expr, op } = node;
|
|
239
|
-
return `(${this.toString(expr)} ${op})`;
|
|
240
|
-
}
|
|
241
|
-
visitUnnest(node) {
|
|
242
|
-
const { expr, recursive, maxDepth } = node;
|
|
243
|
-
const args = [this.toString(expr)];
|
|
244
|
-
if (recursive) {
|
|
245
|
-
args.push('recursive := true');
|
|
246
|
-
}
|
|
247
|
-
if (maxDepth != null && maxDepth > 0) {
|
|
248
|
-
args.push(`max_depth := ${maxDepth}`);
|
|
249
|
-
}
|
|
250
|
-
return `UNNEST(${args.join(', ')})`;
|
|
251
|
-
}
|
|
252
|
-
visitVerbatim(node) {
|
|
253
|
-
const { value } = node;
|
|
254
|
-
return value;
|
|
255
|
-
}
|
|
256
|
-
visitWhen(node) {
|
|
257
|
-
const { when, then } = node;
|
|
258
|
-
return `WHEN ${this.toString(when)} THEN ${this.toString(then)}`;
|
|
259
|
-
}
|
|
260
|
-
visitWindow(node) {
|
|
261
|
-
const { func, def } = node;
|
|
262
|
-
return `${this.toString(func)} OVER ${this.toString(def)}`;
|
|
263
|
-
}
|
|
264
|
-
visitWindowClause(node) {
|
|
265
|
-
const { name, def } = node;
|
|
266
|
-
return `${quoteIdentifier(name)} AS ${this.toString(def)}`;
|
|
267
|
-
}
|
|
268
|
-
visitWindowDef(node) {
|
|
269
|
-
const { name, partition, order, framedef } = node;
|
|
270
|
-
const base = name && quoteIdentifier(name);
|
|
271
|
-
const def = [
|
|
272
|
-
base,
|
|
273
|
-
partition?.length && `PARTITION BY ${this.mapToString(partition).join(', ')}`,
|
|
274
|
-
order?.length && `ORDER BY ${this.mapToString(order).join(', ')}`,
|
|
275
|
-
framedef && this.toString(framedef)
|
|
276
|
-
].filter(x => x);
|
|
277
|
-
return base && def.length < 2 ? base : `(${def.join(' ')})`;
|
|
278
|
-
}
|
|
279
|
-
visitWindowExtentExpr(node) {
|
|
280
|
-
const { scope, expr } = node;
|
|
281
|
-
if (expr === null || expr === undefined) {
|
|
282
|
-
return scope; // e.g., "CURRENT ROW", "UNBOUNDED PRECEDING", etc.
|
|
283
|
-
}
|
|
284
|
-
// If expr is a SQLNode, process it through the visitor
|
|
285
|
-
if (expr && typeof expr === 'object' && expr.type) {
|
|
286
|
-
return `${this.toString(expr)} ${scope}`;
|
|
287
|
-
}
|
|
288
|
-
// If expr is a raw value (number, string, etc), use it directly
|
|
289
|
-
return `${expr} ${scope}`;
|
|
290
|
-
}
|
|
291
|
-
visitWindowFrame(node) {
|
|
292
|
-
const { frameType, extent, exclude } = node;
|
|
293
|
-
if (!extent)
|
|
294
|
-
return '';
|
|
295
|
-
// Handle ParamNode extent
|
|
296
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
297
|
-
if (extent.type === 'PARAM') {
|
|
298
|
-
return `${frameType} ${this.toString(extent)}`;
|
|
299
|
-
}
|
|
300
|
-
// Handle array extent [start, end]
|
|
301
|
-
if (Array.isArray(extent) && extent.length === 2) {
|
|
302
|
-
const [start, end] = extent;
|
|
303
|
-
const startExpr = this.formatFrameValue(start, 'PRECEDING');
|
|
304
|
-
const endExpr = this.formatFrameValue(end, 'FOLLOWING');
|
|
305
|
-
const excludeClause = exclude ? ` EXCLUDE ${exclude}` : '';
|
|
306
|
-
return `${frameType} BETWEEN ${startExpr} AND ${endExpr}${excludeClause}`;
|
|
307
|
-
}
|
|
308
|
-
return '';
|
|
309
|
-
}
|
|
310
|
-
formatFrameValue(value, defaultScope) {
|
|
311
|
-
// Handle WindowFrameExprNode
|
|
312
|
-
if (value && typeof value === 'object' && 'type' in value && value.type === 'WINDOW_EXTENT_EXPR') {
|
|
313
|
-
return this.toString(value);
|
|
314
|
-
}
|
|
315
|
-
// Handle other SQLNode types
|
|
316
|
-
if (value && typeof value === 'object' && 'type' in value) {
|
|
317
|
-
return this.toString(value);
|
|
318
|
-
}
|
|
319
|
-
// Handle raw values using the same logic as asFrameExpr
|
|
320
|
-
if (value != null && typeof value !== 'number') {
|
|
321
|
-
return `${value} ${defaultScope}`;
|
|
322
|
-
}
|
|
323
|
-
if (value === 0) {
|
|
324
|
-
return 'CURRENT ROW';
|
|
325
|
-
}
|
|
326
|
-
if (!(value && Number.isFinite(value))) {
|
|
327
|
-
return `UNBOUNDED ${defaultScope}`;
|
|
328
|
-
}
|
|
329
|
-
return `${Math.abs(value)} ${defaultScope}`;
|
|
330
|
-
}
|
|
331
|
-
visitWindowFunction(node) {
|
|
332
|
-
const { name, args, ignoreNulls, order } = node;
|
|
333
|
-
const arg = [
|
|
334
|
-
this.mapToString(args).join(', '),
|
|
335
|
-
order.length ? `ORDER BY ${this.mapToString(order).join(', ')}` : '',
|
|
336
|
-
ignoreNulls ? 'IGNORE NULLS' : ''
|
|
337
|
-
].filter(x => x).join(' ');
|
|
338
|
-
return `${name}(${arg})`;
|
|
339
|
-
}
|
|
340
|
-
visitWithClause(node) {
|
|
341
|
-
const { name, query, materialized } = node;
|
|
342
|
-
const mat = materialized === true ? 'MATERIALIZED '
|
|
343
|
-
: materialized === false ? 'NOT MATERIALIZED '
|
|
344
|
-
: '';
|
|
345
|
-
return `${quoteIdentifier(name)} AS ${mat}(${this.toString(query)})`;
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
// Create a default DuckDB visitor instance for convenience
|
|
349
|
-
export const duckdbVisitor = new DuckDBVisitor();
|
|
350
|
-
//# sourceMappingURL=duckdb-visitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb-visitor.js","sourceRoot":"","sources":["../../../src/visit/duckdb-visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import type { SQLNode, ExprNode, AggregateNode, BetweenOpNode, NotBetweenOpNode, BinaryOpNode, CaseNode, WhenNode, CastNode, CollateNode, ColumnParamNode, ColumnRefNode, FragmentNode, FromClauseNode, FunctionNode, InOpNode, IntervalNode, JoinNode, ListNode, LiteralNode, LogicalOpNode, OrderByNode, ParamNode, DescribeQuery, SelectQuery, SetOperation, SampleClauseNode, SelectClauseNode, ScalarSubqueryNode, TableRefNode, UnaryOpNode, UnaryPostfixOpNode, UnnestNode, VerbatimNode, WindowNode, WindowClauseNode, WindowDefNode, WindowFunctionNode, WindowFrameNode, WindowFrameExprNode, WithClauseNode } from '../index.js';
|
|
2
|
-
/**
|
|
3
|
-
* Abstract base class for SQL visitors providing common functionality.
|
|
4
|
-
*/
|
|
5
|
-
export declare abstract class ToStringVisitor {
|
|
6
|
-
/**
|
|
7
|
-
* Convert a SQL AST node to a string using this visitor.
|
|
8
|
-
* @param node The SQL AST node to convert.
|
|
9
|
-
* @returns The SQL string representation.
|
|
10
|
-
*/
|
|
11
|
-
toString(node: SQLNode): string;
|
|
12
|
-
protected getVisitMethod(nodeType: string): ((node: AggregateNode) => string) | ((node: BetweenOpNode) => string) | ((node: BinaryOpNode) => string) | ((node: CaseNode) => string) | ((node: CastNode) => string) | ((node: CollateNode) => string) | ((node: ColumnParamNode) => string) | ((node: DescribeQuery) => string);
|
|
13
|
-
/**
|
|
14
|
-
* Helper method to convert child nodes to strings.
|
|
15
|
-
* @param nodes Array of child nodes.
|
|
16
|
-
* @returns Array of SQL strings.
|
|
17
|
-
*/
|
|
18
|
-
protected mapToString(nodes: SQLNode[]): string[];
|
|
19
|
-
abstract visitAggregate(node: AggregateNode): string;
|
|
20
|
-
abstract visitBetween(node: BetweenOpNode): string;
|
|
21
|
-
abstract visitBinary(node: BinaryOpNode): string;
|
|
22
|
-
abstract visitCase(node: CaseNode): string;
|
|
23
|
-
abstract visitCast(node: CastNode): string;
|
|
24
|
-
abstract visitCollate(node: CollateNode): string;
|
|
25
|
-
abstract visitColumnParam(node: ColumnParamNode): string;
|
|
26
|
-
abstract visitColumnRef(node: ColumnRefNode): string;
|
|
27
|
-
abstract visitDescribeQuery(node: DescribeQuery): string;
|
|
28
|
-
abstract visitExpression(node: ExprNode): string;
|
|
29
|
-
abstract visitFragment(node: FragmentNode): string;
|
|
30
|
-
abstract visitFromClause(node: FromClauseNode): string;
|
|
31
|
-
abstract visitFunction(node: FunctionNode): string;
|
|
32
|
-
abstract visitIn(node: InOpNode): string;
|
|
33
|
-
abstract visitInterval(node: IntervalNode): string;
|
|
34
|
-
abstract visitJoinClause(node: JoinNode): string;
|
|
35
|
-
abstract visitList(node: ListNode): string;
|
|
36
|
-
abstract visitLiteral(node: LiteralNode): string;
|
|
37
|
-
abstract visitLogicalOperator(node: LogicalOpNode<ExprNode>): string;
|
|
38
|
-
abstract visitNotBetween(node: NotBetweenOpNode): string;
|
|
39
|
-
abstract visitOrderBy(node: OrderByNode): string;
|
|
40
|
-
abstract visitParam(node: ParamNode): string;
|
|
41
|
-
abstract visitSampleClause(node: SampleClauseNode): string;
|
|
42
|
-
abstract visitScalarSubquery(node: ScalarSubqueryNode): string;
|
|
43
|
-
abstract visitSelectClause(node: SelectClauseNode): string;
|
|
44
|
-
abstract visitSelectQuery(node: SelectQuery): string;
|
|
45
|
-
abstract visitSetOperation(node: SetOperation): string;
|
|
46
|
-
abstract visitTableRef(node: TableRefNode): string;
|
|
47
|
-
abstract visitUnary(node: UnaryOpNode): string;
|
|
48
|
-
abstract visitUnaryPostfix(node: UnaryPostfixOpNode): string;
|
|
49
|
-
abstract visitUnnest(node: UnnestNode): string;
|
|
50
|
-
abstract visitVerbatim(node: VerbatimNode): string;
|
|
51
|
-
abstract visitWhen(node: WhenNode): string;
|
|
52
|
-
abstract visitWindow(node: WindowNode): string;
|
|
53
|
-
abstract visitWindowClause(node: WindowClauseNode): string;
|
|
54
|
-
abstract visitWindowDef(node: WindowDefNode): string;
|
|
55
|
-
abstract visitWindowExtentExpr(node: WindowFrameExprNode): string;
|
|
56
|
-
abstract visitWindowFrame(node: WindowFrameNode): string;
|
|
57
|
-
abstract visitWindowFunction(node: WindowFunctionNode): string;
|
|
58
|
-
abstract visitWithClause(node: WithClauseNode): string;
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=to-string-visitor.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-string-visitor.d.ts","sourceRoot":"","sources":["../../../src/visit/to-string-visitor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { AGGREGATE, BETWEEN_OPERATOR, BINARY_OPERATOR, CASE, CAST, COLLATE, COLUMN_PARAM, COLUMN_REF, DESCRIBE_QUERY, EXPRESSION, FRAGMENT, FROM_CLAUSE, FUNCTION, IN_OPERATOR, INTERVAL, JOIN_CLAUSE, LIST, LITERAL, LOGICAL_OPERATOR, NOT_BETWEEN_OPERATOR, ORDER_BY, PARAM, SAMPLE_CLAUSE, SCALAR_SUBQUERY, SELECT_CLAUSE, SELECT_QUERY, SET_OPERATION, TABLE_REF, UNARY_OPERATOR, UNARY_POSTFIX_OPERATOR, UNNEST, VERBATIM, WHEN, WINDOW, WINDOW_CLAUSE, WINDOW_DEF, WINDOW_EXTENT_EXPR, WINDOW_FRAME, WINDOW_FUNCTION, WITH_CLAUSE } from '../constants.js';
|
|
2
|
-
/**
|
|
3
|
-
* Abstract base class for SQL visitors providing common functionality.
|
|
4
|
-
*/
|
|
5
|
-
export class ToStringVisitor {
|
|
6
|
-
/**
|
|
7
|
-
* Convert a SQL AST node to a string using this visitor.
|
|
8
|
-
* @param node The SQL AST node to convert.
|
|
9
|
-
* @returns The SQL string representation.
|
|
10
|
-
*/
|
|
11
|
-
toString(node) {
|
|
12
|
-
if (!node) {
|
|
13
|
-
throw new Error('Node is null or undefined');
|
|
14
|
-
}
|
|
15
|
-
if (typeof node.type !== 'string') {
|
|
16
|
-
throw new Error(`Node type is not a string: ${typeof node.type}, value: ${node.type}`);
|
|
17
|
-
}
|
|
18
|
-
const method = this.getVisitMethod(node.type);
|
|
19
|
-
if (typeof method === 'function') {
|
|
20
|
-
// @ts-expect-error: fix me
|
|
21
|
-
return method.call(this, node);
|
|
22
|
-
}
|
|
23
|
-
throw new Error(`No visitor method for node type: '${node.type}'`);
|
|
24
|
-
}
|
|
25
|
-
getVisitMethod(nodeType) {
|
|
26
|
-
switch (nodeType) {
|
|
27
|
-
case AGGREGATE: return this.visitAggregate;
|
|
28
|
-
case BETWEEN_OPERATOR: return this.visitBetween;
|
|
29
|
-
case BINARY_OPERATOR: return this.visitBinary;
|
|
30
|
-
case CASE: return this.visitCase;
|
|
31
|
-
case CAST: return this.visitCast;
|
|
32
|
-
case COLLATE: return this.visitCollate;
|
|
33
|
-
case COLUMN_PARAM: return this.visitColumnParam;
|
|
34
|
-
case COLUMN_REF: return this.visitColumnRef;
|
|
35
|
-
case DESCRIBE_QUERY: return this.visitDescribeQuery;
|
|
36
|
-
case EXPRESSION: return this.visitExpression;
|
|
37
|
-
case FRAGMENT: return this.visitFragment;
|
|
38
|
-
case FROM_CLAUSE: return this.visitFromClause;
|
|
39
|
-
case FUNCTION: return this.visitFunction;
|
|
40
|
-
case IN_OPERATOR: return this.visitIn;
|
|
41
|
-
case INTERVAL: return this.visitInterval;
|
|
42
|
-
case JOIN_CLAUSE: return this.visitJoinClause;
|
|
43
|
-
case LIST: return this.visitList;
|
|
44
|
-
case LITERAL: return this.visitLiteral;
|
|
45
|
-
case LOGICAL_OPERATOR: return this.visitLogicalOperator;
|
|
46
|
-
case NOT_BETWEEN_OPERATOR: return this.visitNotBetween;
|
|
47
|
-
case ORDER_BY: return this.visitOrderBy;
|
|
48
|
-
case PARAM: return this.visitParam;
|
|
49
|
-
case SAMPLE_CLAUSE: return this.visitSampleClause;
|
|
50
|
-
case SCALAR_SUBQUERY: return this.visitScalarSubquery;
|
|
51
|
-
case SELECT_CLAUSE: return this.visitSelectClause;
|
|
52
|
-
case SELECT_QUERY: return this.visitSelectQuery;
|
|
53
|
-
case SET_OPERATION: return this.visitSetOperation;
|
|
54
|
-
case TABLE_REF: return this.visitTableRef;
|
|
55
|
-
case UNARY_OPERATOR: return this.visitUnary;
|
|
56
|
-
case UNARY_POSTFIX_OPERATOR: return this.visitUnaryPostfix;
|
|
57
|
-
case UNNEST: return this.visitUnnest;
|
|
58
|
-
case VERBATIM: return this.visitVerbatim;
|
|
59
|
-
case WHEN: return this.visitWhen;
|
|
60
|
-
case WINDOW: return this.visitWindow;
|
|
61
|
-
case WINDOW_CLAUSE: return this.visitWindowClause;
|
|
62
|
-
case WINDOW_DEF: return this.visitWindowDef;
|
|
63
|
-
case WINDOW_EXTENT_EXPR: return this.visitWindowExtentExpr;
|
|
64
|
-
case WINDOW_FRAME: return this.visitWindowFrame;
|
|
65
|
-
case WINDOW_FUNCTION: return this.visitWindowFunction;
|
|
66
|
-
case WITH_CLAUSE: return this.visitWithClause;
|
|
67
|
-
default:
|
|
68
|
-
throw new Error(`Unknown node type: '${nodeType}'`);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Helper method to convert child nodes to strings.
|
|
73
|
-
* @param nodes Array of child nodes.
|
|
74
|
-
* @returns Array of SQL strings.
|
|
75
|
-
*/
|
|
76
|
-
mapToString(nodes) {
|
|
77
|
-
return nodes.map(node => this.toString(node));
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=to-string-visitor.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"to-string-visitor.js","sourceRoot":"","sources":["../../../src/visit/to-string-visitor.ts"],"names":[],"mappings":"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"}
|