From 220f1d6a7372d374903d329dad65b941eec648d3 Mon Sep 17 00:00:00 2001 From: Eneko Lakasta Date: Thu, 18 Jan 2018 15:27:54 +0100 Subject: [PATCH 01/28] use original column name in group by instead of alias --- lib/cartodb/models/dataview/aggregation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cartodb/models/dataview/aggregation.js b/lib/cartodb/models/dataview/aggregation.js index 40774353..f5afe16b 100644 --- a/lib/cartodb/models/dataview/aggregation.js +++ b/lib/cartodb/models/dataview/aggregation.js @@ -120,7 +120,7 @@ const aggregationQueryTpl = ctx => ` ${ctx.isFloatColumn ? `${specialNumericValuesColumns(ctx)}` : '' } FROM (${ctx.query}) _cdb_aggregation_all, summary, categories_summary_min_max, categories_summary_count GROUP BY - category, + ${ctx.column}, nulls_count, min_val, max_val, From bc7a5562977ce4e9f7da6fb7e2969d1c17c9bb1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Fri, 26 Jan 2018 12:37:10 +0100 Subject: [PATCH 02/28] removing category cast to string in aggregation --- lib/cartodb/models/dataview/aggregation.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cartodb/models/dataview/aggregation.js b/lib/cartodb/models/dataview/aggregation.js index 40774353..9b5d62ef 100644 --- a/lib/cartodb/models/dataview/aggregation.js +++ b/lib/cartodb/models/dataview/aggregation.js @@ -74,7 +74,7 @@ const specialNumericValuesColumns = () => `, nans_count, infinities_count`; const rankedAggregationQueryTpl = ctx => ` SELECT - CAST(category AS text), + category, value, false as agg, nulls_count, @@ -109,7 +109,7 @@ const rankedAggregationQueryTpl = ctx => ` const aggregationQueryTpl = ctx => ` SELECT - CAST(${ctx.column} AS text) AS category, + ${ctx.column} AS category, ${ctx.aggregationFn} AS value, false as agg, nulls_count, From 99421b613c106b916adf5efa4aac06ffe56db657 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Fri, 26 Jan 2018 15:24:21 +0100 Subject: [PATCH 03/28] moving 'other' outside of the query allowing queries of different types --- lib/cartodb/models/dataview/aggregation.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/models/dataview/aggregation.js b/lib/cartodb/models/dataview/aggregation.js index 9b5d62ef..dbdb4277 100644 --- a/lib/cartodb/models/dataview/aggregation.js +++ b/lib/cartodb/models/dataview/aggregation.js @@ -87,7 +87,7 @@ const rankedAggregationQueryTpl = ctx => ` WHERE rank < ${ctx.limit} UNION ALL SELECT - 'Other' category, + null category, ${ctx.aggregation !== 'count' ? ctx.aggregation : 'sum'}(value) as value, true as agg, nulls_count, @@ -282,7 +282,7 @@ module.exports = class Aggregation extends BaseDataview { max_val = 0, categories_count = 0 } = result.rows[0] || {}; - + return { aggregation: this.aggregation, count: count, @@ -292,7 +292,13 @@ module.exports = class Aggregation extends BaseDataview { min: min_val, max: max_val, categoriesCount: categories_count, - categories: result.rows.map(({ category, value, agg }) => ({ category, value, agg })) + categories: result.rows.map(({ category, value, agg }) => { + return { + category: agg ? 'Others' : category, + value, + agg + }; + }) }; } From 8c839e214d9e0be13cb85f1680315e5e15673617 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Fri, 26 Jan 2018 15:44:21 +0100 Subject: [PATCH 04/28] changing the value of string --- lib/cartodb/models/dataview/aggregation.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/cartodb/models/dataview/aggregation.js b/lib/cartodb/models/dataview/aggregation.js index dbdb4277..d4d1baf5 100644 --- a/lib/cartodb/models/dataview/aggregation.js +++ b/lib/cartodb/models/dataview/aggregation.js @@ -294,7 +294,7 @@ module.exports = class Aggregation extends BaseDataview { categoriesCount: categories_count, categories: result.rows.map(({ category, value, agg }) => { return { - category: agg ? 'Others' : category, + category: agg ? 'Other' : category, value, agg }; From 7c9b4b7283fec02d4150bb0e97211c28427d83de Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Mon, 29 Jan 2018 12:40:59 +0100 Subject: [PATCH 05/28] Add test to check that cartodb_id is preseent in aggregations See #846 This revealss that point-grid aggregation is missing cartodb_id --- test/acceptance/aggregation.js | 35 ++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/test/acceptance/aggregation.js b/test/acceptance/aggregation.js index f601ca1d..4978b920 100644 --- a/test/acceptance/aggregation.js +++ b/test/acceptance/aggregation.js @@ -1366,6 +1366,41 @@ describe('aggregation', function () { }); }); }); + + ['centroid', 'point-sample', 'point-grid'].forEach(placement => { + it(`cartodb_id should be present in ${placement} aggregation`, function(done) { + this.mapConfig = createVectorMapConfig([ + { + type: 'cartodb', + options: { + sql: POINTS_SQL_1, + aggregation: { + placement: placement, + threshold: 1 + }, + cartocss: '#layer { marker-width: 1; }', + cartocss_version: '2.3.0', + interactivity: ['cartodb_id'] + } + } + ]); + + this.testClient = new TestClient(this.mapConfig); + this.testClient.getLayergroup((err, body) => { + if (err) { + return done(err); + } + + assert.equal(typeof body.metadata, 'object'); + assert.ok(Array.isArray(body.metadata.layers)); + + body.metadata.layers.forEach(layer => assert.ok(layer.meta.aggregation.mvt)); + body.metadata.layers.forEach(layer => assert.ok(layer.meta.aggregation.png)); + + done(); + }); + }); + }); }); }); }); From f644b3a226d7c3345ce5083e90629ca2221acf19 Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Mon, 29 Jan 2018 12:49:27 +0100 Subject: [PATCH 06/28] Add cartodb_id to point-grid aggregation Fixes #846 --- lib/cartodb/models/aggregation/aggregation-query.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/cartodb/models/aggregation/aggregation-query.js b/lib/cartodb/models/aggregation/aggregation-query.js index 2a09efde..d50bb458 100644 --- a/lib/cartodb/models/aggregation/aggregation-query.js +++ b/lib/cartodb/models/aggregation/aggregation-query.js @@ -211,6 +211,7 @@ const aggregationQueryTemplates = { GROUP BY _cdb_gx, _cdb_gy ${dimensionNames(ctx)} ) SELECT + row_number() over() AS cartodb_id, ST_SetSRID(ST_MakePoint((_cdb_gx+0.5)*res, (_cdb_gy+0.5)*res), 3857) AS the_geom_webmercator ${dimensionNames(ctx)} ${aggregateColumnNames(ctx)} From 6f4e338dcbce2290f09e16b28e5158d5e727117b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 29 Jan 2018 15:19:07 +0100 Subject: [PATCH 07/28] version 5.0.0 --- NEWS.md | 6 ++++-- package.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index 6569f3e7..aee22f64 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,8 +1,10 @@ # Changelog -## 4.8.1 -Released 2018-mm-dd +## 5.0.0 +Released 2018-01-29 +Backward incompatible changes: +- Aggregation dataview returns categories with the same type as the database type. For example, if we are aggretating by a numeric field, the resulting JSON will contain a number instead of a stringified number. ## 4.8.0 Released 2018-01-04 diff --git a/package.json b/package.json index e500a253..2ac978e2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "4.8.1", + "version": "5.0.0", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From 0dc7872256080ec01f5c4dc07e92513b8cda2d49 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Simon=20Mart=C3=ADn?= Date: Mon, 29 Jan 2018 15:26:41 +0100 Subject: [PATCH 08/28] stubs next version --- NEWS.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index aee22f64..82114014 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,9 @@ # Changelog +## 5.0.1 +Released 2018-mm-dd + + ## 5.0.0 Released 2018-01-29 diff --git a/package.json b/package.json index 2ac978e2..4ab2fe2b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "5.0.0", + "version": "5.0.1", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From debb174af457edc08cfa9b4cff665dcd20a8c305 Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Mon, 29 Jan 2018 15:44:24 +0100 Subject: [PATCH 09/28] Add test for aggregation without the_geom Only the_geom_webmercator is required for aggregation See #841 --- test/acceptance/aggregation.js | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/acceptance/aggregation.js b/test/acceptance/aggregation.js index 4978b920..1c76165d 100644 --- a/test/acceptance/aggregation.js +++ b/test/acceptance/aggregation.js @@ -92,6 +92,14 @@ describe('aggregation', function () { } `; + const POINTS_SQL_ONLY_WEBMERCATOR = ` + select + x + 4 as cartodb_id, + st_transform(st_setsrid(st_makepoint(x*10, x*10), 4326), 3857) as the_geom_webmercator, + x as value + from generate_series(-3, 3) x + `; + function createVectorMapConfig (layers = [ { type: 'cartodb', @@ -1401,6 +1409,35 @@ describe('aggregation', function () { }); }); }); + + it('should only require the_geom_webmercator for aggregation', function (done) { + this.mapConfig = createVectorMapConfig([ + { + type: 'cartodb', + options: { + sql: POINTS_SQL_ONLY_WEBMERCATOR, + aggregation: { + threshold: 1 + } + } + } + ]); + this.testClient = new TestClient(this.mapConfig); + + this.testClient.getLayergroup((err, body) => { + if (err) { + return done(err); + } + + assert.equal(typeof body.metadata, 'object'); + assert.ok(Array.isArray(body.metadata.layers)); + + body.metadata.layers.forEach(layer => assert.ok(layer.meta.aggregation.mvt)); + body.metadata.layers.forEach(layer => assert.ok(!layer.meta.aggregation.png)); + + done(); + }); + }); }); }); }); From 7641542e67f58ec745410ac998d8b55c77ca9d0c Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Mon, 29 Jan 2018 15:48:35 +0100 Subject: [PATCH 10/28] Check the type of the_geom_webmercator for aggregation Fixes #841 --- lib/cartodb/models/aggregation/aggregation-mapconfig.js | 4 ++++ lib/cartodb/models/aggregation/aggregation-query.js | 1 + .../models/mapconfig/adapter/aggregation-mapconfig-adapter.js | 3 ++- lib/cartodb/utils/query-utils.js | 4 ++-- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/cartodb/models/aggregation/aggregation-mapconfig.js b/lib/cartodb/models/aggregation/aggregation-mapconfig.js index 99ed32c1..50e4dcfe 100644 --- a/lib/cartodb/models/aggregation/aggregation-mapconfig.js +++ b/lib/cartodb/models/aggregation/aggregation-mapconfig.js @@ -47,6 +47,10 @@ module.exports = class AggregationMapConfig extends MapConfig { return AggregationMapConfig.SUPPORTED_GEOMETRY_TYPES.includes(geometryType); } + static getAggregationGeometryColumn() { + return aggregationQuery.GEOMETRY_COLUMN; + } + constructor (user, config, connection, datasource) { super(config, datasource); diff --git a/lib/cartodb/models/aggregation/aggregation-query.js b/lib/cartodb/models/aggregation/aggregation-query.js index d50bb458..7bb133d9 100644 --- a/lib/cartodb/models/aggregation/aggregation-query.js +++ b/lib/cartodb/models/aggregation/aggregation-query.js @@ -250,3 +250,4 @@ const aggregationQueryTemplates = { }; module.exports.SUPPORTED_PLACEMENTS = Object.keys(aggregationQueryTemplates); +module.exports.GEOMETRY_COLUMN = 'the_geom_webmercator'; diff --git a/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js b/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js index 6aa0eaf2..67c5eac4 100644 --- a/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js +++ b/lib/cartodb/models/mapconfig/adapter/aggregation-mapconfig-adapter.js @@ -122,7 +122,8 @@ module.exports = class AggregationMapConfigAdapter { } const aggregationMetadata = queryUtils.getAggregationMetadata({ - query: layer.options.sql_raw ? layer.options.sql_raw : layer.options.sql + query: layer.options.sql_raw ? layer.options.sql_raw : layer.options.sql, + geometryColumn: AggregationMapConfig.getAggregationGeometryColumn() }); connection.query(aggregationMetadata, (err, res) => { diff --git a/lib/cartodb/utils/query-utils.js b/lib/cartodb/utils/query-utils.js index c0d0aec2..c1b56276 100644 --- a/lib/cartodb/utils/query-utils.js +++ b/lib/cartodb/utils/query-utils.js @@ -32,8 +32,8 @@ module.exports.getAggregationMetadata = ctx => ` ${getQueryRowEstimation(ctx.query)} ), geometryType AS ( - SELECT ST_GeometryType(the_geom) as geom_type - FROM (${ctx.query}) AS __cdb_query WHERE the_geom IS NOT NULL LIMIT 1 + SELECT ST_GeometryType(${ctx.geometryColumn}) as geom_type + FROM (${ctx.query}) AS __cdb_query WHERE ${ctx.geometryColumn} IS NOT NULL LIMIT 1 ) SELECT rows AS count, From e3cf69ac1ac9195163fd815edbbedcababcb553b Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Fri, 12 Jan 2018 18:15:20 +0100 Subject: [PATCH 11/28] Bump windshaft version That version contains our flavor of mapnik 3.0.15 with a bunch of patches. See https://github.com/CartoDB/Windshaft/blob/master/NEWS.md#version-431 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 4ab2fe2b..f20e8c5f 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "step-profiler": "~0.3.0", "turbo-carto": "0.20.2", "underscore": "~1.6.0", - "windshaft": "4.2.0", + "windshaft": "4.3.1", "yargs": "~5.0.0" }, "devDependencies": { From 2a767cdb8345d64e7ac7102426a193fc46752b83 Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Mon, 15 Jan 2018 11:14:33 +0100 Subject: [PATCH 12/28] Update yarn.lock --- yarn.lock | 126 +++++++++++++++++++++++++++++------------------------- 1 file changed, 67 insertions(+), 59 deletions(-) diff --git a/yarn.lock b/yarn.lock index 7f7be5ed..3b392300 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,12 +2,33 @@ # yarn lockfile v1 -abaculus@cartodb/abaculus#2.0.3-cdb1: - version "2.0.3-cdb1" - resolved "https://codeload.github.com/cartodb/abaculus/tar.gz/f5f34e1c80cdd8d49edd1d6fe3b2220ab2e23aaf" +"@carto/mapnik@3.6.2-carto.2", "@carto/mapnik@~3.6.2-carto.0": + version "3.6.2-carto.2" + resolved "https://registry.yarnpkg.com/@carto/mapnik/-/mapnik-3.6.2-carto.2.tgz#45a055fd2d39530a873ef9ce5a325baacc81c196" dependencies: + mapnik-vector-tile "1.5.0" + nan "~2.7.0" + node-pre-gyp "~0.6.30" + protozero "1.5.1" + +"@carto/tilelive-bridge@github:cartodb/tilelive-bridge#2.5.1-cdb1": + version "2.5.1-cdb1" + resolved "https://codeload.github.com/cartodb/tilelive-bridge/tar.gz/b0b5559f948e77b337bc9a9ae0bf6ec4249fba21" + dependencies: + "@carto/mapnik" "~3.6.2-carto.0" + "@mapbox/sphericalmercator" "~1.0.1" + mapnik-pool "~0.1.3" + +"@mapbox/sphericalmercator@~1.0.1": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@mapbox/sphericalmercator/-/sphericalmercator-1.0.5.tgz#70237b9774095ed1cfdbcea7a8fd1fc82b2691f2" + +"abaculus@github:cartodb/abaculus#2.0.3-cdb2": + version "2.0.3-cdb2" + resolved "https://codeload.github.com/cartodb/abaculus/tar.gz/6468e0e3fddb2b23f60b9a3156117cff0307f6dc" + dependencies: + "@carto/mapnik" "~3.6.2-carto.0" d3-queue "^2.0.2" - mapnik "~3.5.0" sphericalmercator "1.0.x" abbrev@1: @@ -95,8 +116,8 @@ assert-plus@^0.2.0: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234" assertion-error@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.0.2.tgz#13ca515d86206da0bac66e834dd397d87581094c" + version "1.1.0" + resolved "https://registry.yarnpkg.com/assertion-error/-/assertion-error-1.1.0.tgz#e60b6b0e8f301bd97e5375215bda406c85118c0b" async@1.x, async@^1.4.0, async@^1.5.2: version "1.5.2" @@ -226,7 +247,7 @@ camshaft@0.60.0: dot "^1.0.3" request "^2.69.0" -canvas@cartodb/node-canvas#1.6.2-cdb2: +"canvas@github:cartodb/node-canvas#1.6.2-cdb2": version "1.6.2-cdb2" resolved "https://codeload.github.com/cartodb/node-canvas/tar.gz/8acf04557005c633f9e68524488a2657c04f3766" dependencies: @@ -252,7 +273,7 @@ carto@0.16.3: optimist "~0.6.0" underscore "~1.6.0" -carto@cartodb/carto#0.15.1-cdb3: +"carto@github:cartodb/carto#0.15.1-cdb3": version "0.15.1-cdb3" resolved "https://codeload.github.com/cartodb/carto/tar.gz/945f5efb74fd1af1f5e1f69f409f9567f94fb5a7" dependencies: @@ -480,10 +501,14 @@ delegates@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" -depd@1.1.1, depd@~1.1.1: +depd@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.1.tgz#5783b4e1c459f06fa5ca27f991f3d06e7a310359" +depd@~1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + destroy@~1.0.4: version "1.0.4" resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.0.4.tgz#978857442c44749e4206613e37946205826abd80" @@ -549,8 +574,8 @@ ee-first@1.1.1: resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" encodeurl@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.1.tgz#79e3d58655346909fe6f0f45a5de68103b294d20" + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" entities@1.0: version "1.0.0" @@ -823,7 +848,7 @@ glob@^6.0.1: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.5, glob@^7.1.1: +glob@^7.0.5, glob@^7.1.1, glob@^7.1.2: version "7.1.2" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15" dependencies: @@ -842,9 +867,9 @@ graceful-fs@^4.1.2: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -grainstore@~1.8.0: - version "1.8.0" - resolved "https://registry.yarnpkg.com/grainstore/-/grainstore-1.8.0.tgz#9398729df88f3aecb55ffbb415d541dcca4420af" +grainstore@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/grainstore/-/grainstore-1.8.1.tgz#5a0f9ef35dedffb4a393d5339dffc2a8ae19a897" dependencies: carto "0.16.3" debug "~3.1.0" @@ -1073,8 +1098,8 @@ istanbul@~0.4.3: wordwrap "^1.0.0" js-base64@^2.1.9: - version "2.4.0" - resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.0.tgz#9e566fee624751a1d720c966cd6226d29d4025aa" + version "2.4.3" + resolved "https://registry.yarnpkg.com/js-base64/-/js-base64-2.4.3.tgz#2e545ec2b0f2957f41356510205214e98fad6582" js-string-escape@1.0.1: version "1.0.1" @@ -1273,18 +1298,9 @@ mapnik-reference@~8.5.3: dependencies: semver "^5.1.0" -mapnik-vector-tile@~1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/mapnik-vector-tile/-/mapnik-vector-tile-1.2.2.tgz#42795ca211dd274a9a4af5bf6cfe3b0bfe0ba243" - -mapnik@3.5.14, mapnik@~3.5.0: - version "3.5.14" - resolved "https://registry.yarnpkg.com/mapnik/-/mapnik-3.5.14.tgz#632bd6635c72c0214a707549309ba416594afff7" - dependencies: - mapnik-vector-tile "~1.2.2" - nan "~2.4.0" - node-pre-gyp "~0.6.30" - protozero "~1.4.2" +mapnik-vector-tile@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/mapnik-vector-tile/-/mapnik-vector-tile-1.5.0.tgz#c647bfb8027e9dc40db583505a436f35e2101407" media-typer@0.3.0: version "0.3.0" @@ -1633,7 +1649,7 @@ pg-types@1.*: postgres-date "~1.0.0" postgres-interval "^1.1.0" -pg@cartodb/node-postgres#6.1.6-cdb1: +"pg@github:cartodb/node-postgres#6.1.6-cdb1": version "6.1.6" resolved "https://codeload.github.com/cartodb/node-postgres/tar.gz/3eef52dd1e655f658a4ee8ac5697688b3ecfed44" dependencies: @@ -1737,9 +1753,9 @@ propagate@0.3.x: version "0.3.1" resolved "https://registry.yarnpkg.com/propagate/-/propagate-0.3.1.tgz#e3a84404a7ece820dd6bbea9f6d924e3135ae09c" -protozero@~1.4.2: - version "1.4.5" - resolved "https://registry.yarnpkg.com/protozero/-/protozero-1.4.5.tgz#80eaa80a4f9c751465c4cb2620d8233b50ec1aff" +protozero@1.5.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/protozero/-/protozero-1.5.1.tgz#5a27df6fb6e1ed743f510812ae76c082f5b16638" proxy-addr@~2.0.2: version "2.0.2" @@ -1778,8 +1794,8 @@ raw-body@2.3.2: unpipe "1.0.0" rc@^1.1.7: - version "1.2.2" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.2.tgz#d8ce9cb57e8d64d9c7badd9876c7c34cbe3c7077" + version "1.2.4" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.4.tgz#a0f606caae2a3b862bbd0ef85482c0125b315fa3" dependencies: deep-extend "~0.4.0" ini "~1.3.0" @@ -1950,8 +1966,8 @@ safe-json-stringify@~1: resolved "https://registry.yarnpkg.com/safe-json-stringify/-/safe-json-stringify-1.0.4.tgz#81a098f447e4bbc3ff3312a243521bc060ef5911" "semver@2 || 3 || 4 || 5", semver@^5.1.0, semver@^5.3.0: - version "5.4.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" + version "5.5.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.5.0.tgz#dc4bbc7a6ca9d916dee5d43516f0092b58f7b8ab" semver@4.3.2: version "4.3.2" @@ -2223,20 +2239,12 @@ through@2: version "2.3.8" resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" -tilelive-bridge@cartodb/tilelive-bridge#2.3.1-cdb4: - version "2.3.1-cdb4" - resolved "https://codeload.github.com/cartodb/tilelive-bridge/tar.gz/faa2b638da2d119b78281575d40255cb523f6ca6" - dependencies: - mapnik "~3.5.0" - mapnik-pool "~0.1.3" - sphericalmercator "1.0.x" - -tilelive-mapnik@cartodb/tilelive-mapnik#0.6.18-cdb3: - version "0.6.18-cdb3" - resolved "https://codeload.github.com/cartodb/tilelive-mapnik/tar.gz/23bd1c31dd57d0b76c86b9f1eaf62462b3c17d01" +"tilelive-mapnik@github:cartodb/tilelive-mapnik#0.6.18-cdb4": + version "0.6.18-cdb4" + resolved "https://codeload.github.com/cartodb/tilelive-mapnik/tar.gz/510cfb6f033f7551f973886751643202d4cb5f4a" dependencies: + "@carto/mapnik" "~3.6.2-carto.0" generic-pool "~2.4.0" - mapnik "3.5.14" mime "~1.3.4" sphericalmercator "~1.0.4" step "~0.0.5" @@ -2346,8 +2354,8 @@ utils-merge@1.0.1: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" uuid@^3.0.0, uuid@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04" + version "3.2.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.2.1.tgz#12c528bb9d58d0b9265d9a2f6f0fe8be17ff1f14" validate-npm-package-license@^3.0.1: version "3.0.1" @@ -2392,18 +2400,19 @@ window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" -windshaft@4.2.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/windshaft/-/windshaft-4.2.0.tgz#6a0409832a0d3bccfa09a88a8ab8288686b6762d" +windshaft@4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/windshaft/-/windshaft-4.3.1.tgz#fd012caaacb40de41e7a4e650d039fd9dc59af91" dependencies: - abaculus cartodb/abaculus#2.0.3-cdb1 + "@carto/mapnik" "3.6.2-carto.2" + "@carto/tilelive-bridge" cartodb/tilelive-bridge#2.5.1-cdb1 + abaculus cartodb/abaculus#2.0.3-cdb2 canvas cartodb/node-canvas#1.6.2-cdb2 carto cartodb/carto#0.15.1-cdb3 cartodb-psql "^0.10.1" debug "^3.1.0" dot "~1.0.2" - grainstore "~1.8.0" - mapnik "3.5.14" + grainstore "~1.8.1" queue-async "~1.0.7" redis-mpool "0.4.1" request "^2.83.0" @@ -2411,8 +2420,7 @@ windshaft@4.2.0: sphericalmercator "1.0.4" step "~0.0.6" tilelive "5.12.2" - tilelive-bridge cartodb/tilelive-bridge#2.3.1-cdb4 - tilelive-mapnik cartodb/tilelive-mapnik#0.6.18-cdb3 + tilelive-mapnik cartodb/tilelive-mapnik#0.6.18-cdb4 torque.js "~2.11.0" underscore "~1.6.0" From 781d2d3a28a68df024fc557df1b00ee9afbc4f35 Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Mon, 15 Jan 2018 12:04:57 +0100 Subject: [PATCH 13/28] Update NEWS.md --- NEWS.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/NEWS.md b/NEWS.md index 82114014..0d9cc4c4 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,13 @@ ## 5.0.1 Released 2018-mm-dd +New features: + - Now mapnik has support for fine-grained metrics. + - Variables can be passed for later substitution in postgis datasource. + +Announcements: + - Upgrade windshaft to [4.3.1](https://github.com/CartoDB/windshaft/releases/tag/4.3.1). Underneath it upgrades mapnik and all the related dependencies. + ## 5.0.0 Released 2018-01-29 From 072956addd25456be32ad1bf91270cc23bdc82f0 Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Mon, 29 Jan 2018 18:16:30 +0100 Subject: [PATCH 14/28] Release 5.0.1 --- NEWS.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 82114014..25adb60c 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,8 +1,10 @@ # Changelog ## 5.0.1 -Released 2018-mm-dd +Released 2018-01-20 +Bug Fixes: +- Allow aggregation for queries with no the_geom (only the_geom_webmercator) #856 ## 5.0.0 Released 2018-01-29 From 487aca52d0a337facead19783089f67ef2d25443 Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Mon, 29 Jan 2018 18:25:14 +0100 Subject: [PATCH 15/28] Stub next version --- NEWS.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 25adb60c..fa3fce54 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # Changelog +## 5.0.2 +Released 2018-mm-dd + ## 5.0.1 Released 2018-01-20 diff --git a/package.json b/package.json index 4ab2fe2b..a7f9d2f8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "5.0.1", + "version": "5.0.2", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From 33ed9ab47dac49410f868a5729b6c07b14a54c9c Mon Sep 17 00:00:00 2001 From: Rafa de la Torre Date: Tue, 30 Jan 2018 10:16:08 +0100 Subject: [PATCH 16/28] Stub next version --- NEWS.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index 92172801..07ce7c4b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,9 @@ # Changelog +## 5.1.1 +Released yyyy-mm-dd + + ## 5.1.0 Released 2018-01-30 New features: diff --git a/package.json b/package.json index 273ba2d8..d1be2a7b 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "5.1.0", + "version": "5.1.1", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From 43e1de31fa2c4c0031b10699651040189771be10 Mon Sep 17 00:00:00 2001 From: Raul Marin Date: Tue, 30 Jan 2018 17:19:43 +0100 Subject: [PATCH 17/28] Add Mapnik 'cache-features' option --- NEWS.md | 2 ++ config/environments/development.js.example | 6 +++++- config/environments/production.js.example | 6 +++++- config/environments/staging.js.example | 6 +++++- config/environments/test.js.example | 7 ++++++- package.json | 2 +- 6 files changed, 24 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index 07ce7c4b..86b0177b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -3,6 +3,8 @@ ## 5.1.1 Released yyyy-mm-dd +Announcements: + - Upgrade windshaft to [4.3.2](https://github.com/CartoDB/windshaft/releases/tag/4.3.2) adding support for cache-features' in Mapnik/CartoDB layers. ## 5.1.0 Released 2018-01-30 diff --git a/config/environments/development.js.example b/config/environments/development.js.example index 55cda5ba..644fea48 100644 --- a/config/environments/development.js.example +++ b/config/environments/development.js.example @@ -204,7 +204,11 @@ var config = { // which cost is no more expensive than snapping and results are // much closer to the original geometry removeRepeatedPoints: false // this requires postgis >=2.2 - } + }, + + // If enabled Mapnik will reuse the features retrieved from the database + // instead of requesting them once per style inside a layer + 'cache-features': true }, http: { diff --git a/config/environments/production.js.example b/config/environments/production.js.example index 3904d46e..db18d93c 100644 --- a/config/environments/production.js.example +++ b/config/environments/production.js.example @@ -198,7 +198,11 @@ var config = { // which cost is no more expensive than snapping and results are // much closer to the original geometry removeRepeatedPoints: false // this requires postgis >=2.2 - } + }, + + // If enabled Mapnik will reuse the features retrieved from the database + // instead of requesting them once per style inside a layer + 'cache-features': true }, http: { diff --git a/config/environments/staging.js.example b/config/environments/staging.js.example index 15031991..b478ca80 100644 --- a/config/environments/staging.js.example +++ b/config/environments/staging.js.example @@ -198,7 +198,11 @@ var config = { // which cost is no more expensive than snapping and results are // much closer to the original geometry removeRepeatedPoints: false // this requires postgis >=2.2 - } + }, + + // If enabled Mapnik will reuse the features retrieved from the database + // instead of requesting them once per style inside a layer + 'cache-features': true }, http: { diff --git a/config/environments/test.js.example b/config/environments/test.js.example index 43ebf844..776166e5 100644 --- a/config/environments/test.js.example +++ b/config/environments/test.js.example @@ -197,7 +197,12 @@ var config = { // which cost is no more expensive than snapping and results are // much closer to the original geometry removeRepeatedPoints: false // this requires postgis >=2.2 - } + }, + + // If enabled Mapnik will reuse the features retrieved from the database + // instead of requesting them once per style inside a layer + 'cache-features': true + }, http: { timeout: 2000, // the timeout in ms for a http tile request diff --git a/package.json b/package.json index d1be2a7b..0dfeeea5 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "step-profiler": "~0.3.0", "turbo-carto": "0.20.2", "underscore": "~1.6.0", - "windshaft": "4.3.1", + "windshaft": "4.3.2", "yargs": "~5.0.0" }, "devDependencies": { From d0df8b1533944f410d8a7194701896d8e8d976cc Mon Sep 17 00:00:00 2001 From: Raul Marin Date: Wed, 31 Jan 2018 15:40:23 +0100 Subject: [PATCH 18/28] Update yarn.lock --- yarn.lock | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3b392300..c492bac1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -867,9 +867,9 @@ graceful-fs@^4.1.2: version "1.0.1" resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" -grainstore@~1.8.1: - version "1.8.1" - resolved "https://registry.yarnpkg.com/grainstore/-/grainstore-1.8.1.tgz#5a0f9ef35dedffb4a393d5339dffc2a8ae19a897" +grainstore@1.8.2: + version "1.8.2" + resolved "https://registry.yarnpkg.com/grainstore/-/grainstore-1.8.2.tgz#79dd7a91a098bf8b0ea3189961775c8cc7474319" dependencies: carto "0.16.3" debug "~3.1.0" @@ -1794,8 +1794,8 @@ raw-body@2.3.2: unpipe "1.0.0" rc@^1.1.7: - version "1.2.4" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.4.tgz#a0f606caae2a3b862bbd0ef85482c0125b315fa3" + version "1.2.5" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.5.tgz#275cd687f6e3b36cc756baa26dfee80a790301fd" dependencies: deep-extend "~0.4.0" ini "~1.3.0" @@ -2400,9 +2400,9 @@ window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" -windshaft@4.3.1: - version "4.3.1" - resolved "https://registry.yarnpkg.com/windshaft/-/windshaft-4.3.1.tgz#fd012caaacb40de41e7a4e650d039fd9dc59af91" +windshaft@4.3.2: + version "4.3.2" + resolved "https://registry.yarnpkg.com/windshaft/-/windshaft-4.3.2.tgz#8bd0f0ec3df8e29f03414d2836daf2d5b03446a5" dependencies: "@carto/mapnik" "3.6.2-carto.2" "@carto/tilelive-bridge" cartodb/tilelive-bridge#2.5.1-cdb1 @@ -2412,7 +2412,7 @@ windshaft@4.3.1: cartodb-psql "^0.10.1" debug "^3.1.0" dot "~1.0.2" - grainstore "~1.8.1" + grainstore "1.8.2" queue-async "~1.0.7" redis-mpool "0.4.1" request "^2.83.0" From 150c6ee4beb316d6697447cdebfbe2c8ba84beed Mon Sep 17 00:00:00 2001 From: Raul Marin Date: Wed, 31 Jan 2018 17:24:15 +0100 Subject: [PATCH 19/28] Update to Windshaft 5.3.3 --- NEWS.md | 2 +- package.json | 2 +- yarn.lock | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/NEWS.md b/NEWS.md index 86b0177b..3337c27b 100644 --- a/NEWS.md +++ b/NEWS.md @@ -4,7 +4,7 @@ Released yyyy-mm-dd Announcements: - - Upgrade windshaft to [4.3.2](https://github.com/CartoDB/windshaft/releases/tag/4.3.2) adding support for cache-features' in Mapnik/CartoDB layers. + - Upgrade windshaft to [4.3.3](https://github.com/CartoDB/windshaft/releases/tag/4.3.2) adding support for cache-features' in Mapnik/CartoDB layers. ## 5.1.0 Released 2018-01-30 diff --git a/package.json b/package.json index 0dfeeea5..373e8f53 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "step-profiler": "~0.3.0", "turbo-carto": "0.20.2", "underscore": "~1.6.0", - "windshaft": "4.3.2", + "windshaft": "4.3.3", "yargs": "~5.0.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index c492bac1..23bb4e51 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2400,9 +2400,9 @@ window-size@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.2.0.tgz#b4315bb4214a3d7058ebeee892e13fa24d98b075" -windshaft@4.3.2: - version "4.3.2" - resolved "https://registry.yarnpkg.com/windshaft/-/windshaft-4.3.2.tgz#8bd0f0ec3df8e29f03414d2836daf2d5b03446a5" +windshaft@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/windshaft/-/windshaft-4.3.3.tgz#a48fdd6ca05257c103f34c80195722ef52dc0813" dependencies: "@carto/mapnik" "3.6.2-carto.2" "@carto/tilelive-bridge" cartodb/tilelive-bridge#2.5.1-cdb1 From d1fcd797a320874a826b819bb88e3cbcb276190b Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Wed, 31 Jan 2018 17:46:13 +0100 Subject: [PATCH 20/28] Limit the minimum size of the the aggregation grid Fixes #860 --- lib/cartodb/models/aggregation/aggregation-query.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/cartodb/models/aggregation/aggregation-query.js b/lib/cartodb/models/aggregation/aggregation-query.js index 7bb133d9..f85a2bc6 100644 --- a/lib/cartodb/models/aggregation/aggregation-query.js +++ b/lib/cartodb/models/aggregation/aggregation-query.js @@ -131,7 +131,12 @@ const dimensionDefs = ctx => { // This is equivalent to `${256/ctx.res}*CDB_XYZ_Resolution(CDB_ZoomFromScale(!scale_denominator!))` // This is defined by the ctx.res parameter, which is the number of grid cells per tile linear dimension // (i.e. each tile is divided into ctx.res*ctx.res cells). -const gridResolution = ctx => `(${256*0.00028/ctx.res}*!scale_denominator!)::double precision`; +const gridResolution = ctx => { + const factor = 256*0.00028/ctx.res; + const minimum_resolution = 2*Math.PI*6378137/Math.pow(2,38); + let minimum_scale_denominator = minimum_resolution/factor; + return `(${factor}*GREATEST(!scale_denominator!,${minimum_scale_denominator}))::double precision`; +}; // Notes: // * We need to filter spatially using !bbox! to make the queries efficient because From 7db0744f677545bed079b517f85762e9b5868bca Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Wed, 31 Jan 2018 17:54:40 +0100 Subject: [PATCH 21/28] Simplify expression --- lib/cartodb/models/aggregation/aggregation-query.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/cartodb/models/aggregation/aggregation-query.js b/lib/cartodb/models/aggregation/aggregation-query.js index f85a2bc6..53960c1a 100644 --- a/lib/cartodb/models/aggregation/aggregation-query.js +++ b/lib/cartodb/models/aggregation/aggregation-query.js @@ -132,10 +132,8 @@ const dimensionDefs = ctx => { // This is defined by the ctx.res parameter, which is the number of grid cells per tile linear dimension // (i.e. each tile is divided into ctx.res*ctx.res cells). const gridResolution = ctx => { - const factor = 256*0.00028/ctx.res; const minimum_resolution = 2*Math.PI*6378137/Math.pow(2,38); - let minimum_scale_denominator = minimum_resolution/factor; - return `(${factor}*GREATEST(!scale_denominator!,${minimum_scale_denominator}))::double precision`; + return `GREATEST(${256*0.00028/ctx.res}*!scale_denominator!, ${minimum_resolution})::double precision`; }; // Notes: From d88fbbaa87e120ce3c50061ed6db9e0cadc89b0d Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Wed, 31 Jan 2018 18:55:28 +0100 Subject: [PATCH 22/28] Use camelCase --- lib/cartodb/models/aggregation/aggregation-query.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/cartodb/models/aggregation/aggregation-query.js b/lib/cartodb/models/aggregation/aggregation-query.js index 53960c1a..e3ad24e3 100644 --- a/lib/cartodb/models/aggregation/aggregation-query.js +++ b/lib/cartodb/models/aggregation/aggregation-query.js @@ -132,8 +132,8 @@ const dimensionDefs = ctx => { // This is defined by the ctx.res parameter, which is the number of grid cells per tile linear dimension // (i.e. each tile is divided into ctx.res*ctx.res cells). const gridResolution = ctx => { - const minimum_resolution = 2*Math.PI*6378137/Math.pow(2,38); - return `GREATEST(${256*0.00028/ctx.res}*!scale_denominator!, ${minimum_resolution})::double precision`; + const minimumResolution = 2*Math.PI*6378137/Math.pow(2,38); + return `GREATEST(${256*0.00028/ctx.res}*!scale_denominator!, ${minimumResolution})::double precision`; }; // Notes: From 80604b739a287b171e3c43a86c620ad129986e8d Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Wed, 31 Jan 2018 18:56:24 +0100 Subject: [PATCH 23/28] Add test for aggregation with attributes This reveals #860 --- test/acceptance/aggregation.js | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/test/acceptance/aggregation.js b/test/acceptance/aggregation.js index 1c76165d..d8870c8a 100644 --- a/test/acceptance/aggregation.js +++ b/test/acceptance/aggregation.js @@ -1438,6 +1438,43 @@ describe('aggregation', function () { done(); }); }); + + it('aggregation should work with attributes', function (done) { + this.mapConfig = createVectorMapConfig([ + { + type: 'cartodb', + options: { + sql: POINTS_SQL_1, + cartocss: '#layer { marker-width: 7; }', + cartocss_version: '2.3.0', + aggregation: { + threshold: 1 + }, + attributes: { + id: 'cartodb_id', + columns: [ + 'value' + ] + } + } + } + ]); + this.testClient = new TestClient(this.mapConfig); + + this.testClient.getLayergroup((err, body) => { + if (err) { + return done(err); + } + + assert.equal(typeof body.metadata, 'object'); + assert.ok(Array.isArray(body.metadata.layers)); + + body.metadata.layers.forEach(layer => assert.ok(layer.meta.aggregation.mvt)); + body.metadata.layers.forEach(layer => assert.ok(layer.meta.aggregation.png)); + + done(); + }); + }); }); }); }); From a7157532f12b68c9a053e0d223184aeb8e2eef41 Mon Sep 17 00:00:00 2001 From: Raul Marin Date: Thu, 1 Feb 2018 09:31:46 +0100 Subject: [PATCH 24/28] Release 5.2.0 --- NEWS.md | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index 3337c27b..add173bb 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,7 +1,7 @@ # Changelog -## 5.1.1 -Released yyyy-mm-dd +## 5.2.0 +Released 2018-02-01 Announcements: - Upgrade windshaft to [4.3.3](https://github.com/CartoDB/windshaft/releases/tag/4.3.2) adding support for cache-features' in Mapnik/CartoDB layers. diff --git a/package.json b/package.json index 373e8f53..5b581aaa 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "5.1.1", + "version": "5.2.0", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From 086be461b2868a2b862b380cd342de1f2245e52d Mon Sep 17 00:00:00 2001 From: Raul Marin Date: Thu, 1 Feb 2018 09:33:18 +0100 Subject: [PATCH 25/28] Stub next version --- NEWS.md | 6 ++++++ package.json | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index add173bb..c4f7aad1 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,11 @@ # Changelog +## 5.2.1 +Released 2018-XX-XX + +Announcements: + - + ## 5.2.0 Released 2018-02-01 diff --git a/package.json b/package.json index 5b581aaa..e7d6329a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "5.2.0", + "version": "5.2.1", "description": "A map tile server for CartoDB", "keywords": [ "cartodb" From 2e7784ddf2d8f8829b5bccea0e26ac5d6d1708be Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Thu, 1 Feb 2018 10:26:52 +0100 Subject: [PATCH 26/28] Add comment to clafify aggregation resolution limit --- lib/cartodb/models/aggregation/aggregation-query.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/cartodb/models/aggregation/aggregation-query.js b/lib/cartodb/models/aggregation/aggregation-query.js index e3ad24e3..16e897ab 100644 --- a/lib/cartodb/models/aggregation/aggregation-query.js +++ b/lib/cartodb/models/aggregation/aggregation-query.js @@ -131,6 +131,8 @@ const dimensionDefs = ctx => { // This is equivalent to `${256/ctx.res}*CDB_XYZ_Resolution(CDB_ZoomFromScale(!scale_denominator!))` // This is defined by the ctx.res parameter, which is the number of grid cells per tile linear dimension // (i.e. each tile is divided into ctx.res*ctx.res cells). +// We limit the the minimum resolution to avoid division by zero problems. The limit used is +// the pixel size of zoom level 30 (i.e. 1/2*(30+8) of the full earth web-mercator extent), which is about 0.15 mm. const gridResolution = ctx => { const minimumResolution = 2*Math.PI*6378137/Math.pow(2,38); return `GREATEST(${256*0.00028/ctx.res}*!scale_denominator!, ${minimumResolution})::double precision`; From 5aa98c4ab240f2a662bcf5a66d909d04f6164fe3 Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Thu, 1 Feb 2018 16:37:05 +0100 Subject: [PATCH 27/28] Release 5.2.1 --- NEWS.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/NEWS.md b/NEWS.md index c4f7aad1..e8d7cbaa 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,10 +1,10 @@ # Changelog ## 5.2.1 -Released 2018-XX-XX +Released 2018-02-01 -Announcements: - - +Bug Fixes: +- Allow use of aggregation with attributes #861 ## 5.2.0 Released 2018-02-01 From bbe8d4e820a2d8c007d56e72cc41e0ccf37bf919 Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Thu, 1 Feb 2018 16:39:43 +0100 Subject: [PATCH 28/28] Stub next version --- NEWS.md | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/NEWS.md b/NEWS.md index e8d7cbaa..64f2d703 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,9 @@ # Changelog +## 5.2.2 +Released 2018-mm-dd + + ## 5.2.1 Released 2018-02-01 diff --git a/package.json b/package.json index e7d6329a..6bc420a7 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "private": true, "name": "windshaft-cartodb", - "version": "5.2.1", + "version": "5.2.2", "description": "A map tile server for CartoDB", "keywords": [ "cartodb"