Merge bk-internal:/home/bk/mysql-5.1-new
into neptunus.(none):/home/msvensson/mysql/wl2930/my51-wl2930-integration
This commit is contained in:
commit
0555413735
@ -128,6 +128,19 @@ id description c
|
|||||||
1 test 0
|
1 test 0
|
||||||
2 test2 0
|
2 test2 0
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES (3), (4), (1), (3), (1);
|
||||||
|
SELECT SUM(a) FROM t1 GROUP BY a HAVING SUM(a)>0;
|
||||||
|
SUM(a)
|
||||||
|
2
|
||||||
|
6
|
||||||
|
4
|
||||||
|
SELECT SUM(a) FROM t1 GROUP BY a HAVING SUM(a);
|
||||||
|
SUM(a)
|
||||||
|
2
|
||||||
|
6
|
||||||
|
4
|
||||||
|
DROP TABLE t1;
|
||||||
create table t1 (col1 int, col2 varchar(5), col_t1 int);
|
create table t1 (col1 int, col2 varchar(5), col_t1 int);
|
||||||
create table t2 (col1 int, col2 varchar(5), col_t2 int);
|
create table t2 (col1 int, col2 varchar(5), col_t2 int);
|
||||||
create table t3 (col1 int, col2 varchar(5), col_t3 int);
|
create table t3 (col1 int, col2 varchar(5), col_t3 int);
|
||||||
|
@ -2475,3 +2475,32 @@ alias1 alias2
|
|||||||
5 5
|
5 5
|
||||||
drop view v2, v1;
|
drop view v2, v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
CREATE TABLE t1 (a int PRIMARY KEY, b int);
|
||||||
|
INSERT INTO t1 VALUES (2,20), (3,10), (1,10), (0,30), (5,10);
|
||||||
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
||||||
|
SELECT MAX(a) FROM t1;
|
||||||
|
MAX(a)
|
||||||
|
5
|
||||||
|
SELECT MAX(a) FROM v1;
|
||||||
|
MAX(a)
|
||||||
|
5
|
||||||
|
EXPLAIN SELECT MAX(a) FROM t1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
EXPLAIN SELECT MAX(a) FROM v1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
SELECT MIN(a) FROM t1;
|
||||||
|
MIN(a)
|
||||||
|
0
|
||||||
|
SELECT MIN(a) FROM v1;
|
||||||
|
MIN(a)
|
||||||
|
0
|
||||||
|
EXPLAIN SELECT MIN(a) FROM t1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
EXPLAIN SELECT MIN(a) FROM v1;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -123,6 +123,18 @@ group by a.id, a.description
|
|||||||
having (a.description is not null) and (c=0);
|
having (a.description is not null) and (c=0);
|
||||||
drop table t1,t2,t3;
|
drop table t1,t2,t3;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #14274: HAVING clause containing only set function
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int);
|
||||||
|
INSERT INTO t1 VALUES (3), (4), (1), (3), (1);
|
||||||
|
|
||||||
|
SELECT SUM(a) FROM t1 GROUP BY a HAVING SUM(a)>0;
|
||||||
|
SELECT SUM(a) FROM t1 GROUP BY a HAVING SUM(a);
|
||||||
|
|
||||||
|
DROP TABLE t1;
|
||||||
|
|
||||||
# End of 4.1 tests
|
# End of 4.1 tests
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -2343,3 +2343,27 @@ order by v2.receipt_id;
|
|||||||
|
|
||||||
drop view v2, v1;
|
drop view v2, v1;
|
||||||
drop table t1;
|
drop table t1;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#16016: MIN/MAX optimization for views
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1 (a int PRIMARY KEY, b int);
|
||||||
|
INSERT INTO t1 VALUES (2,20), (3,10), (1,10), (0,30), (5,10);
|
||||||
|
|
||||||
|
CREATE VIEW v1 AS SELECT * FROM t1;
|
||||||
|
|
||||||
|
SELECT MAX(a) FROM t1;
|
||||||
|
SELECT MAX(a) FROM v1;
|
||||||
|
|
||||||
|
EXPLAIN SELECT MAX(a) FROM t1;
|
||||||
|
EXPLAIN SELECT MAX(a) FROM v1;
|
||||||
|
|
||||||
|
SELECT MIN(a) FROM t1;
|
||||||
|
SELECT MIN(a) FROM v1;
|
||||||
|
|
||||||
|
EXPLAIN SELECT MIN(a) FROM t1;
|
||||||
|
EXPLAIN SELECT MIN(a) FROM v1;
|
||||||
|
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1;
|
||||||
|
@ -180,14 +180,14 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
|
|||||||
indexes to find the key.
|
indexes to find the key.
|
||||||
*/
|
*/
|
||||||
Item *expr=item_sum->args[0];
|
Item *expr=item_sum->args[0];
|
||||||
if (expr->type() == Item::FIELD_ITEM)
|
if (expr->real_item()->type() == Item::FIELD_ITEM)
|
||||||
{
|
{
|
||||||
byte key_buff[MAX_KEY_LENGTH];
|
byte key_buff[MAX_KEY_LENGTH];
|
||||||
TABLE_REF ref;
|
TABLE_REF ref;
|
||||||
uint range_fl, prefix_len;
|
uint range_fl, prefix_len;
|
||||||
|
|
||||||
ref.key_buff= key_buff;
|
ref.key_buff= key_buff;
|
||||||
Item_field *item_field= ((Item_field*) expr);
|
Item_field *item_field= (Item_field*) (expr->real_item());
|
||||||
TABLE *table= item_field->field->table;
|
TABLE *table= item_field->field->table;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -267,14 +267,14 @@ int opt_sum_query(TABLE_LIST *tables, List<Item> &all_fields,COND *conds)
|
|||||||
indexes to find the key.
|
indexes to find the key.
|
||||||
*/
|
*/
|
||||||
Item *expr=item_sum->args[0];
|
Item *expr=item_sum->args[0];
|
||||||
if (expr->type() == Item::FIELD_ITEM)
|
if (expr->real_item()->type() == Item::FIELD_ITEM)
|
||||||
{
|
{
|
||||||
byte key_buff[MAX_KEY_LENGTH];
|
byte key_buff[MAX_KEY_LENGTH];
|
||||||
TABLE_REF ref;
|
TABLE_REF ref;
|
||||||
uint range_fl, prefix_len;
|
uint range_fl, prefix_len;
|
||||||
|
|
||||||
ref.key_buff= key_buff;
|
ref.key_buff= key_buff;
|
||||||
Item_field *item_field= ((Item_field*) expr);
|
Item_field *item_field= (Item_field*) (expr->real_item());
|
||||||
TABLE *table= item_field->field->table;
|
TABLE *table= item_field->field->table;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -365,7 +365,8 @@ JOIN::prepare(Item ***rref_pointer_array,
|
|||||||
if (having_fix_rc || thd->net.report_error)
|
if (having_fix_rc || thd->net.report_error)
|
||||||
DBUG_RETURN(-1); /* purecov: inspected */
|
DBUG_RETURN(-1); /* purecov: inspected */
|
||||||
if (having->with_sum_func)
|
if (having->with_sum_func)
|
||||||
having->split_sum_func(thd, ref_pointer_array, all_fields);
|
having->split_sum_func2(thd, ref_pointer_array, all_fields,
|
||||||
|
&having, TRUE);
|
||||||
thd->lex->allow_sum_func= save_allow_sum_func;
|
thd->lex->allow_sum_func= save_allow_sum_func;
|
||||||
}
|
}
|
||||||
if (select_lex->inner_sum_func_list)
|
if (select_lex->inner_sum_func_list)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user