@malloydata/malloy-tests 0.0.95-dev231019211822 → 0.0.95
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +213 -1
- package/dist/api.spec.d.ts +1 -1
- package/dist/api.spec.js +6 -13
- package/dist/api.spec.js.map +1 -1
- package/dist/databases/all/db_index.spec.js +21 -41
- package/dist/databases/all/db_index.spec.js.map +1 -1
- package/dist/databases/all/expr.spec.js +262 -339
- package/dist/databases/all/expr.spec.js.map +1 -1
- package/dist/databases/all/functions.spec.js +37 -35
- package/dist/databases/all/functions.spec.js.map +1 -1
- package/dist/databases/all/join.spec.js +125 -169
- package/dist/databases/all/join.spec.js.map +1 -1
- package/dist/databases/all/nomodel.spec.js +335 -594
- package/dist/databases/all/nomodel.spec.js.map +1 -1
- package/dist/databases/all/orderby.spec.js +82 -128
- package/dist/databases/all/orderby.spec.js.map +1 -1
- package/dist/databases/all/sql_expressions.spec.js +27 -43
- package/dist/databases/all/sql_expressions.spec.js.map +1 -1
- package/dist/databases/all/time.spec.js +63 -103
- package/dist/databases/all/time.spec.js.map +1 -1
- package/dist/databases/bigquery/double_truncation.spec.js +1 -1
- package/dist/databases/bigquery/handexpr.spec.js +12 -12
- package/dist/databases/bigquery/injestion_time_partitioning.spec.js +22 -22
- package/dist/databases/bigquery/joined_filters.spec.js +3 -3
- package/dist/databases/bigquery/json.spec.d.ts +1 -1
- package/dist/databases/bigquery/json.spec.js +25 -45
- package/dist/databases/bigquery/json.spec.js.map +1 -1
- package/dist/databases/bigquery/malloy_query.spec.d.ts +1 -1
- package/dist/databases/bigquery/malloy_query.spec.js +47 -48
- package/dist/databases/bigquery/malloy_query.spec.js.map +1 -1
- package/dist/databases/bigquery/time.spec.js +9 -13
- package/dist/databases/bigquery/time.spec.js.map +1 -1
- package/dist/databases/bigquery/wildcard_table_names.spec.js +19 -19
- package/dist/databases/bigquery-duckdb/nested_source_table.spec.js +53 -87
- package/dist/databases/bigquery-duckdb/nested_source_table.spec.js.map +1 -1
- package/dist/databases/bigquery-postgres/multi_connection.spec.js +5 -20
- package/dist/databases/bigquery-postgres/multi_connection.spec.js.map +1 -1
- package/dist/databases/bigquery-postgres/streaming.spec.js +6 -6
- package/dist/databases/bigquery-postgres/streaming.spec.js.map +1 -1
- package/dist/databases/duckdb/duckdb.spec.js +24 -33
- package/dist/databases/duckdb/duckdb.spec.js.map +1 -1
- package/dist/databases/postgres/postgres.spec.js +46 -67
- package/dist/databases/postgres/postgres.spec.js.map +1 -1
- package/dist/jestMatcher.spec.d.ts +1 -0
- package/dist/jestMatcher.spec.js +81 -0
- package/dist/jestMatcher.spec.js.map +1 -0
- package/dist/render/render.spec.js +10 -12
- package/dist/render/render.spec.js.map +1 -1
- package/dist/tags.spec.js +22 -2
- package/dist/tags.spec.js.map +1 -1
- package/dist/util/db-jest-matchers.d.ts +17 -6
- package/dist/util/db-jest-matchers.js +81 -20
- package/dist/util/db-jest-matchers.js.map +1 -1
- package/dist/util/index.d.ts +1 -2
- package/dist/util/index.js +11 -13
- package/dist/util/index.js.map +1 -1
- package/package.json +6 -6
- package/src/api.spec.ts +7 -16
- package/src/databases/all/db_index.spec.ts +22 -48
- package/src/databases/all/expr.spec.ts +273 -431
- package/src/databases/all/functions.spec.ts +37 -35
- package/src/databases/all/join.spec.ts +130 -196
- package/src/databases/all/nomodel.spec.ts +333 -689
- package/src/databases/all/orderby.spec.ts +87 -161
- package/src/databases/all/sql_expressions.spec.ts +29 -49
- package/src/databases/all/time.spec.ts +73 -130
- package/src/databases/bigquery/double_truncation.spec.ts +1 -1
- package/src/databases/bigquery/handexpr.spec.ts +12 -12
- package/src/databases/bigquery/injestion_time_partitioning.spec.ts +22 -22
- package/src/databases/bigquery/joined_filters.spec.ts +3 -3
- package/src/databases/bigquery/json.spec.ts +25 -49
- package/src/databases/bigquery/malloy_query.spec.ts +47 -54
- package/src/databases/bigquery/time.spec.ts +13 -17
- package/src/databases/bigquery/wildcard_table_names.spec.ts +19 -19
- package/src/databases/bigquery-duckdb/nested_source_table.spec.ts +56 -98
- package/src/databases/bigquery-postgres/multi_connection.spec.ts +5 -23
- package/src/databases/bigquery-postgres/streaming.spec.ts +12 -6
- package/src/databases/duckdb/duckdb.spec.ts +31 -43
- package/src/databases/postgres/postgres.spec.ts +54 -84
- package/src/jestMatcher.spec.ts +88 -0
- package/src/render/render.spec.ts +10 -12
- package/src/tags.spec.ts +22 -2
- package/src/util/db-jest-matchers.ts +106 -32
- package/src/util/index.ts +16 -14
|
@@ -36,12 +36,12 @@ describe('Wildcard BigQuery Tables', () => {
|
|
|
36
36
|
if (runtime) {
|
|
37
37
|
const result = await runtime
|
|
38
38
|
.loadQuery(`
|
|
39
|
-
source: aircraft is table('malloy-data.malloytest.wildcard_aircraft_*') {
|
|
39
|
+
source: aircraft is bigquery.table('malloy-data.malloytest.wildcard_aircraft_*') extend {
|
|
40
40
|
primary_key: id
|
|
41
41
|
measure: aircraft_count is count()
|
|
42
42
|
}
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
run: aircraft -> {
|
|
45
45
|
aggregate: aircraft_count
|
|
46
46
|
}
|
|
47
47
|
`)
|
|
@@ -55,13 +55,13 @@ describe('Wildcard BigQuery Tables', () => {
|
|
|
55
55
|
if (runtime) {
|
|
56
56
|
const result = await runtime
|
|
57
57
|
.loadQuery(`
|
|
58
|
-
source: aircraft is table('malloy-data.malloytest.wildcard_aircraft_*') {
|
|
58
|
+
source: aircraft is bigquery.table('malloy-data.malloytest.wildcard_aircraft_*') extend {
|
|
59
59
|
primary_key: id
|
|
60
60
|
measure: aircraft_count is count()
|
|
61
61
|
where: _TABLE_SUFFIX = '01'
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
run: aircraft -> {
|
|
65
65
|
aggregate: aircraft_count
|
|
66
66
|
}
|
|
67
67
|
`)
|
|
@@ -75,14 +75,14 @@ describe('Wildcard BigQuery Tables', () => {
|
|
|
75
75
|
if (runtime) {
|
|
76
76
|
const result = await runtime
|
|
77
77
|
.loadQuery(`
|
|
78
|
-
source: aircraft is table('malloy-data.malloytest.wildcard_aircraft_*') {
|
|
78
|
+
source: aircraft is bigquery.table('malloy-data.malloytest.wildcard_aircraft_*') extend {
|
|
79
79
|
primary_key: id
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
-
source: state_facts is table('malloy-data.malloytest.state_facts') {
|
|
82
|
+
source: state_facts is bigquery.table('malloy-data.malloytest.state_facts') extend {
|
|
83
83
|
join_many: aircraft on state = aircraft.state
|
|
84
84
|
}
|
|
85
|
-
|
|
85
|
+
run: state_facts -> {
|
|
86
86
|
group_by: aircraft.state
|
|
87
87
|
aggregate: aircraft_count is aircraft.count()
|
|
88
88
|
order_by: 1
|
|
@@ -108,15 +108,15 @@ describe('Wildcard BigQuery Tables', () => {
|
|
|
108
108
|
if (runtime) {
|
|
109
109
|
const result = await runtime
|
|
110
110
|
.loadQuery(`
|
|
111
|
-
source: aircraft is table('malloy-data.malloytest.wildcard_aircraft_*') {
|
|
111
|
+
source: aircraft is bigquery.table('malloy-data.malloytest.wildcard_aircraft_*') extend {
|
|
112
112
|
primary_key: id
|
|
113
113
|
where: _TABLE_SUFFIX = '02'
|
|
114
114
|
}
|
|
115
115
|
|
|
116
|
-
source: state_facts is table('malloy-data.malloytest.state_facts') {
|
|
116
|
+
source: state_facts is bigquery.table('malloy-data.malloytest.state_facts') extend {
|
|
117
117
|
join_many: aircraft on state = aircraft.state
|
|
118
118
|
}
|
|
119
|
-
|
|
119
|
+
run: state_facts -> {
|
|
120
120
|
group_by: aircraft.state
|
|
121
121
|
aggregate: aircraft_count is aircraft.count()
|
|
122
122
|
order_by: 1
|
|
@@ -139,12 +139,12 @@ describe('Wildcard BigQuery Tables', () => {
|
|
|
139
139
|
if (runtime) {
|
|
140
140
|
const result = await runtime
|
|
141
141
|
.loadQuery(`
|
|
142
|
-
source: aircraft is table('malloy-data.malloytest.wildcard_aircraft_*') {
|
|
143
|
-
join_many: state_facts is table('malloy-data.malloytest.state_facts')
|
|
142
|
+
source: aircraft is bigquery.table('malloy-data.malloytest.wildcard_aircraft_*') extend {
|
|
143
|
+
join_many: state_facts is bigquery.table('malloy-data.malloytest.state_facts')
|
|
144
144
|
on state_facts.state = state
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
|
|
147
|
+
run: aircraft -> {
|
|
148
148
|
group_by: state_facts.state
|
|
149
149
|
aggregate: aircraft_count is count()
|
|
150
150
|
where: _TABLE_SUFFIX = '02'
|
|
@@ -162,15 +162,15 @@ describe('Wildcard BigQuery Tables', () => {
|
|
|
162
162
|
if (runtime) {
|
|
163
163
|
const result = await runtime
|
|
164
164
|
.loadQuery(`
|
|
165
|
-
source: aircraft is table('malloy-data.malloytest.wildcard_aircraft_*') {
|
|
165
|
+
source: aircraft is bigquery.table('malloy-data.malloytest.wildcard_aircraft_*') extend {
|
|
166
166
|
primary_key: id
|
|
167
167
|
where: _TABLE_SUFFIX = '02'
|
|
168
168
|
}
|
|
169
169
|
|
|
170
|
-
source: state_facts is table('malloy-data.malloytest.state_facts') {
|
|
170
|
+
source: state_facts is bigquery.table('malloy-data.malloytest.state_facts') extend {
|
|
171
171
|
join_many: aircraft on state = aircraft.state
|
|
172
172
|
}
|
|
173
|
-
|
|
173
|
+
run: state_facts -> {
|
|
174
174
|
group_by: aircraft._TABLE_SUFFIX
|
|
175
175
|
aggregate: aircraft_count is aircraft.count()
|
|
176
176
|
order_by: 1
|
|
@@ -189,15 +189,15 @@ describe('Wildcard BigQuery Tables', () => {
|
|
|
189
189
|
if (runtime) {
|
|
190
190
|
const result = await runtime
|
|
191
191
|
.loadQuery(`
|
|
192
|
-
source: aircraft is table('malloy-data.malloytest.wildcard_aircraft_*') {
|
|
192
|
+
source: aircraft is bigquery.table('malloy-data.malloytest.wildcard_aircraft_*') extend {
|
|
193
193
|
primary_key: id
|
|
194
194
|
where: _TABLE_SUFFIX = '02'
|
|
195
195
|
}
|
|
196
196
|
|
|
197
|
-
source: state_facts is table('malloy-data.malloytest.state_facts') {
|
|
197
|
+
source: state_facts is bigquery.table('malloy-data.malloytest.state_facts') extend {
|
|
198
198
|
join_many: aircraft on state = aircraft.state
|
|
199
199
|
}
|
|
200
|
-
|
|
200
|
+
run: state_facts -> {
|
|
201
201
|
group_by: aircraft._TABLE_SUFFIX
|
|
202
202
|
aggregate: aircraft_count is aircraft.count()
|
|
203
203
|
where: aircraft._TABLE_SUFFIX = '01'
|
|
@@ -32,8 +32,9 @@ const [describe, databases] = (0, util_1.describeIfDatabaseAvailable)([
|
|
|
32
32
|
'bigquery',
|
|
33
33
|
'duckdb',
|
|
34
34
|
]);
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
function modelText(databaseName) {
|
|
36
|
+
return `
|
|
37
|
+
source: ga_sessions is ${databaseName}.table('malloytest.ga_sample') extend {
|
|
37
38
|
|
|
38
39
|
measure:
|
|
39
40
|
user_count is count(fullVisitorId)
|
|
@@ -46,41 +47,41 @@ source:ga_sessions is table('malloytest.ga_sample'){
|
|
|
46
47
|
hits_count is hits.count()
|
|
47
48
|
sold_count is hits.count() { where: hits.product.productQuantity > 0 }
|
|
48
49
|
|
|
49
|
-
|
|
50
|
+
view: by_source is {
|
|
50
51
|
where: trafficSource.\`source\` != '(direct)'
|
|
51
52
|
group_by: trafficSource.\`source\`
|
|
52
53
|
aggregate: hits_count
|
|
53
54
|
limit: 10
|
|
54
55
|
}
|
|
55
|
-
|
|
56
|
+
view: by_adContent_bar_chart is {
|
|
56
57
|
group_by: device.browser
|
|
57
58
|
aggregate: user_count
|
|
58
59
|
group_by: device.deviceCategory
|
|
59
60
|
}
|
|
60
|
-
|
|
61
|
+
view: by_region is {
|
|
61
62
|
where: geoNetwork.region !~ '%demo%'
|
|
62
63
|
group_by: geoNetwork.region
|
|
63
64
|
aggregate: user_count
|
|
64
65
|
limit: 10
|
|
65
66
|
}
|
|
66
|
-
|
|
67
|
+
view: by_device is {
|
|
67
68
|
group_by: device.browser
|
|
68
69
|
aggregate: user_count
|
|
69
70
|
group_by: device.deviceCategory
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
+
view: by_category is {
|
|
72
73
|
group_by: category is hits.product.v2ProductCategory
|
|
73
74
|
aggregate: total_productRevenue
|
|
74
75
|
aggregate: sold_count
|
|
75
76
|
limit: 10
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
+
view: by_hour_of_day is {
|
|
78
79
|
// group_by: gsession_hour is hour(start_time::timestamp)
|
|
79
80
|
aggregate: session_count
|
|
80
81
|
order_by: 1
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
|
|
84
|
+
view: page_load_times is {
|
|
84
85
|
group_by: hits.page.pageTitle
|
|
85
86
|
aggregate: hit_count is hits.count()
|
|
86
87
|
nest: load_bar_chart is {
|
|
@@ -90,20 +91,20 @@ source:ga_sessions is table('malloytest.ga_sample'){
|
|
|
90
91
|
limit: 10
|
|
91
92
|
}
|
|
92
93
|
|
|
93
|
-
|
|
94
|
+
view: by_page_title is { where: totals.transactionRevenue > 0
|
|
94
95
|
group_by: hits.page.pageTitle
|
|
95
96
|
aggregate: hits_count
|
|
96
97
|
aggregate: sold_count
|
|
97
98
|
}
|
|
98
99
|
|
|
99
|
-
|
|
100
|
+
view: by_all is {
|
|
100
101
|
nest: by_source
|
|
101
102
|
nest: by_adContent_bar_chart
|
|
102
103
|
nest: by_region
|
|
103
104
|
nest: by_category
|
|
104
105
|
}
|
|
105
106
|
|
|
106
|
-
|
|
107
|
+
view: search_index is {
|
|
107
108
|
index: *, hits.*, customDimensions.* totals.*, trafficSource.*, hits.product.*
|
|
108
109
|
sample: 1%
|
|
109
110
|
}
|
|
@@ -121,20 +122,14 @@ query: sessions_dashboard is ga_sessions -> {
|
|
|
121
122
|
}
|
|
122
123
|
}
|
|
123
124
|
`;
|
|
125
|
+
}
|
|
124
126
|
const runtimes = new runtimes_1.RuntimeList(databases);
|
|
125
127
|
describe.each(runtimes.runtimeList)('Nested Source Table - %s', (databaseName, runtime) => {
|
|
128
|
+
const gaModel = runtime.loadModel(modelText(databaseName));
|
|
126
129
|
test(`repeated child of record - ${databaseName}`, async () => {
|
|
127
|
-
|
|
128
|
-
.loadModel(modelText)
|
|
129
|
-
.loadQuery(`
|
|
130
|
-
query: ga_sessions->by_page_title
|
|
131
|
-
`)
|
|
132
|
-
.run();
|
|
133
|
-
// console.log(result.data.toObject());
|
|
134
|
-
// console.log(result.sql);
|
|
135
|
-
expect(result.data.path(0, 'pageTitle').value).toBe('Shopping Cart');
|
|
130
|
+
await expect('run: ga_sessions->by_page_title').malloyResultMatches(gaModel, { pageTitle: 'Shopping Cart' });
|
|
136
131
|
});
|
|
137
|
-
//
|
|
132
|
+
// Tests intermittently fail and lloyd said
|
|
138
133
|
// "I bet it has to do with my sampling test on indexing. Intermittently
|
|
139
134
|
// getting different results. I'd comment out the test and I'll take a
|
|
140
135
|
// look at it when I get back." and that seems reasonable.
|
|
@@ -146,31 +141,27 @@ describe.each(runtimes.runtimeList)('Nested Source Table - %s', (databaseName, r
|
|
|
146
141
|
//
|
|
147
142
|
// Expected: "Organic Search"
|
|
148
143
|
// Received: "Referral"
|
|
149
|
-
test
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
.loadQuery(`
|
|
153
|
-
query: ga_sessions->search_index -> {
|
|
144
|
+
test(`search_index - ${databaseName}`, async () => {
|
|
145
|
+
await expect(`
|
|
146
|
+
run: ga_sessions->search_index -> {
|
|
154
147
|
where: fieldName != null
|
|
155
148
|
select: *
|
|
156
149
|
order_by: fieldName, weight desc
|
|
157
150
|
limit: 10
|
|
158
151
|
}
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
// expect(result.data.path(0, "weight").value).toBe(18);
|
|
152
|
+
`).malloyResultMatches(gaModel, {
|
|
153
|
+
fieldName: 'channelGrouping',
|
|
154
|
+
// fieldValue: 'Organic Search',
|
|
155
|
+
// weight: 10,
|
|
156
|
+
});
|
|
165
157
|
});
|
|
166
|
-
test
|
|
158
|
+
test(`manual index - ${databaseName}`, async () => {
|
|
167
159
|
let sampleSize = '10';
|
|
168
160
|
if (databaseName === 'bigquery') {
|
|
169
161
|
sampleSize = 'false';
|
|
170
162
|
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
query: table('malloytest.ga_sample')-> {
|
|
163
|
+
await expect(`
|
|
164
|
+
run: ${databaseName}.table('malloytest.ga_sample')-> {
|
|
174
165
|
index: everything
|
|
175
166
|
sample: ${sampleSize}
|
|
176
167
|
}
|
|
@@ -182,63 +173,38 @@ describe.each(runtimes.runtimeList)('Nested Source Table - %s', (databaseName, r
|
|
|
182
173
|
limit: 100
|
|
183
174
|
}
|
|
184
175
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
//
|
|
188
|
-
//
|
|
189
|
-
|
|
190
|
-
// expect(result.data.path(0, "weight").value).toBe(18);
|
|
176
|
+
`).malloyResultMatches(runtime, {
|
|
177
|
+
// 'top_fields.fieldName': 'channelGrouping',
|
|
178
|
+
// 'top_fields.fieldValue': 'Organic Search',
|
|
179
|
+
// 'top_fields.weight': 18,
|
|
180
|
+
});
|
|
191
181
|
});
|
|
192
182
|
test(`autobin - ${databaseName}`, async () => {
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
group_by: elevation
|
|
202
|
-
aggregate: row_count is count()
|
|
203
|
-
}
|
|
204
|
-
}
|
|
205
|
-
-> {
|
|
206
|
-
group_by: elevation is floor(data.elevation/bin_size)*bin_size + bin_size/2
|
|
207
|
-
aggregate: airport_count is data.row_count.sum()
|
|
208
|
-
order_by: elevation
|
|
183
|
+
await expect(`
|
|
184
|
+
source: airports is ${databaseName}.table('malloytest.airports') extend {
|
|
185
|
+
measure: airport_count is count()
|
|
186
|
+
view: by_elevation is {
|
|
187
|
+
aggregate: bin_size is NULLIF((max(elevation) - min(elevation))/30,0)
|
|
188
|
+
nest: data is {
|
|
189
|
+
group_by: elevation
|
|
190
|
+
aggregate: row_count is count()
|
|
209
191
|
}
|
|
210
192
|
}
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
nest: by_elevation_bar_chart is by_elevation
|
|
193
|
+
-> {
|
|
194
|
+
group_by: elevation is floor(data.elevation/bin_size)*bin_size + bin_size/2
|
|
195
|
+
aggregate: airport_count is data.row_count.sum()
|
|
196
|
+
order_by: elevation
|
|
216
197
|
}
|
|
217
|
-
|
|
218
|
-
.run();
|
|
219
|
-
// console.log(result.sql);
|
|
220
|
-
// console.log(result.data.toObject());
|
|
221
|
-
// expect(result.data.path(0, 'fieldName').value).toBe('channelGrouping');
|
|
222
|
-
// expect(result.data.path(0, 'fieldValue').value).toBe('Organic Search');
|
|
223
|
-
// expect(result.data.path(0, "weight").value).toBe(18);
|
|
224
|
-
});
|
|
225
|
-
// this really shouldn't be here, we need to be able to test dialect capiblities
|
|
226
|
-
// from the connection.
|
|
227
|
-
test(`safe_cast - ${databaseName}`, async () => {
|
|
228
|
-
const result = await runtime
|
|
229
|
-
.loadQuery(`
|
|
230
|
-
source: eone is table('malloytest.airports') {}
|
|
198
|
+
}
|
|
231
199
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
limit: 1
|
|
200
|
+
run: airports -> {
|
|
201
|
+
group_by: state is state
|
|
202
|
+
aggregate: airport_count
|
|
203
|
+
nest: by_elevation_bar_chart is by_elevation
|
|
237
204
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
expect(result.data.value[0]['bad_number']).toBe(null);
|
|
205
|
+
`).malloyResultMatches(runtime, {
|
|
206
|
+
// don't know what to expect ...
|
|
207
|
+
});
|
|
242
208
|
});
|
|
243
209
|
});
|
|
244
210
|
afterAll(async () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nested_source_table.spec.js","sourceRoot":"","sources":["../../../src/databases/bigquery-duckdb/nested_source_table.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAEH,8DAA8D;AAC9D,+BAA+B;AAE/B,uCAAqC;AACrC,6CAA2C;AAC3C,qCAAuD;AAEvD,4EAA4E;AAE5E,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAA,kCAA2B,EAAC;IACxD,UAAU;IACV,QAAQ;CACT,CAAC,CAAC;AAEH,
|
|
1
|
+
{"version":3,"file":"nested_source_table.spec.js","sourceRoot":"","sources":["../../../src/databases/bigquery-duckdb/nested_source_table.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAEH,8DAA8D;AAC9D,+BAA+B;AAE/B,uCAAqC;AACrC,6CAA2C;AAC3C,qCAAuD;AAEvD,4EAA4E;AAE5E,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAA,kCAA2B,EAAC;IACxD,UAAU;IACV,QAAQ;CACT,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,YAAoB;IACrC,OAAO;yBACgB,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuFpC,CAAC;AACF,CAAC;AAED,MAAM,QAAQ,GAAG,IAAI,sBAAW,CAAC,SAAS,CAAC,CAAC;AAC5C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CACjC,0BAA0B,EAC1B,CAAC,YAAY,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC;IAC3D,IAAI,CAAC,8BAA8B,YAAY,EAAE,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAAC,mBAAmB,CACjE,OAAO,EACP,EAAC,SAAS,EAAE,eAAe,EAAC,CAC7B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,2CAA2C;IAC3C,wEAAwE;IACxE,uEAAuE;IACvE,2DAA2D;IAC3D,6DAA6D;IAC7D,kDAAkD;IAClD,kDAAkD;IAClD,EAAE;IACF,6DAA6D;IAC7D,EAAE;IACF,kCAAkC;IAClC,4BAA4B;IAC5B,IAAI,CAAC,kBAAkB,YAAY,EAAE,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,MAAM,CAAC;;;;;;;OAOZ,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;YAC9B,SAAS,EAAE,iBAAiB;YAC5B,gCAAgC;YAChC,cAAc;SACf,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,kBAAkB,YAAY,EAAE,EAAE,KAAK,IAAI,EAAE;QAChD,IAAI,UAAU,GAAG,IAAI,CAAC;QACtB,IAAI,YAAY,KAAK,UAAU,EAAE;YAC/B,UAAU,GAAG,OAAO,CAAC;SACtB;QACD,MAAM,MAAM,CAAC;eACJ,YAAY;;oBAEP,UAAU;;;;;;;;;;OAUvB,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;QAC9B,6CAA6C;QAC7C,6CAA6C;QAC7C,2BAA2B;SAC5B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,aAAa,YAAY,EAAE,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,MAAM,CAAC;8BACW,YAAY;;;;;;;;;;;;;;;;;;;;;OAqBnC,CAAC,CAAC,mBAAmB,CAAC,OAAO,EAAE;QAC9B,gCAAgC;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,QAAQ,CAAC,KAAK,IAAI,EAAE;IAClB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC,CAAC,CAAC"}
|
|
@@ -73,34 +73,19 @@ describe('Multi-connection', () => {
|
|
|
73
73
|
await postgresConnection.close();
|
|
74
74
|
});
|
|
75
75
|
const expressionModelText = `
|
|
76
|
-
source:
|
|
77
|
-
measure: aircraft_count is count(tail_num)
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
source: bigquery_state_facts is table('malloytest.state_facts'){
|
|
76
|
+
source: bigquery_state_facts is bigquery.table('malloytest.state_facts') extend {
|
|
81
77
|
measure: state_count is count(state)+2
|
|
82
78
|
}
|
|
83
79
|
|
|
84
|
-
source: postgres_aircraft is table('
|
|
80
|
+
source: postgres_aircraft is postgres.table('malloytest.aircraft') extend {
|
|
85
81
|
measure: aircraft_count is count(tail_num)+4
|
|
86
82
|
}
|
|
87
83
|
`;
|
|
88
84
|
const expressionModel = runtime.loadModel(expressionModelText);
|
|
89
|
-
it('default query', async () => {
|
|
90
|
-
const result = await expressionModel
|
|
91
|
-
.loadQuery(`
|
|
92
|
-
query: default_aircraft-> {
|
|
93
|
-
aggregate: aircraft_count
|
|
94
|
-
}
|
|
95
|
-
`)
|
|
96
|
-
.run();
|
|
97
|
-
// console.log(result.sql);
|
|
98
|
-
expect(result.data.path(0, 'aircraft_count').value).toBe(3599);
|
|
99
|
-
});
|
|
100
85
|
it('bigquery query', async () => {
|
|
101
86
|
const result = await expressionModel
|
|
102
87
|
.loadQuery(`
|
|
103
|
-
|
|
88
|
+
run: bigquery_state_facts-> {
|
|
104
89
|
aggregate: state_count
|
|
105
90
|
}
|
|
106
91
|
`)
|
|
@@ -111,7 +96,7 @@ source: postgres_aircraft is table('postgres:malloytest.aircraft'){
|
|
|
111
96
|
it('postgres query', async () => {
|
|
112
97
|
const result = await expressionModel
|
|
113
98
|
.loadQuery(`
|
|
114
|
-
|
|
99
|
+
run: postgres_aircraft-> {
|
|
115
100
|
aggregate: aircraft_count
|
|
116
101
|
}
|
|
117
102
|
`)
|
|
@@ -121,7 +106,7 @@ source: postgres_aircraft is table('postgres:malloytest.aircraft'){
|
|
|
121
106
|
it('postgres raw query', async () => {
|
|
122
107
|
const result = await runtime
|
|
123
108
|
.loadQuery(`
|
|
124
|
-
|
|
109
|
+
run: postgres.table('malloytest.airports')->{
|
|
125
110
|
group_by:
|
|
126
111
|
version is version!()
|
|
127
112
|
aggregate:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi_connection.spec.js","sourceRoot":"","sources":["../../../src/databases/bigquery-postgres/multi_connection.spec.ts"],"names":[],"mappings":";AAAA,+BAA+B;AAC/B;;;;;;;;;;;;;;;;;;;;;GAqBG;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,8DAA8D;AAE9D,2DAA6C;AAC7C,+CAAkD;AAClD,6CAA8E;AAC9E,qCAAuD;AAEvD,MAAM,GAAG,GAAG,IAAA,kCAA2B,EAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;AAClE,IAAI,CAAC,QAAQ,CAAC,GAAG,GAAG,CAAC;AACrB,MAAM,CAAC,EAAE,SAAS,CAAC,GAAG,GAAG,CAAC;AAE1B,eAAe;AACf,+FAA+F;AAC/F,QAAQ;IACN,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC;QACrE,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;AAEpB,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,MAAM,YAAY,GAAG,IAAI,iCAAsB,CAC7C,UAAU,EACV,EAAE,EACF,EAAC,cAAc,EAAE,aAAa,EAAC,CAChC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAI,iCAAsB,CAAC,UAAU,CAAC,CAAC;IAClE,MAAM,KAAK,GAAG,IAAI,uBAAc,EAAE,CAAC;IAEnC,MAAM,aAAa,GAAG,IAAI,MAAM,CAAC,kBAAkB,CACjD,IAAI,GAAG,CACL,MAAM,CAAC,OAAO,CAAC;QACb,QAAQ,EAAE,YAAY;QACtB,QAAQ,EAAE,kBAAkB;KAC7B,CAAC,CACH,EACD,UAAU,CACX,CAAC;IAEF,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;IAEzD,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,kBAAkB,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC,CAAC,CAAC;IAEH,MAAM,mBAAmB,GAAG
|
|
1
|
+
{"version":3,"file":"multi_connection.spec.js","sourceRoot":"","sources":["../../../src/databases/bigquery-postgres/multi_connection.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -48,8 +48,8 @@ describe('Streaming tests', () => {
|
|
|
48
48
|
runtimes.runtimeMap.forEach((runtime, databaseName) => {
|
|
49
49
|
it(`basic stream test - ${databaseName}`, async () => {
|
|
50
50
|
const stream = runtime
|
|
51
|
-
.loadModel(
|
|
52
|
-
.loadQuery('
|
|
51
|
+
.loadModel(`source: airports is ${databaseName}.table('malloytest.airports')`)
|
|
52
|
+
.loadQuery('run: airports -> { select: code }')
|
|
53
53
|
.runStream({ rowLimit: 10 });
|
|
54
54
|
const rows = [];
|
|
55
55
|
for await (const row of stream) {
|
|
@@ -60,8 +60,8 @@ describe('Streaming tests', () => {
|
|
|
60
60
|
});
|
|
61
61
|
it(`stream to JSON - ${databaseName}`, async () => {
|
|
62
62
|
const stream = runtime
|
|
63
|
-
.loadModel(
|
|
64
|
-
.loadQuery('
|
|
63
|
+
.loadModel(`source: airports is ${databaseName}.table('malloytest.airports')`)
|
|
64
|
+
.loadQuery('run: airports -> { select: code }')
|
|
65
65
|
.runStream({ rowLimit: 1 });
|
|
66
66
|
const accummulator = new StringAccumulator();
|
|
67
67
|
const jsonWriter = new malloy_1.JSONWriter(accummulator);
|
|
@@ -75,8 +75,8 @@ describe('Streaming tests', () => {
|
|
|
75
75
|
});
|
|
76
76
|
it(`stream to CSV - ${databaseName}`, async () => {
|
|
77
77
|
const stream = runtime
|
|
78
|
-
.loadModel(
|
|
79
|
-
.loadQuery('
|
|
78
|
+
.loadModel(`source: airports is ${databaseName}.table('malloytest.airports')`)
|
|
79
|
+
.loadQuery('run: airports -> { select: code }')
|
|
80
80
|
.runStream({ rowLimit: 1 });
|
|
81
81
|
const accummulator = new StringAccumulator();
|
|
82
82
|
const csvWriter = new malloy_1.CSVWriter(accummulator);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streaming.spec.js","sourceRoot":"","sources":["../../../src/databases/bigquery-postgres/streaming.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAEH,+CAK4B;AAC5B,6CAA2C;AAC3C,qCAAuD;AAEvD,MAAM,iBAAiB;IAAvB;QACS,qBAAgB,GAAG,EAAE,CAAC;IAS/B,CAAC;IAPC,KAAK,CAAC,IAAY;QAChB,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC;IAChC,CAAC;IAED,KAAK;QACH,OAAO;IACT,CAAC;CACF;AAED,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,IAAA,kCAA2B,EAAC;IACxD,UAAU;IACV,UAAU;CACX,CAAC,CAAC;AAEH,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,MAAM,QAAQ,GAAG,IAAI,sBAAW,CAAC,SAAS,CAAC,CAAC;IAE5C,QAAQ,CAAC,KAAK,IAAI,EAAE;QAClB,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE;QACpD,EAAE,CAAC,wBAAwB,YAAY,EAAE,EAAE,KAAK,IAAI,EAAE;YACpD,MAAM,MAAM,GAAG,OAAO;iBACnB,SAAS,
|
|
1
|
+
{"version":3,"file":"streaming.spec.js","sourceRoot":"","sources":["../../../src/databases/bigquery-postgres/streaming.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,20 +26,18 @@ const luxon_1 = require("luxon");
|
|
|
26
26
|
const runtimes_1 = require("../../runtimes");
|
|
27
27
|
require("../../util/db-jest-matchers");
|
|
28
28
|
const util_1 = require("../../util");
|
|
29
|
+
// TODO identify which tests need to run on wasm and move them into their own file
|
|
29
30
|
const runtimes = ['duckdb', 'duckdb_wasm'];
|
|
30
31
|
const [_describe, databases] = (0, util_1.describeIfDatabaseAvailable)(runtimes);
|
|
31
32
|
const allDucks = new runtimes_1.RuntimeList(databases);
|
|
32
33
|
describe.each(allDucks.runtimeList)('duckdb:%s', (dbName, runtime) => {
|
|
33
34
|
it('can open tables with wildcards', async () => {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
`)
|
|
41
|
-
.run();
|
|
42
|
-
expect(result.data.path(0, 'carrier').value).toEqual('AA');
|
|
35
|
+
await expect(`
|
|
36
|
+
run: duckdb.table('test/data/duckdb/flights/part.*.parquet') -> {
|
|
37
|
+
top: 1
|
|
38
|
+
group_by: carrier;
|
|
39
|
+
}
|
|
40
|
+
`).malloyResultMatches(runtime, { carrier: 'AA' });
|
|
43
41
|
});
|
|
44
42
|
it('accepts all schema numbers', async () => {
|
|
45
43
|
const allInts = [
|
|
@@ -55,33 +53,28 @@ describe.each(allDucks.runtimeList)('duckdb:%s', (dbName, runtime) => {
|
|
|
55
53
|
];
|
|
56
54
|
const allFields = allInts.map(intType => `a${intType.toLowerCase()}`);
|
|
57
55
|
const query = `
|
|
58
|
-
|
|
56
|
+
run: ${dbName}.sql("""
|
|
59
57
|
SELECT
|
|
60
58
|
${allInts
|
|
61
59
|
.map(intType => `1::${intType} as a${intType.toLowerCase()}`)
|
|
62
60
|
.join(',\n')}
|
|
63
|
-
"""
|
|
64
|
-
query: from_sql(allInts) -> {
|
|
61
|
+
""") -> {
|
|
65
62
|
aggregate:
|
|
66
63
|
${allFields
|
|
67
64
|
.map(fieldType => `sum_${fieldType} is sum(${fieldType})`)
|
|
68
65
|
.join('\n')}
|
|
69
66
|
}
|
|
70
67
|
`;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
}
|
|
68
|
+
await expect(query).malloyResultMatches(runtime, allInts.reduce((building, ent) => {
|
|
69
|
+
building[`sum_a${ent.toLowerCase()}`] = 1;
|
|
70
|
+
return building;
|
|
71
|
+
}, {}));
|
|
75
72
|
});
|
|
76
73
|
it('can open json files', async () => {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
}
|
|
82
|
-
`)
|
|
83
|
-
.run();
|
|
84
|
-
expect(result.data.path(0, 'foo').value).toEqual('bar');
|
|
74
|
+
await expect(`
|
|
75
|
+
run: duckdb.table('test/data/duckdb/test.json') -> {
|
|
76
|
+
select: *
|
|
77
|
+
}`).malloyResultMatches(runtime, { foo: 'bar' });
|
|
85
78
|
});
|
|
86
79
|
it('supports timezones', async () => {
|
|
87
80
|
await runtime.connection.runSQL("SET TimeZone='CET'");
|
|
@@ -89,7 +82,7 @@ describe.each(allDucks.runtimeList)('duckdb:%s', (dbName, runtime) => {
|
|
|
89
82
|
expect(result.rows[0]).toEqual({ "current_setting('TimeZone')": 'CET' });
|
|
90
83
|
});
|
|
91
84
|
it('supports varchars with parameters', async () => {
|
|
92
|
-
await expect(
|
|
85
|
+
await expect("run: duckdb.sql(\"SELECT 'a'::VARCHAR as abc, 'a3'::VARCHAR(3) as abc3\")").malloyResultMatches(runtime, { abc: 'a', abc3: 'a3' });
|
|
93
86
|
});
|
|
94
87
|
describe('time', () => {
|
|
95
88
|
const zone = 'America/Mexico_City'; // -06:00 no DST
|
|
@@ -102,14 +95,12 @@ describe.each(allDucks.runtimeList)('duckdb:%s', (dbName, runtime) => {
|
|
|
102
95
|
second: 0,
|
|
103
96
|
zone,
|
|
104
97
|
});
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
select: mex_220 is t_tstz::timestamp
|
|
112
|
-
}`, { mex_220: zone_2020.toJSDate() });
|
|
98
|
+
test('can cast TIMESTAMPTZ to timestamp', async () => {
|
|
99
|
+
await expect(`run: duckdb.sql("""
|
|
100
|
+
SELECT TIMESTAMPTZ '2020-02-20 00:00:00 ${zone}' as t_tstz
|
|
101
|
+
""") -> {
|
|
102
|
+
select: mex_220 is t_tstz::timestamp
|
|
103
|
+
}`).malloyResultMatches(runtime, { mex_220: zone_2020.toJSDate() });
|
|
113
104
|
});
|
|
114
105
|
});
|
|
115
106
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"duckdb.spec.js","sourceRoot":"","sources":["../../../src/databases/duckdb/duckdb.spec.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;;AAEH,iCAA+B;AAC/B,6CAA2C;AAC3C,uCAAqC;AACrC,qCAAuD;AAEvD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;AAE3C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAA,kCAA2B,EAAC,QAAQ,CAAC,CAAC;AACrE,MAAM,QAAQ,GAAG,IAAI,sBAAW,CAAC,SAAS,CAAC,CAAC;AAE5C,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACnE,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;QAC9C,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"duckdb.spec.js","sourceRoot":"","sources":["../../../src/databases/duckdb/duckdb.spec.ts"],"names":[],"mappings":"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"}
|