diff --git a/lib/cartodb/backends/dataview.js b/lib/cartodb/backends/dataview.js index a2f5327a..4f50121f 100644 --- a/lib/cartodb/backends/dataview.js +++ b/lib/cartodb/backends/dataview.js @@ -64,7 +64,13 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param return callback(err); } - return callback(null, dataviewResult); + const stats = {}; + + if (dataviewResult && dataviewResult.usesOverviews) { + stats.usesOverviews = dataviewResult.usesOverviews; + } + + return callback(null, dataviewResult, stats); }); }); }; diff --git a/lib/cartodb/models/dataview/base.js b/lib/cartodb/models/dataview/base.js index 80e021b1..13743f5b 100644 --- a/lib/cartodb/models/dataview/base.js +++ b/lib/cartodb/models/dataview/base.js @@ -21,7 +21,7 @@ function getPGTypeName (pgType) { module.exports = class BaseDataview { getResult (psql, override, callback) { - this.sql(psql, override, (err, query) => { + this.sql(psql, override, (err, query, flags = { usesOverviews : false }) => { if (err) { return callback(err); } @@ -33,7 +33,8 @@ module.exports = class BaseDataview { result = this.format(result, override); result.type = this.getType(); - + result.usesOverviews = flags.usesOverviews; + return callback(null, result); }, true); // use read-only transaction diff --git a/lib/cartodb/models/dataview/overviews/aggregation.js b/lib/cartodb/models/dataview/overviews/aggregation.js index 5df092f4..312a398e 100644 --- a/lib/cartodb/models/dataview/overviews/aggregation.js +++ b/lib/cartodb/models/dataview/overviews/aggregation.js @@ -209,7 +209,7 @@ Aggregation.prototype.sql = function(psql, override, callback) { debug(aggregationSql); - return callback(null, aggregationSql); + return callback(null, aggregationSql, { usesOverviews: true }); }; var aggregationFnQueryTpl = { diff --git a/lib/cartodb/models/dataview/overviews/formula.js b/lib/cartodb/models/dataview/overviews/formula.js index 2a97061e..dd487ccb 100644 --- a/lib/cartodb/models/dataview/overviews/formula.js +++ b/lib/cartodb/models/dataview/overviews/formula.js @@ -74,5 +74,5 @@ Formula.prototype.sql = function (psql, override, callback) { debug(formulaSql); - return callback(null, formulaSql); + return callback(null, formulaSql, { usesOverviews: true }); }; diff --git a/lib/cartodb/models/dataview/overviews/histogram.js b/lib/cartodb/models/dataview/overviews/histogram.js index 6674f6a0..cc7e7342 100644 --- a/lib/cartodb/models/dataview/overviews/histogram.js +++ b/lib/cartodb/models/dataview/overviews/histogram.js @@ -178,7 +178,7 @@ Histogram.prototype.sql = function(psql, override, callback) { var histogramSql = this._buildQuery(override); - return callback(null, histogramSql); + return callback(null, histogramSql, { usesOverviews: true }); }; Histogram.prototype._buildQuery = function (override) {