From 9f3acd572bcd2421bf8d3581c4c6287b62e77313 Mon Sep 17 00:00:00 2001 From: Pavel Tiunov Date: Sat, 30 Oct 2021 18:36:02 -0700 Subject: [PATCH] fix: Empty data partitioned pre-aggregations are incorrectly handled -- value provided is not in a recognized RFC2822 or ISO format --- packages/cubejs-backend-shared/src/time.ts | 6 +++++- .../src/orchestrator/PreAggregations.ts | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/packages/cubejs-backend-shared/src/time.ts b/packages/cubejs-backend-shared/src/time.ts index 23902553eeba..745b651f2392 100644 --- a/packages/cubejs-backend-shared/src/time.ts +++ b/packages/cubejs-backend-shared/src/time.ts @@ -85,7 +85,11 @@ export const utcToLocalTimeZone = (timezone: string, timestampFormat: string, ti export const extractDate = (data: any): string => { data = JSON.parse(JSON.stringify(data)); - return moment.tz(data[0] && data[0][Object.keys(data[0])[0]], 'UTC').utc().format(moment.HTML5_FMT.DATETIME_LOCAL_MS); + const value = data[0] && data[0][Object.keys(data[0])[0]]; + if (!value) { + return value; + } + return moment.tz(value, 'UTC').utc().format(moment.HTML5_FMT.DATETIME_LOCAL_MS); }; export const addSecondsToLocalTimestamp = (timestamp: string, timezone: string, seconds: number): Date => { diff --git a/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts b/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts index 34b289d3f67e..66f084984e17 100644 --- a/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts +++ b/packages/cubejs-query-orchestrator/src/orchestrator/PreAggregations.ts @@ -1189,6 +1189,9 @@ export class PreAggregationPartitionRangeLoader { private async partitionRanges() { const buildRange = await this.loadBuildRange(); + if (!buildRange[0] || !buildRange[1]) { + return []; + } let dateRange = PreAggregationPartitionRangeLoader.intersectDateRanges( buildRange, this.preAggregation.matchedTimeDimensionDateRange,