Merge branch 'master' into naming-fixes

This commit is contained in:
Simon Martín
2018-08-24 12:24:52 +02:00
7 changed files with 31 additions and 9 deletions
+3 -1
View File
@@ -7,7 +7,9 @@ Released 2018-mm-dd
- Build query from node's cache to compute output columns when building analysis
- Adds metadata columns for street level geocoding
- Remove use of `step` module to handle asynchronous code, now it's defined as development dependency.
- Bug Fixes: (#1020)
- Fix bug in date-wrapper regarding columns with spaces
- Fix bug in aggregation-query regarding columns with spaces
## 6.3.0
Released 2018-07-26
+2 -2
View File
@@ -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);
@@ -148,7 +148,7 @@ function _columnStats(ctx, columns) {
Object.keys(columns).forEach(name => {
aggr = aggr.concat(
columnAggregations(columns[name])
.map(fn => `${fn}(${name}) AS ${name}_${fn}`)
.map(fn => `${fn}("${name}") AS "${name}_${fn}"`)
);
if (columns[name].type === 'string') {
const topN = ctx.metaOptions.columnStats.topCategories || 1024;
@@ -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}"`;
}));
};
+1 -1
View File
@@ -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 `;
}
+1 -1
View File
@@ -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);
@@ -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);
});
});