Skip to content

Commit 49111c2

Browse files
committed
Add integration testing for ordering with collation
1 parent 1ea8d11 commit 49111c2

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

packages/cubejs-schema-compiler/test/integration/clickhouse/ClickHouseDbRunner.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@ export class ClickHouseDbRunner {
4444
(4, 400, '2017-01-06 16:00:00', '2017-01-24 16:00:00', 2, null, 120.120, 10.60),
4545
(5, 500, '2017-01-06 16:00:00', '2017-01-24 16:00:00', 2, null, 120.120, 58.10),
4646
(6, 500, '2016-09-06 16:00:00', '2016-09-06 16:00:00', 2, null, 120.120, 58.10)
47+
(7, 300, '2017-01-07 16:00:00', '2017-01-25 16:00:00', 2, 'Google', 120.120, 59.60),
48+
4749
`, { queryOptions: { session_id: clickHouse.sessionId, join_use_nulls: '1' } }),
4850
await clickHouse.querying(`
4951
INSERT INTO

packages/cubejs-schema-compiler/test/integration/clickhouse/clickhouse-dataschema-compiler.test.ts

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,41 @@ describe('ClickHouse DataSchemaCompiler', () => {
375375
return true;
376376
});
377377
}
378+
it('collation in order by', async () => {
379+
const { compiler, cubeEvaluator, joinGraph } = testPrepareCompiler(`
380+
cube('visitors', {
381+
sql: \`
382+
select * from visitors
383+
\`,
384+
385+
dimensions: {
386+
source: {
387+
type: 'string',
388+
sql: 'source'
389+
}
390+
}
391+
})
392+
`);
393+
await compiler.compile();
394+
395+
const query = new ClickHouseQuery({ joinGraph, cubeEvaluator, compiler }, {
396+
measures: [],
397+
dimensions: ['visitors.source'],
398+
order: [{
399+
id: 'visitors.source',
400+
desc: false
401+
}],
402+
timezone: 'America/Los_Angeles'
403+
});
404+
logSqlAndParams(query);
405+
406+
const sqlAndParams = query.buildSqlAndParams();
407+
const res = await dbRunner.testQuery(sqlAndParams);
408+
const sql = sqlAndParams[0];
409+
expect(sql).toMatch('ORDER BY source COLLATE \'en\'');
410+
411+
expect(res).toEqual([{ visitors__source: 'google' }, { visitors__source: 'Google' }, { visitors__source: 'some' }]);
412+
});
378413

379414
it('export import', () => {
380415
const { compiler, cubeEvaluator, joinGraph } = prepareCompiler({

0 commit comments

Comments
 (0)