From ccaae2dd66d9fa42967aaa04f08cdbff2f4f662a Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Fri, 16 Dec 2016 17:37:05 +0100 Subject: [PATCH 1/2] Remove spurious parameter from overviews dataviews functions In the overviews-specialized dataview classes the sql-generating functions had an unneeded parameter filters. In some cases, since this parameter was not being paaased from the base dataviews class it was masking the override parameter. --- lib/cartodb/models/dataview/overviews/aggregation.js | 2 +- lib/cartodb/models/dataview/overviews/base.js | 8 ++++---- lib/cartodb/models/dataview/overviews/formula.js | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/lib/cartodb/models/dataview/overviews/aggregation.js b/lib/cartodb/models/dataview/overviews/aggregation.js index 41685ff5..a3d01b06 100644 --- a/lib/cartodb/models/dataview/overviews/aggregation.js +++ b/lib/cartodb/models/dataview/overviews/aggregation.js @@ -65,7 +65,7 @@ Aggregation.prototype.constructor = Aggregation; module.exports = Aggregation; -Aggregation.prototype.sql = function(psql, filters, override, callback) { +Aggregation.prototype.sql = function(psql, override, callback) { if (!callback) { callback = override; override = {}; diff --git a/lib/cartodb/models/dataview/overviews/base.js b/lib/cartodb/models/dataview/overviews/base.js index bbf70742..1425e2d1 100644 --- a/lib/cartodb/models/dataview/overviews/base.js +++ b/lib/cartodb/models/dataview/overviews/base.js @@ -55,20 +55,20 @@ BaseOverviewsDataview.prototype.rewrittenQuery = function(query) { }; // Default behaviour -BaseOverviewsDataview.prototype.defaultSql = function(psql, filters, override, callback) { +BaseOverviewsDataview.prototype.defaultSql = function(psql, override, callback) { var query = this.query; var dataview = this.baseDataview; if ( SETTINGS.defaultOverviews ) { query = this.rewrittenQuery(query); dataview = new this.BaseDataview(query, this.queryOptions); } - return dataview.sql(psql, filters, override, callback); + return dataview.sql(psql, override, callback); }; // default implementation that can be override in derived classes: -BaseOverviewsDataview.prototype.sql = function(psql, filters, override, callback) { - return this.defaultSql(psql, filters, override, callback); +BaseOverviewsDataview.prototype.sql = function(psql, override, callback) { + return this.defaultSql(psql, override, callback); }; BaseOverviewsDataview.prototype.search = function(psql, userQuery, callback) { diff --git a/lib/cartodb/models/dataview/overviews/formula.js b/lib/cartodb/models/dataview/overviews/formula.js index adad5f58..9e331f0b 100644 --- a/lib/cartodb/models/dataview/overviews/formula.js +++ b/lib/cartodb/models/dataview/overviews/formula.js @@ -36,7 +36,7 @@ Formula.prototype.constructor = Formula; module.exports = Formula; -Formula.prototype.sql = function(psql, filters, override, callback) { +Formula.prototype.sql = function(psql, override, callback) { var formulaQueryTpl = formulaQueryTpls[this.operation]; if ( formulaQueryTpl ) { @@ -52,5 +52,5 @@ Formula.prototype.sql = function(psql, filters, override, callback) { } // default behaviour - return this.defaultSql(psql, filters, override, callback); + return this.defaultSql(psql, override, callback); }; From 6a4f5d52ec08cfc61b19d0c12a6cc138d9bd3ddf Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Fri, 16 Dec 2016 17:51:36 +0100 Subject: [PATCH 2/2] Don't use overviews for date histograms --- lib/cartodb/models/dataview/overviews/histogram.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/cartodb/models/dataview/overviews/histogram.js b/lib/cartodb/models/dataview/overviews/histogram.js index 20dd7712..5f4d97d9 100644 --- a/lib/cartodb/models/dataview/overviews/histogram.js +++ b/lib/cartodb/models/dataview/overviews/histogram.js @@ -8,7 +8,6 @@ dot.templateSettings.strip = false; var columnTypeQueryTpl = dot.template( 'SELECT pg_typeof({{=it.column}})::oid FROM ({{=it.query}}) _cdb_histogram_column_type limit 1' ); -var columnCastTpl = dot.template("date_part('epoch', {{=it.column}})"); var BIN_MIN_NUMBER = 6; var BIN_MAX_NUMBER = 48; @@ -149,7 +148,9 @@ Histogram.prototype.sql = function(psql, override, callback) { } if (this._columnType === 'date') { - _column = columnCastTpl({column: _column}); + // overviews currently aggregate dates to NULL + // to avoid problem we don't use overviews for histograms of date columns + return this.defaultSql(psql, override, callback); } var _query = this.rewrittenQuery(this.query);