diff --git a/NEWS.md b/NEWS.md index e1b710e1..2bf253fd 100644 --- a/NEWS.md +++ b/NEWS.md @@ -10,6 +10,7 @@ Enhancements: with attribute service (#156) - Reduce sql-api communication timeout, and allow overriding (#167) [ new sqlapi.timeout directive, defaults to 100 ms ] + - Do not query CDB_TableMetadata for queries affected by no tables (#16) 1.8.2 -- 2014-02-25 ------------------- diff --git a/lib/cartodb/server_options.js b/lib/cartodb/server_options.js index c7df43c8..ebd23b1b 100644 --- a/lib/cartodb/server_options.js +++ b/lib/cartodb/server_options.js @@ -391,23 +391,34 @@ module.exports = function(){ var key = req.params.map_key || req.params.api_key; var cacheKey = dbName + ':' + token; + var tabNames; - me.affectedTables(usr, key, sql, function(err, tableNames) { + Step( + function getTables() { + me.affectedTables(usr, key, sql, this); + }, + function getLastupdated(err, tableNames) { if (req.profiler) req.profiler.done('affectedTables'); - - if ( err ) { done(err); return; } + if ( err ) throw err; var cacheChannel = me.buildCacheChannel(dbName,tableNames); // store for caching from me.afterLayergroupCreate me.channelCache[cacheKey] = cacheChannel; // find last updated - me.findLastUpdated(usr, key, tableNames, function(err, lastUpdated) { - if (req.profiler) req.profiler.done('findLastUpdated'); - if ( err ) { done(err); return; } - response.layergroupid = response.layergroupid + ':' + lastUpdated; // use epoch - response.last_updated = new Date(lastUpdated).toISOString(); // TODO: use ISO format - done(null); - }); - }); + if ( ! tableNames.length ) return 0; // skip for no affected tables + tabNames = tableNames; + me.findLastUpdated(usr, key, tableNames, this); + }, + function(err, lastUpdated) { + if ( err ) throw err; + if (req.profiler && tabNames) req.profiler.done('findLastUpdated'); + response.layergroupid = response.layergroupid + ':' + lastUpdated; // use epoch + response.last_updated = new Date(lastUpdated).toISOString(); + return null; + }, + function finish(err) { + done(err); + } + ); }; /* X-Cache-Channel generation } */