setting for totals threshold with AFTER_HAVING_AUTO. [#METR-10223]

This commit is contained in:
Michael Kolupaev 2014-02-27 17:12:56 +04:00
parent d83ff9ceb2
commit b0f079be0d
4 changed files with 6 additions and 4 deletions

View File

@ -20,7 +20,7 @@ class TotalsHavingBlockInputStream : public IProfilingBlockInputStream
public:
TotalsHavingBlockInputStream(BlockInputStreamPtr input_, const Names & keys_names_,
const AggregateDescriptions & aggregates_, bool overflow_row_, ExpressionActionsPtr expression_,
const std::string & filter_column_, TotalsMode totals_mode_, double auto_include_threshold_)
const std::string & filter_column_, TotalsMode totals_mode_, float auto_include_threshold_)
: aggregator(new Aggregator(keys_names_, aggregates_, overflow_row_)), overflow_row(overflow_row_),
expression(expression_), filter_column_name(filter_column_), totals_mode(totals_mode_),
auto_include_threshold(auto_include_threshold_), passed_keys(0), total_keys(0)
@ -47,7 +47,7 @@ private:
ExpressionActionsPtr expression;
String filter_column_name;
TotalsMode totals_mode;
double auto_include_threshold;
float auto_include_threshold;
size_t passed_keys;
size_t total_keys;

View File

@ -61,7 +61,9 @@ struct Settings
M(SettingBool, replace_running_query, false) \
\
M(SettingLoadBalancing, load_balancing, LoadBalancing::RANDOM) \
\
M(SettingTotalsMode, totals_mode, TotalsMode::BEFORE_HAVING) \
M(SettingFloat, totals_auto_threshold, 0.5) \
\
/** Сэмплирование по умолчанию. Если равно 1, то отключено. */ \
M(SettingFloat, default_sample, 1.0) \

View File

@ -33,7 +33,7 @@ Block TotalsHavingBlockInputStream::readImpl()
/** Если totals_mode==AFTER_HAVING_AUTO, нужно решить, добавлять ли в TOTALS агрегаты для строк,
* не прошедших max_rows_to_group_by.
*/
if (overflow_aggregates && 1. * passed_keys / total_keys >= auto_include_threshold)
if (overflow_aggregates && static_cast<float>(passed_keys) / total_keys >= auto_include_threshold)
addToTotals(current_totals, overflow_aggregates, nullptr);
finalize(current_totals);
totals = current_totals;

View File

@ -649,7 +649,7 @@ void InterpreterSelectQuery::executeTotalsAndHaving(BlockInputStreams & streams,
query_analyzer->getAggregateInfo(key_names, aggregates);
streams[0] = maybeAsynchronous(new TotalsHavingBlockInputStream(
streams[0], key_names, aggregates, overflow_row, expression,
has_having ? query.having_expression->getColumnName() : "", settings.totals_mode, .5),
has_having ? query.having_expression->getColumnName() : "", settings.totals_mode, settings.totals_auto_threshold),
settings.asynchronous);
}