Commit 5f235eb8 authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

Merge sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.1

into sanja.is.com.ua:/home/bell/mysql/bk/work-count-4.1
parents 3d33dc7c ba82b9e7
...@@ -656,3 +656,31 @@ select stddev(2) from t1; ...@@ -656,3 +656,31 @@ select stddev(2) from t1;
stddev(2) stddev(2)
NULL NULL
drop table t1; drop table t1;
create table t1 (a int);
insert into t1 values (1),(2);
prepare stmt1 from 'SELECT COUNT(*) FROM t1';
execute stmt1;
COUNT(*)
2
execute stmt1;
COUNT(*)
2
execute stmt1;
COUNT(*)
2
deallocate prepare stmt1;
drop table t1;
create table t1 (a int, primary key(a));
insert into t1 values (1),(2);
prepare stmt1 from 'SELECT max(a) FROM t1';
execute stmt1;
max(a)
2
execute stmt1;
max(a)
2
execute stmt1;
max(a)
2
deallocate prepare stmt1;
drop table t1;
...@@ -396,3 +396,25 @@ create table t1 (a int); ...@@ -396,3 +396,25 @@ create table t1 (a int);
select variance(2) from t1; select variance(2) from t1;
select stddev(2) from t1; select stddev(2) from t1;
drop table t1; drop table t1;
#
# cleunup() of optimized away count(*) and max/min
#
create table t1 (a int);
insert into t1 values (1),(2);
prepare stmt1 from 'SELECT COUNT(*) FROM t1';
execute stmt1;
execute stmt1;
execute stmt1;
deallocate prepare stmt1;
drop table t1;
create table t1 (a int, primary key(a));
insert into t1 values (1),(2);
prepare stmt1 from 'SELECT max(a) FROM t1';
execute stmt1;
execute stmt1;
execute stmt1;
deallocate prepare stmt1;
drop table t1;
...@@ -361,6 +361,16 @@ longlong Item_sum_count::val_int() ...@@ -361,6 +361,16 @@ longlong Item_sum_count::val_int()
return (longlong) count; return (longlong) count;
} }
void Item_sum_count::cleanup()
{
DBUG_ENTER("Item_sum_count::cleanup");
Item_sum_int::cleanup();
used_table_cache= ~(table_map) 0;
DBUG_VOID_RETURN;
}
/* /*
Avgerage Avgerage
*/ */
...@@ -575,6 +585,15 @@ Item_sum_hybrid::val_str(String *str) ...@@ -575,6 +585,15 @@ Item_sum_hybrid::val_str(String *str)
} }
void Item_sum_hybrid::cleanup()
{
DBUG_ENTER("Item_sum_hybrid::cleanup");
Item_sum::cleanup();
used_table_cache= ~(table_map) 0;
DBUG_VOID_RETURN;
}
Item *Item_sum_min::copy_or_same(THD* thd) Item *Item_sum_min::copy_or_same(THD* thd)
{ {
return new (&thd->mem_root) Item_sum_min(thd, this); return new (&thd->mem_root) Item_sum_min(thd, this);
......
...@@ -172,6 +172,7 @@ class Item_sum_count :public Item_sum_int ...@@ -172,6 +172,7 @@ class Item_sum_count :public Item_sum_int
void make_const(longlong count_arg) { count=count_arg; used_table_cache=0; } void make_const(longlong count_arg) { count=count_arg; used_table_cache=0; }
longlong val_int(); longlong val_int();
void reset_field(); void reset_field();
void cleanup();
void update_field(); void update_field();
const char *func_name() const { return "count"; } const char *func_name() const { return "count"; }
Item *copy_or_same(THD* thd); Item *copy_or_same(THD* thd);
...@@ -428,6 +429,7 @@ class Item_sum_hybrid :public Item_sum ...@@ -428,6 +429,7 @@ class Item_sum_hybrid :public Item_sum
void min_max_update_str_field(); void min_max_update_str_field();
void min_max_update_real_field(); void min_max_update_real_field();
void min_max_update_int_field(); void min_max_update_int_field();
void cleanup();
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment