diff --git a/lib/cartodb/utils/overviews_query_rewriter.js b/lib/cartodb/utils/overviews_query_rewriter.js index faad459d..e2c7e29d 100644 --- a/lib/cartodb/utils/overviews_query_rewriter.js +++ b/lib/cartodb/utils/overviews_query_rewriter.js @@ -213,24 +213,24 @@ function overview_table_for_zoom_level(table_overviews, zoom_level) { } // Transform an SQL query so that it uses overviews. -// overviews contains metadata about the overviews to be used: -// { 'table-name': {1: { table: 'overview-table-1' }, ... }, ... } // // For a given query `SELECT * FROM table`, if any of tables in it // has overviews as defined by the provided metadat, the query will // be transform into something similar to this: // // WITH _vovw_scale AS ( ... ), -- define scale level -// WITH _vovw_table AS ( ... ), -- define union of overviews and base table -// SELECT * FROM _vovw_table -- query with table replaced by _vovw_table +// SELECT * FROM -- in the query the table is replaced by: +// ( ... ) AS _vovw_table -- a union of overviews and base table // -// This transformation can in principle be applied to arbitrary queries -// (except for the case of queries that include the name of tables with -// overviews inside text literals: at the current table name substitution -// doesnn't prevent substitution inside literals). -// But the transformation will currently only be applied to simple queries -// of the form detected by the overviews_supported_query function. -// TODO: document recent changes (zoom_level option, filters...) +// The data argument has the form: +// { +// overviews: // overview tables metadata +// { 'table-name': {1: { table: 'overview-table-1' }, ... }, ... }, +// zoom_level: ..., // optional zoom level +// filters: ..., // filters definition +// unfiltered_query: ..., // query without the filters +// bbox_filter: ... // bounding-box filter +// } OverviewsQueryRewriter.prototype.query = function(query, data, options) { options = options || {}; @@ -258,11 +258,6 @@ OverviewsQueryRewriter.prototype.query = function(query, data, options) { // could not or didn't need to alter the query rewritten_query = query; } else { - // TODO: determine if overviews can be used for the filters. - // Otherwise use the base table. - // Applicability of the filters should depend both on the expected - // row count of the result and on the columns to be filter and the - // way they're agregated in overviews. rewritten_query = apply_filters_to_query(rewritten_query, filters, bbox_filter); }