merging.
This commit is contained in:
commit
5b8a24cf04
@ -28,6 +28,18 @@
|
||||
#include "mysql_priv.h"
|
||||
#include "sql_select.h"
|
||||
|
||||
/**
|
||||
Calculate the affordable RAM limit for structures like TREE or Unique
|
||||
used in Item_sum_*
|
||||
*/
|
||||
|
||||
ulonglong Item_sum::ram_limitation(THD *thd)
|
||||
{
|
||||
return min(thd->variables.tmp_table_size,
|
||||
thd->variables.max_heap_table_size);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Prepare an aggregate function item for checking context conditions.
|
||||
|
||||
@ -833,7 +845,7 @@ bool Aggregator_distinct::setup(THD *thd)
|
||||
}
|
||||
DBUG_ASSERT(tree == 0);
|
||||
tree= new Unique(compare_key, cmp_arg, tree_key_length,
|
||||
thd->variables.max_heap_table_size);
|
||||
item_sum->ram_limitation(thd));
|
||||
/*
|
||||
The only time tree_key_length could be 0 is if someone does
|
||||
count(distinct) on a char(0) field - stupid thing to do,
|
||||
@ -902,7 +914,7 @@ bool Aggregator_distinct::setup(THD *thd)
|
||||
are converted to binary representation as well.
|
||||
*/
|
||||
tree= new Unique(simple_raw_key_cmp, &tree_key_length, tree_key_length,
|
||||
thd->variables.max_heap_table_size);
|
||||
item_sum->ram_limitation(thd));
|
||||
|
||||
DBUG_RETURN(tree == 0);
|
||||
}
|
||||
@ -3514,7 +3526,7 @@ bool Item_func_group_concat::setup(THD *thd)
|
||||
unique_filter= new Unique(group_concat_key_cmp_with_distinct,
|
||||
(void*)this,
|
||||
tree_key_length,
|
||||
thd->variables.max_heap_table_size);
|
||||
ram_limitation(thd));
|
||||
|
||||
DBUG_RETURN(FALSE);
|
||||
}
|
||||
|
@ -364,6 +364,7 @@ protected:
|
||||
Item **orig_args, *tmp_orig_args[2];
|
||||
table_map used_tables_cache;
|
||||
bool forced_const;
|
||||
static ulonglong ram_limitation(THD *thd);
|
||||
|
||||
public:
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user