@balena/abstract-sql-compiler 7.20.5 → 7.20.6
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/.versionbot/CHANGELOG.yml +15 -1
- package/CHANGELOG.md +4 -0
- package/package.json +2 -2
- package/test/abstract-sql/aggregate.ts +130 -19
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
- commits:
|
|
2
|
+
- subject: "CI: Add more abstract-sql unit tests"
|
|
3
|
+
hash: 58f6210f55806ad15fd5e9c90079f208e64b781d
|
|
4
|
+
body: ""
|
|
5
|
+
footer:
|
|
6
|
+
Change-type: patch
|
|
7
|
+
change-type: patch
|
|
8
|
+
Signed-off-by: Josh Bowling <josh@monarci.com>
|
|
9
|
+
signed-off-by: Josh Bowling <josh@monarci.com>
|
|
10
|
+
author: Josh Bowling
|
|
11
|
+
nested: []
|
|
12
|
+
version: 7.20.6
|
|
13
|
+
title: ""
|
|
14
|
+
date: 2022-11-16T08:37:14.277Z
|
|
1
15
|
- commits:
|
|
2
16
|
- subject: Fix Right SQL generation
|
|
3
17
|
hash: 8b6715c84ac7dab4c4248d19afa4b578c0d6c0ec
|
|
@@ -11,7 +25,7 @@
|
|
|
11
25
|
nested: []
|
|
12
26
|
version: 7.20.5
|
|
13
27
|
title: ""
|
|
14
|
-
date: 2022-11-16T07:
|
|
28
|
+
date: 2022-11-16T07:23:05.814Z
|
|
15
29
|
- commits:
|
|
16
30
|
- subject: "CI: Add several abstract-sql unit tests"
|
|
17
31
|
hash: e0319dd38e6851c5ed3f2b503ecf2ff93d67f0dd
|
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file
|
|
|
4
4
|
automatically by Versionist. DO NOT EDIT THIS FILE MANUALLY!
|
|
5
5
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
|
6
6
|
|
|
7
|
+
## 7.20.6 - 2022-11-16
|
|
8
|
+
|
|
9
|
+
* CI: Add more abstract-sql unit tests [Josh Bowling]
|
|
10
|
+
|
|
7
11
|
## 7.20.5 - 2022-11-16
|
|
8
12
|
|
|
9
13
|
* Fix Right SQL generation [Josh Bowling]
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@balena/abstract-sql-compiler",
|
|
3
|
-
"version": "7.20.
|
|
3
|
+
"version": "7.20.6",
|
|
4
4
|
"description": "A translator for abstract sql into sql.",
|
|
5
5
|
"main": "out/AbstractSQLCompiler.js",
|
|
6
6
|
"types": "out/AbstractSQLCompiler.d.ts",
|
|
@@ -63,6 +63,6 @@
|
|
|
63
63
|
]
|
|
64
64
|
},
|
|
65
65
|
"versionist": {
|
|
66
|
-
"publishedAt": "2022-11-
|
|
66
|
+
"publishedAt": "2022-11-16T08:37:14.574Z"
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -45,7 +45,7 @@ describe('Add', () => {
|
|
|
45
45
|
test(
|
|
46
46
|
['SelectQuery', ['Select', [['Add', ['Number', 5], ['Number', 3]]]]],
|
|
47
47
|
(result, sqlEquals) => {
|
|
48
|
-
it('should produce a valid
|
|
48
|
+
it('should produce a valid Add statement', () => {
|
|
49
49
|
sqlEquals(result.query, 'SELECT 5 + 3');
|
|
50
50
|
});
|
|
51
51
|
},
|
|
@@ -56,7 +56,7 @@ describe('Subtract', () => {
|
|
|
56
56
|
test(
|
|
57
57
|
['SelectQuery', ['Select', [['Subtract', ['Number', 5], ['Number', 3]]]]],
|
|
58
58
|
(result, sqlEquals) => {
|
|
59
|
-
it('should produce a valid
|
|
59
|
+
it('should produce a valid Subtract statement', () => {
|
|
60
60
|
sqlEquals(result.query, 'SELECT 5 - 3');
|
|
61
61
|
});
|
|
62
62
|
},
|
|
@@ -67,7 +67,7 @@ describe('Multiply', () => {
|
|
|
67
67
|
test(
|
|
68
68
|
['SelectQuery', ['Select', [['Multiply', ['Number', 5], ['Number', 3]]]]],
|
|
69
69
|
(result, sqlEquals) => {
|
|
70
|
-
it('should produce a valid
|
|
70
|
+
it('should produce a valid Multiply statement', () => {
|
|
71
71
|
sqlEquals(result.query, 'SELECT 5 * 3');
|
|
72
72
|
});
|
|
73
73
|
},
|
|
@@ -78,7 +78,7 @@ describe('Divide', () => {
|
|
|
78
78
|
test(
|
|
79
79
|
['SelectQuery', ['Select', [['Divide', ['Number', 10], ['Number', 5]]]]],
|
|
80
80
|
(result, sqlEquals) => {
|
|
81
|
-
it('should produce a valid
|
|
81
|
+
it('should produce a valid Divide statement', () => {
|
|
82
82
|
sqlEquals(result.query, 'SELECT 10 / 5');
|
|
83
83
|
});
|
|
84
84
|
},
|
|
@@ -90,7 +90,7 @@ describe('Year', () => {
|
|
|
90
90
|
['SelectQuery', ['Select', [['Year', ['Date', '2022-10-10']]]]],
|
|
91
91
|
[['Date', '2022-10-10']],
|
|
92
92
|
(result, sqlEquals) => {
|
|
93
|
-
it('should produce a valid
|
|
93
|
+
it('should produce a valid Year statement', () => {
|
|
94
94
|
sqlEquals(result.query, `SELECT EXTRACT('YEAR' FROM $1)`);
|
|
95
95
|
});
|
|
96
96
|
},
|
|
@@ -102,7 +102,7 @@ describe('Month', () => {
|
|
|
102
102
|
['SelectQuery', ['Select', [['Month', ['Date', '2022-10-10']]]]],
|
|
103
103
|
[['Date', '2022-10-10']],
|
|
104
104
|
(result, sqlEquals) => {
|
|
105
|
-
it('should produce a valid
|
|
105
|
+
it('should produce a valid Month statement', () => {
|
|
106
106
|
sqlEquals(result.query, `SELECT EXTRACT('MONTH' FROM $1)`);
|
|
107
107
|
});
|
|
108
108
|
},
|
|
@@ -114,7 +114,7 @@ describe('Day', () => {
|
|
|
114
114
|
['SelectQuery', ['Select', [['Day', ['Date', '2022-10-10']]]]],
|
|
115
115
|
[['Date', '2022-10-10']],
|
|
116
116
|
(result, sqlEquals) => {
|
|
117
|
-
it('should produce a valid
|
|
117
|
+
it('should produce a valid Day statement', () => {
|
|
118
118
|
sqlEquals(result.query, `SELECT EXTRACT('DAY' FROM $1)`);
|
|
119
119
|
});
|
|
120
120
|
},
|
|
@@ -129,7 +129,7 @@ describe('Hour', () => {
|
|
|
129
129
|
],
|
|
130
130
|
[['Date', '2022-10-10T10:10:10.000Z']],
|
|
131
131
|
(result, sqlEquals) => {
|
|
132
|
-
it('should produce a valid
|
|
132
|
+
it('should produce a valid Hour statement', () => {
|
|
133
133
|
sqlEquals(result.query, `SELECT EXTRACT('HOUR' FROM $1)`);
|
|
134
134
|
});
|
|
135
135
|
},
|
|
@@ -144,7 +144,7 @@ describe('Minute', () => {
|
|
|
144
144
|
],
|
|
145
145
|
[['Date', '2022-10-10T10:10:10.000Z']],
|
|
146
146
|
(result, sqlEquals) => {
|
|
147
|
-
it('should produce a valid
|
|
147
|
+
it('should produce a valid Minute statement', () => {
|
|
148
148
|
sqlEquals(result.query, `SELECT EXTRACT('MINUTE' FROM $1)`);
|
|
149
149
|
});
|
|
150
150
|
},
|
|
@@ -174,7 +174,7 @@ describe('Fractionalseconds', () => {
|
|
|
174
174
|
],
|
|
175
175
|
[['Date', '2022-10-10T10:10:10.000Z']],
|
|
176
176
|
(result, sqlEquals) => {
|
|
177
|
-
it('should produce a valid extract
|
|
177
|
+
it('should produce a valid extract Fractionalseconds statement', () => {
|
|
178
178
|
sqlEquals(
|
|
179
179
|
result.query,
|
|
180
180
|
`SELECT EXTRACT('SECOND' FROM $1) - FLOOR(EXTRACT('SECOND' FROM $1))`,
|
|
@@ -204,7 +204,7 @@ describe('Totalseconds', () => {
|
|
|
204
204
|
],
|
|
205
205
|
],
|
|
206
206
|
(result, sqlEquals) => {
|
|
207
|
-
it('should produce a valid
|
|
207
|
+
it('should produce a valid Totalseconds statement', () => {
|
|
208
208
|
sqlEquals(
|
|
209
209
|
result.query,
|
|
210
210
|
`SELECT EXTRACT(EPOCH FROM INTERVAL '1 0:0:0.0')`,
|
|
@@ -224,7 +224,7 @@ describe('Concatenate', () => {
|
|
|
224
224
|
],
|
|
225
225
|
],
|
|
226
226
|
(result, sqlEquals) => {
|
|
227
|
-
it('should produce a valid
|
|
227
|
+
it('should produce a valid Concatenate statement', () => {
|
|
228
228
|
sqlEquals(result.query, `SELECT ('foo' || 'bar')`);
|
|
229
229
|
});
|
|
230
230
|
},
|
|
@@ -248,7 +248,7 @@ describe('ConcatenateWithSeparator', () => {
|
|
|
248
248
|
],
|
|
249
249
|
],
|
|
250
250
|
(result, sqlEquals) => {
|
|
251
|
-
it('should produce a valid
|
|
251
|
+
it('should produce a valid ConcatenateWithSeparator statement', () => {
|
|
252
252
|
sqlEquals(result.query, `SELECT CONCAT_WS('|', 'foo', 'bar')`);
|
|
253
253
|
});
|
|
254
254
|
},
|
|
@@ -272,7 +272,7 @@ describe('Replace', () => {
|
|
|
272
272
|
],
|
|
273
273
|
],
|
|
274
274
|
(result, sqlEquals) => {
|
|
275
|
-
it('should produce a valid
|
|
275
|
+
it('should produce a valid Replace statement', () => {
|
|
276
276
|
sqlEquals(result.query, `SELECT REPLACE('foobar', 'bar', 'baz')`);
|
|
277
277
|
});
|
|
278
278
|
},
|
|
@@ -286,7 +286,7 @@ describe('CharacterLength', () => {
|
|
|
286
286
|
['Select', [['CharacterLength', ['EmbeddedText', 'foobar']]]],
|
|
287
287
|
],
|
|
288
288
|
(result, sqlEquals) => {
|
|
289
|
-
it('should produce a valid
|
|
289
|
+
it('should produce a valid CharacterLength statement', () => {
|
|
290
290
|
sqlEquals(result.query, `SELECT LENGTH('foobar')`);
|
|
291
291
|
});
|
|
292
292
|
},
|
|
@@ -303,7 +303,7 @@ describe('StrPos', () => {
|
|
|
303
303
|
],
|
|
304
304
|
],
|
|
305
305
|
(result, sqlEquals) => {
|
|
306
|
-
it('should produce a valid
|
|
306
|
+
it('should produce a valid StrPos statement', () => {
|
|
307
307
|
sqlEquals(result.query, `SELECT STRPOS('foobar', 'b')`);
|
|
308
308
|
});
|
|
309
309
|
},
|
|
@@ -331,7 +331,7 @@ describe('Duration', () => {
|
|
|
331
331
|
],
|
|
332
332
|
],
|
|
333
333
|
(result, sqlEquals) => {
|
|
334
|
-
it('should produce a valid
|
|
334
|
+
it('should produce a valid Duration statement', () => {
|
|
335
335
|
sqlEquals(result.query, `SELECT INTERVAL '1 2:3:4.0'`);
|
|
336
336
|
});
|
|
337
337
|
},
|
|
@@ -355,7 +355,7 @@ describe('Substring', () => {
|
|
|
355
355
|
],
|
|
356
356
|
],
|
|
357
357
|
(result, sqlEquals) => {
|
|
358
|
-
it('should produce a valid
|
|
358
|
+
it('should produce a valid Substring statement', () => {
|
|
359
359
|
sqlEquals(result.query, `SELECT SUBSTRING('foobar', 0, 5)`);
|
|
360
360
|
});
|
|
361
361
|
},
|
|
@@ -369,9 +369,120 @@ describe('Right', () => {
|
|
|
369
369
|
['Select', [['Right', ['EmbeddedText', 'foobar'], ['Number', 1]]]],
|
|
370
370
|
],
|
|
371
371
|
(result, sqlEquals) => {
|
|
372
|
-
it('should produce a valid
|
|
372
|
+
it('should produce a valid Right statement', () => {
|
|
373
373
|
sqlEquals(result.query, `SELECT RIGHT('foobar', 1)`);
|
|
374
374
|
});
|
|
375
375
|
},
|
|
376
376
|
);
|
|
377
377
|
});
|
|
378
|
+
|
|
379
|
+
describe('Lower', () => {
|
|
380
|
+
test(
|
|
381
|
+
['SelectQuery', ['Select', [['Lower', ['EmbeddedText', 'FOOBAR']]]]],
|
|
382
|
+
(result, sqlEquals) => {
|
|
383
|
+
it('should produce a valid Lower statement', () => {
|
|
384
|
+
sqlEquals(result.query, `SELECT LOWER('FOOBAR')`);
|
|
385
|
+
});
|
|
386
|
+
},
|
|
387
|
+
);
|
|
388
|
+
});
|
|
389
|
+
|
|
390
|
+
describe('Upper', () => {
|
|
391
|
+
test(
|
|
392
|
+
['SelectQuery', ['Select', [['Upper', ['EmbeddedText', 'foobar']]]]],
|
|
393
|
+
(result, sqlEquals) => {
|
|
394
|
+
it('should produce a valid Upper statement', () => {
|
|
395
|
+
sqlEquals(result.query, `SELECT UPPER('foobar')`);
|
|
396
|
+
});
|
|
397
|
+
},
|
|
398
|
+
);
|
|
399
|
+
});
|
|
400
|
+
|
|
401
|
+
describe('Trim', () => {
|
|
402
|
+
test(
|
|
403
|
+
['SelectQuery', ['Select', [['Trim', ['EmbeddedText', ' foobar ']]]]],
|
|
404
|
+
(result, sqlEquals) => {
|
|
405
|
+
it('should produce a valid Trim statement', () => {
|
|
406
|
+
sqlEquals(result.query, `SELECT TRIM(' foobar ')`);
|
|
407
|
+
});
|
|
408
|
+
},
|
|
409
|
+
);
|
|
410
|
+
});
|
|
411
|
+
|
|
412
|
+
describe('Round', () => {
|
|
413
|
+
test(
|
|
414
|
+
['SelectQuery', ['Select', [['Round', ['Number', 10.4]]]]],
|
|
415
|
+
(result, sqlEquals) => {
|
|
416
|
+
it('should produce a valid Round statement', () => {
|
|
417
|
+
sqlEquals(result.query, `SELECT ROUND(10.4)`);
|
|
418
|
+
});
|
|
419
|
+
},
|
|
420
|
+
);
|
|
421
|
+
});
|
|
422
|
+
|
|
423
|
+
describe('Floor', () => {
|
|
424
|
+
test(
|
|
425
|
+
['SelectQuery', ['Select', [['Floor', ['Number', 10.4]]]]],
|
|
426
|
+
(result, sqlEquals) => {
|
|
427
|
+
it('should produce a valid Floor statement', () => {
|
|
428
|
+
sqlEquals(result.query, `SELECT FLOOR(10.4)`);
|
|
429
|
+
});
|
|
430
|
+
},
|
|
431
|
+
);
|
|
432
|
+
});
|
|
433
|
+
|
|
434
|
+
describe('Ceiling', () => {
|
|
435
|
+
test(
|
|
436
|
+
['SelectQuery', ['Select', [['Ceiling', ['Number', 10.4]]]]],
|
|
437
|
+
(result, sqlEquals) => {
|
|
438
|
+
it('should produce a valid Ceiling statement', () => {
|
|
439
|
+
sqlEquals(result.query, `SELECT CEILING(10.4)`);
|
|
440
|
+
});
|
|
441
|
+
},
|
|
442
|
+
);
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
describe('ToDate', () => {
|
|
446
|
+
test(
|
|
447
|
+
['SelectQuery', ['Select', [['ToDate', ['Date', '2022-10-10']]]]],
|
|
448
|
+
[['Date', '2022-10-10']],
|
|
449
|
+
(result, sqlEquals) => {
|
|
450
|
+
it('should produce a valid ToDate statement', () => {
|
|
451
|
+
sqlEquals(result.query, `SELECT DATE($1)`);
|
|
452
|
+
});
|
|
453
|
+
},
|
|
454
|
+
);
|
|
455
|
+
});
|
|
456
|
+
|
|
457
|
+
describe('DateTrunc', () => {
|
|
458
|
+
test(
|
|
459
|
+
[
|
|
460
|
+
'SelectQuery',
|
|
461
|
+
[
|
|
462
|
+
'Select',
|
|
463
|
+
[['DateTrunc', ['EmbeddedText', 'year'], ['Date', '2022-10-10']]],
|
|
464
|
+
],
|
|
465
|
+
],
|
|
466
|
+
[['Date', '2022-10-10']],
|
|
467
|
+
(result, sqlEquals) => {
|
|
468
|
+
it('should produce a valid DateTrunc statement', () => {
|
|
469
|
+
sqlEquals(result.query, `SELECT DATE_TRUNC('year', $1)`);
|
|
470
|
+
});
|
|
471
|
+
},
|
|
472
|
+
);
|
|
473
|
+
});
|
|
474
|
+
|
|
475
|
+
describe('ToTime', () => {
|
|
476
|
+
test(
|
|
477
|
+
[
|
|
478
|
+
'SelectQuery',
|
|
479
|
+
['Select', [['ToTime', ['Date', '2022-10-10T10:10:10.000Z']]]],
|
|
480
|
+
],
|
|
481
|
+
[['Date', '2022-10-10T10:10:10.000Z']],
|
|
482
|
+
(result, sqlEquals) => {
|
|
483
|
+
it('should produce a valid ToTime statement', () => {
|
|
484
|
+
sqlEquals(result.query, `SELECT CAST($1 AS TIME)`);
|
|
485
|
+
});
|
|
486
|
+
},
|
|
487
|
+
);
|
|
488
|
+
});
|