Skip to content

Commit fe9fa2a

Browse files
committed
[WIP] test(clickhouse): Add integration test for question mark in query for ClickHouse
1 parent 9482807 commit fe9fa2a

File tree

2 files changed

+82
-0
lines changed

2 files changed

+82
-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
@@ -136,6 +136,8 @@ export class ClickHouseDbRunner extends BaseDbRunner {
136136
} : {};
137137

138138
for (const [query, params] of queries) {
139+
console.log("ClickHOuse testQueries", query, params);
140+
console.log("ClickHOuse prepared", formatSql(query, params));
139141
requests.push(clickHouse.querying(formatSql(query, params), {
140142
dataObjects: true,
141143
queryOptions: {

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

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,4 +506,84 @@ describe('ClickHouse DataSchemaCompiler', () => {
506506
]);
507507
}
508508
);
509+
510+
it('question mark filter', () => {
511+
const { compiler, cubeEvaluator, joinGraph } = testPrepareCompiler(`
512+
cube('visitors', {
513+
sql: \`
514+
select * from visitors
515+
\`,
516+
517+
measures: {
518+
visitor_count: {
519+
type: 'count',
520+
sql: 'id'
521+
},
522+
visitor_revenue: {
523+
type: 'sum',
524+
sql: 'amount'
525+
},
526+
per_visitor_revenue: {
527+
type: 'number',
528+
sql: visitor_revenue + "/" + visitor_count
529+
}
530+
},
531+
532+
dimensions: {
533+
source: {
534+
type: 'string',
535+
sql: 'source'
536+
},
537+
created_at: {
538+
type: 'time',
539+
sql: 'created_at'
540+
},
541+
updated_at: {
542+
type: 'time',
543+
sql: 'updated_at'
544+
},
545+
questionMark: {
546+
sql: \`replace('some string question string???', 'string', 'with some ???')\`,
547+
type: 'string'
548+
}
549+
}
550+
})
551+
`);
552+
const result = compiler.compile().then(() => {
553+
const query = new ClickHouseQuery({ joinGraph, cubeEvaluator, compiler }, {
554+
measures: ['visitors.visitor_count'],
555+
dimensions: [],
556+
timeDimensions: [],
557+
timezone: 'America/Los_Angeles',
558+
filters: [{
559+
or: [{
560+
member: 'visitors.questionMark',
561+
operator: 'contains',
562+
values: ['with some']
563+
}, {
564+
member: 'visitors.questionMark',
565+
operator: 'equals',
566+
values: [null]
567+
}, {
568+
member: 'visitors.questionMark',
569+
operator: 'equals',
570+
values: [null, 'with some']
571+
}]
572+
}],
573+
order: []
574+
});
575+
576+
logSqlAndParams(query);
577+
578+
return dbRunner.testQuery(query.buildSqlAndParams()).then((res: any) => {
579+
expect(res).toEqual(
580+
[
581+
{ visitors__visitor_count_foo_bar: '6' }
582+
]
583+
);
584+
});
585+
});
586+
587+
return result;
588+
});
509589
});

0 commit comments

Comments
 (0)