Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit f55e059

Browse files
committedFeb 24, 2025·
[DEBUG] add integration test to reproduce missing column for multiplied measure in member expression + view case
1 parent ccc33b8 commit f55e059

File tree

1 file changed

+103
-0
lines changed

1 file changed

+103
-0
lines changed
 

‎packages/cubejs-schema-compiler/test/integration/postgres/sql-generation.test.ts

+103
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,60 @@ describe('SQL Generation', () => {
547547
},
548548
}
549549
});
550+
551+
cube('orders', {
552+
sql: 'select 1 as order_id, 100 as total, 1 as user_id',
553+
joins: {
554+
users: {
555+
relationship: 'hasMany',
556+
sql: \`\${CUBE.user_id} = \${users.user_id}\`
557+
}
558+
},
559+
measures: {
560+
sum_total: {
561+
type: 'sum',
562+
sql: 'total'
563+
}
564+
},
565+
dimensions: {
566+
order_id: {
567+
type: 'number',
568+
sql: 'order_id',
569+
primaryKey: true
570+
},
571+
user_id: {
572+
type: 'number',
573+
sql: 'user_id',
574+
}
575+
}
576+
});
577+
cube('users', {
578+
sql: 'select 1 as user_id, false as internal',
579+
dimensions: {
580+
user_id: {
581+
type: 'number',
582+
sql: 'user_id',
583+
primaryKey: true
584+
},
585+
internal: {
586+
type: 'boolean',
587+
sql: 'internal'
588+
},
589+
}
590+
});
591+
view('revenue_view', {
592+
cubes: [
593+
{
594+
join_path: 'orders',
595+
includes: ['sum_total', 'user_id']
596+
},
597+
{
598+
join_path: 'orders.users',
599+
includes: ['internal']
600+
}
601+
]
602+
});
603+
550604
`);
551605

552606
it('simple join', async () => {
@@ -3032,6 +3086,55 @@ describe('SQL Generation', () => {
30323086
]
30333087
));
30343088

3089+
it('multiplied measures missing column', async () => runQueryTest(
3090+
{
3091+
measures: [
3092+
{
3093+
// eslint-disable-next-line no-new-func
3094+
expression: new Function(
3095+
'revenue_view',
3096+
// eslint-disable-next-line no-template-curly-in-string
3097+
'return `${revenue_view.sum_total}`'
3098+
),
3099+
name: 'revenue_total',
3100+
expressionName: 'revenue_total',
3101+
// eslint-disable-next-line no-template-curly-in-string
3102+
definition: '${revenue_view.sum_total}',
3103+
cubeName: 'revenue_view',
3104+
},
3105+
{
3106+
// eslint-disable-next-line no-new-func
3107+
expression: new Function(
3108+
'revenue_view',
3109+
// eslint-disable-next-line no-template-curly-in-string
3110+
'return `COUNT(DISTINCT ${revenue_view.user_id})`'
3111+
),
3112+
name: 'distinct_users',
3113+
expressionName: 'distinct_users',
3114+
// eslint-disable-next-line no-template-curly-in-string
3115+
definition: 'COUNT(DISTINCT ${revenue_view.user_id})',
3116+
cubeName: 'revenue_view',
3117+
},
3118+
],
3119+
dimensions: [
3120+
{
3121+
// eslint-disable-next-line no-new-func
3122+
expression: new Function(
3123+
'revenue_view',
3124+
// eslint-disable-next-line no-template-curly-in-string
3125+
'return `${revenue_view.internal}`'
3126+
),
3127+
name: 'internal_user',
3128+
expressionName: 'internal_user',
3129+
// eslint-disable-next-line no-template-curly-in-string
3130+
definition: '${revenue_view.internal}',
3131+
cubeName: 'revenue_view',
3132+
},
3133+
],
3134+
},
3135+
[]
3136+
));
3137+
30353138
// TODO not implemented
30363139
// it('multi stage bucketing', async () => runQueryTest(
30373140
// {

0 commit comments

Comments
 (0)
Please sign in to comment.