From 28e45c09010769f390e5ea5848db4ca45c959a16 Mon Sep 17 00:00:00 2001 From: Pavel Tiunov Date: Thu, 2 Apr 2020 12:42:09 -0700 Subject: [PATCH] fix: TypeError: Cannot read property \'replace\' of null for `scheduledRefresh: true` Fixes #558 --- .../adapter/BaseQuery.js | 4 +- .../test/PreAggregationsTest.js | 47 +++++++++++++++++++ 2 files changed, 49 insertions(+), 2 deletions(-) diff --git a/packages/cubejs-schema-compiler/adapter/BaseQuery.js b/packages/cubejs-schema-compiler/adapter/BaseQuery.js index 1b8c84c3927d5..3de9db41e9788 100644 --- a/packages/cubejs-schema-compiler/adapter/BaseQuery.js +++ b/packages/cubejs-schema-compiler/adapter/BaseQuery.js @@ -1681,8 +1681,8 @@ class BaseQuery { const timeDimension = this.newTimeDimension(references.timeDimensions[0]); return this.evaluateSymbolSqlWithContext(() => [ - this.paramAllocator.buildSqlAndParams(this.aggSelectForDimension(timeDimension.cube(), timeDimension, 'min')), - this.paramAllocator.buildSqlAndParams(this.aggSelectForDimension(timeDimension.cube(), timeDimension, 'max')) + this.paramAllocator.buildSqlAndParams(this.aggSelectForDimension(timeDimension.path()[0], timeDimension, 'min')), + this.paramAllocator.buildSqlAndParams(this.aggSelectForDimension(timeDimension.path()[0], timeDimension, 'max')) ], { preAggregationQuery: true }); } diff --git a/packages/cubejs-schema-compiler/test/PreAggregationsTest.js b/packages/cubejs-schema-compiler/test/PreAggregationsTest.js index ff7acc1ee2e5a..6bdd329e361eb 100644 --- a/packages/cubejs-schema-compiler/test/PreAggregationsTest.js +++ b/packages/cubejs-schema-compiler/test/PreAggregationsTest.js @@ -178,6 +178,19 @@ describe('PreAggregations', function test() { auto: { type: 'autoRollup', maxPreAggregations: 20 + }, + partitioned: { + type: 'rollup', + measureReferences: [count], + timeDimensionReference: EveryHourVisitors.createdAt, + granularity: 'day', + partitionGranularity: 'month', + scheduledRefresh: true, + refreshKey: { + every: '1 hour', + incremental: true, + updateWindow: '1 day' + } } } }) @@ -471,6 +484,40 @@ describe('PreAggregations', function test() { }); }); + it('partitioned scheduled refresh', () => { + return compiler.compile().then(async () => { + const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, { + measures: [ + 'visitor_checkins.count' + ], + timeDimensions: [{ + dimension: 'EveryHourVisitors.createdAt', + granularity: 'day', + dateRange: ['2017-01-01', '2017-01-25'] + }], + timezone: 'America/Los_Angeles', + order: [{ + id: 'EveryHourVisitors.createdAt' + }], + preAggregationsSchema: '' + }); + + const preAggregations = cubeEvaluator.scheduledPreAggregations(); + const partitionedPreAgg = + preAggregations.find(p => p.preAggregationName === 'partitioned' && p.cube === 'visitor_checkins'); + + const minMaxQueries = query.preAggregationStartEndQueries('visitor_checkins', partitionedPreAgg.preAggregation); + + console.log(minMaxQueries); + + const res = await dbRunner.testQueries(minMaxQueries); + + res.should.be.deepEqual( + [{ max: '2017-01-06T00:00:00.000Z' }] + ); + }); + }); + it('mutable partition default refreshKey', () => { return compiler.compile().then(() => { const query = new PostgresQuery({ joinGraph, cubeEvaluator, compiler }, {