Skip to content

Commit

Permalink
fix(@cubejs-schema-compilter): MSSQL remove order by from subqueries
Browse files Browse the repository at this point in the history
  • Loading branch information
mentzerj authored and ovr committed Feb 18, 2021
1 parent 622f398 commit 75c1903
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 1 deletion.
3 changes: 2 additions & 1 deletion packages/cubejs-schema-compiler/src/adapter/BaseQuery.js
Original file line number Diff line number Diff line change
Expand Up @@ -923,7 +923,8 @@ export class BaseQuery {
dimensions: [this.primaryKeyName(cubeName)],
filters,
segments,
timeDimensions
timeDimensions,
order: {}
});
return { prefix, subQuery, cubeName };
}
Expand Down
73 changes: 73 additions & 0 deletions packages/cubejs-schema-compiler/test/unit/mssql-query.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,57 @@ describe('MssqlQuery', () => {
sql: 'created_at'
}
}
})
cube(\`Deals\`, {
sql: \`select * from deals\`,
measures: {
amount: {
sql: \`amount\`,
type: \`sum\`
}
},
dimensions: {
salesManagerId: {
sql: \`sales_manager_id\`,
type: 'string',
primaryKey: true
}
}
})
cube(\`SalesManagers\`, {
sql: \`select * from sales_managers\`,
joins: {
Deals: {
relationship: \`hasMany\`,
sql: \`\${SalesManagers}.id = \${Deals}.sales_manager_id\`
}
},
measures: {
averageDealAmount: {
sql: \`\${dealsAmount}\`,
type: \`avg\`
}
},
dimensions: {
id: {
sql: \`id\`,
type: \`string\`,
primaryKey: true
},
dealsAmount: {
sql: \`\${Deals.amount}\`,
type: \`number\`,
subQuery: true
}
}
});
`);

Expand Down Expand Up @@ -61,4 +112,26 @@ describe('MssqlQuery', () => {

expect(finalGroupBy).toEqual('GROUP BY "visitors.createdAt_series"."date_from"');
}));

it('should not include order by clauses in subqueries',
() => compiler.compile().then(() => {
const query = new MssqlQuery(
{ joinGraph, cubeEvaluator, compiler },
{
dimensions: ['SalesManagers.id', 'SalesManagers.dealsAmount'],
}
);

const subQueryDimensions = query.collectFromMembers(
false,
query.collectSubQueryDimensionsFor.bind(query),
'collectSubQueryDimensionsFor'
);

const queryAndParams = query.buildSqlAndParams();
const subQuery: any = query.subQueryJoin(subQueryDimensions[0]);

expect(/ORDER BY/.test(subQuery.sql)).toEqual(false);
expect(queryAndParams[0]).toMatch(/ORDER BY/);
}));
});

0 comments on commit 75c1903

Please sign in to comment.