diff --git a/lib/cartodb/utils/query-utils.js b/lib/cartodb/utils/query-utils.js index f5daf0e1..63d66110 100644 --- a/lib/cartodb/utils/query-utils.js +++ b/lib/cartodb/utils/query-utils.js @@ -150,6 +150,36 @@ function simpleQueryTable(sql) { return false; } +module.exports.getMaxMinColumnQuery = function (query, column = 'cartodb_id') { + return ` + SELECT + min(${column}) AS min_id, + max(${column}) AS max_id, + (max(${column}) - min(${column})) AS id_span + FROM (${query}) _cdb_metadata_max_min; + `; +}; + +module.exports.getSampleValuesFromRange = function getSampleValuesFromRange (min, span, limit) { + const sample = new Set(); + + limit = limit < span ? limit : span; + + while (sample.size < limit) { + sample.add(Math.floor(min + Math.random() * span)); + } + + return Array.from(sample); +}; + +module.exports.getSampleFromIdsQuery = function (query, ids, columns, column = 'cartodb_id') { + return ` + SELECT + ${columnSelector(columns)} + FROM (${query}) _cdb_metadata_sample + WHERE ${column} IN (${ids.join(',')}) + `; +}; function getQueryLimited(query, limit = 0) { return `