Skip to content

Commit 1554e7a

Browse files
committed
fix resolveJoinMembers()
1 parent 3a52ed9 commit 1554e7a

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

packages/cubejs-schema-compiler/src/adapter/PreAggregations.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1045,20 +1045,27 @@ export class PreAggregations {
10451045
}
10461046

10471047
private resolveJoinMembers(join: FinishedJoinTree): JoinEdgeWithMembers[] {
1048+
const joinMap = new Set<string>();
1049+
10481050
return join.joins.map(j => {
1051+
joinMap.add(j.originalFrom);
1052+
10491053
const memberPaths = this.query.collectMemberNamesFor(() => this.query.evaluateSql(j.originalFrom, j.join.sql)).map(m => m.split('.'));
1050-
const invalidMembers = memberPaths.filter(m => m[0] !== j.originalFrom && m[0] !== j.originalTo);
1054+
1055+
const invalidMembers = memberPaths.filter(m => !joinMap.has(m[0]) && m[0] !== j.originalTo);
10511056
if (invalidMembers.length) {
10521057
throw new UserError(`Members ${invalidMembers.join(', ')} in join from '${j.originalFrom}' to '${j.originalTo}' doesn't reference join cubes`);
10531058
}
1054-
const fromMembers = memberPaths.filter(m => m[0] === j.originalFrom).map(m => m.join('.'));
1059+
const fromMembers = memberPaths.filter(m => joinMap.has(m[0])).map(m => m.join('.'));
10551060
if (!fromMembers.length) {
10561061
throw new UserError(`From members are not found in [${memberPaths.map(m => m.join('.')).join(', ')}] for join ${JSON.stringify(j)}. Please make sure join fields are referencing dimensions instead of columns.`);
10571062
}
10581063
const toMembers = memberPaths.filter(m => m[0] === j.originalTo).map(m => m.join('.'));
10591064
if (!toMembers.length) {
10601065
throw new UserError(`To members are not found in [${memberPaths.map(m => m.join('.')).join(', ')}] for join ${JSON.stringify(j)}. Please make sure join fields are referencing dimensions instead of columns.`);
10611066
}
1067+
joinMap.add(j.originalTo);
1068+
10621069
return {
10631070
...j,
10641071
fromMembers,

0 commit comments

Comments
 (0)