Use sql_raw for query without aggregation
This commit is contained in:
@@ -275,16 +275,13 @@ function formatResultFields(dbConnection, flds) {
|
||||
|
||||
MapnikLayerStats.prototype.getStats =
|
||||
function (layer, dbConnection, callback) {
|
||||
let aggrQuery = layer.options.sql_raw || layer.options.sql;
|
||||
let preQuery = layer.options.aggregation_metadata ?
|
||||
layer.options.aggregation_metadata.pre_aggregation_sql :
|
||||
aggrQuery;
|
||||
let aggrQuery = layer.options.sql;
|
||||
let preQuery = layer.options.sql_raw || aggrQuery;
|
||||
|
||||
let context = {
|
||||
dbConnection,
|
||||
preQuery,
|
||||
aggrQuery,
|
||||
aggrMeta: layer.options.aggregation_metadata,
|
||||
metaOptions: layer.options.metadata || {}
|
||||
};
|
||||
|
||||
|
||||
@@ -84,7 +84,7 @@ module.exports = class AggregationMapConfigAdapter {
|
||||
|
||||
_adaptLayer (connection, mapConfig, layer, index) {
|
||||
return new Promise((resolve, reject) => {
|
||||
this._shouldAdaptLayer(connection, mapConfig, layer, index, (err, shouldAdapt, aggrMeta) => {
|
||||
this._shouldAdaptLayer(connection, mapConfig, layer, index, (err, shouldAdapt) => {
|
||||
if (err) {
|
||||
return reject(err);
|
||||
}
|
||||
@@ -93,7 +93,6 @@ module.exports = class AggregationMapConfigAdapter {
|
||||
return resolve({ layer, index, adapted: shouldAdapt });
|
||||
}
|
||||
|
||||
const sqlQuery = layer.options.sql;
|
||||
const sqlQueryWrap = layer.options.sql_wrap;
|
||||
|
||||
let aggregationSql = mapConfig.getAggregatedQuery(index);
|
||||
@@ -102,6 +101,12 @@ module.exports = class AggregationMapConfigAdapter {
|
||||
aggregationSql = sqlQueryWrap.replace(/<%=\s*sql\s*%>/g, aggregationSql);
|
||||
}
|
||||
|
||||
if (!layer.options.sql_raw) {
|
||||
// if sql_wrap is present, the original query should already be
|
||||
// in sql_raw (with sql being the wrapped query);
|
||||
// otherwise we keep the now the original query in sql_raw
|
||||
layer.options.sql_raw = layer.options.sql;
|
||||
}
|
||||
layer.options.sql = aggregationSql;
|
||||
|
||||
mapConfig.getLayerAggregationColumns(index, (err, columns) => {
|
||||
@@ -111,12 +116,6 @@ module.exports = class AggregationMapConfigAdapter {
|
||||
|
||||
layer.options.columns = columns;
|
||||
|
||||
layer.options.aggregation_metadata = {
|
||||
pre_aggregation_sql: sqlQueryWrap || sqlQuery,
|
||||
geometry_type: aggrMeta.type,
|
||||
pre_aggregation_count: aggrMeta.count
|
||||
};
|
||||
|
||||
return resolve({ layer, index, adapted: shouldAdapt });
|
||||
});
|
||||
});
|
||||
@@ -161,7 +160,7 @@ module.exports = class AggregationMapConfigAdapter {
|
||||
return callback(null, false);
|
||||
}
|
||||
|
||||
callback(null, true, result);
|
||||
callback(null, true);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -117,7 +117,9 @@ TurboCartoAdapter.prototype._parseCartoCss = function (username, params, layer,
|
||||
|
||||
var layerSql = layer.options.sql;
|
||||
var layerRawSql = layer.options.sql_raw;
|
||||
if (SubstitutionTokens.hasTokens(layerSql) && layerRawSql) {
|
||||
if (SubstitutionTokens.hasTokens(layerSql) && layerRawSql && layer.options.sql_wrap) {
|
||||
// For wrapped queries we'll derive the tokens from the data extent
|
||||
// instead of the whole Earth/root tile.
|
||||
var self = this;
|
||||
var tokensQuery = tokensQueryTpl({_sql: layerRawSql});
|
||||
return pg.query(tokensQuery, function(err, resultSet) {
|
||||
|
||||
Reference in New Issue
Block a user