Merge branch 'master' into naming-fixes
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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}"`;
|
||||
}));
|
||||
};
|
||||
|
||||
|
||||
@@ -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 `;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user