Leave sample exclude_columns for later
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user