diff --git a/lib/cartodb/backends/dataview.js b/lib/cartodb/backends/dataview.js index 542bbb4e..a2f5327a 100644 --- a/lib/cartodb/backends/dataview.js +++ b/lib/cartodb/backends/dataview.js @@ -28,7 +28,7 @@ DataviewBackend.prototype.getDataview = function (mapConfigProvider, user, param var dataviewDefinition = getDataviewDefinition(mapConfig.obj(), dataviewName); if (!dataviewDefinition) { - const error = new Error(`Dataview '${dataviewName}' does not exists`); + const error = new Error(`Dataview '${dataviewName}' does not exist`); error.type = 'dataview'; error.http_status = 400; return callback(error); @@ -157,7 +157,7 @@ DataviewBackend.prototype.search = function (mapConfigProvider, user, dataviewNa var dataviewDefinition = getDataviewDefinition(mapConfig.obj(), dataviewName); if (!dataviewDefinition) { - const error = new Error(`Dataview '${dataviewName}' does not exists`); + const error = new Error(`Dataview '${dataviewName}' does not exist`); error.type = 'dataview'; error.http_status = 400; return callback(error); diff --git a/lib/cartodb/models/aggregation/aggregation-query.js b/lib/cartodb/models/aggregation/aggregation-query.js index 4f7060c5..4ae3bc33 100644 --- a/lib/cartodb/models/aggregation/aggregation-query.js +++ b/lib/cartodb/models/aggregation/aggregation-query.js @@ -117,17 +117,19 @@ const dimensionNames = (ctx, table) => { let dimensions = aggregateDimensions(ctx); if (table) { return sep(Object.keys(dimensions).map( - dimension_name => `${table}.${dimension_name}` + dimension_name => `${table}."${dimension_name}"` )); } - return sep(Object.keys(dimensions)); + return sep(Object.keys(dimensions).map(dimension_name => { + return `"${dimension_name}"`; + })); }; const dimensionDefs = ctx => { let dimensions = aggregateDimensions(ctx); return sep(Object.keys(dimensions).map(dimension_name => { const expression = dimensions[dimension_name]; - return `${expression} AS ${dimension_name}`; + return `"${expression}" AS "${dimension_name}"`; })); }; diff --git a/lib/cartodb/utils/date-wrapper.js b/lib/cartodb/utils/date-wrapper.js index 9d5657b1..3d458978 100644 --- a/lib/cartodb/utils/date-wrapper.js +++ b/lib/cartodb/utils/date-wrapper.js @@ -14,7 +14,7 @@ const DATE_OIDS = Object.freeze({ function wrapDates(originalQuery, fields) { return ` SELECT - ${fields.map(field => _isDateType(field) ? _castColumnToEpoch(field.name) : `${field.name}`).join(',')} + ${fields.map(field => _isDateType(field) ? _castColumnToEpoch(field.name) : `"${field.name}"`).join(',')} FROM (${originalQuery}) _cdb_epoch_transformation `; } diff --git a/test/acceptance/health_check.js b/test/acceptance/health_check.js index 576a6e6f..667feba4 100644 --- a/test/acceptance/health_check.js +++ b/test/acceptance/health_check.js @@ -96,7 +96,7 @@ describe('health checks', function () { }); }); - it('not err if disabled file does not exists', function(done) { + it('not err if disabled file does not exist', function(done) { global.environment.disabled_file = '/tmp/ftreftrgtrccre'; var server = new CartodbWindshaft(serverOptions); diff --git a/test/unit/cartodb/utils/date-wrapper.test.js b/test/unit/cartodb/utils/date-wrapper.test.js new file mode 100644 index 00000000..e4fab99a --- /dev/null +++ b/test/unit/cartodb/utils/date-wrapper.test.js @@ -0,0 +1,18 @@ +var assert = require('assert'); +var dateWrapper = require('../../../../lib/cartodb/utils/date-wrapper'); + +describe('date-wrapper', function() { + + it('should wrap property fields with spaces', function() { + const actual = dateWrapper.wrapDates( + 'select * from table', + [{name: 'a'}, {name: 'b c'}] + ); + const expected = ` + SELECT + "a","b c" + FROM + (select * from table) _cdb_epoch_transformation `; + assert.equal(actual, expected); + }); +});