From 3682740f08ffd9fd43afd0df92003e08010c021f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Garc=C3=ADa=20Aubert?= Date: Thu, 14 Sep 2017 12:01:41 +0200 Subject: [PATCH] Build aggregation query with string templates avoiding to join all inner templates --- lib/cartodb/models/dataview/aggregation.js | 67 ++++++++-------------- 1 file changed, 25 insertions(+), 42 deletions(-) diff --git a/lib/cartodb/models/dataview/aggregation.js b/lib/cartodb/models/dataview/aggregation.js index 627eb73a..2ba36ede 100644 --- a/lib/cartodb/models/dataview/aggregation.js +++ b/lib/cartodb/models/dataview/aggregation.js @@ -240,50 +240,33 @@ Aggregation.prototype.sql = function(psql, override, callback) { return null; } - var _query = this.query; - - var aggregationSql; - - - - if (!!override.ownFilter) { - aggregationSql = [ - categoriesCTESqlTpl({ - query: _query, - column: this.column, + var aggregationSql = ` + ${categoriesCTESqlTpl({ + query: this.query, + column: this.column, + aggregation: this.aggregation, + aggregationColumn: this.aggregationColumn, + isFloatColumn: this._isFloatColumn + })} + ${!!override.ownFilter ? + `${aggregationQueryTpl({ + _isFloatColumn: this._isFloatColumn, + _query: this.query, + _column: this.column, + _aggregation: aggregationFnQueryTpl({ aggregation: this.aggregation, - aggregationColumn: this.aggregationColumn, - isFloatColumn: this._isFloatColumn + aggregationColumn: this.aggregationColumn || 1 }), - aggregationQueryTpl({ - _isFloatColumn: this._isFloatColumn, - _query: _query, - _column: this.column, - _aggregation: aggregationFnQueryTpl({ - aggregation: this.aggregation, - aggregationColumn: this.aggregationColumn || 1 - }), - _limit: CATEGORIES_LIMIT - }) - ].join('\n'); - } else { - aggregationSql = [ - categoriesCTESqlTpl({ - query: _query, - column: this.column, - aggregation: this.aggregation, - aggregationColumn: this.aggregationColumn, - isFloatColumn: this._isFloatColumn - }), - rankedAggregationQueryTpl({ - _isFloatColumn: this._isFloatColumn, - _query: _query, - _column: this.column, - _aggregationFn: this.aggregation !== 'count' ? this.aggregation : 'sum', - _limit: CATEGORIES_LIMIT - }) - ].join('\n'); - } + _limit: CATEGORIES_LIMIT + })}` : + `${rankedAggregationQueryTpl({ + _isFloatColumn: this._isFloatColumn, + _query: this.query, + _column: this.column, + _aggregationFn: this.aggregation !== 'count' ? this.aggregation : 'sum', + _limit: CATEGORIES_LIMIT + })}`} + `; debug(aggregationSql);