@malloydata/malloy-tests 0.0.68-dev230808000650 → 0.0.68

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.
Files changed (81) hide show
  1. package/dist/databases/all/db_index.spec.d.ts +1 -0
  2. package/dist/databases/all/db_index.spec.js +36 -0
  3. package/dist/databases/all/db_index.spec.js.map +1 -0
  4. package/dist/databases/all/expr.spec.d.ts +0 -2
  5. package/dist/databases/all/expr.spec.js +2 -547
  6. package/dist/databases/all/expr.spec.js.map +1 -1
  7. package/dist/databases/all/functions.spec.d.ts +1 -2
  8. package/dist/databases/all/functions.spec.js +2 -751
  9. package/dist/databases/all/functions.spec.js.map +1 -1
  10. package/dist/databases/all/join.spec.d.ts +1 -2
  11. package/dist/databases/all/join.spec.js +2 -276
  12. package/dist/databases/all/join.spec.js.map +1 -1
  13. package/dist/databases/all/nomodel.spec.d.ts +1 -2
  14. package/dist/databases/all/nomodel.spec.js +2 -923
  15. package/dist/databases/all/nomodel.spec.js.map +1 -1
  16. package/dist/databases/all/orderby.spec.d.ts +1 -2
  17. package/dist/databases/all/orderby.spec.js +2 -191
  18. package/dist/databases/all/orderby.spec.js.map +1 -1
  19. package/dist/databases/all/problems.spec.d.ts +1 -2
  20. package/dist/databases/all/problems.spec.js +2 -80
  21. package/dist/databases/all/problems.spec.js.map +1 -1
  22. package/dist/databases/all/sql_expressions.spec.d.ts +1 -2
  23. package/dist/databases/all/sql_expressions.spec.js +2 -62
  24. package/dist/databases/all/sql_expressions.spec.js.map +1 -1
  25. package/dist/databases/all/time.spec.d.ts +1 -3
  26. package/dist/databases/all/time.spec.js +2 -615
  27. package/dist/databases/all/time.spec.js.map +1 -1
  28. package/dist/databases/{all/index.spec.d.ts → shared/db_index.d.ts} +1 -0
  29. package/dist/databases/{all/index.spec.js → shared/db_index.js} +2 -33
  30. package/dist/databases/shared/db_index.js.map +1 -0
  31. package/dist/databases/shared/expr.d.ts +3 -0
  32. package/dist/databases/shared/expr.js +551 -0
  33. package/dist/databases/shared/expr.js.map +1 -0
  34. package/dist/databases/shared/functions.d.ts +3 -0
  35. package/dist/databases/shared/functions.js +754 -0
  36. package/dist/databases/shared/functions.js.map +1 -0
  37. package/dist/databases/shared/join.d.ts +3 -0
  38. package/dist/databases/shared/join.js +302 -0
  39. package/dist/databases/shared/join.js.map +1 -0
  40. package/dist/databases/shared/nomodel.d.ts +3 -0
  41. package/dist/databases/shared/nomodel.js +950 -0
  42. package/dist/databases/shared/nomodel.js.map +1 -0
  43. package/dist/databases/shared/orderby.d.ts +3 -0
  44. package/dist/databases/shared/orderby.js +217 -0
  45. package/dist/databases/shared/orderby.js.map +1 -0
  46. package/dist/databases/shared/problems.d.ts +3 -0
  47. package/dist/databases/shared/problems.js +106 -0
  48. package/dist/databases/shared/problems.js.map +1 -0
  49. package/dist/databases/shared/sql_expressions.d.ts +3 -0
  50. package/dist/databases/shared/sql_expressions.js +88 -0
  51. package/dist/databases/shared/sql_expressions.js.map +1 -0
  52. package/dist/databases/shared/test_list.js +18 -18
  53. package/dist/databases/shared/test_list.js.map +1 -1
  54. package/dist/databases/shared/time.d.ts +3 -0
  55. package/dist/databases/shared/time.js +640 -0
  56. package/dist/databases/shared/time.js.map +1 -0
  57. package/dist/index.d.ts +9 -10
  58. package/dist/index.js +19 -21
  59. package/dist/index.js.map +1 -1
  60. package/package.json +6 -6
  61. package/src/databases/all/db_index.spec.ts +37 -0
  62. package/src/databases/all/expr.spec.ts +2 -670
  63. package/src/databases/all/functions.spec.ts +1 -1101
  64. package/src/databases/all/join.spec.ts +1 -315
  65. package/src/databases/all/nomodel.spec.ts +2 -1124
  66. package/src/databases/all/orderby.spec.ts +1 -234
  67. package/src/databases/all/problems.spec.ts +1 -87
  68. package/src/databases/all/sql_expressions.spec.ts +1 -71
  69. package/src/databases/all/time.spec.ts +1 -761
  70. package/src/databases/{all/index.spec.ts → shared/db_index.ts} +2 -13
  71. package/src/databases/shared/expr.ts +695 -0
  72. package/src/databases/shared/functions.ts +1126 -0
  73. package/src/databases/shared/join.ts +340 -0
  74. package/src/databases/shared/nomodel.ts +1150 -0
  75. package/src/databases/shared/orderby.ts +260 -0
  76. package/src/databases/shared/problems.ts +113 -0
  77. package/src/databases/shared/sql_expressions.ts +96 -0
  78. package/src/databases/shared/test_list.ts +9 -9
  79. package/src/databases/shared/time.ts +786 -0
  80. package/src/index.ts +10 -11
  81. package/dist/databases/all/index.spec.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"time.spec.js","sourceRoot":"","sources":["../../../src/databases/all/time.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"time.spec.js","sourceRoot":"","sources":["../../../src/databases/all/time.spec.ts"],"names":[],"mappings":";AAAA,+BAA+B;AAC/B;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAEH,6CAAyD;AACzD,yCAA+C;AAE/C,MAAM,QAAQ,GAAG,IAAI,sBAAW,CAAC,uBAAY,CAAC,CAAC;AAC/C;;;GAGG;AACH,IAAA,sBAAe,EAAC,QAAQ,CAAC,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import { RuntimeList } from '../../runtimes';
2
+ import '../../util/db-jest-matchers';
2
3
  export declare const indexSharedTests: (runtimes: RuntimeList, _splitFunction?: ((column: string, splitChar: string) => string) | undefined) => void;
@@ -1,32 +1,7 @@
1
1
  "use strict";
2
- /* eslint-disable no-console */
3
- /*
4
- * Copyright 2023 Google LLC
5
- *
6
- * Permission is hereby granted, free of charge, to any person obtaining
7
- * a copy of this software and associated documentation files
8
- * (the "Software"), to deal in the Software without restriction,
9
- * including without limitation the rights to use, copy, modify, merge,
10
- * publish, distribute, sublicense, and/or sell copies of the Software,
11
- * and to permit persons to whom the Software is furnished to do so,
12
- * subject to the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be
15
- * included in all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
20
- * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
21
- * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
22
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
23
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
- */
25
2
  Object.defineProperty(exports, "__esModule", { value: true });
26
3
  exports.indexSharedTests = void 0;
27
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
28
- const runtimes_1 = require("../../runtimes");
29
- const util_1 = require("../../util");
4
+ require("../../util/db-jest-matchers");
30
5
  const indexSharedTests = (runtimes, _splitFunction) => {
31
6
  // No prebuilt shared model, each test is complete. Makes debugging easier.
32
7
  afterAll(async () => {
@@ -145,10 +120,4 @@ const indexSharedTests = (runtimes, _splitFunction) => {
145
120
  });
146
121
  };
147
122
  exports.indexSharedTests = indexSharedTests;
148
- const runtimes = new runtimes_1.RuntimeList((0, util_1.databasesFromEnvironmentOr)(runtimes_1.allDatabases));
149
- /*
150
- * This test file reuses common tests definitions.
151
- * For actual test development please go to: test/src/databases/shared/index.spec.ts
152
- */
153
- (0, exports.indexSharedTests)(runtimes);
154
- //# sourceMappingURL=index.spec.js.map
123
+ //# sourceMappingURL=db_index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"db_index.js","sourceRoot":"","sources":["../../../src/databases/shared/db_index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { RuntimeList } from '../../runtimes';
2
+ import '../../util/db-jest-matchers';
3
+ export declare const exprSharedTests: (runtimes: RuntimeList, _splitFunction?: ((column: string, splitChar: string) => string) | undefined) => void;
@@ -0,0 +1,551 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.exprSharedTests = void 0;
4
+ require("../../util/db-jest-matchers");
5
+ const util_1 = require("../../util");
6
+ const expressionModelText = `
7
+ source: aircraft_models is table('malloytest.aircraft_models') extend {
8
+ primary_key: aircraft_model_code
9
+ measure:
10
+ airport_count is count(*),
11
+ aircraft_model_count is count(),
12
+ total_seats is sum(seats),
13
+ boeing_seats is sum(seats) {? manufacturer ? 'BOEING'},
14
+ percent_boeing is boeing_seats / total_seats * 100,
15
+ percent_boeing_floor is floor(boeing_seats / total_seats * 100),
16
+ dimension: seats_bucketed is floor(seats/20)*20.0
17
+ }
18
+
19
+ source: aircraft is table('malloytest.aircraft') extend {
20
+ primary_key: tail_num
21
+ join_one: aircraft_models with aircraft_model_code
22
+ measure: aircraft_count is count(*)
23
+ query: by_manufacturer is {
24
+ top: 5
25
+ group_by: aircraft_models.manufacturer
26
+ aggregate: aircraft_count
27
+ }
28
+ }
29
+ `;
30
+ const exprSharedTests = (runtimes, _splitFunction) => {
31
+ describe.each(runtimes.runtimeList)('%s', (databaseName, runtime) => {
32
+ const expressionModel = runtime.loadModel(expressionModelText);
33
+ // basic calculations for sum, filtered sum, without a join.
34
+ it('basic calculations', async () => {
35
+ const result = await expressionModel
36
+ .loadQuery(`
37
+ query: aircraft_models->{
38
+ aggregate:
39
+ total_seats,
40
+ total_seats2 is sum(seats),
41
+ boeing_seats,
42
+ boeing_seats2 is sum(seats) {? manufacturer ? 'BOEING'},
43
+ boeing_seats3 is total_seats {? manufacturer ? 'BOEING'},
44
+ percent_boeing,
45
+ percent_boeing2 is boeing_seats / total_seats * 100,
46
+ -- percent_boeing_floor,
47
+ -- percent_boeing_floor2 is FLOOR(boeing_seats / total_seats * 100)
48
+ }
49
+ `)
50
+ .run();
51
+ expect(result.data.path(0, 'total_seats').value).toBe(452415);
52
+ expect(result.data.path(0, 'total_seats2').value).toBe(452415);
53
+ expect(result.data.path(0, 'boeing_seats').value).toBe(252771);
54
+ expect(result.data.path(0, 'boeing_seats2').value).toBe(252771);
55
+ expect(result.data.path(0, 'boeing_seats3').value).toBe(252771);
56
+ expect(Math.floor(result.data.path(0, 'percent_boeing').number.value)).toBe(55);
57
+ expect(Math.floor(result.data.path(0, 'percent_boeing2').number.value)).toBe(55);
58
+ // expect(result.data.path(0, "percent_boeing_floor").value).toBe(55);
59
+ // expect(result.data.path(0, "percent_boeing_floor2").value).toBe(55);
60
+ });
61
+ // Floor is broken (doesn't compile because the expression returned isn't an aggregate.)
62
+ it('Floor() -or any function bustage with aggregates', async () => {
63
+ const result = await expressionModel
64
+ .loadQuery(`
65
+ query: aircraft_models->{
66
+ aggregate:
67
+ percent_boeing_floor
68
+ percent_boeing_floor2 is FLOOR(boeing_seats / total_seats * 100)
69
+ }
70
+ `)
71
+ .run();
72
+ expect(result.data.path(0, 'percent_boeing_floor').value).toBe(55);
73
+ expect(result.data.path(0, 'percent_boeing_floor2').value).toBe(55);
74
+ });
75
+ // Model based version of sums.
76
+ it('model: expression fixups.', async () => {
77
+ const result = await expressionModel
78
+ .loadQuery(`
79
+ query: aircraft->{
80
+ aggregate:
81
+ aircraft_models.total_seats
82
+ aircraft_models.boeing_seats
83
+ }
84
+ `)
85
+ .run();
86
+ expect(result.data.path(0, 'total_seats').value).toBe(18294);
87
+ expect(result.data.path(0, 'boeing_seats').value).toBe(6244);
88
+ });
89
+ // turtle expressions
90
+ it('model: turtle', async () => {
91
+ const result = await expressionModel
92
+ .loadQuery(`
93
+ query: aircraft->by_manufacturer
94
+ `)
95
+ .run();
96
+ expect(result.data.path(0, 'manufacturer').value).toBe('CESSNA');
97
+ });
98
+ // filtered turtle expressions
99
+ (0, util_1.testIf)(runtime.supportsNesting)('model: filtered turtle', async () => {
100
+ const result = await expressionModel
101
+ .loadQuery(`
102
+ query: aircraft->{
103
+ nest: b is by_manufacturer{? aircraft_models.manufacturer ?~'B%'}
104
+ }
105
+ `)
106
+ .run();
107
+ expect(result.data.path(0, 'b', 0, 'manufacturer').value).toBe('BEECH');
108
+ });
109
+ // having.
110
+ it('model: simple having', async () => {
111
+ const result = await expressionModel
112
+ .loadQuery(`
113
+ query: aircraft->{
114
+ having: aircraft_count >90
115
+ group_by: state
116
+ aggregate: aircraft_count
117
+ order_by: 2
118
+ }
119
+ `)
120
+ .run();
121
+ expect(result.data.path(0, 'aircraft_count').value).toBe(91);
122
+ });
123
+ (0, util_1.testIf)(runtime.supportsNesting)('model: turtle having2', async () => {
124
+ const result = await expressionModel
125
+ .loadQuery(`
126
+ -- hacking a null test for now
127
+ query: aircraft->{
128
+ top: 10
129
+ order_by: 1
130
+ where: region != NULL
131
+ group_by: region
132
+ nest: by_state is {
133
+ top: 10
134
+ order_by: 1 desc
135
+ having: aircraft_count > 50
136
+ group_by: state
137
+ aggregate: aircraft_count
138
+ }
139
+ }
140
+ `)
141
+ .run();
142
+ expect(result.data.path(0, 'by_state', 0, 'state').value).toBe('VA');
143
+ });
144
+ (0, util_1.testIf)(runtime.supportsNesting)('model: turtle having on main', async () => {
145
+ const result = await expressionModel
146
+ .loadQuery(`
147
+ query: aircraft->{
148
+ order_by: 2 asc
149
+ having: aircraft_count ? >500
150
+ group_by: region
151
+ aggregate: aircraft_count
152
+ nest: by_state is {
153
+ order_by: 2 asc
154
+ having: aircraft_count >45
155
+ group_by: state
156
+ aggregate: aircraft_count
157
+ nest: by_city is {
158
+ order_by: 2 asc
159
+ having: aircraft_count ? >5
160
+ group_by: city
161
+ aggregate: aircraft_count
162
+ }
163
+ }
164
+ }
165
+ `)
166
+ .run();
167
+ expect(result.data.path(0, 'by_state', 0, 'by_city', 0, 'city').value).toBe('ALBUQUERQUE');
168
+ });
169
+ // bigquery doesn't like to partition by floats,
170
+ (0, util_1.testIf)(runtime.supportsNesting)('model: having float group by partition', async () => {
171
+ await expect(runtime).queryMatches(`${expressionModelText}
172
+ query: aircraft_models->{
173
+ order_by: 1
174
+ where: seats_bucketed > 0
175
+ having: aircraft_model_count > 400
176
+ group_by: seats_bucketed
177
+ aggregate: aircraft_model_count
178
+ nest: foo is {
179
+ group_by: engines
180
+ aggregate: aircraft_model_count
181
+ }
182
+ }`, { aircraft_model_count: 448 });
183
+ });
184
+ it('model: aggregate functions distinct min max', async () => {
185
+ const result = await expressionModel
186
+ .loadQuery(`
187
+ query: aircraft_models->{
188
+ aggregate:
189
+ distinct_seats is count(distinct seats),
190
+ boeing_distinct_seats is count(distinct seats) {?manufacturer ? 'BOEING'},
191
+ min_seats is min(seats),
192
+ cessna_min_seats is min(seats) {? manufacturer ? 'CESSNA'},
193
+ max_seats is max(seats),
194
+ cessna_max_seats is max(seats) {? manufacturer ? 'CESSNA'},
195
+ min_code is min(aircraft_model_code),
196
+ boeing_min_model is min(model) {? manufacturer ? 'BOEING'},
197
+ max_model is max(model),
198
+ boeing_max_model is max(model) {? manufacturer ? 'BOEING'},
199
+ }
200
+ `)
201
+ .run();
202
+ expect(result.data.path(0, 'distinct_seats').value).toBe(187);
203
+ expect(result.data.path(0, 'boeing_distinct_seats').value).toBe(85);
204
+ expect(result.data.path(0, 'min_seats').value).toBe(0);
205
+ expect(result.data.path(0, 'cessna_min_seats').value).toBe(1);
206
+ expect(result.data.path(0, 'max_seats').value).toBe(660);
207
+ expect(result.data.path(0, 'min_code').value).toBe('0030109');
208
+ expect(result.data.path(0, 'cessna_max_seats').value).toBe(14);
209
+ expect(result.data.path(0, 'boeing_min_model').value).toBe('100');
210
+ expect(result.data.path(0, 'max_model').value).toBe('ZWEIFEL PA18');
211
+ expect(result.data.path(0, 'boeing_max_model').value).toBe('YL-15');
212
+ });
213
+ (databaseName !== 'bigquery' ? it.skip : it)('model: dates named', async () => {
214
+ const result = await expressionModel
215
+ .loadQuery(`
216
+ query: table('malloytest.alltypes')->{
217
+ group_by:
218
+ t_date,
219
+ t_date_month is t_date.month,
220
+ t_date_year is t_date.year,
221
+ t_timestamp,
222
+ t_timestamp_date is t_timestamp.day,
223
+ t_timestamp_hour is t_timestamp.hour,
224
+ t_timestamp_minute is t_timestamp.minute,
225
+ t_timestamp_second is t_timestamp.second,
226
+ t_timestamp_month is t_timestamp.month,
227
+ t_timestamp_year is t_timestamp.year,
228
+ }
229
+
230
+ `)
231
+ .run();
232
+ expect(result.data.path(0, 't_date').value).toEqual(new Date('2020-03-02'));
233
+ expect(result.data.path(0, 't_date_month').value).toEqual(new Date('2020-03-01'));
234
+ expect(result.data.path(0, 't_date_year').value).toEqual(new Date('2020-01-01'));
235
+ expect(result.data.path(0, 't_timestamp').value).toEqual(new Date('2020-03-02T12:35:56.000Z'));
236
+ expect(result.data.path(0, 't_timestamp_second').value).toEqual(new Date('2020-03-02T12:35:56.000Z'));
237
+ expect(result.data.path(0, 't_timestamp_minute').value).toEqual(new Date('2020-03-02T12:35:00.000Z'));
238
+ expect(result.data.path(0, 't_timestamp_hour').value).toEqual(new Date('2020-03-02T12:00:00.000Z'));
239
+ expect(result.data.path(0, 't_timestamp_date').value).toEqual(new Date('2020-03-02'));
240
+ expect(result.data.path(0, 't_timestamp_month').value).toEqual(new Date('2020-03-01'));
241
+ expect(result.data.path(0, 't_timestamp_year').value).toEqual(new Date('2020-01-01'));
242
+ });
243
+ it.skip('defines in model', async () => {
244
+ // const result1 = await model.makeQuery(`
245
+ // define a is ('malloytest.alltypes');
246
+ // explore a | reduce x is count(*)
247
+ // `);
248
+ // const result = await model.makeQuery(`
249
+ // define a is ('malloytest.alltypes');
250
+ // explore a | reduce x is count(*)
251
+ // `);
252
+ });
253
+ it('named query metadata undefined', async () => {
254
+ const result = await expressionModel
255
+ .loadQuery(`
256
+ query: aircraft->{
257
+ aggregate: aircraft_count is count()
258
+ }
259
+ `)
260
+ .run();
261
+ // TODO The result explore should really be unnamed. This test currently
262
+ // inspects inner information because we have no way to have unnamed
263
+ // explores today.
264
+ // expect(result.getResultExplore().name).toBe(undefined);
265
+ expect(result._queryResult.queryName).toBe(undefined);
266
+ });
267
+ it('named query metadata named', async () => {
268
+ const result = await expressionModel
269
+ .loadQuery(`
270
+ query: aircraft->by_manufacturer
271
+ `)
272
+ .run();
273
+ expect(result.resultExplore.name).toBe('by_manufacturer');
274
+ });
275
+ it('named query metadata named head of pipeline', async () => {
276
+ const result = await expressionModel
277
+ .loadQuery(`
278
+ query: aircraft->by_manufacturer->{ aggregate: c is count()}
279
+ `)
280
+ .run();
281
+ // TODO Same as above -- this test should check the explore name
282
+ // expect(result.getResultExplore().name).toBe(undefined);
283
+ expect(result._queryResult.queryName).toBe(undefined);
284
+ });
285
+ it('filtered explores basic', async () => {
286
+ const result = await expressionModel
287
+ .loadQuery(`
288
+ source: b is aircraft{ where: aircraft_models.manufacturer ? ~'B%' }
289
+
290
+ query: b->{aggregate: m_count is count(distinct aircraft_models.manufacturer) }
291
+ `)
292
+ .run();
293
+ expect(result.data.path(0, 'm_count').value).toBe(63);
294
+ });
295
+ (0, util_1.testIf)(runtime.supportsNesting)('query with aliasname used twice', async () => {
296
+ const result = await expressionModel
297
+ .loadQuery(`
298
+ query: aircraft->{
299
+ group_by: first is substr(city,1,1)
300
+ aggregate: aircraft_count is count()
301
+ nest: aircraft is {
302
+ group_by: first_two is substr(city,1,2)
303
+ aggregate: aircraft_count is count()
304
+ nest: aircraft is {
305
+ group_by: first_three is substr(city,1,3)
306
+ aggregate: aircraft_count is count()
307
+ }
308
+ }
309
+ } -> {
310
+ project:
311
+ aircraft.aircraft.first_three
312
+ aircraft_count
313
+ order_by: 2 desc, 1
314
+ }
315
+ `)
316
+ .run();
317
+ expect(result.data.path(0, 'first_three').value).toBe('SAB');
318
+ });
319
+ it.skip('join foreign_key reverse', async () => {
320
+ const result = await expressionModel
321
+ .loadQuery(`
322
+ source: a is table('malloytest.aircraft') {
323
+ primary_key: tail_num
324
+ measure: aircraft_count is count()
325
+ }
326
+ query: table('malloytest.aircraft_models') {
327
+ primary_key: aircraft_model_code
328
+ join_many: a on a.aircraft_model_code
329
+
330
+ some_measures is {
331
+ aggregate: am_count is count()
332
+ aggregate: a.aircraft_count
333
+ }
334
+ } -> some_measure
335
+ `)
336
+ .run();
337
+ expect(result.data.path(0, 'first_three').value).toBe('SAN');
338
+ });
339
+ it('joined filtered explores', async () => {
340
+ const result = await expressionModel
341
+ .loadQuery(`
342
+ source: a_models is table('malloytest.aircraft_models'){
343
+ where: manufacturer ? ~'B%'
344
+ primary_key: aircraft_model_code
345
+ measure:model_count is count()
346
+ }
347
+
348
+ source: aircraft2 is table('malloytest.aircraft'){
349
+ join_one: model is a_models with aircraft_model_code
350
+ measure: aircraft_count is count()
351
+ }
352
+
353
+ query: aircraft2->{
354
+ aggregate:
355
+ model.model_count
356
+ aircraft_count
357
+ }
358
+ `)
359
+ .run();
360
+ expect(result.data.path(0, 'model_count').value).toBe(244);
361
+ expect(result.data.path(0, 'aircraft_count').value).toBe(3599);
362
+ });
363
+ it('joined filtered explores with dependancies', async () => {
364
+ const result = await expressionModel
365
+ .loadQuery(`
366
+ source: bo_models is
367
+ from(
368
+ table('malloytest.aircraft_models') {? manufacturer ? ~ 'BO%' }
369
+ -> { project: aircraft_model_code, manufacturer, seats }
370
+ ) {
371
+ primary_key: aircraft_model_code
372
+ measure: bo_count is count()
373
+ }
374
+
375
+ source: b_models is
376
+ from(
377
+ table('malloytest.aircraft_models') {? manufacturer ? ~ 'B%' }
378
+ -> { project: aircraft_model_code, manufacturer, seats }
379
+ ) {
380
+ where: bo_models.seats > 200
381
+ primary_key: aircraft_model_code
382
+ measure: b_count is count()
383
+ join_one: bo_models with aircraft_model_code
384
+ }
385
+
386
+ source: models is table('malloytest.aircraft_models') {
387
+ join_one: b_models with aircraft_model_code
388
+ measure: model_count is count()
389
+ }
390
+
391
+ query: models -> {
392
+ aggregate: model_count
393
+ aggregate: b_models.b_count
394
+ -- aggregate: b_models.bo_models.bo_count
395
+ }
396
+ `)
397
+ .run();
398
+ expect(result.data.path(0, 'model_count').value).toBe(60461);
399
+ expect(result.data.path(0, 'b_count').value).toBe(355);
400
+ });
401
+ it('group by explore - simple group by', async () => {
402
+ const result = await expressionModel
403
+ .loadQuery(`
404
+ query: aircraft->{
405
+ group_by: aircraft_models
406
+ aggregate: aircraft_count
407
+ }
408
+ `)
409
+ .run();
410
+ expect(result.data.path(0, 'aircraft_count').value).toBe(58);
411
+ expect(result.data.path(0, 'aircraft_models_id').value).toBe('7102802');
412
+ });
413
+ it('group by explore - pipeline', async () => {
414
+ const result = await expressionModel
415
+ .loadQuery(`
416
+ query: aircraft->{
417
+ group_by: aircraft_models
418
+ aggregate: aircraft_count
419
+ } -> {
420
+ group_by: aircraft_models.manufacturer
421
+ aggregate: aircraft_count is aircraft_count.sum()
422
+ }
423
+ `)
424
+ .run();
425
+ expect(result.data.path(0, 'aircraft_count').value).toBe(1048);
426
+ expect(result.data.path(0, 'manufacturer').value).toBe('CESSNA');
427
+ });
428
+ it('group by explore - pipeline 2 levels', async () => {
429
+ const result = await expressionModel
430
+ .loadQuery(`
431
+ source: f is table('malloytest.flights'){
432
+ join_one: a is table('malloytest.aircraft') {
433
+ join_one: state_facts is table('malloytest.state_facts'){primary_key: state} with state
434
+ } on tail_num = a.tail_num
435
+ }
436
+
437
+ query: f-> {
438
+ group_by: a.state_facts
439
+ aggregate: flight_count is count()
440
+ } -> {
441
+ group_by: state_facts.popular_name
442
+ aggregate: flight_count is flight_count.sum()
443
+ }
444
+ `)
445
+ .run();
446
+ // console.log(result.data.toObject());
447
+ expect(result.data.path(0, 'flight_count').value).toBe(199726);
448
+ expect(result.data.path(0, 'popular_name').value).toBe('Isabella');
449
+ });
450
+ });
451
+ describe.each(runtimes.runtimeList)('%s', (databaseName, runtime) => {
452
+ const sqlEq = (0, util_1.mkSqlEqWith)(runtime, {
453
+ malloy: `+ {
454
+ dimension: friName is 'friday'
455
+ dimension: friDay is 5
456
+ dimension: satName is 'saturday'
457
+ dimension: satDay is 6
458
+ }`,
459
+ });
460
+ describe.skip('alternations with not-eq', () => {
461
+ /*
462
+ Here's the desired truth table ...
463
+
464
+ x x != y | z
465
+ ====== ============
466
+ y false
467
+ z false
468
+ ^[yz] true
469
+ */
470
+ test('x not-eq y or z : x eq y', async () => {
471
+ const result = await sqlEq('6 != (6|7)', false);
472
+ expect(result).isSqlEq();
473
+ });
474
+ test('x not-eq y or z : x eq z', async () => {
475
+ const result = await sqlEq('7 != (6|7)', false);
476
+ expect(result).isSqlEq();
477
+ });
478
+ test('x not-eq y or z : else', async () => {
479
+ const result = await sqlEq('5 != (6|7)', true);
480
+ expect(result).isSqlEq();
481
+ });
482
+ /*
483
+ Writing this the old way, should have the same truth table ...
484
+ x != y & != z
485
+ */
486
+ test('x not-eq y and not-eq z : x eq y', async () => {
487
+ const result = await sqlEq('6 != (6 & !=7)', false);
488
+ expect(result).isSqlEq();
489
+ });
490
+ test('x not-eq y and not-eq z : x eq z', async () => {
491
+ const result = await sqlEq('7 != (6 & != 7)', false);
492
+ expect(result).isSqlEq();
493
+ });
494
+ test('x not-eq y and not-eq z : else', async () => {
495
+ const result = await sqlEq('5 != (6 & !=7)', true);
496
+ expect(result).isSqlEq();
497
+ });
498
+ });
499
+ describe('string literal quoting', () => {
500
+ const dq = '"';
501
+ const tick = "'";
502
+ const back = '\\';
503
+ test('quote single character', async () => {
504
+ expect(await sqlEq(`'${back}x'`, 'x')).isSqlEq();
505
+ });
506
+ test('quote single quote', async () => {
507
+ expect(await sqlEq(`'${back}${tick}'`, tick)).isSqlEq();
508
+ });
509
+ test('quote double quote', async () => {
510
+ await expect(runtime).queryMatches(`sql: x is {connection:"${databaseName}" select:"""SELECT 1 as x"""}
511
+ query: from_sql(x) -> {
512
+ project: double_quote is "${back}${dq}"
513
+ }
514
+ `, { double_quote: '"' });
515
+ });
516
+ test('quote backslash', async () => {
517
+ expect(await sqlEq(`'${back}${back}'`, back)).isSqlEq();
518
+ });
519
+ });
520
+ test('nullish ?? operator', async () => {
521
+ await expect(runtime).queryMatches(`sql: nullTest is { connection: "${databaseName}" select: """
522
+ SELECT '' as null_value, '' as string_value
523
+ UNION ALL SELECT null, 'correct'
524
+ """ }
525
+ query: from_sql(nullTest) -> {
526
+ where: null_value = null
527
+ project:
528
+ found_null is null_value ?? 'correct',
529
+ else_pass is string_value ?? 'incorrect'
530
+ literal_null is null ?? 'correct'
531
+ }`, { found_null: 'correct', else_pass: 'correct', literal_null: 'correct' });
532
+ });
533
+ test('dimension expressions expanded with parens properly', async () => {
534
+ await expect(runtime).queryMatches(`
535
+ sql: tbl is { connection: "${databaseName}" select: """SELECT 1 as n"""}
536
+ query: from_sql(tbl) + {
537
+ dimension: fot is (false) or (true)
538
+ } -> {
539
+ project:
540
+ no_paren is false and fot
541
+ paren is false and (fot)
542
+ }
543
+ `, { paren: false, no_paren: false });
544
+ });
545
+ });
546
+ afterAll(async () => {
547
+ await runtimes.closeAll();
548
+ });
549
+ };
550
+ exports.exprSharedTests = exprSharedTests;
551
+ //# sourceMappingURL=expr.js.map