Leave sample exclude_columns for later

This commit is contained in:
Javier Goizueta
2018-05-28 17:37:45 +02:00
parent 8a1d5d3a48
commit 26da872704
@@ -149,29 +149,13 @@ function mergeColumns(results) {
const SAMPLE_SEED = 0.5;
const DEFAULT_SAMPLE_ROWS = 100;
function exclude(items, excludedItems) {
if (excludedItems) {
return items.filter(item => !excludedItems.includes(item));
}
return items;
}
function _sample(ctx, numRows, availableColumns = null) {
function _sample(ctx, numRows) {
if (ctx.metaOptions.sample) {
const sampleProb = Math.min(ctx.metaOptions.sample.num_rows / numRows, 1);
// We'll use a safety limit just in case numRows is a bad estimate
const requestedRows = ctx.metaOptions.sample.num_rows || DEFAULT_SAMPLE_ROWS;
const limit = Math.ceil(requestedRows * 1.5);
let columns = ctx.metaOptions.sample.include_columns;
if (columns) {
columns = exclude(columns, ctx.metaOptions.sample.exclude_columns);
}
else if (ctx.metaOptions.sample.exclude_columns) {
if (availableColumns === null) {
return Promise.reject(new Error('Column stats are needed to use the sample exclude columns options'));
}
columns = exclude(availableColumns, ctx.metaOptions.sample.exclude_columns);
}
return queryPromise(ctx.dbConnection, _getSQL(
ctx,
sql => queryUtils.getQuerySample(sql, sampleProb, limit, SAMPLE_SEED, columns)