Skip to content

Commit d0b5139

Browse files
authored
fix measure validator aggregation (#126)
* fix: add has aggregation * bump version
1 parent 5aff01a commit d0b5139

File tree

6 files changed

+84
-12
lines changed

6 files changed

+84
-12
lines changed

meerkat-browser/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devrev/meerkat-browser",
3-
"version": "0.0.87",
3+
"version": "0.0.88",
44
"dependencies": {
55
"@swc/helpers": "~0.5.0",
66
"@devrev/meerkat-core": "*",

meerkat-browser/src/ast/query-to-ast.ts

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,11 @@ export const parseQueryToAST = async (
1515
query: string,
1616
connection: AsyncDuckDBConnection
1717
): Promise<ParsedSerialization> => {
18-
try {
19-
const serializedQuery = astSerializerQuery(query);
20-
const arrowResult = await connection.query(serializedQuery);
18+
const serializedQuery = astSerializerQuery(query);
19+
const arrowResult = await connection.query(serializedQuery);
2120

22-
const parsedOutputQuery = arrowResult.toArray().map((row) => row.toJSON());
23-
const deserializedQuery = deserializeQuery(parsedOutputQuery);
21+
const parsedOutputQuery = arrowResult.toArray().map((row) => row.toJSON());
22+
const deserializedQuery = deserializeQuery(parsedOutputQuery);
2423

25-
return JSON.parse(deserializedQuery);
26-
} catch (error) {
27-
throw new Error('Failed to parse query to AST');
28-
}
24+
return JSON.parse(deserializedQuery);
2925
};

meerkat-core/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devrev/meerkat-core",
3-
"version": "0.0.87",
3+
"version": "0.0.88",
44
"dependencies": {
55
"@swc/helpers": "~0.5.0"
66
},

meerkat-core/src/ast-validator/measure-validator.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,11 @@ export const validateExpressionNode = ({
4545
validFunctions,
4646
parentNode: node,
4747
validScalarFunctions,
48+
hasAggregation: true,
4849
})
4950
);
5051
}
52+
5153
// For non-aggregation functions
5254
if (validScalarFunctions.has(node.function_name)) {
5355
return node.children.some((child) => {

meerkat-core/src/ast-validator/tests/test-data.ts

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1126,6 +1126,80 @@ export const MEASURE_TEST_CASES = [
11261126
validScalarFunctions: new Set(['/']),
11271127
expected: true,
11281128
},
1129+
{
1130+
description: 'node type FUNCTION - AVG with nested scalar function',
1131+
query: "AVG(DATE_DIFF('minute', created_date, first_response_time))",
1132+
columnNames: ['created_date', 'first_response_time'],
1133+
node: {
1134+
class: 'FUNCTION',
1135+
type: 'FUNCTION',
1136+
alias: '',
1137+
query_location: 7,
1138+
function_name: 'avg',
1139+
schema: '',
1140+
children: [
1141+
{
1142+
class: 'FUNCTION',
1143+
type: 'FUNCTION',
1144+
alias: '',
1145+
query_location: 11,
1146+
function_name: 'date_diff',
1147+
schema: '',
1148+
children: [
1149+
{
1150+
class: 'CONSTANT',
1151+
type: 'VALUE_CONSTANT',
1152+
alias: '',
1153+
query_location: 21,
1154+
value: {
1155+
type: {
1156+
id: 'VARCHAR',
1157+
type_info: null,
1158+
},
1159+
is_null: false,
1160+
value: 'minute',
1161+
},
1162+
},
1163+
{
1164+
class: 'COLUMN_REF',
1165+
type: 'COLUMN_REF',
1166+
alias: '',
1167+
query_location: 31,
1168+
column_names: ['created_date'],
1169+
},
1170+
{
1171+
class: 'COLUMN_REF',
1172+
type: 'COLUMN_REF',
1173+
alias: '',
1174+
query_location: 45,
1175+
column_names: ['first_response_time'],
1176+
},
1177+
],
1178+
filter: null,
1179+
order_bys: {
1180+
type: 'ORDER_MODIFIER',
1181+
orders: [],
1182+
},
1183+
distinct: false,
1184+
is_operator: false,
1185+
export_state: false,
1186+
catalog: '',
1187+
},
1188+
],
1189+
filter: null,
1190+
order_bys: {
1191+
type: 'ORDER_MODIFIER',
1192+
orders: [],
1193+
},
1194+
distinct: false,
1195+
is_operator: false,
1196+
export_state: false,
1197+
catalog: '',
1198+
},
1199+
validFunctions: new Set(['avg', 'count']),
1200+
validScalarFunctions: new Set(['date_diff']),
1201+
expected: true,
1202+
},
11291203
{
11301204
description: 'node type SUBQUERY',
11311205
columnNames: [

meerkat-node/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@devrev/meerkat-node",
3-
"version": "0.0.84",
3+
"version": "0.0.88",
44
"dependencies": {
55
"@swc/helpers": "~0.5.0",
66
"@devrev/meerkat-core": "*",

0 commit comments

Comments
 (0)