Skip to content

Commit 5c6a065

Browse files
authored
fix(schema-compiler): YAML - crash on unammed measure/dimension/join, refs #7033 (#7142)
1 parent 73f5ca7 commit 5c6a065

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

packages/cubejs-schema-compiler/src/compiler/YamlCompiler.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,9 @@ export class YamlCompiler {
287287
if (memberType === 'preAggregation' && indexes) {
288288
indexes = this.yamlArrayToObj(indexes || [], `${memberType}.index`, errorsReport);
289289
}
290+
290291
if (!name) {
291-
errorsReport.error(`name isn't defined for ${memberType}: ${YAML.stringify(rest)}`);
292+
errorsReport.error(`name isn't defined for ${memberType}: ${JSON.stringify(rest)}`);
292293
return {};
293294
} else if (indexes) {
294295
return { [name]: { indexes, ...rest } };

packages/cubejs-schema-compiler/test/unit/yaml-schema.test.ts

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,4 +89,25 @@ describe('Yaml Schema Testing', () => {
8989
expect(e.message).toContain('Unexpected input during yaml transpiling: null');
9090
}
9191
});
92+
93+
it('unammed measure', async () => {
94+
const { compiler } = prepareYamlCompiler(
95+
`cubes:
96+
- name: Users
97+
sql: SELECT * FROM e2e.users
98+
dimensions:
99+
- sql: id
100+
type: number
101+
primaryKey: true
102+
`
103+
);
104+
105+
try {
106+
await compiler.compile();
107+
108+
throw new Error('compile must return an error');
109+
} catch (e: any) {
110+
expect(e.message).toContain('name isn\'t defined for dimension: ');
111+
}
112+
});
92113
});

0 commit comments

Comments
 (0)