drizzle-cube 0.1.21 → 0.1.23
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/adapters/{compiler-CPsEzFP2.js → compiler-CSr2Ti96.js} +553 -505
- package/dist/adapters/express/index.js +1 -1
- package/dist/adapters/fastify/index.js +1 -1
- package/dist/adapters/hono/index.js +1 -1
- package/dist/adapters/nextjs/index.js +50 -50
- package/dist/client/charts.js +1 -1
- package/dist/client/chunks/{charts-BadAUMmd.js → charts-8KmxUVvG.js} +2 -2
- package/dist/client/chunks/{charts-BadAUMmd.js.map → charts-8KmxUVvG.js.map} +1 -1
- package/dist/client/chunks/{icons-B5RVM-7b.js → icons-QczkAx61.js} +46 -41
- package/dist/client/chunks/{icons-B5RVM-7b.js.map → icons-QczkAx61.js.map} +1 -1
- package/dist/client/chunks/{providers-DI5zeeEU.js → providers-B7MVnAAt.js} +50 -50
- package/dist/client/chunks/providers-B7MVnAAt.js.map +1 -0
- package/dist/client/components/charts/ActivityGridChart.config.d.ts +5 -0
- package/dist/client/components/charts/ActivityGridChart.d.ts +2 -0
- package/dist/client/components/charts/index.d.ts +1 -0
- package/dist/client/components.js +2875 -2351
- package/dist/client/components.js.map +1 -1
- package/dist/client/hooks/useCubeMeta.d.ts +1 -0
- package/dist/client/hooks.js +62 -60
- package/dist/client/hooks.js.map +1 -1
- package/dist/client/index.js +2 -2
- package/dist/client/providers.js +1 -1
- package/dist/client/types.d.ts +6 -2
- package/dist/client-bundle-stats.html +1 -1
- package/dist/server/index.d.ts +3 -8
- package/dist/server/index.js +748 -700
- package/package.json +22 -1
- package/dist/client/chunks/providers-DI5zeeEU.js.map +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
var
|
|
2
|
-
var
|
|
3
|
-
var l = (T, E, R) =>
|
|
1
|
+
var hR = Object.defineProperty;
|
|
2
|
+
var VR = (T, E, R) => E in T ? hR(T, E, { enumerable: !0, configurable: !0, writable: !0, value: R }) : T[E] = R;
|
|
3
|
+
var l = (T, E, R) => VR(T, typeof E != "symbol" ? E + "" : E, R);
|
|
4
4
|
const X = Symbol.for("drizzle:entityKind");
|
|
5
5
|
function F(T, E) {
|
|
6
6
|
if (!T || typeof T != "object")
|
|
@@ -20,9 +20,9 @@ function F(T, E) {
|
|
|
20
20
|
}
|
|
21
21
|
return !1;
|
|
22
22
|
}
|
|
23
|
-
var
|
|
24
|
-
|
|
25
|
-
class
|
|
23
|
+
var QT;
|
|
24
|
+
QT = X;
|
|
25
|
+
class RE {
|
|
26
26
|
constructor(E, R) {
|
|
27
27
|
l(this, "name");
|
|
28
28
|
l(this, "keyAsName");
|
|
@@ -54,14 +54,14 @@ class EE {
|
|
|
54
54
|
return this.config.generated !== void 0 && this.config.generated.type !== "byDefault";
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
l(
|
|
58
|
-
const
|
|
59
|
-
function
|
|
60
|
-
return !!T && typeof T == "function" &&
|
|
57
|
+
l(RE, QT, "Column");
|
|
58
|
+
const aE = Symbol.for("drizzle:Name"), ST = Symbol.for("drizzle:isPgEnum");
|
|
59
|
+
function WR(T) {
|
|
60
|
+
return !!T && typeof T == "function" && ST in T && T[ST] === !0;
|
|
61
61
|
}
|
|
62
|
-
var
|
|
63
|
-
|
|
64
|
-
class
|
|
62
|
+
var ZT;
|
|
63
|
+
ZT = X;
|
|
64
|
+
class zE {
|
|
65
65
|
constructor(E, R, A, S = !1, e = []) {
|
|
66
66
|
this._ = {
|
|
67
67
|
brand: "Subquery",
|
|
@@ -76,69 +76,69 @@ class QE {
|
|
|
76
76
|
// return new SQL([this]);
|
|
77
77
|
// }
|
|
78
78
|
}
|
|
79
|
-
l(
|
|
80
|
-
const
|
|
79
|
+
l(zE, ZT, "Subquery");
|
|
80
|
+
const XR = {
|
|
81
81
|
startActiveSpan(T, E) {
|
|
82
82
|
return E();
|
|
83
83
|
}
|
|
84
|
-
}, SE = Symbol.for("drizzle:ViewBaseConfig"),
|
|
85
|
-
var
|
|
86
|
-
|
|
84
|
+
}, SE = Symbol.for("drizzle:ViewBaseConfig"), oE = Symbol.for("drizzle:Schema"), eT = Symbol.for("drizzle:Columns"), IT = Symbol.for("drizzle:ExtraConfigColumns"), PE = Symbol.for("drizzle:OriginalName"), ME = Symbol.for("drizzle:BaseName"), CE = Symbol.for("drizzle:IsAlias"), OT = Symbol.for("drizzle:ExtraConfigBuilder"), bR = Symbol.for("drizzle:IsDrizzleTable");
|
|
85
|
+
var qT, jT, kT, zT, ER, TR, RR, AR, SR, eR;
|
|
86
|
+
eR = X, SR = aE, AR = PE, RR = oE, TR = eT, ER = IT, zT = ME, kT = CE, jT = bR, qT = OT;
|
|
87
87
|
class W {
|
|
88
88
|
constructor(E, R, A) {
|
|
89
89
|
/**
|
|
90
90
|
* @internal
|
|
91
91
|
* Can be changed if the table is aliased.
|
|
92
92
|
*/
|
|
93
|
-
l(this,
|
|
93
|
+
l(this, SR);
|
|
94
94
|
/**
|
|
95
95
|
* @internal
|
|
96
96
|
* Used to store the original name of the table, before any aliasing.
|
|
97
97
|
*/
|
|
98
|
-
l(this,
|
|
98
|
+
l(this, AR);
|
|
99
99
|
/** @internal */
|
|
100
|
-
l(this,
|
|
100
|
+
l(this, RR);
|
|
101
101
|
/** @internal */
|
|
102
|
-
l(this,
|
|
102
|
+
l(this, TR);
|
|
103
103
|
/** @internal */
|
|
104
|
-
l(this,
|
|
104
|
+
l(this, ER);
|
|
105
105
|
/**
|
|
106
106
|
* @internal
|
|
107
107
|
* Used to store the table name before the transformation via the `tableCreator` functions.
|
|
108
108
|
*/
|
|
109
|
-
l(this,
|
|
109
|
+
l(this, zT);
|
|
110
110
|
/** @internal */
|
|
111
|
-
l(this,
|
|
111
|
+
l(this, kT, !1);
|
|
112
112
|
/** @internal */
|
|
113
|
-
l(this,
|
|
113
|
+
l(this, jT, !0);
|
|
114
114
|
/** @internal */
|
|
115
|
-
l(this,
|
|
116
|
-
this[
|
|
115
|
+
l(this, qT);
|
|
116
|
+
this[aE] = this[PE] = E, this[oE] = R, this[ME] = A;
|
|
117
117
|
}
|
|
118
118
|
}
|
|
119
|
-
l(W,
|
|
119
|
+
l(W, eR, "Table"), /** @internal */
|
|
120
120
|
l(W, "Symbol", {
|
|
121
|
-
Name:
|
|
122
|
-
Schema:
|
|
121
|
+
Name: aE,
|
|
122
|
+
Schema: oE,
|
|
123
123
|
OriginalName: PE,
|
|
124
|
-
Columns:
|
|
125
|
-
ExtraConfigColumns:
|
|
126
|
-
BaseName:
|
|
124
|
+
Columns: eT,
|
|
125
|
+
ExtraConfigColumns: IT,
|
|
126
|
+
BaseName: ME,
|
|
127
127
|
IsAlias: CE,
|
|
128
|
-
ExtraConfigBuilder:
|
|
128
|
+
ExtraConfigBuilder: OT
|
|
129
129
|
});
|
|
130
|
-
function
|
|
130
|
+
function nR(T) {
|
|
131
131
|
return T != null && typeof T.getSQL == "function";
|
|
132
132
|
}
|
|
133
|
-
function
|
|
133
|
+
function yR(T) {
|
|
134
134
|
var R;
|
|
135
135
|
const E = { sql: "", params: [] };
|
|
136
136
|
for (const A of T)
|
|
137
137
|
E.sql += A.sql, E.params.push(...A.params), (R = A.typings) != null && R.length && (E.typings || (E.typings = []), E.typings.push(...A.typings));
|
|
138
138
|
return E;
|
|
139
139
|
}
|
|
140
|
-
var
|
|
141
|
-
|
|
140
|
+
var IR;
|
|
141
|
+
IR = X;
|
|
142
142
|
class h {
|
|
143
143
|
constructor(E) {
|
|
144
144
|
l(this, "value");
|
|
@@ -148,13 +148,13 @@ class h {
|
|
|
148
148
|
return new m([this]);
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
|
-
l(h,
|
|
152
|
-
var
|
|
153
|
-
|
|
151
|
+
l(h, IR, "StringChunk");
|
|
152
|
+
var NR;
|
|
153
|
+
NR = X;
|
|
154
154
|
const v = class v {
|
|
155
155
|
constructor(E) {
|
|
156
156
|
/** @internal */
|
|
157
|
-
l(this, "decoder",
|
|
157
|
+
l(this, "decoder", iR);
|
|
158
158
|
l(this, "shouldInlineParams", !1);
|
|
159
159
|
/** @internal */
|
|
160
160
|
l(this, "usedTables", []);
|
|
@@ -171,7 +171,7 @@ const v = class v {
|
|
|
171
171
|
return this.queryChunks.push(...E.queryChunks), this;
|
|
172
172
|
}
|
|
173
173
|
toQuery(E) {
|
|
174
|
-
return
|
|
174
|
+
return XR.startActiveSpan("drizzle.buildSQL", (R) => {
|
|
175
175
|
const A = this.buildQueryFromSourceParams(this.queryChunks, E);
|
|
176
176
|
return R == null || R.setAttributes({
|
|
177
177
|
"drizzle.query.text": A.sql,
|
|
@@ -191,7 +191,7 @@ const v = class v {
|
|
|
191
191
|
inlineParams: _,
|
|
192
192
|
paramStartIndex: I
|
|
193
193
|
} = A;
|
|
194
|
-
return
|
|
194
|
+
return yR(E.map((O) => {
|
|
195
195
|
var C;
|
|
196
196
|
if (F(O, h))
|
|
197
197
|
return { sql: O.value.join(""), params: [] };
|
|
@@ -201,8 +201,8 @@ const v = class v {
|
|
|
201
201
|
return { sql: "", params: [] };
|
|
202
202
|
if (Array.isArray(O)) {
|
|
203
203
|
const t = [new h("(")];
|
|
204
|
-
for (const [i,
|
|
205
|
-
t.push(
|
|
204
|
+
for (const [i, P] of O.entries())
|
|
205
|
+
t.push(P), i < O.length - 1 && t.push(new h(", "));
|
|
206
206
|
return t.push(new h(")")), this.buildQueryFromSourceParams(t, A);
|
|
207
207
|
}
|
|
208
208
|
if (F(O, v))
|
|
@@ -217,7 +217,7 @@ const v = class v {
|
|
|
217
217
|
params: []
|
|
218
218
|
};
|
|
219
219
|
}
|
|
220
|
-
if (F(O,
|
|
220
|
+
if (F(O, RE)) {
|
|
221
221
|
const t = S.getColumnCasing(O);
|
|
222
222
|
if (R.invokeSource === "indexes")
|
|
223
223
|
return { sql: e(t), params: [] };
|
|
@@ -227,7 +227,7 @@ const v = class v {
|
|
|
227
227
|
params: []
|
|
228
228
|
};
|
|
229
229
|
}
|
|
230
|
-
if (F(O,
|
|
230
|
+
if (F(O, ET)) {
|
|
231
231
|
const t = O[SE].schema, i = O[SE].name;
|
|
232
232
|
return {
|
|
233
233
|
sql: t === void 0 || O[SE].isAlias ? e(i) : e(t) + "." + e(i),
|
|
@@ -245,12 +245,12 @@ const v = class v {
|
|
|
245
245
|
let i = ["none"];
|
|
246
246
|
return s && (i = [s(O.encoder)]), { sql: N(I.value++, t), params: [t], typings: i };
|
|
247
247
|
}
|
|
248
|
-
return F(O, OE) ? { sql: N(I.value++, O), params: [O], typings: ["none"] } : F(O, v.Aliased) && O.fieldAlias !== void 0 ? { sql: e(O.fieldAlias), params: [] } : F(O,
|
|
248
|
+
return F(O, OE) ? { sql: N(I.value++, O), params: [O], typings: ["none"] } : F(O, v.Aliased) && O.fieldAlias !== void 0 ? { sql: e(O.fieldAlias), params: [] } : F(O, zE) ? O._.isWith ? { sql: e(O._.alias), params: [] } : this.buildQueryFromSourceParams([
|
|
249
249
|
new h("("),
|
|
250
250
|
O._.sql,
|
|
251
251
|
new h(") "),
|
|
252
252
|
new LE(O._.alias)
|
|
253
|
-
], A) :
|
|
253
|
+
], A) : WR(O) ? O.schema ? { sql: e(O.schema) + "." + e(O.enumName), params: [] } : { sql: e(O.enumName), params: [] } : nR(O) ? (C = O.shouldOmitSQLParens) != null && C.call(O) ? this.buildQueryFromSourceParams([O.getSQL()], A) : this.buildQueryFromSourceParams([
|
|
254
254
|
new h("("),
|
|
255
255
|
O.getSQL(),
|
|
256
256
|
new h(")")
|
|
@@ -292,10 +292,10 @@ const v = class v {
|
|
|
292
292
|
return E ? this : void 0;
|
|
293
293
|
}
|
|
294
294
|
};
|
|
295
|
-
l(v,
|
|
295
|
+
l(v, NR, "SQL");
|
|
296
296
|
let m = v;
|
|
297
|
-
var
|
|
298
|
-
|
|
297
|
+
var tR;
|
|
298
|
+
tR = X;
|
|
299
299
|
class LE {
|
|
300
300
|
constructor(E) {
|
|
301
301
|
l(this, "brand");
|
|
@@ -305,27 +305,27 @@ class LE {
|
|
|
305
305
|
return new m([this]);
|
|
306
306
|
}
|
|
307
307
|
}
|
|
308
|
-
l(LE,
|
|
309
|
-
function
|
|
308
|
+
l(LE, tR, "Name");
|
|
309
|
+
function KR(T) {
|
|
310
310
|
return typeof T == "object" && T !== null && "mapToDriverValue" in T && typeof T.mapToDriverValue == "function";
|
|
311
311
|
}
|
|
312
|
-
const
|
|
312
|
+
const iR = {
|
|
313
313
|
mapFromDriverValue: (T) => T
|
|
314
|
-
},
|
|
314
|
+
}, DR = {
|
|
315
315
|
mapToDriverValue: (T) => T
|
|
316
316
|
};
|
|
317
317
|
({
|
|
318
|
-
...
|
|
319
|
-
...
|
|
318
|
+
...iR,
|
|
319
|
+
...DR
|
|
320
320
|
});
|
|
321
|
-
var
|
|
322
|
-
|
|
321
|
+
var sR;
|
|
322
|
+
sR = X;
|
|
323
323
|
class IE {
|
|
324
324
|
/**
|
|
325
325
|
* @param value - Parameter value
|
|
326
326
|
* @param encoder - Encoder to convert the value to a driver parameter
|
|
327
327
|
*/
|
|
328
|
-
constructor(E, R =
|
|
328
|
+
constructor(E, R = DR) {
|
|
329
329
|
l(this, "brand");
|
|
330
330
|
this.value = E, this.encoder = R;
|
|
331
331
|
}
|
|
@@ -333,7 +333,7 @@ class IE {
|
|
|
333
333
|
return new m([this]);
|
|
334
334
|
}
|
|
335
335
|
}
|
|
336
|
-
l(IE,
|
|
336
|
+
l(IE, sR, "Param");
|
|
337
337
|
function L(T, ...E) {
|
|
338
338
|
const R = [];
|
|
339
339
|
(E.length > 0 || T.length > 0 && T[0] !== "") && R.push(new h(T[0]));
|
|
@@ -395,8 +395,8 @@ function L(T, ...E) {
|
|
|
395
395
|
let E = A;
|
|
396
396
|
T.Aliased = E;
|
|
397
397
|
})(m || (m = {}));
|
|
398
|
-
var
|
|
399
|
-
|
|
398
|
+
var CR;
|
|
399
|
+
CR = X;
|
|
400
400
|
class OE {
|
|
401
401
|
constructor(E) {
|
|
402
402
|
this.name = E;
|
|
@@ -405,16 +405,16 @@ class OE {
|
|
|
405
405
|
return new m([this]);
|
|
406
406
|
}
|
|
407
407
|
}
|
|
408
|
-
l(OE,
|
|
409
|
-
const
|
|
410
|
-
var
|
|
411
|
-
|
|
412
|
-
class
|
|
408
|
+
l(OE, CR, "Placeholder");
|
|
409
|
+
const $R = Symbol.for("drizzle:IsDrizzleView");
|
|
410
|
+
var LR, _R, rR;
|
|
411
|
+
rR = X, _R = SE, LR = $R;
|
|
412
|
+
class ET {
|
|
413
413
|
constructor({ name: E, schema: R, selectedFields: A, query: S }) {
|
|
414
414
|
/** @internal */
|
|
415
|
-
l(this,
|
|
415
|
+
l(this, _R);
|
|
416
416
|
/** @internal */
|
|
417
|
-
l(this,
|
|
417
|
+
l(this, LR, !0);
|
|
418
418
|
this[SE] = {
|
|
419
419
|
name: E,
|
|
420
420
|
originalName: E,
|
|
@@ -429,20 +429,20 @@ class ZE {
|
|
|
429
429
|
return new m([this]);
|
|
430
430
|
}
|
|
431
431
|
}
|
|
432
|
-
l(
|
|
433
|
-
|
|
432
|
+
l(ET, rR, "View");
|
|
433
|
+
RE.prototype.getSQL = function() {
|
|
434
434
|
return new m([this]);
|
|
435
435
|
};
|
|
436
436
|
W.prototype.getSQL = function() {
|
|
437
437
|
return new m([this]);
|
|
438
438
|
};
|
|
439
|
-
|
|
439
|
+
zE.prototype.getSQL = function() {
|
|
440
440
|
return new m([this]);
|
|
441
441
|
};
|
|
442
442
|
function $(T, E) {
|
|
443
|
-
return
|
|
443
|
+
return KR(E) && !nR(T) && !F(T, IE) && !F(T, OE) && !F(T, RE) && !F(T, W) && !F(T, ET) ? new IE(T, E) : T;
|
|
444
444
|
}
|
|
445
|
-
const
|
|
445
|
+
const _E = (T, E) => L`${T} = ${$(E, T)}`, NT = (T, E) => L`${T} <> ${$(E, T)}`;
|
|
446
446
|
function b(...T) {
|
|
447
447
|
const E = T.filter(
|
|
448
448
|
(R) => R !== void 0
|
|
@@ -454,7 +454,7 @@ function b(...T) {
|
|
|
454
454
|
new h(")")
|
|
455
455
|
]);
|
|
456
456
|
}
|
|
457
|
-
function
|
|
457
|
+
function UE(...T) {
|
|
458
458
|
const E = T.filter(
|
|
459
459
|
(R) => R !== void 0
|
|
460
460
|
);
|
|
@@ -465,26 +465,26 @@ function bR(...T) {
|
|
|
465
465
|
new h(")")
|
|
466
466
|
]);
|
|
467
467
|
}
|
|
468
|
-
const
|
|
469
|
-
function
|
|
468
|
+
const GE = (T, E) => L`${T} > ${$(E, T)}`, j = (T, E) => L`${T} >= ${$(E, T)}`, lE = (T, E) => L`${T} < ${$(E, T)}`, k = (T, E) => L`${T} <= ${$(E, T)}`;
|
|
469
|
+
function cE(T, E) {
|
|
470
470
|
return Array.isArray(E) ? E.length === 0 ? L`false` : L`${T} in ${E.map((R) => $(R, T))}` : L`${T} in ${$(E, T)}`;
|
|
471
471
|
}
|
|
472
|
-
function
|
|
472
|
+
function tT(T, E) {
|
|
473
473
|
return Array.isArray(E) ? E.length === 0 ? L`true` : L`${T} not in ${E.map((R) => $(R, T))}` : L`${T} not in ${$(E, T)}`;
|
|
474
474
|
}
|
|
475
|
-
function
|
|
475
|
+
function sT(T) {
|
|
476
476
|
return L`${T} is null`;
|
|
477
477
|
}
|
|
478
|
-
function
|
|
478
|
+
function CT(T) {
|
|
479
479
|
return L`${T} is not null`;
|
|
480
480
|
}
|
|
481
|
-
function
|
|
481
|
+
function LT(T) {
|
|
482
482
|
return L`${T} asc`;
|
|
483
483
|
}
|
|
484
484
|
function gR(T) {
|
|
485
485
|
return L`${T} desc`;
|
|
486
486
|
}
|
|
487
|
-
function
|
|
487
|
+
function uE(T) {
|
|
488
488
|
return L`count(${T || L.raw("*")})`.mapWith(Number);
|
|
489
489
|
}
|
|
490
490
|
function JR(T) {
|
|
@@ -493,13 +493,13 @@ function JR(T) {
|
|
|
493
493
|
function Q(T) {
|
|
494
494
|
return L`sum(${T})`.mapWith(String);
|
|
495
495
|
}
|
|
496
|
-
function
|
|
497
|
-
return L`max(${T})`.mapWith(F(T,
|
|
496
|
+
function qE(T) {
|
|
497
|
+
return L`max(${T})`.mapWith(F(T, RE) ? T : String);
|
|
498
498
|
}
|
|
499
|
-
function
|
|
500
|
-
return L`min(${T})`.mapWith(F(T,
|
|
499
|
+
function jE(T) {
|
|
500
|
+
return L`min(${T})`.mapWith(F(T, RE) ? T : String);
|
|
501
501
|
}
|
|
502
|
-
class
|
|
502
|
+
class TT {
|
|
503
503
|
/**
|
|
504
504
|
* Helper method to build pattern for string matching
|
|
505
505
|
* Can be overridden by specific adapters if needed
|
|
@@ -518,7 +518,7 @@ class jE {
|
|
|
518
518
|
}
|
|
519
519
|
}
|
|
520
520
|
}
|
|
521
|
-
class wR extends
|
|
521
|
+
class wR extends TT {
|
|
522
522
|
getEngineType() {
|
|
523
523
|
return "postgres";
|
|
524
524
|
}
|
|
@@ -553,16 +553,25 @@ class wR extends jE {
|
|
|
553
553
|
* Extracted from executor.ts:807-813 and multi-cube-builder.ts:468-474
|
|
554
554
|
*/
|
|
555
555
|
buildStringCondition(E, R, A) {
|
|
556
|
-
const S = this.buildPattern(R, A);
|
|
557
556
|
switch (R) {
|
|
558
557
|
case "contains":
|
|
559
|
-
return L`${E} ILIKE ${
|
|
558
|
+
return L`${E} ILIKE ${`%${A}%`}`;
|
|
560
559
|
case "notContains":
|
|
561
|
-
return L`${E} NOT ILIKE ${
|
|
560
|
+
return L`${E} NOT ILIKE ${`%${A}%`}`;
|
|
562
561
|
case "startsWith":
|
|
563
|
-
return L`${E} ILIKE ${
|
|
562
|
+
return L`${E} ILIKE ${`${A}%`}`;
|
|
564
563
|
case "endsWith":
|
|
565
|
-
return L`${E} ILIKE ${
|
|
564
|
+
return L`${E} ILIKE ${`%${A}`}`;
|
|
565
|
+
case "like":
|
|
566
|
+
return L`${E} LIKE ${A}`;
|
|
567
|
+
case "notLike":
|
|
568
|
+
return L`${E} NOT LIKE ${A}`;
|
|
569
|
+
case "ilike":
|
|
570
|
+
return L`${E} ILIKE ${A}`;
|
|
571
|
+
case "regex":
|
|
572
|
+
return L`${E} ~* ${A}`;
|
|
573
|
+
case "notRegex":
|
|
574
|
+
return L`${E} !~* ${A}`;
|
|
566
575
|
default:
|
|
567
576
|
throw new Error(`Unsupported string operator: ${R}`);
|
|
568
577
|
}
|
|
@@ -633,7 +642,7 @@ class wR extends jE {
|
|
|
633
642
|
return E;
|
|
634
643
|
}
|
|
635
644
|
}
|
|
636
|
-
class xR extends
|
|
645
|
+
class xR extends TT {
|
|
637
646
|
getEngineType() {
|
|
638
647
|
return "mysql";
|
|
639
648
|
}
|
|
@@ -670,16 +679,25 @@ class xR extends jE {
|
|
|
670
679
|
* For guaranteed case-insensitive matching, we use LOWER() functions
|
|
671
680
|
*/
|
|
672
681
|
buildStringCondition(E, R, A) {
|
|
673
|
-
const S = this.buildPattern(R, A.toLowerCase());
|
|
674
682
|
switch (R) {
|
|
675
683
|
case "contains":
|
|
676
|
-
return L`LOWER(${E}) LIKE ${
|
|
684
|
+
return L`LOWER(${E}) LIKE ${`%${A.toLowerCase()}%`}`;
|
|
677
685
|
case "notContains":
|
|
678
|
-
return L`LOWER(${E}) NOT LIKE ${
|
|
686
|
+
return L`LOWER(${E}) NOT LIKE ${`%${A.toLowerCase()}%`}`;
|
|
679
687
|
case "startsWith":
|
|
680
|
-
return L`LOWER(${E}) LIKE ${
|
|
688
|
+
return L`LOWER(${E}) LIKE ${`${A.toLowerCase()}%`}`;
|
|
681
689
|
case "endsWith":
|
|
682
|
-
return L`LOWER(${E}) LIKE ${
|
|
690
|
+
return L`LOWER(${E}) LIKE ${`%${A.toLowerCase()}`}`;
|
|
691
|
+
case "like":
|
|
692
|
+
return L`${E} LIKE ${A}`;
|
|
693
|
+
case "notLike":
|
|
694
|
+
return L`${E} NOT LIKE ${A}`;
|
|
695
|
+
case "ilike":
|
|
696
|
+
return L`LOWER(${E}) LIKE ${A.toLowerCase()}`;
|
|
697
|
+
case "regex":
|
|
698
|
+
return L`${E} REGEXP ${A}`;
|
|
699
|
+
case "notRegex":
|
|
700
|
+
return L`${E} NOT REGEXP ${A}`;
|
|
683
701
|
default:
|
|
684
702
|
throw new Error(`Unsupported string operator: ${R}`);
|
|
685
703
|
}
|
|
@@ -749,7 +767,7 @@ class xR extends jE {
|
|
|
749
767
|
return E;
|
|
750
768
|
}
|
|
751
769
|
}
|
|
752
|
-
class vR extends
|
|
770
|
+
class vR extends TT {
|
|
753
771
|
getEngineType() {
|
|
754
772
|
return "sqlite";
|
|
755
773
|
}
|
|
@@ -791,16 +809,25 @@ class vR extends jE {
|
|
|
791
809
|
* SQLite LIKE is case-insensitive by default, but LOWER() ensures consistency
|
|
792
810
|
*/
|
|
793
811
|
buildStringCondition(E, R, A) {
|
|
794
|
-
const S = this.buildPattern(R, A.toLowerCase());
|
|
795
812
|
switch (R) {
|
|
796
813
|
case "contains":
|
|
797
|
-
return L`LOWER(${E}) LIKE ${
|
|
814
|
+
return L`LOWER(${E}) LIKE ${`%${A.toLowerCase()}%`}`;
|
|
798
815
|
case "notContains":
|
|
799
|
-
return L`LOWER(${E}) NOT LIKE ${
|
|
816
|
+
return L`LOWER(${E}) NOT LIKE ${`%${A.toLowerCase()}%`}`;
|
|
800
817
|
case "startsWith":
|
|
801
|
-
return L`LOWER(${E}) LIKE ${
|
|
818
|
+
return L`LOWER(${E}) LIKE ${`${A.toLowerCase()}%`}`;
|
|
802
819
|
case "endsWith":
|
|
803
|
-
return L`LOWER(${E}) LIKE ${
|
|
820
|
+
return L`LOWER(${E}) LIKE ${`%${A.toLowerCase()}`}`;
|
|
821
|
+
case "like":
|
|
822
|
+
return L`${E} LIKE ${A}`;
|
|
823
|
+
case "notLike":
|
|
824
|
+
return L`${E} NOT LIKE ${A}`;
|
|
825
|
+
case "ilike":
|
|
826
|
+
return L`LOWER(${E}) LIKE ${A.toLowerCase()}`;
|
|
827
|
+
case "regex":
|
|
828
|
+
return L`${E} GLOB ${A}`;
|
|
829
|
+
case "notRegex":
|
|
830
|
+
return L`${E} NOT GLOB ${A}`;
|
|
804
831
|
default:
|
|
805
832
|
throw new Error(`Unsupported string operator: ${R}`);
|
|
806
833
|
}
|
|
@@ -888,7 +915,7 @@ function QR(T) {
|
|
|
888
915
|
throw new Error(`Unsupported database engine: ${T}`);
|
|
889
916
|
}
|
|
890
917
|
}
|
|
891
|
-
class
|
|
918
|
+
class RT {
|
|
892
919
|
constructor(E, R, A) {
|
|
893
920
|
l(this, "databaseAdapter");
|
|
894
921
|
this.db = E, this.schema = R;
|
|
@@ -896,24 +923,11 @@ class kE {
|
|
|
896
923
|
this.databaseAdapter = QR(S);
|
|
897
924
|
}
|
|
898
925
|
}
|
|
899
|
-
class ZR extends
|
|
926
|
+
class ZR extends RT {
|
|
900
927
|
async execute(E, R) {
|
|
901
|
-
if (E && typeof E == "object") {
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
return Array.isArray(S) ? S.map((e) => this.convertNumericFields(e, R)) : S;
|
|
905
|
-
}
|
|
906
|
-
if (this.db && typeof this.db.execute == "function")
|
|
907
|
-
try {
|
|
908
|
-
const S = await this.db.execute(E);
|
|
909
|
-
return Array.isArray(S) ? S.map((e) => this.convertNumericFields(e, R)) : S;
|
|
910
|
-
} catch (S) {
|
|
911
|
-
if (typeof E.getSQL == "function") {
|
|
912
|
-
const e = E.getSQL(), N = await this.db.execute(e);
|
|
913
|
-
return Array.isArray(N) ? N.map((s) => this.convertNumericFields(s, R)) : N;
|
|
914
|
-
}
|
|
915
|
-
throw S;
|
|
916
|
-
}
|
|
928
|
+
if (E && typeof E == "object" && typeof E.execute == "function") {
|
|
929
|
+
const S = await E.execute();
|
|
930
|
+
return Array.isArray(S) ? S.map((e) => this.convertNumericFields(e, R)) : S;
|
|
917
931
|
}
|
|
918
932
|
if (!this.db.execute)
|
|
919
933
|
throw new Error("PostgreSQL database instance must have an execute method");
|
|
@@ -961,10 +975,10 @@ class ZR extends kE {
|
|
|
961
975
|
return "postgres";
|
|
962
976
|
}
|
|
963
977
|
}
|
|
964
|
-
function
|
|
978
|
+
function _T(T, E) {
|
|
965
979
|
return new ZR(T, E, "postgres");
|
|
966
980
|
}
|
|
967
|
-
class qR extends
|
|
981
|
+
class qR extends RT {
|
|
968
982
|
async execute(E, R) {
|
|
969
983
|
if (E && typeof E == "object" && typeof E.execute == "function") {
|
|
970
984
|
const S = await E.execute();
|
|
@@ -1005,7 +1019,7 @@ class qR extends kE {
|
|
|
1005
1019
|
function jR(T, E) {
|
|
1006
1020
|
return new qR(T, E, "mysql");
|
|
1007
1021
|
}
|
|
1008
|
-
class kR extends
|
|
1022
|
+
class kR extends RT {
|
|
1009
1023
|
async execute(E, R) {
|
|
1010
1024
|
if (E && typeof E == "object" && typeof E.execute == "function") {
|
|
1011
1025
|
const A = await E.execute();
|
|
@@ -1051,26 +1065,26 @@ class kR extends kE {
|
|
|
1051
1065
|
return "sqlite";
|
|
1052
1066
|
}
|
|
1053
1067
|
}
|
|
1054
|
-
function
|
|
1068
|
+
function rT(T, E) {
|
|
1055
1069
|
return new kR(T, E, "sqlite");
|
|
1056
1070
|
}
|
|
1057
|
-
function
|
|
1071
|
+
function nT(T, E, R) {
|
|
1058
1072
|
if (R)
|
|
1059
1073
|
switch (R) {
|
|
1060
1074
|
case "postgres":
|
|
1061
|
-
return
|
|
1075
|
+
return _T(T, E);
|
|
1062
1076
|
case "mysql":
|
|
1063
1077
|
return jR(T, E);
|
|
1064
1078
|
case "sqlite":
|
|
1065
|
-
return
|
|
1079
|
+
return rT(T, E);
|
|
1066
1080
|
}
|
|
1067
1081
|
if (T.all && T.run)
|
|
1068
|
-
return
|
|
1082
|
+
return rT(T, E);
|
|
1069
1083
|
if (T.execute)
|
|
1070
|
-
return
|
|
1084
|
+
return _T(T, E);
|
|
1071
1085
|
throw new Error("Unable to determine database engine type. Please specify engineType parameter.");
|
|
1072
1086
|
}
|
|
1073
|
-
function
|
|
1087
|
+
function iT(T) {
|
|
1074
1088
|
return typeof T == "function" ? T() : T;
|
|
1075
1089
|
}
|
|
1076
1090
|
function zR(T, E) {
|
|
@@ -1127,7 +1141,7 @@ class EA {
|
|
|
1127
1141
|
S[N.dimension] = L`${C}`.as(N.dimension);
|
|
1128
1142
|
}
|
|
1129
1143
|
}
|
|
1130
|
-
return Object.keys(S).length === 0 && (S.count =
|
|
1144
|
+
return Object.keys(S).length === 0 && (S.count = uE()), S;
|
|
1131
1145
|
}
|
|
1132
1146
|
/**
|
|
1133
1147
|
* Build measure expression for HAVING clause, handling CTE references correctly
|
|
@@ -1145,9 +1159,9 @@ class EA {
|
|
|
1145
1159
|
case "avg":
|
|
1146
1160
|
return this.databaseAdapter.buildAvg(s);
|
|
1147
1161
|
case "min":
|
|
1148
|
-
return
|
|
1162
|
+
return jE(s);
|
|
1149
1163
|
case "max":
|
|
1150
|
-
return
|
|
1164
|
+
return qE(s);
|
|
1151
1165
|
case "number":
|
|
1152
1166
|
return Q(s);
|
|
1153
1167
|
default:
|
|
@@ -1173,7 +1187,7 @@ class EA {
|
|
|
1173
1187
|
}
|
|
1174
1188
|
switch (E.type) {
|
|
1175
1189
|
case "count":
|
|
1176
|
-
return
|
|
1190
|
+
return uE(A);
|
|
1177
1191
|
case "countDistinct":
|
|
1178
1192
|
return JR(A);
|
|
1179
1193
|
case "sum":
|
|
@@ -1181,13 +1195,13 @@ class EA {
|
|
|
1181
1195
|
case "avg":
|
|
1182
1196
|
return this.databaseAdapter.buildAvg(A);
|
|
1183
1197
|
case "min":
|
|
1184
|
-
return
|
|
1198
|
+
return jE(A);
|
|
1185
1199
|
case "max":
|
|
1186
|
-
return
|
|
1200
|
+
return qE(A);
|
|
1187
1201
|
case "number":
|
|
1188
1202
|
return A;
|
|
1189
1203
|
default:
|
|
1190
|
-
return
|
|
1204
|
+
return uE(A);
|
|
1191
1205
|
}
|
|
1192
1206
|
}
|
|
1193
1207
|
/**
|
|
@@ -1241,12 +1255,12 @@ class EA {
|
|
|
1241
1255
|
if ("and" in E || "or" in E) {
|
|
1242
1256
|
const i = E;
|
|
1243
1257
|
if (i.and) {
|
|
1244
|
-
const
|
|
1245
|
-
return
|
|
1258
|
+
const P = i.and.map((M) => this.processFilter(M, R, A, S, e)).filter((M) => M !== null);
|
|
1259
|
+
return P.length > 0 ? b(...P) : null;
|
|
1246
1260
|
}
|
|
1247
1261
|
if (i.or) {
|
|
1248
|
-
const
|
|
1249
|
-
return
|
|
1262
|
+
const P = i.or.map((M) => this.processFilter(M, R, A, S, e)).filter((M) => M !== null);
|
|
1263
|
+
return P.length > 0 ? UE(...P) : null;
|
|
1250
1264
|
}
|
|
1251
1265
|
}
|
|
1252
1266
|
const N = E, [s, _] = N.member.split("."), I = R.get(s);
|
|
@@ -1283,16 +1297,16 @@ class EA {
|
|
|
1283
1297
|
if (e.length > 1) {
|
|
1284
1298
|
if ((S == null ? void 0 : S.type) === "time") {
|
|
1285
1299
|
const s = e.map((_) => this.normalizeDate(_) || _);
|
|
1286
|
-
return
|
|
1300
|
+
return cE(E, s);
|
|
1287
1301
|
}
|
|
1288
|
-
return
|
|
1302
|
+
return cE(E, e);
|
|
1289
1303
|
} else if (e.length === 1) {
|
|
1290
1304
|
const s = (S == null ? void 0 : S.type) === "time" && this.normalizeDate(N) || N;
|
|
1291
|
-
return
|
|
1305
|
+
return _E(E, s);
|
|
1292
1306
|
}
|
|
1293
1307
|
return this.databaseAdapter.buildBooleanLiteral(!1);
|
|
1294
1308
|
case "notEquals":
|
|
1295
|
-
return e.length > 1 ?
|
|
1309
|
+
return e.length > 1 ? tT(E, e) : e.length === 1 ? NT(E, N) : null;
|
|
1296
1310
|
case "contains":
|
|
1297
1311
|
return this.databaseAdapter.buildStringCondition(E, "contains", N);
|
|
1298
1312
|
case "notContains":
|
|
@@ -1302,35 +1316,69 @@ class EA {
|
|
|
1302
1316
|
case "endsWith":
|
|
1303
1317
|
return this.databaseAdapter.buildStringCondition(E, "endsWith", N);
|
|
1304
1318
|
case "gt":
|
|
1305
|
-
return
|
|
1319
|
+
return GE(E, N);
|
|
1306
1320
|
case "gte":
|
|
1307
|
-
return
|
|
1321
|
+
return j(E, N);
|
|
1308
1322
|
case "lt":
|
|
1309
|
-
return
|
|
1323
|
+
return lE(E, N);
|
|
1310
1324
|
case "lte":
|
|
1311
|
-
return
|
|
1325
|
+
return k(E, N);
|
|
1312
1326
|
case "set":
|
|
1313
|
-
return
|
|
1327
|
+
return CT(E);
|
|
1314
1328
|
case "notSet":
|
|
1315
|
-
return
|
|
1329
|
+
return sT(E);
|
|
1316
1330
|
case "inDateRange":
|
|
1317
1331
|
if (e.length >= 2) {
|
|
1318
1332
|
const s = this.normalizeDate(e[0]), _ = this.normalizeDate(e[1]);
|
|
1319
1333
|
if (s && _)
|
|
1320
1334
|
return b(
|
|
1321
|
-
|
|
1322
|
-
|
|
1335
|
+
j(E, s),
|
|
1336
|
+
k(E, _)
|
|
1323
1337
|
);
|
|
1324
1338
|
}
|
|
1325
1339
|
return null;
|
|
1326
1340
|
case "beforeDate": {
|
|
1327
1341
|
const s = this.normalizeDate(N);
|
|
1328
|
-
return s ?
|
|
1342
|
+
return s ? lE(E, s) : null;
|
|
1329
1343
|
}
|
|
1330
1344
|
case "afterDate": {
|
|
1331
1345
|
const s = this.normalizeDate(N);
|
|
1332
|
-
return s ?
|
|
1346
|
+
return s ? GE(E, s) : null;
|
|
1333
1347
|
}
|
|
1348
|
+
case "between":
|
|
1349
|
+
return e.length >= 2 ? b(
|
|
1350
|
+
j(E, e[0]),
|
|
1351
|
+
k(E, e[1])
|
|
1352
|
+
) : null;
|
|
1353
|
+
case "notBetween":
|
|
1354
|
+
return e.length >= 2 ? UE(
|
|
1355
|
+
lE(E, e[0]),
|
|
1356
|
+
GE(E, e[1])
|
|
1357
|
+
) : null;
|
|
1358
|
+
case "in":
|
|
1359
|
+
return e.length > 0 ? cE(E, e) : null;
|
|
1360
|
+
case "notIn":
|
|
1361
|
+
return e.length > 0 ? tT(E, e) : null;
|
|
1362
|
+
case "like":
|
|
1363
|
+
return this.databaseAdapter.buildStringCondition(E, "like", N);
|
|
1364
|
+
case "notLike":
|
|
1365
|
+
return this.databaseAdapter.buildStringCondition(E, "notLike", N);
|
|
1366
|
+
case "ilike":
|
|
1367
|
+
return this.databaseAdapter.buildStringCondition(E, "ilike", N);
|
|
1368
|
+
case "regex":
|
|
1369
|
+
return this.databaseAdapter.buildStringCondition(E, "regex", N);
|
|
1370
|
+
case "notRegex":
|
|
1371
|
+
return this.databaseAdapter.buildStringCondition(E, "notRegex", N);
|
|
1372
|
+
case "isEmpty":
|
|
1373
|
+
return UE(
|
|
1374
|
+
sT(E),
|
|
1375
|
+
_E(E, "")
|
|
1376
|
+
);
|
|
1377
|
+
case "isNotEmpty":
|
|
1378
|
+
return b(
|
|
1379
|
+
CT(E),
|
|
1380
|
+
NT(E, "")
|
|
1381
|
+
);
|
|
1334
1382
|
default:
|
|
1335
1383
|
return null;
|
|
1336
1384
|
}
|
|
@@ -1343,16 +1391,16 @@ class EA {
|
|
|
1343
1391
|
if (Array.isArray(R) && R.length >= 2) {
|
|
1344
1392
|
const A = this.normalizeDate(R[0]), S = this.normalizeDate(R[1]);
|
|
1345
1393
|
return !A || !S ? null : b(
|
|
1346
|
-
|
|
1347
|
-
|
|
1394
|
+
j(E, A),
|
|
1395
|
+
k(E, S)
|
|
1348
1396
|
);
|
|
1349
1397
|
}
|
|
1350
1398
|
if (typeof R == "string") {
|
|
1351
1399
|
const A = this.parseRelativeDateRange(R);
|
|
1352
1400
|
if (A)
|
|
1353
1401
|
return b(
|
|
1354
|
-
|
|
1355
|
-
|
|
1402
|
+
j(E, A.start),
|
|
1403
|
+
k(E, A.end)
|
|
1356
1404
|
);
|
|
1357
1405
|
const S = this.normalizeDate(R);
|
|
1358
1406
|
if (!S) return null;
|
|
@@ -1360,8 +1408,8 @@ class EA {
|
|
|
1360
1408
|
e.setUTCHours(0, 0, 0, 0);
|
|
1361
1409
|
const N = new Date(S);
|
|
1362
1410
|
return N.setUTCHours(23, 59, 59, 999), b(
|
|
1363
|
-
|
|
1364
|
-
|
|
1411
|
+
j(E, e),
|
|
1412
|
+
k(E, N)
|
|
1365
1413
|
);
|
|
1366
1414
|
}
|
|
1367
1415
|
return null;
|
|
@@ -1420,8 +1468,8 @@ class EA {
|
|
|
1420
1468
|
return { start: C, end: t };
|
|
1421
1469
|
}
|
|
1422
1470
|
if (A === "last quarter") {
|
|
1423
|
-
const C = Math.floor(e / 3), t = C === 0 ? 3 : C - 1, i = C === 0 ? S - 1 : S,
|
|
1424
|
-
return { start:
|
|
1471
|
+
const C = Math.floor(e / 3), t = C === 0 ? 3 : C - 1, i = C === 0 ? S - 1 : S, P = new Date(Date.UTC(i, t * 3, 1, 0, 0, 0, 0)), M = new Date(Date.UTC(i, t * 3 + 3, 0, 23, 59, 59, 999));
|
|
1472
|
+
return { start: P, end: M };
|
|
1425
1473
|
}
|
|
1426
1474
|
if (A === "last year") {
|
|
1427
1475
|
const C = new Date(Date.UTC(S - 1, 0, 1, 0, 0, 0, 0)), t = new Date(Date.UTC(S - 1, 11, 31, 23, 59, 59, 999));
|
|
@@ -1478,16 +1526,16 @@ class EA {
|
|
|
1478
1526
|
const [C, t] = O.split("."), i = s.get(C);
|
|
1479
1527
|
if (i && i.dimensions && i.dimensions[t])
|
|
1480
1528
|
if ((_ = S == null ? void 0 : S.preAggregationCTEs) == null ? void 0 : _.some((M) => M.cube.name === C)) {
|
|
1481
|
-
const M = S.preAggregationCTEs.find((G) => G.cube.name === C),
|
|
1482
|
-
if (
|
|
1483
|
-
e.push(
|
|
1529
|
+
const M = S.preAggregationCTEs.find((G) => G.cube.name === C), o = M.joinKeys.find((G) => G.targetColumn === t);
|
|
1530
|
+
if (o && o.sourceColumnObj)
|
|
1531
|
+
e.push(o.sourceColumnObj);
|
|
1484
1532
|
else {
|
|
1485
1533
|
const G = L`${L.identifier(M.cteAlias)}.${L.identifier(t)}`;
|
|
1486
1534
|
e.push(G);
|
|
1487
1535
|
}
|
|
1488
1536
|
} else {
|
|
1489
|
-
const M = i.dimensions[t],
|
|
1490
|
-
e.push(
|
|
1537
|
+
const M = i.dimensions[t], o = x(M.sql, A);
|
|
1538
|
+
e.push(o);
|
|
1491
1539
|
}
|
|
1492
1540
|
}
|
|
1493
1541
|
if (R.timeDimensions)
|
|
@@ -1495,10 +1543,10 @@ class EA {
|
|
|
1495
1543
|
const [C, t] = O.dimension.split("."), i = s.get(C);
|
|
1496
1544
|
if (i && i.dimensions && i.dimensions[t])
|
|
1497
1545
|
if ((I = S == null ? void 0 : S.preAggregationCTEs) == null ? void 0 : I.some((M) => M.cube.name === C)) {
|
|
1498
|
-
const M = S.preAggregationCTEs.find((G) => G.cube.name === C),
|
|
1499
|
-
if (
|
|
1546
|
+
const M = S.preAggregationCTEs.find((G) => G.cube.name === C), o = M.joinKeys.find((G) => G.targetColumn === t);
|
|
1547
|
+
if (o && o.sourceColumnObj) {
|
|
1500
1548
|
const G = this.buildTimeDimensionExpression(
|
|
1501
|
-
|
|
1549
|
+
o.sourceColumnObj,
|
|
1502
1550
|
O.granularity,
|
|
1503
1551
|
A
|
|
1504
1552
|
);
|
|
@@ -1508,12 +1556,12 @@ class EA {
|
|
|
1508
1556
|
e.push(G);
|
|
1509
1557
|
}
|
|
1510
1558
|
} else {
|
|
1511
|
-
const M = i.dimensions[t],
|
|
1559
|
+
const M = i.dimensions[t], o = this.buildTimeDimensionExpression(
|
|
1512
1560
|
M.sql,
|
|
1513
1561
|
O.granularity,
|
|
1514
1562
|
A
|
|
1515
1563
|
);
|
|
1516
|
-
e.push(
|
|
1564
|
+
e.push(o);
|
|
1517
1565
|
}
|
|
1518
1566
|
}
|
|
1519
1567
|
return e;
|
|
@@ -1532,7 +1580,7 @@ class EA {
|
|
|
1532
1580
|
for (const [N, s] of Object.entries(E.order)) {
|
|
1533
1581
|
if (!S.includes(N))
|
|
1534
1582
|
throw new Error(`Cannot order by '${N}': field is not selected in the query`);
|
|
1535
|
-
const _ = s === "desc" ? gR(L.identifier(N)) :
|
|
1583
|
+
const _ = s === "desc" ? gR(L.identifier(N)) : LT(L.identifier(N));
|
|
1536
1584
|
A.push(_);
|
|
1537
1585
|
}
|
|
1538
1586
|
if (E.timeDimensions && E.timeDimensions.length > 0) {
|
|
@@ -1540,7 +1588,7 @@ class EA {
|
|
|
1540
1588
|
(_, I) => _.dimension.localeCompare(I.dimension)
|
|
1541
1589
|
);
|
|
1542
1590
|
for (const _ of s)
|
|
1543
|
-
N.has(_.dimension) || A.push(
|
|
1591
|
+
N.has(_.dimension) || A.push(LT(L.identifier(_.dimension)));
|
|
1544
1592
|
}
|
|
1545
1593
|
return A;
|
|
1546
1594
|
}
|
|
@@ -1766,7 +1814,7 @@ class TA {
|
|
|
1766
1814
|
buildJoinCondition(E, R, A) {
|
|
1767
1815
|
const S = [];
|
|
1768
1816
|
for (const e of E.on) {
|
|
1769
|
-
const N = R ? L`${L.identifier(R)}.${L.identifier(e.source.name)}` : e.source, s = A ? L`${L.identifier(A)}.${L.identifier(e.target.name)}` : e.target, _ = e.as ||
|
|
1817
|
+
const N = R ? L`${L.identifier(R)}.${L.identifier(e.source.name)}` : e.source, s = A ? L`${L.identifier(A)}.${L.identifier(e.target.name)}` : e.target, _ = e.as || _E;
|
|
1770
1818
|
S.push(_(N, s));
|
|
1771
1819
|
}
|
|
1772
1820
|
return b(...S);
|
|
@@ -1785,7 +1833,7 @@ class TA {
|
|
|
1785
1833
|
const { cube: s, path: _ } = e.shift(), I = E.get(s);
|
|
1786
1834
|
if (I != null && I.joins)
|
|
1787
1835
|
for (const [, O] of Object.entries(I.joins)) {
|
|
1788
|
-
const t =
|
|
1836
|
+
const t = iT(O.targetCube).name;
|
|
1789
1837
|
if (N.has(t))
|
|
1790
1838
|
continue;
|
|
1791
1839
|
const i = [..._, {
|
|
@@ -1839,12 +1887,12 @@ class TA {
|
|
|
1839
1887
|
if (!E.joins)
|
|
1840
1888
|
return null;
|
|
1841
1889
|
for (const [, A] of Object.entries(E.joins))
|
|
1842
|
-
if (
|
|
1890
|
+
if (iT(A.targetCube).name === R && A.relationship === "hasMany")
|
|
1843
1891
|
return A;
|
|
1844
1892
|
return null;
|
|
1845
1893
|
}
|
|
1846
1894
|
}
|
|
1847
|
-
class
|
|
1895
|
+
class HE {
|
|
1848
1896
|
constructor(E) {
|
|
1849
1897
|
l(this, "queryBuilder");
|
|
1850
1898
|
l(this, "queryPlanner");
|
|
@@ -1858,7 +1906,7 @@ class UE {
|
|
|
1858
1906
|
*/
|
|
1859
1907
|
async execute(E, R, A) {
|
|
1860
1908
|
try {
|
|
1861
|
-
const S =
|
|
1909
|
+
const S = pR(E, R);
|
|
1862
1910
|
if (!S.isValid)
|
|
1863
1911
|
throw new Error(`Query validation failed: ${S.errors.join(", ")}`);
|
|
1864
1912
|
const e = {
|
|
@@ -1868,14 +1916,14 @@ class UE {
|
|
|
1868
1916
|
}, N = this.queryPlanner.createQueryPlan(E, R, e), s = this.buildUnifiedQuery(N, R, e), _ = this.queryBuilder.collectNumericFields(E, R), I = await this.dbExecutor.execute(s, _), O = Array.isArray(I) ? I.map((t) => {
|
|
1869
1917
|
const i = { ...t };
|
|
1870
1918
|
if (R.timeDimensions) {
|
|
1871
|
-
for (const
|
|
1872
|
-
if (
|
|
1873
|
-
let M = i[
|
|
1919
|
+
for (const P of R.timeDimensions)
|
|
1920
|
+
if (P.dimension in i) {
|
|
1921
|
+
let M = i[P.dimension];
|
|
1874
1922
|
if (typeof M == "string" && M.match(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}/)) {
|
|
1875
|
-
const
|
|
1923
|
+
const o = M.replace(" ", "T"), G = !o.endsWith("Z") && !o.includes("+") ? o + "Z" : o;
|
|
1876
1924
|
M = new Date(G);
|
|
1877
1925
|
}
|
|
1878
|
-
M = this.databaseAdapter.convertTimeDimensionResult(M), i[
|
|
1926
|
+
M = this.databaseAdapter.convertTimeDimensionResult(M), i[P.dimension] = M;
|
|
1879
1927
|
}
|
|
1880
1928
|
}
|
|
1881
1929
|
return i;
|
|
@@ -1901,14 +1949,14 @@ class UE {
|
|
|
1901
1949
|
buildPreAggregationCTE(E, R, A, S) {
|
|
1902
1950
|
var M;
|
|
1903
1951
|
const e = E.cube, N = e.sql(A), s = {};
|
|
1904
|
-
for (const
|
|
1905
|
-
if (
|
|
1906
|
-
s[
|
|
1952
|
+
for (const o of E.joinKeys)
|
|
1953
|
+
if (o.targetColumnObj) {
|
|
1954
|
+
s[o.targetColumn] = o.targetColumnObj;
|
|
1907
1955
|
for (const [G, a] of Object.entries(e.dimensions || {}))
|
|
1908
|
-
a.sql ===
|
|
1956
|
+
a.sql === o.targetColumnObj && G !== o.targetColumn && (s[G] = L`${o.targetColumnObj}`.as(G));
|
|
1909
1957
|
}
|
|
1910
|
-
for (const
|
|
1911
|
-
const [, G] =
|
|
1958
|
+
for (const o of E.measures) {
|
|
1959
|
+
const [, G] = o.split(".");
|
|
1912
1960
|
if (e.measures && e.measures[G]) {
|
|
1913
1961
|
const a = e.measures[G], H = this.queryBuilder.buildMeasureExpression(a, A);
|
|
1914
1962
|
s[G] = L`${H}`.as(G);
|
|
@@ -1916,18 +1964,18 @@ class UE {
|
|
|
1916
1964
|
}
|
|
1917
1965
|
const _ = e.name;
|
|
1918
1966
|
if (R.dimensions)
|
|
1919
|
-
for (const
|
|
1920
|
-
const [G, a] =
|
|
1967
|
+
for (const o of R.dimensions) {
|
|
1968
|
+
const [G, a] = o.split(".");
|
|
1921
1969
|
if (G === _ && e.dimensions && e.dimensions[a]) {
|
|
1922
1970
|
const H = e.dimensions[a], u = this.queryBuilder.buildMeasureExpression({ sql: H.sql, type: "number" }, A);
|
|
1923
1971
|
s[a] = L`${u}`.as(a);
|
|
1924
1972
|
}
|
|
1925
1973
|
}
|
|
1926
1974
|
if (R.timeDimensions)
|
|
1927
|
-
for (const
|
|
1928
|
-
const [G, a] =
|
|
1975
|
+
for (const o of R.timeDimensions) {
|
|
1976
|
+
const [G, a] = o.dimension.split(".");
|
|
1929
1977
|
if (G === _ && e.dimensions && e.dimensions[a]) {
|
|
1930
|
-
const H = e.dimensions[a], u = this.queryBuilder.buildTimeDimensionExpression(H.sql,
|
|
1978
|
+
const H = e.dimensions[a], u = this.queryBuilder.buildTimeDimensionExpression(H.sql, o.granularity, A);
|
|
1931
1979
|
s[a] = L`${u}`.as(a);
|
|
1932
1980
|
}
|
|
1933
1981
|
}
|
|
@@ -1936,20 +1984,20 @@ class UE {
|
|
|
1936
1984
|
let I = A.db.select(s).from(N.from);
|
|
1937
1985
|
const O = S ? {
|
|
1938
1986
|
...S,
|
|
1939
|
-
preAggregationCTEs: (M = S.preAggregationCTEs) == null ? void 0 : M.filter((
|
|
1987
|
+
preAggregationCTEs: (M = S.preAggregationCTEs) == null ? void 0 : M.filter((o) => o.cube.name !== e.name)
|
|
1940
1988
|
} : void 0, C = this.queryBuilder.buildWhereConditions(e, R, A, O), t = [];
|
|
1941
1989
|
if (R.timeDimensions)
|
|
1942
|
-
for (const
|
|
1943
|
-
const [G, a] =
|
|
1944
|
-
if (G === _ && e.dimensions && e.dimensions[a] &&
|
|
1945
|
-
const H = e.dimensions[a], u = this.queryBuilder.buildMeasureExpression({ sql: H.sql, type: "number" }, A), B = this.queryBuilder.buildDateRangeCondition(u,
|
|
1990
|
+
for (const o of R.timeDimensions) {
|
|
1991
|
+
const [G, a] = o.dimension.split(".");
|
|
1992
|
+
if (G === _ && e.dimensions && e.dimensions[a] && o.dateRange) {
|
|
1993
|
+
const H = e.dimensions[a], u = this.queryBuilder.buildMeasureExpression({ sql: H.sql, type: "number" }, A), B = this.queryBuilder.buildDateRangeCondition(u, o.dateRange);
|
|
1946
1994
|
B && t.push(B);
|
|
1947
1995
|
}
|
|
1948
1996
|
}
|
|
1949
1997
|
if (R.filters) {
|
|
1950
|
-
for (const
|
|
1951
|
-
if (!("and" in
|
|
1952
|
-
const G =
|
|
1998
|
+
for (const o of R.filters)
|
|
1999
|
+
if (!("and" in o) && !("or" in o) && "member" in o && "operator" in o) {
|
|
2000
|
+
const G = o, [a, H] = G.member.split(".");
|
|
1953
2001
|
if (a === _ && e.dimensions && e.dimensions[H]) {
|
|
1954
2002
|
const u = e.dimensions[H];
|
|
1955
2003
|
if (G.operator === "inDateRange") {
|
|
@@ -1961,29 +2009,29 @@ class UE {
|
|
|
1961
2009
|
}
|
|
1962
2010
|
const i = [];
|
|
1963
2011
|
if (N.where && i.push(N.where), i.push(...C, ...t), i.length > 0) {
|
|
1964
|
-
const
|
|
1965
|
-
I = I.where(
|
|
2012
|
+
const o = i.length === 1 ? i[0] : b(...i);
|
|
2013
|
+
I = I.where(o);
|
|
1966
2014
|
}
|
|
1967
|
-
const
|
|
1968
|
-
for (const
|
|
1969
|
-
|
|
2015
|
+
const P = [];
|
|
2016
|
+
for (const o of E.joinKeys)
|
|
2017
|
+
o.targetColumnObj && P.push(o.targetColumnObj);
|
|
1970
2018
|
if (R.dimensions)
|
|
1971
|
-
for (const
|
|
1972
|
-
const [G, a] =
|
|
2019
|
+
for (const o of R.dimensions) {
|
|
2020
|
+
const [G, a] = o.split(".");
|
|
1973
2021
|
if (G === _ && e.dimensions && e.dimensions[a]) {
|
|
1974
2022
|
const H = e.dimensions[a], u = x(H.sql, A);
|
|
1975
|
-
|
|
2023
|
+
P.push(u);
|
|
1976
2024
|
}
|
|
1977
2025
|
}
|
|
1978
2026
|
if (R.timeDimensions)
|
|
1979
|
-
for (const
|
|
1980
|
-
const [G, a] =
|
|
2027
|
+
for (const o of R.timeDimensions) {
|
|
2028
|
+
const [G, a] = o.dimension.split(".");
|
|
1981
2029
|
if (G === _ && e.dimensions && e.dimensions[a]) {
|
|
1982
|
-
const H = e.dimensions[a], u = this.queryBuilder.buildTimeDimensionExpression(H.sql,
|
|
1983
|
-
|
|
2030
|
+
const H = e.dimensions[a], u = this.queryBuilder.buildTimeDimensionExpression(H.sql, o.granularity, A);
|
|
2031
|
+
P.push(u);
|
|
1984
2032
|
}
|
|
1985
2033
|
}
|
|
1986
|
-
return
|
|
2034
|
+
return P.length > 0 && (I = I.groupBy(...P)), A.db.$with(E.cteAlias).as(I);
|
|
1987
2035
|
}
|
|
1988
2036
|
// Removed unused getActualJoinTargetColumn method
|
|
1989
2037
|
/**
|
|
@@ -1997,7 +2045,7 @@ class UE {
|
|
|
1997
2045
|
const e = [];
|
|
1998
2046
|
for (const s of S.joinKeys) {
|
|
1999
2047
|
const _ = s.sourceColumnObj || L.identifier(s.sourceColumn), I = L`${L.identifier(R)}.${L.identifier(s.targetColumn)}`;
|
|
2000
|
-
e.push(
|
|
2048
|
+
e.push(_E(_, I));
|
|
2001
2049
|
}
|
|
2002
2050
|
return e.length === 1 ? e[0] : b(...e);
|
|
2003
2051
|
}
|
|
@@ -2005,7 +2053,7 @@ class UE {
|
|
|
2005
2053
|
* Build unified query that works for both single and multi-cube queries
|
|
2006
2054
|
*/
|
|
2007
2055
|
buildUnifiedQuery(E, R, A) {
|
|
2008
|
-
var M,
|
|
2056
|
+
var M, o, G;
|
|
2009
2057
|
const S = [], e = /* @__PURE__ */ new Map();
|
|
2010
2058
|
if (E.preAggregationCTEs && E.preAggregationCTEs.length > 0)
|
|
2011
2059
|
for (const a of E.preAggregationCTEs) {
|
|
@@ -2037,10 +2085,10 @@ class UE {
|
|
|
2037
2085
|
K = this.databaseAdapter.buildAvg(g);
|
|
2038
2086
|
break;
|
|
2039
2087
|
case "min":
|
|
2040
|
-
K =
|
|
2088
|
+
K = jE(g);
|
|
2041
2089
|
break;
|
|
2042
2090
|
case "max":
|
|
2043
|
-
K =
|
|
2091
|
+
K = qE(g);
|
|
2044
2092
|
break;
|
|
2045
2093
|
case "number":
|
|
2046
2094
|
K = Q(g);
|
|
@@ -2056,12 +2104,12 @@ class UE {
|
|
|
2056
2104
|
if (B === H) {
|
|
2057
2105
|
const V = this.getCubesFromPlan(E).get(H), g = V && ((M = V.dimensions) == null ? void 0 : M[Y]), K = u.startsWith(H + ".");
|
|
2058
2106
|
if (g || K) {
|
|
2059
|
-
let
|
|
2060
|
-
if (!
|
|
2061
|
-
const
|
|
2062
|
-
|
|
2107
|
+
let iE = a.joinKeys.find((DE) => DE.targetColumn === Y);
|
|
2108
|
+
if (!iE && ((o = V == null ? void 0 : V.dimensions) != null && o[Y])) {
|
|
2109
|
+
const DE = V.dimensions[Y].sql;
|
|
2110
|
+
iE = a.joinKeys.find((fR) => fR.targetColumnObj === DE);
|
|
2063
2111
|
}
|
|
2064
|
-
|
|
2112
|
+
iE ? _[u] = L`${L.identifier(a.cteAlias)}.${L.identifier(Y)}`.as(u) : K && ((G = V == null ? void 0 : V.dimensions) != null && G[Y]) && (_[u] = L`${L.identifier(a.cteAlias)}.${L.identifier(Y)}`.as(u));
|
|
2065
2113
|
}
|
|
2066
2114
|
}
|
|
2067
2115
|
}
|
|
@@ -2147,8 +2195,8 @@ class UE {
|
|
|
2147
2195
|
const a = i.length === 1 ? i[0] : b(...i);
|
|
2148
2196
|
I = I.having(a);
|
|
2149
2197
|
}
|
|
2150
|
-
const
|
|
2151
|
-
return
|
|
2198
|
+
const P = this.queryBuilder.buildOrderBy(R);
|
|
2199
|
+
return P.length > 0 && (I = I.orderBy(...P)), I = this.queryBuilder.applyLimitAndOffset(I, R), I;
|
|
2152
2200
|
}
|
|
2153
2201
|
/**
|
|
2154
2202
|
* Convert query plan to cube map for QueryBuilder methods
|
|
@@ -2239,8 +2287,8 @@ class UE {
|
|
|
2239
2287
|
}
|
|
2240
2288
|
const r = (T) => T.flatMap(RA), RA = (T) => NE(SA(T)).map(AA), AA = (T) => T.replace(/ +/g, " ").trim(), SA = (T) => ({
|
|
2241
2289
|
type: "mandatory_block",
|
|
2242
|
-
items:
|
|
2243
|
-
}),
|
|
2290
|
+
items: AT(T, 0)[0]
|
|
2291
|
+
}), AT = (T, E, R) => {
|
|
2244
2292
|
const A = [];
|
|
2245
2293
|
for (; T[E]; ) {
|
|
2246
2294
|
const [S, e] = eA(T, E);
|
|
@@ -2280,10 +2328,10 @@ const r = (T) => T.flatMap(RA), RA = (T) => NE(SA(T)).map(AA), AA = (T) => T.rep
|
|
|
2280
2328
|
return [R, E];
|
|
2281
2329
|
}
|
|
2282
2330
|
}, OA = (T, E) => {
|
|
2283
|
-
const [R, A] =
|
|
2331
|
+
const [R, A] = AT(T, E, "}");
|
|
2284
2332
|
return [{ type: "mandatory_block", items: R }, A];
|
|
2285
2333
|
}, NA = (T, E) => {
|
|
2286
|
-
const [R, A] =
|
|
2334
|
+
const [R, A] = AT(T, E, "]");
|
|
2287
2335
|
return [{ type: "optional_block", items: R }, A];
|
|
2288
2336
|
}, NE = (T) => {
|
|
2289
2337
|
if (typeof T == "string")
|
|
@@ -2306,19 +2354,19 @@ var D;
|
|
|
2306
2354
|
(function(T) {
|
|
2307
2355
|
T.QUOTED_IDENTIFIER = "QUOTED_IDENTIFIER", T.IDENTIFIER = "IDENTIFIER", T.STRING = "STRING", T.VARIABLE = "VARIABLE", T.RESERVED_DATA_TYPE = "RESERVED_DATA_TYPE", T.RESERVED_PARAMETERIZED_DATA_TYPE = "RESERVED_PARAMETERIZED_DATA_TYPE", T.RESERVED_KEYWORD = "RESERVED_KEYWORD", T.RESERVED_FUNCTION_NAME = "RESERVED_FUNCTION_NAME", T.RESERVED_PHRASE = "RESERVED_PHRASE", T.RESERVED_SET_OPERATION = "RESERVED_SET_OPERATION", T.RESERVED_CLAUSE = "RESERVED_CLAUSE", T.RESERVED_SELECT = "RESERVED_SELECT", T.RESERVED_JOIN = "RESERVED_JOIN", T.ARRAY_IDENTIFIER = "ARRAY_IDENTIFIER", T.ARRAY_KEYWORD = "ARRAY_KEYWORD", T.CASE = "CASE", T.END = "END", T.WHEN = "WHEN", T.ELSE = "ELSE", T.THEN = "THEN", T.LIMIT = "LIMIT", T.BETWEEN = "BETWEEN", T.AND = "AND", T.OR = "OR", T.XOR = "XOR", T.OPERATOR = "OPERATOR", T.COMMA = "COMMA", T.ASTERISK = "ASTERISK", T.PROPERTY_ACCESS_OPERATOR = "PROPERTY_ACCESS_OPERATOR", T.OPEN_PAREN = "OPEN_PAREN", T.CLOSE_PAREN = "CLOSE_PAREN", T.LINE_COMMENT = "LINE_COMMENT", T.BLOCK_COMMENT = "BLOCK_COMMENT", T.DISABLE_COMMENT = "DISABLE_COMMENT", T.NUMBER = "NUMBER", T.NAMED_PARAMETER = "NAMED_PARAMETER", T.QUOTED_PARAMETER = "QUOTED_PARAMETER", T.NUMBERED_PARAMETER = "NUMBERED_PARAMETER", T.POSITIONAL_PARAMETER = "POSITIONAL_PARAMETER", T.CUSTOM_PARAMETER = "CUSTOM_PARAMETER", T.DELIMITER = "DELIMITER", T.EOF = "EOF";
|
|
2308
2356
|
})(D = D || (D = {}));
|
|
2309
|
-
const
|
|
2357
|
+
const aR = (T) => ({
|
|
2310
2358
|
type: D.EOF,
|
|
2311
2359
|
raw: "«EOF»",
|
|
2312
2360
|
text: "«EOF»",
|
|
2313
2361
|
start: T
|
|
2314
|
-
}),
|
|
2315
|
-
ARRAY:
|
|
2316
|
-
BY:
|
|
2317
|
-
SET:
|
|
2318
|
-
STRUCT:
|
|
2319
|
-
WINDOW:
|
|
2320
|
-
VALUES:
|
|
2321
|
-
},
|
|
2362
|
+
}), TE = aR(1 / 0), z = (T) => (E) => E.type === T.type && E.text === T.text, Z = {
|
|
2363
|
+
ARRAY: z({ text: "ARRAY", type: D.RESERVED_DATA_TYPE }),
|
|
2364
|
+
BY: z({ text: "BY", type: D.RESERVED_KEYWORD }),
|
|
2365
|
+
SET: z({ text: "SET", type: D.RESERVED_CLAUSE }),
|
|
2366
|
+
STRUCT: z({ text: "STRUCT", type: D.RESERVED_DATA_TYPE }),
|
|
2367
|
+
WINDOW: z({ text: "WINDOW", type: D.RESERVED_CLAUSE }),
|
|
2368
|
+
VALUES: z({ text: "VALUES", type: D.RESERVED_CLAUSE })
|
|
2369
|
+
}, oR = (T) => T === D.RESERVED_DATA_TYPE || T === D.RESERVED_KEYWORD || T === D.RESERVED_FUNCTION_NAME || T === D.RESERVED_PHRASE || T === D.RESERVED_CLAUSE || T === D.RESERVED_SELECT || T === D.RESERVED_SET_OPERATION || T === D.RESERVED_JOIN || T === D.ARRAY_KEYWORD || T === D.CASE || T === D.END || T === D.WHEN || T === D.ELSE || T === D.THEN || T === D.LIMIT || T === D.BETWEEN || T === D.AND || T === D.OR || T === D.XOR, sA = (T) => T === D.AND || T === D.OR || T === D.XOR, CA = [
|
|
2322
2370
|
// https://cloud.google.com/bigquery/docs/reference/standard-sql/aead_encryption_functions
|
|
2323
2371
|
"KEYS.NEW_KEYSET",
|
|
2324
2372
|
"KEYS.ADD_KEY_FROM_RAW_BYTES",
|
|
@@ -3024,9 +3072,9 @@ const _R = (T) => ({
|
|
|
3024
3072
|
"WITH CONNECTION",
|
|
3025
3073
|
"WITH PARTITION COLUMNS",
|
|
3026
3074
|
"REMOTE WITH CONNECTION"
|
|
3027
|
-
]),
|
|
3075
|
+
]), DT = r([
|
|
3028
3076
|
"CREATE [OR REPLACE] [TEMP|TEMPORARY|SNAPSHOT|EXTERNAL] TABLE [IF NOT EXISTS]"
|
|
3029
|
-
]),
|
|
3077
|
+
]), BE = r([
|
|
3030
3078
|
// - create:
|
|
3031
3079
|
// https://cloud.google.com/bigquery/docs/reference/standard-sql/data-definition-language
|
|
3032
3080
|
"CREATE [OR REPLACE] [MATERIALIZED] VIEW [IF NOT EXISTS]",
|
|
@@ -3133,11 +3181,11 @@ const _R = (T) => ({
|
|
|
3133
3181
|
"{ROWS | RANGE} BETWEEN",
|
|
3134
3182
|
// comparison operator
|
|
3135
3183
|
"IS [NOT] DISTINCT FROM"
|
|
3136
|
-
]),
|
|
3184
|
+
]), oA = {
|
|
3137
3185
|
name: "bigquery",
|
|
3138
3186
|
tokenizerOptions: {
|
|
3139
3187
|
reservedSelect: rA,
|
|
3140
|
-
reservedClauses: [...nA, ...
|
|
3188
|
+
reservedClauses: [...nA, ...BE, ...DT],
|
|
3141
3189
|
reservedSetOperations: iA,
|
|
3142
3190
|
reservedJoins: DA,
|
|
3143
3191
|
reservedPhrases: aA,
|
|
@@ -3161,18 +3209,18 @@ const _R = (T) => ({
|
|
|
3161
3209
|
variableTypes: [{ regex: String.raw`@@\w+` }],
|
|
3162
3210
|
lineCommentTypes: ["--", "#"],
|
|
3163
3211
|
operators: ["&", "|", "^", "~", ">>", "<<", "||", "=>"],
|
|
3164
|
-
postProcess:
|
|
3212
|
+
postProcess: PA
|
|
3165
3213
|
},
|
|
3166
3214
|
formatOptions: {
|
|
3167
|
-
onelineClauses: [...
|
|
3168
|
-
tabularOnelineClauses:
|
|
3215
|
+
onelineClauses: [...DT, ...BE],
|
|
3216
|
+
tabularOnelineClauses: BE
|
|
3169
3217
|
}
|
|
3170
3218
|
};
|
|
3171
|
-
function
|
|
3219
|
+
function PA(T) {
|
|
3172
3220
|
return MA(UA(T));
|
|
3173
3221
|
}
|
|
3174
3222
|
function MA(T) {
|
|
3175
|
-
let E =
|
|
3223
|
+
let E = TE;
|
|
3176
3224
|
return T.map((R) => R.text === "OFFSET" && E.text === "[" ? (E = R, Object.assign(Object.assign({}, R), { type: D.RESERVED_FUNCTION_NAME })) : (E = R, R));
|
|
3177
3225
|
}
|
|
3178
3226
|
function UA(T) {
|
|
@@ -3184,8 +3232,8 @@ function UA(T) {
|
|
|
3184
3232
|
const e = GA(T, A + 1), N = T.slice(A, e + 1);
|
|
3185
3233
|
R.push({
|
|
3186
3234
|
type: D.IDENTIFIER,
|
|
3187
|
-
raw: N.map(
|
|
3188
|
-
text: N.map(
|
|
3235
|
+
raw: N.map(aT("raw")).join(""),
|
|
3236
|
+
text: N.map(aT("text")).join(""),
|
|
3189
3237
|
start: S.start
|
|
3190
3238
|
}), A = e;
|
|
3191
3239
|
} else
|
|
@@ -3193,7 +3241,7 @@ function UA(T) {
|
|
|
3193
3241
|
}
|
|
3194
3242
|
return R;
|
|
3195
3243
|
}
|
|
3196
|
-
const
|
|
3244
|
+
const aT = (T) => (E) => E.type === D.IDENTIFIER || E.type === D.COMMA ? E[T] + " " : E[T];
|
|
3197
3245
|
function GA(T, E) {
|
|
3198
3246
|
let R = 0;
|
|
3199
3247
|
for (let A = E; A < T.length; A++) {
|
|
@@ -3995,9 +4043,9 @@ const lA = [
|
|
|
3995
4043
|
"WHEN [NOT] MATCHED [THEN]",
|
|
3996
4044
|
"UPDATE SET",
|
|
3997
4045
|
"INSERT"
|
|
3998
|
-
]),
|
|
4046
|
+
]), oT = r([
|
|
3999
4047
|
"CREATE [GLOBAL TEMPORARY | EXTERNAL] TABLE [IF NOT EXISTS]"
|
|
4000
|
-
]),
|
|
4048
|
+
]), mE = r([
|
|
4001
4049
|
// - create:
|
|
4002
4050
|
"CREATE [OR REPLACE] VIEW",
|
|
4003
4051
|
// - update:
|
|
@@ -4213,7 +4261,7 @@ const lA = [
|
|
|
4213
4261
|
name: "db2",
|
|
4214
4262
|
tokenizerOptions: {
|
|
4215
4263
|
reservedSelect: HA,
|
|
4216
|
-
reservedClauses: [...BA, ...
|
|
4264
|
+
reservedClauses: [...BA, ...oT, ...mE],
|
|
4217
4265
|
reservedSetOperations: mA,
|
|
4218
4266
|
reservedJoins: FA,
|
|
4219
4267
|
reservedPhrases: YA,
|
|
@@ -4250,8 +4298,8 @@ const lA = [
|
|
|
4250
4298
|
]
|
|
4251
4299
|
},
|
|
4252
4300
|
formatOptions: {
|
|
4253
|
-
onelineClauses: [...
|
|
4254
|
-
tabularOnelineClauses:
|
|
4301
|
+
onelineClauses: [...oT, ...mE],
|
|
4302
|
+
tabularOnelineClauses: mE
|
|
4255
4303
|
}
|
|
4256
4304
|
}, dA = [
|
|
4257
4305
|
// https://www.ibm.com/docs/en/i/7.5?topic=functions-aggregate
|
|
@@ -5149,7 +5197,7 @@ const lA = [
|
|
|
5149
5197
|
"INSERT",
|
|
5150
5198
|
// Data definition - table
|
|
5151
5199
|
"FOR SYSTEM NAME"
|
|
5152
|
-
]),
|
|
5200
|
+
]), PT = r(["CREATE [OR REPLACE] TABLE"]), FE = r([
|
|
5153
5201
|
// - create:
|
|
5154
5202
|
"CREATE [OR REPLACE] [RECURSIVE] VIEW",
|
|
5155
5203
|
// - update:
|
|
@@ -5259,7 +5307,7 @@ const lA = [
|
|
|
5259
5307
|
name: "db2i",
|
|
5260
5308
|
tokenizerOptions: {
|
|
5261
5309
|
reservedSelect: VA,
|
|
5262
|
-
reservedClauses: [...WA, ...
|
|
5310
|
+
reservedClauses: [...WA, ...PT, ...FE],
|
|
5263
5311
|
reservedSetOperations: XA,
|
|
5264
5312
|
reservedJoins: bA,
|
|
5265
5313
|
reservedPhrases: yA,
|
|
@@ -5279,8 +5327,8 @@ const lA = [
|
|
|
5279
5327
|
operators: ["**", "¬=", "¬>", "¬<", "!>", "!<", "||", "=>"]
|
|
5280
5328
|
},
|
|
5281
5329
|
formatOptions: {
|
|
5282
|
-
onelineClauses: [...
|
|
5283
|
-
tabularOnelineClauses:
|
|
5330
|
+
onelineClauses: [...PT, ...FE],
|
|
5331
|
+
tabularOnelineClauses: FE
|
|
5284
5332
|
}
|
|
5285
5333
|
}, $A = [
|
|
5286
5334
|
// Functions from DuckDB (excluding those that start with an underscore):
|
|
@@ -6131,9 +6179,9 @@ const lA = [
|
|
|
6131
6179
|
"SET",
|
|
6132
6180
|
// other:
|
|
6133
6181
|
"RETURNING"
|
|
6134
|
-
]),
|
|
6182
|
+
]), MT = r([
|
|
6135
6183
|
"CREATE [OR REPLACE] [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"
|
|
6136
|
-
]),
|
|
6184
|
+
]), YE = r([
|
|
6137
6185
|
// TABLE
|
|
6138
6186
|
// - update:
|
|
6139
6187
|
"UPDATE",
|
|
@@ -6233,7 +6281,7 @@ const lA = [
|
|
|
6233
6281
|
name: "duckdb",
|
|
6234
6282
|
tokenizerOptions: {
|
|
6235
6283
|
reservedSelect: wA,
|
|
6236
|
-
reservedClauses: [...xA, ...
|
|
6284
|
+
reservedClauses: [...xA, ...MT, ...YE],
|
|
6237
6285
|
reservedSetOperations: vA,
|
|
6238
6286
|
reservedJoins: QA,
|
|
6239
6287
|
reservedPhrases: ZA,
|
|
@@ -6300,8 +6348,8 @@ const lA = [
|
|
|
6300
6348
|
},
|
|
6301
6349
|
formatOptions: {
|
|
6302
6350
|
alwaysDenseOperators: ["::"],
|
|
6303
|
-
onelineClauses: [...
|
|
6304
|
-
tabularOnelineClauses:
|
|
6351
|
+
onelineClauses: [...MT, ...YE],
|
|
6352
|
+
tabularOnelineClauses: YE
|
|
6305
6353
|
}
|
|
6306
6354
|
}, jA = [
|
|
6307
6355
|
// https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF
|
|
@@ -6881,9 +6929,9 @@ const lA = [
|
|
|
6881
6929
|
// https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Loadingfilesintotables
|
|
6882
6930
|
"LOAD DATA [LOCAL] INPATH",
|
|
6883
6931
|
"[OVERWRITE] INTO TABLE"
|
|
6884
|
-
]),
|
|
6932
|
+
]), UT = r([
|
|
6885
6933
|
"CREATE [TEMPORARY] [EXTERNAL] TABLE [IF NOT EXISTS]"
|
|
6886
|
-
]),
|
|
6934
|
+
]), pE = r([
|
|
6887
6935
|
// - create:
|
|
6888
6936
|
"CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]",
|
|
6889
6937
|
// - update:
|
|
@@ -6918,7 +6966,7 @@ const lA = [
|
|
|
6918
6966
|
name: "hive",
|
|
6919
6967
|
tokenizerOptions: {
|
|
6920
6968
|
reservedSelect: ES,
|
|
6921
|
-
reservedClauses: [...TS, ...
|
|
6969
|
+
reservedClauses: [...TS, ...UT, ...pE],
|
|
6922
6970
|
reservedSetOperations: RS,
|
|
6923
6971
|
reservedJoins: AS,
|
|
6924
6972
|
reservedPhrases: SS,
|
|
@@ -6932,16 +6980,16 @@ const lA = [
|
|
|
6932
6980
|
operators: ["%", "~", "^", "|", "&", "<=>", "==", "!", "||"]
|
|
6933
6981
|
},
|
|
6934
6982
|
formatOptions: {
|
|
6935
|
-
onelineClauses: [...
|
|
6936
|
-
tabularOnelineClauses:
|
|
6983
|
+
onelineClauses: [...UT, ...pE],
|
|
6984
|
+
tabularOnelineClauses: pE
|
|
6937
6985
|
}
|
|
6938
6986
|
};
|
|
6939
|
-
function
|
|
6987
|
+
function nE(T) {
|
|
6940
6988
|
return T.map((E, R) => {
|
|
6941
|
-
const A = T[R + 1] ||
|
|
6989
|
+
const A = T[R + 1] || TE;
|
|
6942
6990
|
if (Z.SET(E) && A.text === "(")
|
|
6943
6991
|
return Object.assign(Object.assign({}, E), { type: D.RESERVED_FUNCTION_NAME });
|
|
6944
|
-
const S = T[R - 1] ||
|
|
6992
|
+
const S = T[R - 1] || TE;
|
|
6945
6993
|
return Z.VALUES(E) && S.text === "=" ? Object.assign(Object.assign({}, E), { type: D.RESERVED_FUNCTION_NAME }) : E;
|
|
6946
6994
|
});
|
|
6947
6995
|
}
|
|
@@ -7473,9 +7521,9 @@ const IS = [
|
|
|
7473
7521
|
"SET",
|
|
7474
7522
|
// other
|
|
7475
7523
|
"RETURNING"
|
|
7476
|
-
]),
|
|
7524
|
+
]), GT = r([
|
|
7477
7525
|
"CREATE [OR REPLACE] [TEMPORARY] TABLE [IF NOT EXISTS]"
|
|
7478
|
-
]),
|
|
7526
|
+
]), dE = r([
|
|
7479
7527
|
// - create:
|
|
7480
7528
|
"CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]",
|
|
7481
7529
|
// - update:
|
|
@@ -7704,7 +7752,7 @@ const IS = [
|
|
|
7704
7752
|
name: "mariadb",
|
|
7705
7753
|
tokenizerOptions: {
|
|
7706
7754
|
reservedSelect: tS,
|
|
7707
|
-
reservedClauses: [...sS, ...
|
|
7755
|
+
reservedClauses: [...sS, ...GT, ...dE],
|
|
7708
7756
|
reservedSetOperations: CS,
|
|
7709
7757
|
reservedJoins: LS,
|
|
7710
7758
|
reservedPhrases: _S,
|
|
@@ -7744,11 +7792,11 @@ const IS = [
|
|
|
7744
7792
|
"*.*"
|
|
7745
7793
|
// Not actually an operator
|
|
7746
7794
|
],
|
|
7747
|
-
postProcess:
|
|
7795
|
+
postProcess: nE
|
|
7748
7796
|
},
|
|
7749
7797
|
formatOptions: {
|
|
7750
|
-
onelineClauses: [...
|
|
7751
|
-
tabularOnelineClauses:
|
|
7798
|
+
onelineClauses: [...GT, ...dE],
|
|
7799
|
+
tabularOnelineClauses: dE
|
|
7752
7800
|
}
|
|
7753
7801
|
}, nS = [
|
|
7754
7802
|
// https://dev.mysql.com/doc/refman/8.0/en/keywords.html
|
|
@@ -8456,7 +8504,7 @@ const IS = [
|
|
|
8456
8504
|
// 'XOR',
|
|
8457
8505
|
"YEAR",
|
|
8458
8506
|
"YEARWEEK"
|
|
8459
|
-
], aS = r(["SELECT [ALL | DISTINCT | DISTINCTROW]"]),
|
|
8507
|
+
], aS = r(["SELECT [ALL | DISTINCT | DISTINCTROW]"]), oS = r([
|
|
8460
8508
|
// queries
|
|
8461
8509
|
"WITH [RECURSIVE]",
|
|
8462
8510
|
"FROM",
|
|
@@ -8476,7 +8524,7 @@ const IS = [
|
|
|
8476
8524
|
"ON DUPLICATE KEY UPDATE",
|
|
8477
8525
|
// - update:
|
|
8478
8526
|
"SET"
|
|
8479
|
-
]),
|
|
8527
|
+
]), lT = r(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]), fE = r([
|
|
8480
8528
|
// - create:
|
|
8481
8529
|
"CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]",
|
|
8482
8530
|
// - update:
|
|
@@ -8657,7 +8705,7 @@ const IS = [
|
|
|
8657
8705
|
"REPEAT",
|
|
8658
8706
|
"RETURN",
|
|
8659
8707
|
"WHILE"
|
|
8660
|
-
]),
|
|
8708
|
+
]), PS = r(["UNION [ALL | DISTINCT]"]), MS = r([
|
|
8661
8709
|
"JOIN",
|
|
8662
8710
|
"{LEFT | RIGHT} [OUTER] JOIN",
|
|
8663
8711
|
"{INNER | CROSS} JOIN",
|
|
@@ -8674,8 +8722,8 @@ const IS = [
|
|
|
8674
8722
|
name: "mysql",
|
|
8675
8723
|
tokenizerOptions: {
|
|
8676
8724
|
reservedSelect: aS,
|
|
8677
|
-
reservedClauses: [...
|
|
8678
|
-
reservedSetOperations:
|
|
8725
|
+
reservedClauses: [...oS, ...lT, ...fE],
|
|
8726
|
+
reservedSetOperations: PS,
|
|
8679
8727
|
reservedJoins: MS,
|
|
8680
8728
|
reservedPhrases: US,
|
|
8681
8729
|
supportsXor: !0,
|
|
@@ -8716,11 +8764,11 @@ const IS = [
|
|
|
8716
8764
|
"*.*"
|
|
8717
8765
|
// Not actually an operator
|
|
8718
8766
|
],
|
|
8719
|
-
postProcess:
|
|
8767
|
+
postProcess: nE
|
|
8720
8768
|
},
|
|
8721
8769
|
formatOptions: {
|
|
8722
|
-
onelineClauses: [...
|
|
8723
|
-
tabularOnelineClauses:
|
|
8770
|
+
onelineClauses: [...lT, ...fE],
|
|
8771
|
+
tabularOnelineClauses: fE
|
|
8724
8772
|
}
|
|
8725
8773
|
}, lS = [
|
|
8726
8774
|
// https://docs.pingcap.com/tidb/stable/keywords
|
|
@@ -9307,7 +9355,7 @@ const IS = [
|
|
|
9307
9355
|
"ON DUPLICATE KEY UPDATE",
|
|
9308
9356
|
// - update:
|
|
9309
9357
|
"SET"
|
|
9310
|
-
]),
|
|
9358
|
+
]), cT = r(["CREATE [TEMPORARY] TABLE [IF NOT EXISTS]"]), hE = r([
|
|
9311
9359
|
// https://docs.pingcap.com/tidb/stable/sql-statement-create-view
|
|
9312
9360
|
"CREATE [OR REPLACE] [SQL SECURITY DEFINER | SQL SECURITY INVOKER] VIEW [IF NOT EXISTS]",
|
|
9313
9361
|
// https://docs.pingcap.com/tidb/stable/sql-statement-update
|
|
@@ -9439,7 +9487,7 @@ const IS = [
|
|
|
9439
9487
|
name: "tidb",
|
|
9440
9488
|
tokenizerOptions: {
|
|
9441
9489
|
reservedSelect: HS,
|
|
9442
|
-
reservedClauses: [...BS, ...
|
|
9490
|
+
reservedClauses: [...BS, ...cT, ...hE],
|
|
9443
9491
|
reservedSetOperations: mS,
|
|
9444
9492
|
reservedJoins: FS,
|
|
9445
9493
|
reservedPhrases: YS,
|
|
@@ -9481,11 +9529,11 @@ const IS = [
|
|
|
9481
9529
|
"*.*"
|
|
9482
9530
|
// Not actually an operator
|
|
9483
9531
|
],
|
|
9484
|
-
postProcess:
|
|
9532
|
+
postProcess: nE
|
|
9485
9533
|
},
|
|
9486
9534
|
formatOptions: {
|
|
9487
|
-
onelineClauses: [...
|
|
9488
|
-
tabularOnelineClauses:
|
|
9535
|
+
onelineClauses: [...cT, ...hE],
|
|
9536
|
+
tabularOnelineClauses: hE
|
|
9489
9537
|
}
|
|
9490
9538
|
}, dS = [
|
|
9491
9539
|
// https://docs.couchbase.com/server/current/n1ql/n1ql-language-reference/functions.html
|
|
@@ -9959,7 +10007,7 @@ const IS = [
|
|
|
9959
10007
|
"NEST",
|
|
9960
10008
|
"UNNEST",
|
|
9961
10009
|
"RETURNING"
|
|
9962
|
-
]),
|
|
10010
|
+
]), uT = r([
|
|
9963
10011
|
// - update:
|
|
9964
10012
|
"UPDATE",
|
|
9965
10013
|
// - delete:
|
|
@@ -10003,7 +10051,7 @@ const IS = [
|
|
|
10003
10051
|
name: "n1ql",
|
|
10004
10052
|
tokenizerOptions: {
|
|
10005
10053
|
reservedSelect: VS,
|
|
10006
|
-
reservedClauses: [...WS, ...
|
|
10054
|
+
reservedClauses: [...WS, ...uT],
|
|
10007
10055
|
reservedSetOperations: XS,
|
|
10008
10056
|
reservedJoins: bS,
|
|
10009
10057
|
reservedPhrases: yS,
|
|
@@ -10022,7 +10070,7 @@ const IS = [
|
|
|
10022
10070
|
operators: ["%", "==", ":", "||"]
|
|
10023
10071
|
},
|
|
10024
10072
|
formatOptions: {
|
|
10025
|
-
onelineClauses:
|
|
10073
|
+
onelineClauses: uT
|
|
10026
10074
|
}
|
|
10027
10075
|
}, $S = [
|
|
10028
10076
|
// https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/reservewords.htm
|
|
@@ -10656,9 +10704,9 @@ const IS = [
|
|
|
10656
10704
|
"UPDATE SET",
|
|
10657
10705
|
// other
|
|
10658
10706
|
"RETURNING"
|
|
10659
|
-
]),
|
|
10707
|
+
]), HT = r([
|
|
10660
10708
|
"CREATE [GLOBAL TEMPORARY | PRIVATE TEMPORARY | SHARDED | DUPLICATED | IMMUTABLE BLOCKCHAIN | BLOCKCHAIN | IMMUTABLE] TABLE"
|
|
10661
|
-
]),
|
|
10709
|
+
]), VE = r([
|
|
10662
10710
|
// - create:
|
|
10663
10711
|
"CREATE [OR REPLACE] [NO FORCE | FORCE] [EDITIONING | EDITIONABLE | EDITIONABLE EDITIONING | NONEDITIONABLE] VIEW",
|
|
10664
10712
|
"CREATE MATERIALIZED VIEW",
|
|
@@ -10702,7 +10750,7 @@ const IS = [
|
|
|
10702
10750
|
name: "plsql",
|
|
10703
10751
|
tokenizerOptions: {
|
|
10704
10752
|
reservedSelect: wS,
|
|
10705
|
-
reservedClauses: [...xS, ...
|
|
10753
|
+
reservedClauses: [...xS, ...HT, ...VE],
|
|
10706
10754
|
reservedSetOperations: vS,
|
|
10707
10755
|
reservedJoins: QS,
|
|
10708
10756
|
reservedPhrases: ZS,
|
|
@@ -10738,13 +10786,13 @@ const IS = [
|
|
|
10738
10786
|
},
|
|
10739
10787
|
formatOptions: {
|
|
10740
10788
|
alwaysDenseOperators: ["@"],
|
|
10741
|
-
onelineClauses: [...
|
|
10742
|
-
tabularOnelineClauses:
|
|
10789
|
+
onelineClauses: [...HT, ...VE],
|
|
10790
|
+
tabularOnelineClauses: VE
|
|
10743
10791
|
}
|
|
10744
10792
|
};
|
|
10745
10793
|
function jS(T) {
|
|
10746
|
-
let E =
|
|
10747
|
-
return T.map((R) => Z.SET(R) && Z.BY(E) ? Object.assign(Object.assign({}, R), { type: D.RESERVED_KEYWORD }) : (
|
|
10794
|
+
let E = TE;
|
|
10795
|
+
return T.map((R) => Z.SET(R) && Z.BY(E) ? Object.assign(Object.assign({}, R), { type: D.RESERVED_KEYWORD }) : (oR(R.type) && (E = R), R));
|
|
10748
10796
|
}
|
|
10749
10797
|
const kS = [
|
|
10750
10798
|
// https://www.postgresql.org/docs/14/functions.html
|
|
@@ -11606,9 +11654,9 @@ const kS = [
|
|
|
11606
11654
|
"SET",
|
|
11607
11655
|
// other
|
|
11608
11656
|
"RETURNING"
|
|
11609
|
-
]),
|
|
11657
|
+
]), BT = r([
|
|
11610
11658
|
"CREATE [GLOBAL | LOCAL] [TEMPORARY | TEMP | UNLOGGED] TABLE [IF NOT EXISTS]"
|
|
11611
|
-
]),
|
|
11659
|
+
]), WE = r([
|
|
11612
11660
|
// - create
|
|
11613
11661
|
"CREATE [OR REPLACE] [TEMP | TEMPORARY] [RECURSIVE] VIEW",
|
|
11614
11662
|
"CREATE [MATERIALIZED] VIEW [IF NOT EXISTS]",
|
|
@@ -11833,7 +11881,7 @@ const kS = [
|
|
|
11833
11881
|
name: "postgresql",
|
|
11834
11882
|
tokenizerOptions: {
|
|
11835
11883
|
reservedSelect: Te,
|
|
11836
|
-
reservedClauses: [...Re, ...
|
|
11884
|
+
reservedClauses: [...Re, ...BT, ...WE],
|
|
11837
11885
|
reservedSetOperations: Ae,
|
|
11838
11886
|
reservedJoins: Se,
|
|
11839
11887
|
reservedPhrases: ee,
|
|
@@ -11950,8 +11998,8 @@ const kS = [
|
|
|
11950
11998
|
},
|
|
11951
11999
|
formatOptions: {
|
|
11952
12000
|
alwaysDenseOperators: ["::", ":"],
|
|
11953
|
-
onelineClauses: [...
|
|
11954
|
-
tabularOnelineClauses:
|
|
12001
|
+
onelineClauses: [...BT, ...WE],
|
|
12002
|
+
tabularOnelineClauses: WE
|
|
11955
12003
|
}
|
|
11956
12004
|
}, Oe = [
|
|
11957
12005
|
// https://docs.aws.amazon.com/redshift/latest/dg/c_Aggregate_Functions.html
|
|
@@ -12527,9 +12575,9 @@ const kS = [
|
|
|
12527
12575
|
"VALUES",
|
|
12528
12576
|
// - update:
|
|
12529
12577
|
"SET"
|
|
12530
|
-
]),
|
|
12578
|
+
]), mT = r([
|
|
12531
12579
|
"CREATE [TEMPORARY | TEMP | LOCAL TEMPORARY | LOCAL TEMP] TABLE [IF NOT EXISTS]"
|
|
12532
|
-
]),
|
|
12580
|
+
]), XE = r([
|
|
12533
12581
|
// - create:
|
|
12534
12582
|
"CREATE [OR REPLACE | MATERIALIZED] VIEW",
|
|
12535
12583
|
// - update:
|
|
@@ -12638,7 +12686,7 @@ const kS = [
|
|
|
12638
12686
|
name: "redshift",
|
|
12639
12687
|
tokenizerOptions: {
|
|
12640
12688
|
reservedSelect: se,
|
|
12641
|
-
reservedClauses: [...Ce, ...
|
|
12689
|
+
reservedClauses: [...Ce, ...mT, ...XE],
|
|
12642
12690
|
reservedSetOperations: Le,
|
|
12643
12691
|
reservedJoins: _e,
|
|
12644
12692
|
reservedPhrases: re,
|
|
@@ -12667,8 +12715,8 @@ const kS = [
|
|
|
12667
12715
|
},
|
|
12668
12716
|
formatOptions: {
|
|
12669
12717
|
alwaysDenseOperators: ["::"],
|
|
12670
|
-
onelineClauses: [...
|
|
12671
|
-
tabularOnelineClauses:
|
|
12718
|
+
onelineClauses: [...mT, ...XE],
|
|
12719
|
+
tabularOnelineClauses: XE
|
|
12672
12720
|
}
|
|
12673
12721
|
}, ie = [
|
|
12674
12722
|
// https://deepkb.com/CO_000013/en/kb/IMPORT-fbfa59f0-2bf1-31fe-bb7b-0f9efe9932c6/spark-sql-keywords
|
|
@@ -13288,7 +13336,7 @@ const kS = [
|
|
|
13288
13336
|
// Shorthand functions to use in place of CASE expression
|
|
13289
13337
|
"COALESCE",
|
|
13290
13338
|
"NULLIF"
|
|
13291
|
-
],
|
|
13339
|
+
], oe = r(["SELECT [ALL | DISTINCT]"]), Pe = r([
|
|
13292
13340
|
// queries
|
|
13293
13341
|
"WITH",
|
|
13294
13342
|
"FROM",
|
|
@@ -13313,7 +13361,7 @@ const kS = [
|
|
|
13313
13361
|
// https://spark.apache.org/docs/latest/sql-ref-syntax-dml-load.html
|
|
13314
13362
|
"LOAD DATA [LOCAL] INPATH",
|
|
13315
13363
|
"[OVERWRITE] INTO TABLE"
|
|
13316
|
-
]),
|
|
13364
|
+
]), FT = r(["CREATE [EXTERNAL] TABLE [IF NOT EXISTS]"]), bE = r([
|
|
13317
13365
|
// - create:
|
|
13318
13366
|
"CREATE [OR REPLACE] [GLOBAL TEMPORARY | TEMPORARY] VIEW [IF NOT EXISTS]",
|
|
13319
13367
|
// - drop table:
|
|
@@ -13390,8 +13438,8 @@ const kS = [
|
|
|
13390
13438
|
]), le = {
|
|
13391
13439
|
name: "spark",
|
|
13392
13440
|
tokenizerOptions: {
|
|
13393
|
-
reservedSelect:
|
|
13394
|
-
reservedClauses: [...
|
|
13441
|
+
reservedSelect: oe,
|
|
13442
|
+
reservedClauses: [...Pe, ...FT, ...bE],
|
|
13395
13443
|
reservedSetOperations: Me,
|
|
13396
13444
|
reservedJoins: Ue,
|
|
13397
13445
|
reservedPhrases: Ge,
|
|
@@ -13413,13 +13461,13 @@ const kS = [
|
|
|
13413
13461
|
postProcess: ce
|
|
13414
13462
|
},
|
|
13415
13463
|
formatOptions: {
|
|
13416
|
-
onelineClauses: [...
|
|
13417
|
-
tabularOnelineClauses:
|
|
13464
|
+
onelineClauses: [...FT, ...bE],
|
|
13465
|
+
tabularOnelineClauses: bE
|
|
13418
13466
|
}
|
|
13419
13467
|
};
|
|
13420
13468
|
function ce(T) {
|
|
13421
13469
|
return T.map((E, R) => {
|
|
13422
|
-
const A = T[R - 1] ||
|
|
13470
|
+
const A = T[R - 1] || TE, S = T[R + 1] || TE;
|
|
13423
13471
|
return Z.WINDOW(E) && S.type === D.OPEN_PAREN ? Object.assign(Object.assign({}, E), { type: D.RESERVED_FUNCTION_NAME }) : E.text === "ITEMS" && E.type === D.RESERVED_KEYWORD && !(A.text === "COLLECTION" && S.text === "TERMINATED") ? Object.assign(Object.assign({}, E), { type: D.IDENTIFIER, text: E.raw }) : E;
|
|
13424
13472
|
});
|
|
13425
13473
|
}
|
|
@@ -13740,7 +13788,7 @@ const ue = [
|
|
|
13740
13788
|
"VALUES",
|
|
13741
13789
|
// - update:
|
|
13742
13790
|
"SET"
|
|
13743
|
-
]),
|
|
13791
|
+
]), YT = r(["CREATE [TEMPORARY | TEMP] TABLE [IF NOT EXISTS]"]), yE = r([
|
|
13744
13792
|
// - create:
|
|
13745
13793
|
"CREATE [TEMPORARY | TEMP] VIEW [IF NOT EXISTS]",
|
|
13746
13794
|
// - update:
|
|
@@ -13773,7 +13821,7 @@ const ue = [
|
|
|
13773
13821
|
name: "sqlite",
|
|
13774
13822
|
tokenizerOptions: {
|
|
13775
13823
|
reservedSelect: me,
|
|
13776
|
-
reservedClauses: [...Fe, ...
|
|
13824
|
+
reservedClauses: [...Fe, ...YT, ...yE],
|
|
13777
13825
|
reservedSetOperations: Ye,
|
|
13778
13826
|
reservedJoins: pe,
|
|
13779
13827
|
reservedPhrases: de,
|
|
@@ -13792,8 +13840,8 @@ const ue = [
|
|
|
13792
13840
|
operators: ["%", "~", "&", "|", "<<", ">>", "==", "->", "->>", "||"]
|
|
13793
13841
|
},
|
|
13794
13842
|
formatOptions: {
|
|
13795
|
-
onelineClauses: [...
|
|
13796
|
-
tabularOnelineClauses:
|
|
13843
|
+
onelineClauses: [...YT, ...yE],
|
|
13844
|
+
tabularOnelineClauses: yE
|
|
13797
13845
|
}
|
|
13798
13846
|
}, he = [
|
|
13799
13847
|
// https://jakewheat.github.io/sql-overview/sql-2008-foundation-grammar.html#_6_9_set_function_specification
|
|
@@ -14149,7 +14197,7 @@ const ue = [
|
|
|
14149
14197
|
"VALUES",
|
|
14150
14198
|
// - update:
|
|
14151
14199
|
"SET"
|
|
14152
|
-
]),
|
|
14200
|
+
]), pT = r(["CREATE [GLOBAL TEMPORARY | LOCAL TEMPORARY] TABLE"]), KE = r([
|
|
14153
14201
|
// - create:
|
|
14154
14202
|
"CREATE [RECURSIVE] VIEW",
|
|
14155
14203
|
// - update:
|
|
@@ -14191,7 +14239,7 @@ const ue = [
|
|
|
14191
14239
|
name: "sql",
|
|
14192
14240
|
tokenizerOptions: {
|
|
14193
14241
|
reservedSelect: Xe,
|
|
14194
|
-
reservedClauses: [...be, ...
|
|
14242
|
+
reservedClauses: [...be, ...pT, ...KE],
|
|
14195
14243
|
reservedSetOperations: ye,
|
|
14196
14244
|
reservedJoins: Ke,
|
|
14197
14245
|
reservedPhrases: $e,
|
|
@@ -14207,8 +14255,8 @@ const ue = [
|
|
|
14207
14255
|
operators: ["||"]
|
|
14208
14256
|
},
|
|
14209
14257
|
formatOptions: {
|
|
14210
|
-
onelineClauses: [...
|
|
14211
|
-
tabularOnelineClauses:
|
|
14258
|
+
onelineClauses: [...pT, ...KE],
|
|
14259
|
+
tabularOnelineClauses: KE
|
|
14212
14260
|
}
|
|
14213
14261
|
}, Je = [
|
|
14214
14262
|
// https://github.com/trinodb/trino/tree/432d2897bdef99388c1a47188743a061c4ac1f34/docs/src/main/sphinx/functions
|
|
@@ -14948,7 +14996,7 @@ const ue = [
|
|
|
14948
14996
|
"PATTERN",
|
|
14949
14997
|
"SUBSET",
|
|
14950
14998
|
"DEFINE"
|
|
14951
|
-
]),
|
|
14999
|
+
]), dT = r(["CREATE TABLE [IF NOT EXISTS]"]), $E = r([
|
|
14952
15000
|
// - create:
|
|
14953
15001
|
"CREATE [OR REPLACE] [MATERIALIZED] VIEW",
|
|
14954
15002
|
// - update:
|
|
@@ -15024,7 +15072,7 @@ const ue = [
|
|
|
15024
15072
|
name: "trino",
|
|
15025
15073
|
tokenizerOptions: {
|
|
15026
15074
|
reservedSelect: ve,
|
|
15027
|
-
reservedClauses: [...Qe, ...
|
|
15075
|
+
reservedClauses: [...Qe, ...dT, ...$E],
|
|
15028
15076
|
reservedSetOperations: Ze,
|
|
15029
15077
|
reservedJoins: qe,
|
|
15030
15078
|
reservedPhrases: je,
|
|
@@ -15059,8 +15107,8 @@ const ue = [
|
|
|
15059
15107
|
]
|
|
15060
15108
|
},
|
|
15061
15109
|
formatOptions: {
|
|
15062
|
-
onelineClauses: [...
|
|
15063
|
-
tabularOnelineClauses:
|
|
15110
|
+
onelineClauses: [...dT, ...$E],
|
|
15111
|
+
tabularOnelineClauses: $E
|
|
15064
15112
|
}
|
|
15065
15113
|
}, ze = [
|
|
15066
15114
|
// https://docs.microsoft.com/en-us/sql/t-sql/functions/functions?view=sql-server-ver15
|
|
@@ -15602,7 +15650,7 @@ const ue = [
|
|
|
15602
15650
|
"UPDATE SET",
|
|
15603
15651
|
// Data definition
|
|
15604
15652
|
"CREATE [OR ALTER] {PROC | PROCEDURE}"
|
|
15605
|
-
]),
|
|
15653
|
+
]), fT = r(["CREATE TABLE"]), gE = r([
|
|
15606
15654
|
// - create:
|
|
15607
15655
|
"CREATE [OR ALTER] [MATERIALIZED] VIEW",
|
|
15608
15656
|
// - update:
|
|
@@ -15795,7 +15843,7 @@ const ue = [
|
|
|
15795
15843
|
name: "transactsql",
|
|
15796
15844
|
tokenizerOptions: {
|
|
15797
15845
|
reservedSelect: RI,
|
|
15798
|
-
reservedClauses: [...AI, ...
|
|
15846
|
+
reservedClauses: [...AI, ...fT, ...gE],
|
|
15799
15847
|
reservedSetOperations: SI,
|
|
15800
15848
|
reservedJoins: eI,
|
|
15801
15849
|
reservedPhrases: II,
|
|
@@ -15831,8 +15879,8 @@ const ue = [
|
|
|
15831
15879
|
},
|
|
15832
15880
|
formatOptions: {
|
|
15833
15881
|
alwaysDenseOperators: ["::"],
|
|
15834
|
-
onelineClauses: [...
|
|
15835
|
-
tabularOnelineClauses:
|
|
15882
|
+
onelineClauses: [...fT, ...gE],
|
|
15883
|
+
tabularOnelineClauses: gE
|
|
15836
15884
|
}
|
|
15837
15885
|
}, NI = [
|
|
15838
15886
|
// List of all keywords taken from:
|
|
@@ -16398,9 +16446,9 @@ const ue = [
|
|
|
16398
16446
|
// Data definition
|
|
16399
16447
|
"CREATE [OR REPLACE] [TEMPORARY] PROCEDURE [IF NOT EXISTS]",
|
|
16400
16448
|
"CREATE [OR REPLACE] [EXTERNAL] FUNCTION"
|
|
16401
|
-
]),
|
|
16449
|
+
]), hT = r([
|
|
16402
16450
|
"CREATE [ROWSTORE] [REFERENCE | TEMPORARY | GLOBAL TEMPORARY] TABLE [IF NOT EXISTS]"
|
|
16403
|
-
]),
|
|
16451
|
+
]), JE = r([
|
|
16404
16452
|
// - create:
|
|
16405
16453
|
"CREATE VIEW",
|
|
16406
16454
|
// - update:
|
|
@@ -16599,7 +16647,7 @@ const ue = [
|
|
|
16599
16647
|
name: "singlestoredb",
|
|
16600
16648
|
tokenizerOptions: {
|
|
16601
16649
|
reservedSelect: CI,
|
|
16602
|
-
reservedClauses: [...LI, ...
|
|
16650
|
+
reservedClauses: [...LI, ...hT, ...JE],
|
|
16603
16651
|
reservedSetOperations: _I,
|
|
16604
16652
|
reservedJoins: rI,
|
|
16605
16653
|
reservedPhrases: nI,
|
|
@@ -16638,12 +16686,12 @@ const ue = [
|
|
|
16638
16686
|
"*.*"
|
|
16639
16687
|
// Not actually an operator
|
|
16640
16688
|
],
|
|
16641
|
-
postProcess:
|
|
16689
|
+
postProcess: nE
|
|
16642
16690
|
},
|
|
16643
16691
|
formatOptions: {
|
|
16644
16692
|
alwaysDenseOperators: ["::", "::$", "::%"],
|
|
16645
|
-
onelineClauses: [...
|
|
16646
|
-
tabularOnelineClauses:
|
|
16693
|
+
onelineClauses: [...hT, ...JE],
|
|
16694
|
+
tabularOnelineClauses: JE
|
|
16647
16695
|
}
|
|
16648
16696
|
}, DI = [
|
|
16649
16697
|
// https://docs.snowflake.com/en/sql-reference-functions.html
|
|
@@ -17349,7 +17397,7 @@ const ue = [
|
|
|
17349
17397
|
"WITH",
|
|
17350
17398
|
// These are definitely keywords, but haven't found a definite list in the docs
|
|
17351
17399
|
"COMMENT"
|
|
17352
|
-
],
|
|
17400
|
+
], oI = [
|
|
17353
17401
|
"NUMBER",
|
|
17354
17402
|
"DECIMAL",
|
|
17355
17403
|
"NUMERIC",
|
|
@@ -17386,7 +17434,7 @@ const ue = [
|
|
|
17386
17434
|
"ARRAY",
|
|
17387
17435
|
"GEOGRAPHY",
|
|
17388
17436
|
"GEOMETRY"
|
|
17389
|
-
],
|
|
17437
|
+
], PI = r(["SELECT [ALL | DISTINCT]"]), MI = r([
|
|
17390
17438
|
// queries
|
|
17391
17439
|
"WITH [RECURSIVE]",
|
|
17392
17440
|
"FROM",
|
|
@@ -17414,10 +17462,10 @@ const ue = [
|
|
|
17414
17462
|
"WHEN MATCHED [AND]",
|
|
17415
17463
|
"THEN {UPDATE SET | DELETE}",
|
|
17416
17464
|
"WHEN NOT MATCHED THEN INSERT"
|
|
17417
|
-
]),
|
|
17465
|
+
]), VT = r([
|
|
17418
17466
|
"CREATE [OR REPLACE] [VOLATILE] TABLE [IF NOT EXISTS]",
|
|
17419
17467
|
"CREATE [OR REPLACE] [LOCAL | GLOBAL] {TEMP|TEMPORARY} TABLE [IF NOT EXISTS]"
|
|
17420
|
-
]),
|
|
17468
|
+
]), wE = r([
|
|
17421
17469
|
// - create:
|
|
17422
17470
|
"CREATE [OR REPLACE] [SECURE] [RECURSIVE] VIEW [IF NOT EXISTS]",
|
|
17423
17471
|
// - update:
|
|
@@ -17668,13 +17716,13 @@ const ue = [
|
|
|
17668
17716
|
]), cI = {
|
|
17669
17717
|
name: "snowflake",
|
|
17670
17718
|
tokenizerOptions: {
|
|
17671
|
-
reservedSelect:
|
|
17672
|
-
reservedClauses: [...MI, ...
|
|
17719
|
+
reservedSelect: PI,
|
|
17720
|
+
reservedClauses: [...MI, ...VT, ...wE],
|
|
17673
17721
|
reservedSetOperations: UI,
|
|
17674
17722
|
reservedJoins: GI,
|
|
17675
17723
|
reservedPhrases: lI,
|
|
17676
17724
|
reservedKeywords: aI,
|
|
17677
|
-
reservedDataTypes:
|
|
17725
|
+
reservedDataTypes: oI,
|
|
17678
17726
|
reservedFunctionNames: DI,
|
|
17679
17727
|
stringTypes: ["$$", "''-qq-bs"],
|
|
17680
17728
|
identTypes: ['""-qq'],
|
|
@@ -17705,12 +17753,12 @@ const ue = [
|
|
|
17705
17753
|
},
|
|
17706
17754
|
formatOptions: {
|
|
17707
17755
|
alwaysDenseOperators: ["::"],
|
|
17708
|
-
onelineClauses: [...
|
|
17709
|
-
tabularOnelineClauses:
|
|
17756
|
+
onelineClauses: [...VT, ...wE],
|
|
17757
|
+
tabularOnelineClauses: wE
|
|
17710
17758
|
}
|
|
17711
17759
|
}, uI = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
17712
17760
|
__proto__: null,
|
|
17713
|
-
bigquery:
|
|
17761
|
+
bigquery: oA,
|
|
17714
17762
|
db2: pA,
|
|
17715
17763
|
db2i: KA,
|
|
17716
17764
|
duckdb: qA,
|
|
@@ -17729,17 +17777,17 @@ const ue = [
|
|
|
17729
17777
|
tidb: pS,
|
|
17730
17778
|
transactsql: OI,
|
|
17731
17779
|
trino: ke
|
|
17732
|
-
}, Symbol.toStringTag, { value: "Module" })), eE = (T) => T[T.length - 1],
|
|
17780
|
+
}, Symbol.toStringTag, { value: "Module" })), eE = (T) => T[T.length - 1], PR = (T) => T.sort((E, R) => R.length - E.length || E.localeCompare(R)), tE = (T) => T.replace(/\s+/gu, " "), xE = (T) => /\n/.test(T), y = (T) => T.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&"), WT = /\s+/uy, q = (T) => new RegExp(`(?:${T})`, "uy"), HI = (T) => T.split("").map((E) => / /gu.test(E) ? "\\s+" : `[${E.toUpperCase()}${E.toLowerCase()}]`).join(""), BI = (T) => T + "(?:-" + T + ")*", mI = ({ prefixes: T, requirePrefix: E }) => `(?:${T.map(HI).join("|")}${E ? "" : "|"})`, FI = (T) => new RegExp(`(?:${T.map(y).join("|")}).*?(?=\r
|
|
17733
17781
|
|\r|
|
|
17734
|
-
|$)`, "uy"),
|
|
17782
|
+
|$)`, "uy"), XT = (T, E = []) => {
|
|
17735
17783
|
const R = T === "open" ? 0 : 1, A = ["()", ...E].map((S) => S[R]);
|
|
17736
17784
|
return q(A.map(y).join("|"));
|
|
17737
|
-
},
|
|
17785
|
+
}, bT = (T) => q(`${PR(T).map(y).join("|")}`), YI = ({ rest: T, dashes: E }) => T || E ? `(?![${T || ""}${E ? "-" : ""}])` : "", J = (T, E = {}) => {
|
|
17738
17786
|
if (T.length === 0)
|
|
17739
17787
|
return /^\b$/u;
|
|
17740
|
-
const R = YI(E), A =
|
|
17788
|
+
const R = YI(E), A = PR(T).map(y).join("|").replace(/ /gu, "\\s+");
|
|
17741
17789
|
return new RegExp(`(?:${A})${R}\\b`, "iuy");
|
|
17742
|
-
},
|
|
17790
|
+
}, vE = (T, E) => {
|
|
17743
17791
|
if (!T.length)
|
|
17744
17792
|
return;
|
|
17745
17793
|
const R = T.map(y).join("|");
|
|
@@ -17752,7 +17800,7 @@ const ue = [
|
|
|
17752
17800
|
"{": "}"
|
|
17753
17801
|
}, E = "{left}(?:(?!{right}').)*?{right}", R = Object.entries(T).map(([N, s]) => E.replace(/{left}/g, y(N)).replace(/{right}/g, y(s))), A = y(Object.keys(T).join(""));
|
|
17754
17802
|
return `[Qq]'(?:${String.raw`(?<tag>[^\s${A}])(?:(?!\k<tag>').)*?\k<tag>`}|${R.join("|")})'`;
|
|
17755
|
-
},
|
|
17803
|
+
}, yT = {
|
|
17756
17804
|
// - backtick quoted (using `` to escape)
|
|
17757
17805
|
"``": "(?:`[^`]*`)+",
|
|
17758
17806
|
// - Transact-SQL square bracket quoted (using ]] to escape)
|
|
@@ -17777,11 +17825,11 @@ const ue = [
|
|
|
17777
17825
|
"{}": String.raw`(?:\{[^\}]*\})`,
|
|
17778
17826
|
// Oracle q'' strings: q'<text>' q'|text|' ...
|
|
17779
17827
|
"q''": pI()
|
|
17780
|
-
},
|
|
17828
|
+
}, MR = (T) => typeof T == "string" ? yT[T] : "regex" in T ? T.regex : mI(T) + yT[T.quote], dI = (T) => q(T.map((E) => "regex" in E ? E.regex : MR(E)).join("|")), UR = (T) => T.map(MR).join("|"), KT = (T) => q(UR(T)), fI = (T = {}) => q(GR(T)), GR = ({ first: T, rest: E, dashes: R, allowFirstCharNumber: A } = {}) => {
|
|
17781
17829
|
const S = "\\p{Alphabetic}\\p{Mark}_", e = "\\p{Decimal_Number}", N = y(T ?? ""), s = y(E ?? ""), _ = A ? `[${S}${e}${N}][${S}${e}${s}]*` : `[${S}${N}][${S}${e}${s}]*`;
|
|
17782
17830
|
return R ? BI(_) : _;
|
|
17783
17831
|
};
|
|
17784
|
-
function
|
|
17832
|
+
function lR(T, E) {
|
|
17785
17833
|
const R = T.slice(0, E).split(/\n/);
|
|
17786
17834
|
return { line: R.length, col: R[R.length - 1].length + 1 };
|
|
17787
17835
|
}
|
|
@@ -17811,7 +17859,7 @@ class hI {
|
|
|
17811
17859
|
return R;
|
|
17812
17860
|
}
|
|
17813
17861
|
createParseError() {
|
|
17814
|
-
const E = this.input.slice(this.index, this.index + 10), { line: R, col: A } =
|
|
17862
|
+
const E = this.input.slice(this.index, this.index + 10), { line: R, col: A } = lR(this.input, this.index);
|
|
17815
17863
|
return new Error(`Parse error: Unexpected "${E}" at line ${R} column ${A}.
|
|
17816
17864
|
${this.dialectInfo()}`);
|
|
17817
17865
|
}
|
|
@@ -17820,8 +17868,8 @@ ${this.dialectInfo()}`);
|
|
|
17820
17868
|
If possible, please select a more specific dialect (like sqlite, postgresql, etc).` : `SQL dialect used: "${this.dialectName}".`;
|
|
17821
17869
|
}
|
|
17822
17870
|
getWhitespace() {
|
|
17823
|
-
|
|
17824
|
-
const E =
|
|
17871
|
+
WT.lastIndex = this.index;
|
|
17872
|
+
const E = WT.exec(this.input);
|
|
17825
17873
|
if (E)
|
|
17826
17874
|
return this.index += E[0].length, E[0];
|
|
17827
17875
|
}
|
|
@@ -17847,19 +17895,19 @@ If possible, please select a more specific dialect (like sqlite, postgresql, etc
|
|
|
17847
17895
|
}
|
|
17848
17896
|
}
|
|
17849
17897
|
}
|
|
17850
|
-
const
|
|
17898
|
+
const $T = /\/\*/uy, VI = /[\s\S]/uy, WI = /\*\//uy;
|
|
17851
17899
|
class XI {
|
|
17852
17900
|
constructor() {
|
|
17853
17901
|
this.lastIndex = 0;
|
|
17854
17902
|
}
|
|
17855
17903
|
exec(E) {
|
|
17856
17904
|
let R = "", A, S = 0;
|
|
17857
|
-
if (A = this.matchSection(
|
|
17905
|
+
if (A = this.matchSection($T, E))
|
|
17858
17906
|
R += A, S++;
|
|
17859
17907
|
else
|
|
17860
17908
|
return null;
|
|
17861
17909
|
for (; S > 0; )
|
|
17862
|
-
if (A = this.matchSection(
|
|
17910
|
+
if (A = this.matchSection($T, E))
|
|
17863
17911
|
R += A, S++;
|
|
17864
17912
|
else if (A = this.matchSection(WI, E))
|
|
17865
17913
|
R += A, S--;
|
|
@@ -17906,7 +17954,7 @@ class bI {
|
|
|
17906
17954
|
},
|
|
17907
17955
|
{
|
|
17908
17956
|
type: D.QUOTED_IDENTIFIER,
|
|
17909
|
-
regex:
|
|
17957
|
+
regex: KT(E.identTypes)
|
|
17910
17958
|
},
|
|
17911
17959
|
{
|
|
17912
17960
|
type: D.NUMBER,
|
|
@@ -18021,7 +18069,7 @@ class bI {
|
|
|
18021
18069
|
type: D.VARIABLE,
|
|
18022
18070
|
regex: E.variableTypes ? dI(E.variableTypes) : void 0
|
|
18023
18071
|
},
|
|
18024
|
-
{ type: D.STRING, regex:
|
|
18072
|
+
{ type: D.STRING, regex: KT(E.stringTypes) },
|
|
18025
18073
|
{
|
|
18026
18074
|
type: D.IDENTIFIER,
|
|
18027
18075
|
regex: fI(E.identChars)
|
|
@@ -18030,15 +18078,15 @@ class bI {
|
|
|
18030
18078
|
{ type: D.COMMA, regex: /[,]/y },
|
|
18031
18079
|
{
|
|
18032
18080
|
type: D.OPEN_PAREN,
|
|
18033
|
-
regex:
|
|
18081
|
+
regex: XT("open", E.extraParens)
|
|
18034
18082
|
},
|
|
18035
18083
|
{
|
|
18036
18084
|
type: D.CLOSE_PAREN,
|
|
18037
|
-
regex:
|
|
18085
|
+
regex: XT("close", E.extraParens)
|
|
18038
18086
|
},
|
|
18039
18087
|
{
|
|
18040
18088
|
type: D.OPERATOR,
|
|
18041
|
-
regex:
|
|
18089
|
+
regex: bT([
|
|
18042
18090
|
// standard operators
|
|
18043
18091
|
"+",
|
|
18044
18092
|
"-",
|
|
@@ -18056,7 +18104,7 @@ class bI {
|
|
|
18056
18104
|
{ type: D.ASTERISK, regex: /[*]/uy },
|
|
18057
18105
|
{
|
|
18058
18106
|
type: D.PROPERTY_ACCESS_OPERATOR,
|
|
18059
|
-
regex:
|
|
18107
|
+
regex: bT([".", ...(A = E.propertyAccessOperators) !== null && A !== void 0 ? A : []])
|
|
18060
18108
|
}
|
|
18061
18109
|
]);
|
|
18062
18110
|
}
|
|
@@ -18074,12 +18122,12 @@ class bI {
|
|
|
18074
18122
|
return this.validRules([
|
|
18075
18123
|
{
|
|
18076
18124
|
type: D.NAMED_PARAMETER,
|
|
18077
|
-
regex:
|
|
18125
|
+
regex: vE(_.named, GR(E.paramChars || E.identChars)),
|
|
18078
18126
|
key: (I) => I.slice(1)
|
|
18079
18127
|
},
|
|
18080
18128
|
{
|
|
18081
18129
|
type: D.QUOTED_PARAMETER,
|
|
18082
|
-
regex:
|
|
18130
|
+
regex: vE(_.quoted, UR(E.identTypes)),
|
|
18083
18131
|
key: (I) => (({ tokenKey: O, quoteChar: C }) => O.replace(new RegExp(y("\\" + C), "gu"), C))({
|
|
18084
18132
|
tokenKey: I.slice(2, -1),
|
|
18085
18133
|
quoteChar: I.slice(-1)
|
|
@@ -18087,7 +18135,7 @@ class bI {
|
|
|
18087
18135
|
},
|
|
18088
18136
|
{
|
|
18089
18137
|
type: D.NUMBERED_PARAMETER,
|
|
18090
|
-
regex:
|
|
18138
|
+
regex: vE(_.numbered, "[0-9]+"),
|
|
18091
18139
|
key: (I) => I.slice(1)
|
|
18092
18140
|
},
|
|
18093
18141
|
{
|
|
@@ -18109,9 +18157,9 @@ class bI {
|
|
|
18109
18157
|
return E.filter((R) => !!R.regex);
|
|
18110
18158
|
}
|
|
18111
18159
|
}
|
|
18112
|
-
const p = (T) => tE(T.toUpperCase()),
|
|
18113
|
-
let E =
|
|
18114
|
-
return E || (E = KI(T),
|
|
18160
|
+
const p = (T) => tE(T.toUpperCase()), gT = /* @__PURE__ */ new Map(), yI = (T) => {
|
|
18161
|
+
let E = gT.get(T);
|
|
18162
|
+
return E || (E = KI(T), gT.set(T, E)), E;
|
|
18115
18163
|
}, KI = (T) => ({
|
|
18116
18164
|
tokenizer: new bI(T.tokenizerOptions, T.name),
|
|
18117
18165
|
formatOptions: $I(T.formatOptions)
|
|
@@ -18126,7 +18174,7 @@ const p = (T) => tE(T.toUpperCase()), XT = /* @__PURE__ */ new Map(), yI = (T) =
|
|
|
18126
18174
|
function gI(T) {
|
|
18127
18175
|
return T.indentStyle === "tabularLeft" || T.indentStyle === "tabularRight" ? " ".repeat(10) : T.useTabs ? " " : " ".repeat(T.tabWidth);
|
|
18128
18176
|
}
|
|
18129
|
-
function
|
|
18177
|
+
function EE(T) {
|
|
18130
18178
|
return T.indentStyle === "tabularLeft" || T.indentStyle === "tabularRight";
|
|
18131
18179
|
}
|
|
18132
18180
|
class JI {
|
|
@@ -18156,7 +18204,7 @@ var wI = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : t
|
|
|
18156
18204
|
function xI(T) {
|
|
18157
18205
|
return T && T.__esModule && Object.prototype.hasOwnProperty.call(T, "default") ? T.default : T;
|
|
18158
18206
|
}
|
|
18159
|
-
var
|
|
18207
|
+
var cR = { exports: {} };
|
|
18160
18208
|
(function(T) {
|
|
18161
18209
|
(function(E, R) {
|
|
18162
18210
|
T.exports ? T.exports = R() : E.nearley = R();
|
|
@@ -18190,38 +18238,38 @@ var oR = { exports: {} };
|
|
|
18190
18238
|
}
|
|
18191
18239
|
A.prototype.process = function(I) {
|
|
18192
18240
|
for (var O = this.states, C = this.wants, t = this.completed, i = 0; i < O.length; i++) {
|
|
18193
|
-
var
|
|
18194
|
-
if (
|
|
18195
|
-
if (
|
|
18196
|
-
for (var M =
|
|
18197
|
-
var G = M[
|
|
18198
|
-
this.complete(G,
|
|
18241
|
+
var P = O[i];
|
|
18242
|
+
if (P.isComplete) {
|
|
18243
|
+
if (P.finish(), P.data !== N.fail) {
|
|
18244
|
+
for (var M = P.wantedBy, o = M.length; o--; ) {
|
|
18245
|
+
var G = M[o];
|
|
18246
|
+
this.complete(G, P);
|
|
18199
18247
|
}
|
|
18200
|
-
if (
|
|
18201
|
-
var a =
|
|
18202
|
-
(this.completed[a] = this.completed[a] || []).push(
|
|
18248
|
+
if (P.reference === this.index) {
|
|
18249
|
+
var a = P.rule.name;
|
|
18250
|
+
(this.completed[a] = this.completed[a] || []).push(P);
|
|
18203
18251
|
}
|
|
18204
18252
|
}
|
|
18205
18253
|
} else {
|
|
18206
|
-
var a =
|
|
18254
|
+
var a = P.rule.symbols[P.dot];
|
|
18207
18255
|
if (typeof a != "string") {
|
|
18208
|
-
this.scannable.push(
|
|
18256
|
+
this.scannable.push(P);
|
|
18209
18257
|
continue;
|
|
18210
18258
|
}
|
|
18211
18259
|
if (C[a]) {
|
|
18212
|
-
if (C[a].push(
|
|
18213
|
-
for (var H = t[a],
|
|
18214
|
-
var u = H[
|
|
18215
|
-
this.complete(
|
|
18260
|
+
if (C[a].push(P), t.hasOwnProperty(a))
|
|
18261
|
+
for (var H = t[a], o = 0; o < H.length; o++) {
|
|
18262
|
+
var u = H[o];
|
|
18263
|
+
this.complete(P, u);
|
|
18216
18264
|
}
|
|
18217
18265
|
} else
|
|
18218
|
-
C[a] = [
|
|
18266
|
+
C[a] = [P], this.predict(a);
|
|
18219
18267
|
}
|
|
18220
18268
|
}
|
|
18221
18269
|
}, A.prototype.predict = function(I) {
|
|
18222
18270
|
for (var O = this.grammar.byName[I] || [], C = 0; C < O.length; C++) {
|
|
18223
|
-
var t = O[C], i = this.wants[I],
|
|
18224
|
-
this.states.push(
|
|
18271
|
+
var t = O[C], i = this.wants[I], P = new R(t, 0, this.index, i);
|
|
18272
|
+
this.states.push(P);
|
|
18225
18273
|
}
|
|
18226
18274
|
}, A.prototype.complete = function(I, O) {
|
|
18227
18275
|
var C = I.nextState(O);
|
|
@@ -18237,8 +18285,8 @@ var oR = { exports: {} };
|
|
|
18237
18285
|
S.fromCompiled = function(t, O) {
|
|
18238
18286
|
var C = t.Lexer;
|
|
18239
18287
|
t.ParserStart && (O = t.ParserStart, t = t.ParserRules);
|
|
18240
|
-
var t = t.map(function(
|
|
18241
|
-
return new E(
|
|
18288
|
+
var t = t.map(function(P) {
|
|
18289
|
+
return new E(P.name, P.symbols, P.postprocess);
|
|
18242
18290
|
}), i = new S(t, O);
|
|
18243
18291
|
return i.lexer = C, i;
|
|
18244
18292
|
};
|
|
@@ -18268,18 +18316,18 @@ var oR = { exports: {} };
|
|
|
18268
18316
|
), i = C.indexOf(`
|
|
18269
18317
|
`, this.index);
|
|
18270
18318
|
i === -1 && (i = C.length);
|
|
18271
|
-
var
|
|
18272
|
-
return O += " at line " + this.line + " col " +
|
|
18319
|
+
var P = this.index - this.lastLineBreak, M = String(this.line).length;
|
|
18320
|
+
return O += " at line " + this.line + " col " + P + `:
|
|
18273
18321
|
|
|
18274
18322
|
`, O += t.map(function(G, a) {
|
|
18275
|
-
return
|
|
18323
|
+
return o(this.line - t.length + a + 1, M) + " " + G;
|
|
18276
18324
|
}, this).join(`
|
|
18277
18325
|
`), O += `
|
|
18278
|
-
` +
|
|
18326
|
+
` + o("", M + P) + `^
|
|
18279
18327
|
`, O;
|
|
18280
18328
|
} else
|
|
18281
18329
|
return O + " at index " + (this.index - 1);
|
|
18282
|
-
function
|
|
18330
|
+
function o(G, a) {
|
|
18283
18331
|
var H = String(G);
|
|
18284
18332
|
return Array(a - H.length + 1).join(" ") + H;
|
|
18285
18333
|
}
|
|
@@ -18296,8 +18344,8 @@ var oR = { exports: {} };
|
|
|
18296
18344
|
for (var i in C || {})
|
|
18297
18345
|
this.options[i] = C[i];
|
|
18298
18346
|
this.lexer = this.options.lexer, this.lexerState = void 0;
|
|
18299
|
-
var
|
|
18300
|
-
this.table = [
|
|
18347
|
+
var P = new A(t, 0);
|
|
18348
|
+
this.table = [P], P.wants[t.start] = [], P.predict(t.start), P.process(), this.current = 0;
|
|
18301
18349
|
}
|
|
18302
18350
|
N.fail = {}, N.prototype.feed = function(I) {
|
|
18303
18351
|
var O = this.lexer;
|
|
@@ -18314,12 +18362,12 @@ var oR = { exports: {} };
|
|
|
18314
18362
|
}
|
|
18315
18363
|
var i = this.table[this.current];
|
|
18316
18364
|
this.options.keepHistory || delete this.table[this.current - 1];
|
|
18317
|
-
var
|
|
18365
|
+
var P = this.current + 1, M = new A(this.grammar, P);
|
|
18318
18366
|
this.table.push(M);
|
|
18319
|
-
for (var
|
|
18367
|
+
for (var o = C.text !== void 0 ? C.text : C.value, G = O.constructor === e ? C.value : C, a = i.scannable, H = a.length; H--; ) {
|
|
18320
18368
|
var u = a[H], B = u.rule.symbols[u.dot];
|
|
18321
|
-
if (B.test ? B.test(G) : B.type ? B.type === C.type : B.literal ===
|
|
18322
|
-
var Y = u.nextState({ data: G, token: C, isToken: !0, reference:
|
|
18369
|
+
if (B.test ? B.test(G) : B.type ? B.type === C.type : B.literal === o) {
|
|
18370
|
+
var Y = u.nextState({ data: G, token: C, isToken: !0, reference: P - 1 });
|
|
18323
18371
|
M.states.push(Y);
|
|
18324
18372
|
}
|
|
18325
18373
|
}
|
|
@@ -18339,29 +18387,29 @@ var oR = { exports: {} };
|
|
|
18339
18387
|
}, N.prototype.reportErrorCommon = function(I, O) {
|
|
18340
18388
|
var C = [];
|
|
18341
18389
|
C.push(I);
|
|
18342
|
-
var t = this.table.length - 2, i = this.table[t],
|
|
18343
|
-
var G =
|
|
18390
|
+
var t = this.table.length - 2, i = this.table[t], P = i.states.filter(function(o) {
|
|
18391
|
+
var G = o.rule.symbols[o.dot];
|
|
18344
18392
|
return G && typeof G != "string";
|
|
18345
18393
|
});
|
|
18346
|
-
if (
|
|
18394
|
+
if (P.length === 0)
|
|
18347
18395
|
C.push("Unexpected " + O + `. I did not expect any more input. Here is the state of my parse table:
|
|
18348
18396
|
`), this.displayStateStack(i.states, C);
|
|
18349
18397
|
else {
|
|
18350
18398
|
C.push("Unexpected " + O + `. Instead, I was expecting to see one of the following:
|
|
18351
18399
|
`);
|
|
18352
|
-
var M =
|
|
18353
|
-
return this.buildFirstStateStack(
|
|
18400
|
+
var M = P.map(function(o) {
|
|
18401
|
+
return this.buildFirstStateStack(o, []) || [o];
|
|
18354
18402
|
}, this);
|
|
18355
|
-
M.forEach(function(
|
|
18356
|
-
var G =
|
|
18357
|
-
C.push("A " + H + " based on:"), this.displayStateStack(
|
|
18403
|
+
M.forEach(function(o) {
|
|
18404
|
+
var G = o[0], a = G.rule.symbols[G.dot], H = this.getSymbolDisplay(a);
|
|
18405
|
+
C.push("A " + H + " based on:"), this.displayStateStack(o, C);
|
|
18358
18406
|
}, this);
|
|
18359
18407
|
}
|
|
18360
18408
|
return C.push(""), C.join(`
|
|
18361
18409
|
`);
|
|
18362
18410
|
}, N.prototype.displayStateStack = function(I, O) {
|
|
18363
18411
|
for (var C, t = 0, i = 0; i < I.length; i++) {
|
|
18364
|
-
var
|
|
18412
|
+
var P = I[i], M = P.rule.toString(P.dot);
|
|
18365
18413
|
M === C ? t++ : (t > 0 && O.push(" ^ " + t + " more lines identical to this"), t = 0, O.push(" " + M)), C = M;
|
|
18366
18414
|
}
|
|
18367
18415
|
}, N.prototype.getSymbolDisplay = function(I) {
|
|
@@ -18429,57 +18477,57 @@ var oR = { exports: {} };
|
|
|
18429
18477
|
Rule: E
|
|
18430
18478
|
};
|
|
18431
18479
|
});
|
|
18432
|
-
})(
|
|
18433
|
-
var vI =
|
|
18480
|
+
})(cR);
|
|
18481
|
+
var vI = cR.exports;
|
|
18434
18482
|
const QI = /* @__PURE__ */ xI(vI);
|
|
18435
18483
|
function ZI(T) {
|
|
18436
18484
|
return T.map(qI).map(jI).map(kI).map(zI).map(EO);
|
|
18437
18485
|
}
|
|
18438
18486
|
const qI = (T, E, R) => {
|
|
18439
|
-
if (
|
|
18487
|
+
if (oR(T.type)) {
|
|
18440
18488
|
const A = TO(R, E);
|
|
18441
18489
|
if (A && A.type === D.PROPERTY_ACCESS_OPERATOR)
|
|
18442
18490
|
return Object.assign(Object.assign({}, T), { type: D.IDENTIFIER, text: T.raw });
|
|
18443
|
-
const S =
|
|
18491
|
+
const S = AE(R, E);
|
|
18444
18492
|
if (S && S.type === D.PROPERTY_ACCESS_OPERATOR)
|
|
18445
18493
|
return Object.assign(Object.assign({}, T), { type: D.IDENTIFIER, text: T.raw });
|
|
18446
18494
|
}
|
|
18447
18495
|
return T;
|
|
18448
18496
|
}, jI = (T, E, R) => {
|
|
18449
18497
|
if (T.type === D.RESERVED_FUNCTION_NAME) {
|
|
18450
|
-
const A =
|
|
18451
|
-
if (!A || !
|
|
18498
|
+
const A = AE(R, E);
|
|
18499
|
+
if (!A || !uR(A))
|
|
18452
18500
|
return Object.assign(Object.assign({}, T), { type: D.IDENTIFIER, text: T.raw });
|
|
18453
18501
|
}
|
|
18454
18502
|
return T;
|
|
18455
18503
|
}, kI = (T, E, R) => {
|
|
18456
18504
|
if (T.type === D.RESERVED_DATA_TYPE) {
|
|
18457
|
-
const A =
|
|
18458
|
-
if (A &&
|
|
18505
|
+
const A = AE(R, E);
|
|
18506
|
+
if (A && uR(A))
|
|
18459
18507
|
return Object.assign(Object.assign({}, T), { type: D.RESERVED_PARAMETERIZED_DATA_TYPE });
|
|
18460
18508
|
}
|
|
18461
18509
|
return T;
|
|
18462
18510
|
}, zI = (T, E, R) => {
|
|
18463
18511
|
if (T.type === D.IDENTIFIER) {
|
|
18464
|
-
const A =
|
|
18465
|
-
if (A &&
|
|
18512
|
+
const A = AE(R, E);
|
|
18513
|
+
if (A && HR(A))
|
|
18466
18514
|
return Object.assign(Object.assign({}, T), { type: D.ARRAY_IDENTIFIER });
|
|
18467
18515
|
}
|
|
18468
18516
|
return T;
|
|
18469
18517
|
}, EO = (T, E, R) => {
|
|
18470
18518
|
if (T.type === D.RESERVED_DATA_TYPE) {
|
|
18471
|
-
const A =
|
|
18472
|
-
if (A &&
|
|
18519
|
+
const A = AE(R, E);
|
|
18520
|
+
if (A && HR(A))
|
|
18473
18521
|
return Object.assign(Object.assign({}, T), { type: D.ARRAY_KEYWORD });
|
|
18474
18522
|
}
|
|
18475
18523
|
return T;
|
|
18476
|
-
}, TO = (T, E) =>
|
|
18524
|
+
}, TO = (T, E) => AE(T, E, -1), AE = (T, E, R = 1) => {
|
|
18477
18525
|
let A = 1;
|
|
18478
18526
|
for (; T[E + A * R] && RO(T[E + A * R]); )
|
|
18479
18527
|
A++;
|
|
18480
18528
|
return T[E + A * R];
|
|
18481
|
-
},
|
|
18482
|
-
class
|
|
18529
|
+
}, uR = (T) => T.type === D.OPEN_PAREN && T.text === "(", HR = (T) => T.type === D.OPEN_PAREN && T.text === "[", RO = (T) => T.type === D.BLOCK_COMMENT || T.type === D.LINE_COMMENT;
|
|
18530
|
+
class BR {
|
|
18483
18531
|
constructor(E) {
|
|
18484
18532
|
this.tokenize = E, this.index = 0, this.tokens = [], this.input = "";
|
|
18485
18533
|
}
|
|
@@ -18492,7 +18540,7 @@ class GR {
|
|
|
18492
18540
|
save() {
|
|
18493
18541
|
}
|
|
18494
18542
|
formatError(E) {
|
|
18495
|
-
const { line: R, col: A } =
|
|
18543
|
+
const { line: R, col: A } = lR(this.input, E.start);
|
|
18496
18544
|
return `Parse error at token: ${E.text} at line ${R} column ${A}`;
|
|
18497
18545
|
}
|
|
18498
18546
|
has(E) {
|
|
@@ -18503,15 +18551,15 @@ var U;
|
|
|
18503
18551
|
(function(T) {
|
|
18504
18552
|
T.statement = "statement", T.clause = "clause", T.set_operation = "set_operation", T.function_call = "function_call", T.parameterized_data_type = "parameterized_data_type", T.array_subscript = "array_subscript", T.property_access = "property_access", T.parenthesis = "parenthesis", T.between_predicate = "between_predicate", T.case_expression = "case_expression", T.case_when = "case_when", T.case_else = "case_else", T.limit_clause = "limit_clause", T.all_columns_asterisk = "all_columns_asterisk", T.literal = "literal", T.identifier = "identifier", T.keyword = "keyword", T.data_type = "data_type", T.parameter = "parameter", T.operator = "operator", T.comma = "comma", T.line_comment = "line_comment", T.block_comment = "block_comment", T.disable_comment = "disable_comment";
|
|
18505
18553
|
})(U = U || (U = {}));
|
|
18506
|
-
function
|
|
18554
|
+
function QE(T) {
|
|
18507
18555
|
return T[0];
|
|
18508
18556
|
}
|
|
18509
|
-
const c = new
|
|
18557
|
+
const c = new BR((T) => []), w = ([[T]]) => T, d = (T) => ({
|
|
18510
18558
|
type: U.keyword,
|
|
18511
18559
|
tokenType: T.type,
|
|
18512
18560
|
text: T.text,
|
|
18513
18561
|
raw: T.raw
|
|
18514
|
-
}),
|
|
18562
|
+
}), JT = (T) => ({
|
|
18515
18563
|
type: U.data_type,
|
|
18516
18564
|
text: T.text,
|
|
18517
18565
|
raw: T.raw
|
|
@@ -18566,7 +18614,7 @@ const c = new GR((T) => []), w = ([[T]]) => T, d = (T) => ({
|
|
|
18566
18614
|
{ name: "limit_clause$ebnf$1$subexpression$1$ebnf$1", symbols: ["free_form_sql"] },
|
|
18567
18615
|
{ name: "limit_clause$ebnf$1$subexpression$1$ebnf$1", symbols: ["limit_clause$ebnf$1$subexpression$1$ebnf$1", "free_form_sql"], postprocess: (T) => T[0].concat([T[1]]) },
|
|
18568
18616
|
{ name: "limit_clause$ebnf$1$subexpression$1", symbols: [c.has("COMMA") ? { type: "COMMA" } : COMMA, "limit_clause$ebnf$1$subexpression$1$ebnf$1"] },
|
|
18569
|
-
{ name: "limit_clause$ebnf$1", symbols: ["limit_clause$ebnf$1$subexpression$1"], postprocess:
|
|
18617
|
+
{ name: "limit_clause$ebnf$1", symbols: ["limit_clause$ebnf$1$subexpression$1"], postprocess: QE },
|
|
18570
18618
|
{ name: "limit_clause$ebnf$1", symbols: [], postprocess: () => null },
|
|
18571
18619
|
{
|
|
18572
18620
|
name: "limit_clause",
|
|
@@ -18641,7 +18689,7 @@ const c = new GR((T) => []), w = ([[T]]) => T, d = (T) => ({
|
|
|
18641
18689
|
},
|
|
18642
18690
|
{ name: "expression_chain_$ebnf$1", symbols: ["expression_with_comments_"] },
|
|
18643
18691
|
{ name: "expression_chain_$ebnf$1", symbols: ["expression_chain_$ebnf$1", "expression_with_comments_"], postprocess: (T) => T[0].concat([T[1]]) },
|
|
18644
|
-
{ name: "expression_chain_", symbols: ["expression_chain_$ebnf$1"], postprocess:
|
|
18692
|
+
{ name: "expression_chain_", symbols: ["expression_chain_$ebnf$1"], postprocess: QE },
|
|
18645
18693
|
{ name: "expression_chain$ebnf$1", symbols: [] },
|
|
18646
18694
|
{ name: "expression_chain$ebnf$1", symbols: ["expression_chain$ebnf$1", "_expression_with_comments"], postprocess: (T) => T[0].concat([T[1]]) },
|
|
18647
18695
|
{
|
|
@@ -18795,7 +18843,7 @@ const c = new GR((T) => []), w = ([[T]]) => T, d = (T) => ({
|
|
|
18795
18843
|
expr2: [f(N, { leading: e })]
|
|
18796
18844
|
})
|
|
18797
18845
|
},
|
|
18798
|
-
{ name: "case_expression$ebnf$1", symbols: ["expression_chain_"], postprocess:
|
|
18846
|
+
{ name: "case_expression$ebnf$1", symbols: ["expression_chain_"], postprocess: QE },
|
|
18799
18847
|
{ name: "case_expression$ebnf$1", symbols: [], postprocess: () => null },
|
|
18800
18848
|
{ name: "case_expression$ebnf$2", symbols: [] },
|
|
18801
18849
|
{ name: "case_expression$ebnf$2", symbols: ["case_expression$ebnf$2", "case_clause"], postprocess: (T) => T[0].concat([T[1]]) },
|
|
@@ -18861,14 +18909,14 @@ const c = new GR((T) => []), w = ([[T]]) => T, d = (T) => ({
|
|
|
18861
18909
|
{
|
|
18862
18910
|
name: "data_type",
|
|
18863
18911
|
symbols: ["data_type$subexpression$1"],
|
|
18864
|
-
postprocess: ([[T]]) =>
|
|
18912
|
+
postprocess: ([[T]]) => JT(T)
|
|
18865
18913
|
},
|
|
18866
18914
|
{
|
|
18867
18915
|
name: "data_type",
|
|
18868
18916
|
symbols: [c.has("RESERVED_PARAMETERIZED_DATA_TYPE") ? { type: "RESERVED_PARAMETERIZED_DATA_TYPE" } : RESERVED_PARAMETERIZED_DATA_TYPE, "_", "parenthesis"],
|
|
18869
18917
|
postprocess: ([T, E, R]) => ({
|
|
18870
18918
|
type: U.parameterized_data_type,
|
|
18871
|
-
dataType: f(
|
|
18919
|
+
dataType: f(JT(T), { trailing: E }),
|
|
18872
18920
|
parenthesis: R
|
|
18873
18921
|
})
|
|
18874
18922
|
},
|
|
@@ -18924,9 +18972,9 @@ const c = new GR((T) => []), w = ([[T]]) => T, d = (T) => ({
|
|
|
18924
18972
|
}, { Parser: eO, Grammar: IO } = QI;
|
|
18925
18973
|
function OO(T) {
|
|
18926
18974
|
let E = {};
|
|
18927
|
-
const R = new
|
|
18975
|
+
const R = new BR((S) => [
|
|
18928
18976
|
...ZI(T.tokenize(S, E)),
|
|
18929
|
-
|
|
18977
|
+
aR(S.length)
|
|
18930
18978
|
]), A = new eO(IO.fromCompiled(SO), { lexer: R });
|
|
18931
18979
|
return {
|
|
18932
18980
|
parse: (S, e) => {
|
|
@@ -18943,7 +18991,7 @@ var n;
|
|
|
18943
18991
|
(function(T) {
|
|
18944
18992
|
T[T.SPACE = 0] = "SPACE", T[T.NO_SPACE = 1] = "NO_SPACE", T[T.NO_NEWLINE = 2] = "NO_NEWLINE", T[T.NEWLINE = 3] = "NEWLINE", T[T.MANDATORY_NEWLINE = 4] = "MANDATORY_NEWLINE", T[T.INDENT = 5] = "INDENT", T[T.SINGLE_INDENT = 6] = "SINGLE_INDENT";
|
|
18945
18993
|
})(n = n || (n = {}));
|
|
18946
|
-
class
|
|
18994
|
+
class mR {
|
|
18947
18995
|
constructor(E) {
|
|
18948
18996
|
this.indentation = E, this.items = [];
|
|
18949
18997
|
}
|
|
@@ -19031,17 +19079,17 @@ class lR {
|
|
|
19031
19079
|
}
|
|
19032
19080
|
}
|
|
19033
19081
|
const NO = (T) => T === n.SPACE || T === n.SINGLE_INDENT, tO = (T) => T === n.SPACE || T === n.SINGLE_INDENT || T === n.NEWLINE;
|
|
19034
|
-
function
|
|
19082
|
+
function wT(T, E) {
|
|
19035
19083
|
if (E === "standard")
|
|
19036
19084
|
return T;
|
|
19037
19085
|
let R = [];
|
|
19038
19086
|
return T.length >= 10 && T.includes(" ") && ([T, ...R] = T.split(" ")), E === "tabularLeft" ? T = T.padEnd(9, " ") : T = T.padStart(9, " "), T + ["", ...R].join(" ");
|
|
19039
19087
|
}
|
|
19040
|
-
function
|
|
19088
|
+
function xT(T) {
|
|
19041
19089
|
return sA(T) || T === D.RESERVED_CLAUSE || T === D.RESERVED_SELECT || T === D.RESERVED_SET_OPERATION || T === D.RESERVED_JOIN || T === D.LIMIT;
|
|
19042
19090
|
}
|
|
19043
|
-
const
|
|
19044
|
-
class
|
|
19091
|
+
const ZE = "top-level", sO = "block-level";
|
|
19092
|
+
class FR {
|
|
19045
19093
|
/**
|
|
19046
19094
|
* @param {string} indent A string to indent with
|
|
19047
19095
|
*/
|
|
@@ -19064,7 +19112,7 @@ class cR {
|
|
|
19064
19112
|
* Increases indentation by one top-level indent.
|
|
19065
19113
|
*/
|
|
19066
19114
|
increaseTopLevel() {
|
|
19067
|
-
this.indentTypes.push(
|
|
19115
|
+
this.indentTypes.push(ZE);
|
|
19068
19116
|
}
|
|
19069
19117
|
/**
|
|
19070
19118
|
* Increases indentation by one block-level indent.
|
|
@@ -19077,7 +19125,7 @@ class cR {
|
|
|
19077
19125
|
* Does nothing when the previous indent is not top-level.
|
|
19078
19126
|
*/
|
|
19079
19127
|
decreaseTopLevel() {
|
|
19080
|
-
this.indentTypes.length > 0 && eE(this.indentTypes) ===
|
|
19128
|
+
this.indentTypes.length > 0 && eE(this.indentTypes) === ZE && this.indentTypes.pop();
|
|
19081
19129
|
}
|
|
19082
19130
|
/**
|
|
19083
19131
|
* Decreases indentation by one block-level indent.
|
|
@@ -19085,17 +19133,17 @@ class cR {
|
|
|
19085
19133
|
* throws away these as well.
|
|
19086
19134
|
*/
|
|
19087
19135
|
decreaseBlockLevel() {
|
|
19088
|
-
for (; this.indentTypes.length > 0 && this.indentTypes.pop() ===
|
|
19136
|
+
for (; this.indentTypes.length > 0 && this.indentTypes.pop() === ZE; )
|
|
19089
19137
|
;
|
|
19090
19138
|
}
|
|
19091
19139
|
}
|
|
19092
|
-
class CO extends
|
|
19140
|
+
class CO extends mR {
|
|
19093
19141
|
constructor(E) {
|
|
19094
|
-
super(new
|
|
19142
|
+
super(new FR("")), this.expressionWidth = E, this.length = 0, this.trailingSpace = !1;
|
|
19095
19143
|
}
|
|
19096
19144
|
add(...E) {
|
|
19097
19145
|
if (E.forEach((R) => this.addToLength(R)), this.length > this.expressionWidth)
|
|
19098
|
-
throw new
|
|
19146
|
+
throw new kE();
|
|
19099
19147
|
super.add(...E);
|
|
19100
19148
|
}
|
|
19101
19149
|
addToLength(E) {
|
|
@@ -19103,14 +19151,14 @@ class CO extends lR {
|
|
|
19103
19151
|
this.length += E.length, this.trailingSpace = !1;
|
|
19104
19152
|
else {
|
|
19105
19153
|
if (E === n.MANDATORY_NEWLINE || E === n.NEWLINE)
|
|
19106
|
-
throw new
|
|
19154
|
+
throw new kE();
|
|
19107
19155
|
E === n.INDENT || E === n.SINGLE_INDENT || E === n.SPACE ? this.trailingSpace || (this.length++, this.trailingSpace = !0) : (E === n.NO_NEWLINE || E === n.NO_SPACE) && this.trailingSpace && (this.trailingSpace = !1, this.length--);
|
|
19108
19156
|
}
|
|
19109
19157
|
}
|
|
19110
19158
|
}
|
|
19111
|
-
class
|
|
19159
|
+
class kE extends Error {
|
|
19112
19160
|
}
|
|
19113
|
-
class
|
|
19161
|
+
class rE {
|
|
19114
19162
|
constructor({ cfg: E, dialectCfg: R, params: A, layout: S, inline: e = !1 }) {
|
|
19115
19163
|
this.inline = !1, this.nodes = [], this.index = -1, this.cfg = E, this.dialectCfg = R, this.inline = e, this.params = A, this.layout = S;
|
|
19116
19164
|
}
|
|
@@ -19204,7 +19252,7 @@ class _E {
|
|
|
19204
19252
|
}
|
|
19205
19253
|
formatParenthesis(E) {
|
|
19206
19254
|
const R = this.formatInlineExpression(E.children);
|
|
19207
|
-
R ? (this.layout.add(E.openParen), this.layout.add(...R.getLayoutItems()), this.layout.add(n.NO_SPACE, E.closeParen, n.SPACE)) : (this.layout.add(E.openParen, n.NEWLINE),
|
|
19255
|
+
R ? (this.layout.add(E.openParen), this.layout.add(...R.getLayoutItems()), this.layout.add(n.NO_SPACE, E.closeParen, n.SPACE)) : (this.layout.add(E.openParen, n.NEWLINE), EE(this.cfg) ? (this.layout.add(n.INDENT), this.layout = this.formatSubExpression(E.children)) : (this.layout.indentation.increaseBlockLevel(), this.layout.add(n.INDENT), this.layout = this.formatSubExpression(E.children), this.layout.indentation.decreaseBlockLevel()), this.layout.add(n.NEWLINE, n.INDENT, E.closeParen, n.SPACE));
|
|
19208
19256
|
}
|
|
19209
19257
|
formatBetweenPredicate(E) {
|
|
19210
19258
|
this.layout.add(this.showKw(E.betweenKw), n.SPACE), this.layout = this.formatSubExpression(E.expr1), this.layout.add(n.NO_SPACE, n.SPACE, this.showNonTabularKw(E.andKw), n.SPACE), this.layout = this.formatSubExpression(E.expr2), this.layout.add(n.SPACE);
|
|
@@ -19219,10 +19267,10 @@ class _E {
|
|
|
19219
19267
|
this.layout.add(n.NEWLINE, n.INDENT), this.formatNode(E.elseKw), this.layout = this.formatSubExpression(E.result);
|
|
19220
19268
|
}
|
|
19221
19269
|
formatClause(E) {
|
|
19222
|
-
this.isOnelineClause(E) ? this.formatClauseInOnelineStyle(E) :
|
|
19270
|
+
this.isOnelineClause(E) ? this.formatClauseInOnelineStyle(E) : EE(this.cfg) ? this.formatClauseInTabularStyle(E) : this.formatClauseInIndentedStyle(E);
|
|
19223
19271
|
}
|
|
19224
19272
|
isOnelineClause(E) {
|
|
19225
|
-
return
|
|
19273
|
+
return EE(this.cfg) ? this.dialectCfg.tabularOnelineClauses[E.nameKw.text] : this.dialectCfg.onelineClauses[E.nameKw.text];
|
|
19226
19274
|
}
|
|
19227
19275
|
formatClauseInIndentedStyle(E) {
|
|
19228
19276
|
this.layout.add(n.NEWLINE, n.INDENT, this.showKw(E.nameKw), n.NEWLINE), this.layout.indentation.increaseTopLevel(), this.layout.add(n.INDENT), this.layout = this.formatSubExpression(E.children), this.layout.indentation.decreaseTopLevel();
|
|
@@ -19239,7 +19287,7 @@ class _E {
|
|
|
19239
19287
|
formatLimitClause(E) {
|
|
19240
19288
|
this.withComments(E.limitKw, () => {
|
|
19241
19289
|
this.layout.add(n.NEWLINE, n.INDENT, this.showKw(E.limitKw));
|
|
19242
|
-
}), this.layout.indentation.increaseTopLevel(),
|
|
19290
|
+
}), this.layout.indentation.increaseTopLevel(), EE(this.cfg) ? this.layout.add(n.SPACE) : this.layout.add(n.NEWLINE, n.INDENT), E.offset ? (this.layout = this.formatSubExpression(E.offset), this.layout.add(n.NO_SPACE, ",", n.SPACE), this.layout = this.formatSubExpression(E.count)) : this.layout = this.formatSubExpression(E.count), this.layout.indentation.decreaseTopLevel();
|
|
19243
19291
|
}
|
|
19244
19292
|
formatAllColumnsAsterisk(E) {
|
|
19245
19293
|
this.layout.add("*", n.SPACE);
|
|
@@ -19268,7 +19316,7 @@ class _E {
|
|
|
19268
19316
|
});
|
|
19269
19317
|
}
|
|
19270
19318
|
formatLineComment(E) {
|
|
19271
|
-
|
|
19319
|
+
xE(E.precedingWhitespace || "") ? this.layout.add(n.NEWLINE, n.INDENT, E.text, n.MANDATORY_NEWLINE, n.INDENT) : this.layout.getLayoutItems().length > 0 ? this.layout.add(n.NO_NEWLINE, n.SPACE, E.text, n.MANDATORY_NEWLINE, n.INDENT) : this.layout.add(E.text, n.MANDATORY_NEWLINE, n.INDENT);
|
|
19272
19320
|
}
|
|
19273
19321
|
formatBlockComment(E) {
|
|
19274
19322
|
E.type === U.block_comment && this.isMultilineBlockComment(E) ? (this.splitBlockComment(E.text).forEach((R) => {
|
|
@@ -19276,7 +19324,7 @@ class _E {
|
|
|
19276
19324
|
}), this.layout.add(n.NEWLINE, n.INDENT)) : this.layout.add(E.text, n.SPACE);
|
|
19277
19325
|
}
|
|
19278
19326
|
isMultilineBlockComment(E) {
|
|
19279
|
-
return
|
|
19327
|
+
return xE(E.text) || xE(E.precedingWhitespace || "");
|
|
19280
19328
|
}
|
|
19281
19329
|
isDocComment(E) {
|
|
19282
19330
|
const R = E.split(/\n/);
|
|
@@ -19318,7 +19366,7 @@ class _E {
|
|
|
19318
19366
|
return this.isDocComment(E) ? E.split(/\n/).map((R) => /^\s*\*/.test(R) ? " " + R.replace(/^\s*/, "") : R) : E.split(/\n/).map((R) => R.replace(/^\s*/, ""));
|
|
19319
19367
|
}
|
|
19320
19368
|
formatSubExpression(E) {
|
|
19321
|
-
return new
|
|
19369
|
+
return new rE({
|
|
19322
19370
|
cfg: this.cfg,
|
|
19323
19371
|
dialectCfg: this.dialectCfg,
|
|
19324
19372
|
params: this.params,
|
|
@@ -19329,7 +19377,7 @@ class _E {
|
|
|
19329
19377
|
formatInlineExpression(E) {
|
|
19330
19378
|
const R = this.params.getPositionalParameterIndex();
|
|
19331
19379
|
try {
|
|
19332
|
-
return new
|
|
19380
|
+
return new rE({
|
|
19333
19381
|
cfg: this.cfg,
|
|
19334
19382
|
dialectCfg: this.dialectCfg,
|
|
19335
19383
|
params: this.params,
|
|
@@ -19337,7 +19385,7 @@ class _E {
|
|
|
19337
19385
|
inline: !0
|
|
19338
19386
|
}).format(E);
|
|
19339
19387
|
} catch (A) {
|
|
19340
|
-
if (A instanceof
|
|
19388
|
+
if (A instanceof kE) {
|
|
19341
19389
|
this.params.setPositionalParameterIndex(R);
|
|
19342
19390
|
return;
|
|
19343
19391
|
} else
|
|
@@ -19357,19 +19405,19 @@ class _E {
|
|
|
19357
19405
|
}
|
|
19358
19406
|
}
|
|
19359
19407
|
formatJoin(E) {
|
|
19360
|
-
|
|
19408
|
+
EE(this.cfg) ? (this.layout.indentation.decreaseTopLevel(), this.layout.add(n.NEWLINE, n.INDENT, this.showKw(E), n.SPACE), this.layout.indentation.increaseTopLevel()) : this.layout.add(n.NEWLINE, n.INDENT, this.showKw(E), n.SPACE);
|
|
19361
19409
|
}
|
|
19362
19410
|
formatKeyword(E) {
|
|
19363
19411
|
this.layout.add(this.showKw(E), n.SPACE);
|
|
19364
19412
|
}
|
|
19365
19413
|
formatLogicalOperator(E) {
|
|
19366
|
-
this.cfg.logicalOperatorNewline === "before" ?
|
|
19414
|
+
this.cfg.logicalOperatorNewline === "before" ? EE(this.cfg) ? (this.layout.indentation.decreaseTopLevel(), this.layout.add(n.NEWLINE, n.INDENT, this.showKw(E), n.SPACE), this.layout.indentation.increaseTopLevel()) : this.layout.add(n.NEWLINE, n.INDENT, this.showKw(E), n.SPACE) : this.layout.add(this.showKw(E), n.NEWLINE, n.INDENT);
|
|
19367
19415
|
}
|
|
19368
19416
|
formatDataType(E) {
|
|
19369
19417
|
this.layout.add(this.showDataType(E), n.SPACE);
|
|
19370
19418
|
}
|
|
19371
19419
|
showKw(E) {
|
|
19372
|
-
return
|
|
19420
|
+
return xT(E.tokenType) ? wT(this.showNonTabularKw(E), this.cfg.indentStyle) : this.showNonTabularKw(E);
|
|
19373
19421
|
}
|
|
19374
19422
|
// Like showKw(), but skips tabular formatting
|
|
19375
19423
|
showNonTabularKw(E) {
|
|
@@ -19383,7 +19431,7 @@ class _E {
|
|
|
19383
19431
|
}
|
|
19384
19432
|
}
|
|
19385
19433
|
showFunctionKw(E) {
|
|
19386
|
-
return
|
|
19434
|
+
return xT(E.tokenType) ? wT(this.showNonTabularFunctionKw(E), this.cfg.indentStyle) : this.showNonTabularFunctionKw(E);
|
|
19387
19435
|
}
|
|
19388
19436
|
// Like showFunctionKw(), but skips tabular formatting
|
|
19389
19437
|
showNonTabularFunctionKw(E) {
|
|
@@ -19440,11 +19488,11 @@ class LO {
|
|
|
19440
19488
|
`.repeat(this.cfg.linesBetweenQueries + 1));
|
|
19441
19489
|
}
|
|
19442
19490
|
formatStatement(E) {
|
|
19443
|
-
const R = new
|
|
19491
|
+
const R = new rE({
|
|
19444
19492
|
cfg: this.cfg,
|
|
19445
19493
|
dialectCfg: this.dialect.formatOptions,
|
|
19446
19494
|
params: this.params,
|
|
19447
|
-
layout: new
|
|
19495
|
+
layout: new mR(new FR(gI(this.cfg)))
|
|
19448
19496
|
}).format(E.children);
|
|
19449
19497
|
return E.hasSemicolon && (this.cfg.newlineBeforeSemicolon ? R.add(n.NEWLINE, ";") : R.add(n.NO_NEWLINE, ";")), R.toString();
|
|
19450
19498
|
}
|
|
@@ -19483,7 +19531,7 @@ var iO = function(T, E) {
|
|
|
19483
19531
|
E.indexOf(A[S]) < 0 && Object.prototype.propertyIsEnumerable.call(T, A[S]) && (R[A[S]] = T[A[S]]);
|
|
19484
19532
|
return R;
|
|
19485
19533
|
};
|
|
19486
|
-
const
|
|
19534
|
+
const YR = {
|
|
19487
19535
|
bigquery: "bigquery",
|
|
19488
19536
|
db2: "db2",
|
|
19489
19537
|
db2i: "db2i",
|
|
@@ -19504,7 +19552,7 @@ const uR = {
|
|
|
19504
19552
|
tsql: "transactsql",
|
|
19505
19553
|
singlestoredb: "singlestoredb",
|
|
19506
19554
|
snowflake: "snowflake"
|
|
19507
|
-
}, DO = Object.keys(
|
|
19555
|
+
}, DO = Object.keys(YR), aO = {
|
|
19508
19556
|
tabWidth: 2,
|
|
19509
19557
|
useTabs: !1,
|
|
19510
19558
|
keywordCase: "preserve",
|
|
@@ -19517,12 +19565,12 @@ const uR = {
|
|
|
19517
19565
|
linesBetweenQueries: 1,
|
|
19518
19566
|
denseOperators: !1,
|
|
19519
19567
|
newlineBeforeSemicolon: !1
|
|
19520
|
-
},
|
|
19568
|
+
}, oO = (T, E = {}) => {
|
|
19521
19569
|
if (typeof E.language == "string" && !DO.includes(E.language))
|
|
19522
19570
|
throw new sE(`Unsupported SQL dialect: ${E.language}`);
|
|
19523
|
-
const R =
|
|
19524
|
-
return
|
|
19525
|
-
},
|
|
19571
|
+
const R = YR[E.language || "sql"];
|
|
19572
|
+
return PO(T, Object.assign(Object.assign({}, E), { dialect: uI[R] }));
|
|
19573
|
+
}, PO = (T, E) => {
|
|
19526
19574
|
var { dialect: R } = E, A = iO(E, ["dialect"]);
|
|
19527
19575
|
if (typeof T != "string")
|
|
19528
19576
|
throw new Error("Invalid query argument. Expected string, instead got " + typeof T);
|
|
@@ -19601,12 +19649,12 @@ async function HO(T, E, R) {
|
|
|
19601
19649
|
N = await R.generateSQL(t, T, E);
|
|
19602
19650
|
}
|
|
19603
19651
|
const s = Array.from(S).map((t) => {
|
|
19604
|
-
var i,
|
|
19652
|
+
var i, P;
|
|
19605
19653
|
return {
|
|
19606
19654
|
cube: t,
|
|
19607
19655
|
query: {
|
|
19608
19656
|
measures: ((i = T.measures) == null ? void 0 : i.filter((M) => M.startsWith(t + "."))) || [],
|
|
19609
|
-
dimensions: ((
|
|
19657
|
+
dimensions: ((P = T.dimensions) == null ? void 0 : P.filter((M) => M.startsWith(t + "."))) || [],
|
|
19610
19658
|
filters: T.filters || [],
|
|
19611
19659
|
timeDimensions: T.timeDimensions || [],
|
|
19612
19660
|
order: T.order || {},
|
|
@@ -19660,9 +19708,9 @@ function BO(T, E, R) {
|
|
|
19660
19708
|
slowQuery: !1
|
|
19661
19709
|
};
|
|
19662
19710
|
}
|
|
19663
|
-
function
|
|
19711
|
+
function vT(T, E) {
|
|
19664
19712
|
try {
|
|
19665
|
-
return
|
|
19713
|
+
return oO(T, {
|
|
19666
19714
|
language: {
|
|
19667
19715
|
postgres: "postgresql",
|
|
19668
19716
|
mysql: "mysql",
|
|
@@ -19702,7 +19750,7 @@ class cO {
|
|
|
19702
19750
|
l(this, "metadataCache");
|
|
19703
19751
|
l(this, "metadataCacheTimestamp");
|
|
19704
19752
|
l(this, "METADATA_CACHE_TTL", 5 * 60 * 1e3);
|
|
19705
|
-
E != null && E.databaseExecutor ? this.dbExecutor = E.databaseExecutor : E != null && E.drizzle && (this.dbExecutor =
|
|
19753
|
+
E != null && E.databaseExecutor ? this.dbExecutor = E.databaseExecutor : E != null && E.drizzle && (this.dbExecutor = nT(
|
|
19706
19754
|
E.drizzle,
|
|
19707
19755
|
E.schema,
|
|
19708
19756
|
E.engineType
|
|
@@ -19725,7 +19773,7 @@ class cO {
|
|
|
19725
19773
|
* Set Drizzle instance and schema directly
|
|
19726
19774
|
*/
|
|
19727
19775
|
setDrizzle(E, R, A) {
|
|
19728
|
-
this.dbExecutor =
|
|
19776
|
+
this.dbExecutor = nT(E, R, A);
|
|
19729
19777
|
}
|
|
19730
19778
|
/**
|
|
19731
19779
|
* Check if database executor is configured
|
|
@@ -19763,7 +19811,7 @@ class cO {
|
|
|
19763
19811
|
async execute(E, R) {
|
|
19764
19812
|
if (!this.dbExecutor)
|
|
19765
19813
|
throw new Error("Database executor not configured");
|
|
19766
|
-
return new
|
|
19814
|
+
return new HE(this.dbExecutor).execute(this.cubes, E, R);
|
|
19767
19815
|
}
|
|
19768
19816
|
/**
|
|
19769
19817
|
* Execute a multi-cube query
|
|
@@ -19839,9 +19887,9 @@ class cO {
|
|
|
19839
19887
|
throw new Error(`Cube '${E}' not found`);
|
|
19840
19888
|
if (!this.dbExecutor)
|
|
19841
19889
|
throw new Error("Database executor not configured");
|
|
19842
|
-
const N = await new
|
|
19890
|
+
const N = await new HE(this.dbExecutor).generateSQL(S, R, A), s = this.dbExecutor.getEngineType();
|
|
19843
19891
|
return {
|
|
19844
|
-
sql:
|
|
19892
|
+
sql: vT(N.sql, s),
|
|
19845
19893
|
params: N.params
|
|
19846
19894
|
};
|
|
19847
19895
|
}
|
|
@@ -19851,9 +19899,9 @@ class cO {
|
|
|
19851
19899
|
async generateMultiCubeSQL(E, R) {
|
|
19852
19900
|
if (!this.dbExecutor)
|
|
19853
19901
|
throw new Error("Database executor not configured");
|
|
19854
|
-
const S = await new
|
|
19902
|
+
const S = await new HE(this.dbExecutor).generateMultiCubeSQL(this.cubes, E, R), e = this.dbExecutor.getEngineType();
|
|
19855
19903
|
return {
|
|
19856
|
-
sql:
|
|
19904
|
+
sql: vT(S.sql, e),
|
|
19857
19905
|
params: S.params
|
|
19858
19906
|
};
|
|
19859
19907
|
}
|
|
@@ -19894,10 +19942,10 @@ class cO {
|
|
|
19894
19942
|
* Ensures all referenced cubes and fields exist
|
|
19895
19943
|
*/
|
|
19896
19944
|
validateQuery(E) {
|
|
19897
|
-
return
|
|
19945
|
+
return pR(this.cubes, E);
|
|
19898
19946
|
}
|
|
19899
19947
|
}
|
|
19900
|
-
function
|
|
19948
|
+
function pR(T, E) {
|
|
19901
19949
|
const R = [], A = /* @__PURE__ */ new Set();
|
|
19902
19950
|
if (E.measures)
|
|
19903
19951
|
for (const S of E.measures) {
|
|
@@ -19946,17 +19994,17 @@ function HR(T, E) {
|
|
|
19946
19994
|
}
|
|
19947
19995
|
if (E.filters)
|
|
19948
19996
|
for (const S of E.filters)
|
|
19949
|
-
|
|
19997
|
+
dR(S, T, R, A);
|
|
19950
19998
|
return A.size === 0 && R.push("Query must reference at least one cube through measures, dimensions, or filters"), {
|
|
19951
19999
|
isValid: R.length === 0,
|
|
19952
20000
|
errors: R
|
|
19953
20001
|
};
|
|
19954
20002
|
}
|
|
19955
|
-
function
|
|
20003
|
+
function dR(T, E, R, A) {
|
|
19956
20004
|
if ("and" in T || "or" in T) {
|
|
19957
20005
|
const s = T.and || T.or || [];
|
|
19958
20006
|
for (const _ of s)
|
|
19959
|
-
|
|
20007
|
+
dR(_, E, R, A);
|
|
19960
20008
|
return;
|
|
19961
20009
|
}
|
|
19962
20010
|
if (!("member" in T)) {
|