Merge olga.mysql.com:/home/igor/mysql-5.0-opt
into olga.mysql.com:/home/igor/dev-opt/mysql-5.0-opt-bug29104 sql/item.cc: Auto merged
This commit is contained in:
commit
1944601586
@ -3476,4 +3476,28 @@ a1 c
|
||||
2 0
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (1,2), (2,2), (1,3), (1,2);
|
||||
CREATE VIEW v1 AS SELECT a, b+1 as b FROM t1;
|
||||
SELECT b, SUM(a) FROM v1 WHERE b=3 GROUP BY b;
|
||||
b SUM(a)
|
||||
3 4
|
||||
EXPLAIN SELECT b, SUM(a) FROM v1 WHERE b=3 GROUP BY b;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
SELECT a, SUM(b) FROM v1 WHERE b=3 GROUP BY a;
|
||||
a SUM(b)
|
||||
1 6
|
||||
2 3
|
||||
EXPLAIN SELECT a, SUM(b) FROM v1 WHERE b=3 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where; Using temporary; Using filesort
|
||||
SELECT a, SUM(b) FROM v1 WHERE a=1 GROUP BY a;
|
||||
a SUM(b)
|
||||
1 10
|
||||
EXPLAIN SELECT a, SUM(b) FROM v1 WHERE a=1 GROUP BY a;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 SIMPLE t1 ALL NULL NULL NULL NULL 4 Using where
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests.
|
||||
|
@ -3324,4 +3324,28 @@ SELECT * FROM t1;
|
||||
DROP VIEW v1,v2;
|
||||
DROP TABLE t1,t2,t3,t4;
|
||||
|
||||
#
|
||||
# Bug #29104: assertion abort for a query with a view column reference
|
||||
# in the GROUP BY list and a condition requiring the value
|
||||
# of another view column to be equal to a constant
|
||||
#
|
||||
|
||||
CREATE TABLE t1 (a int, b int);
|
||||
INSERT INTO t1 VALUES (1,2), (2,2), (1,3), (1,2);
|
||||
|
||||
CREATE VIEW v1 AS SELECT a, b+1 as b FROM t1;
|
||||
|
||||
|
||||
SELECT b, SUM(a) FROM v1 WHERE b=3 GROUP BY b;
|
||||
EXPLAIN SELECT b, SUM(a) FROM v1 WHERE b=3 GROUP BY b;
|
||||
|
||||
SELECT a, SUM(b) FROM v1 WHERE b=3 GROUP BY a;
|
||||
EXPLAIN SELECT a, SUM(b) FROM v1 WHERE b=3 GROUP BY a;
|
||||
|
||||
SELECT a, SUM(b) FROM v1 WHERE a=1 GROUP BY a;
|
||||
EXPLAIN SELECT a, SUM(b) FROM v1 WHERE a=1 GROUP BY a;
|
||||
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests.
|
||||
|
10
sql/item.cc
10
sql/item.cc
@ -1938,10 +1938,11 @@ bool Item_field::val_bool_result()
|
||||
|
||||
bool Item_field::eq(const Item *item, bool binary_cmp) const
|
||||
{
|
||||
if (item->type() != FIELD_ITEM)
|
||||
Item *real_item= ((Item *) item)->real_item();
|
||||
if (real_item->type() != FIELD_ITEM)
|
||||
return 0;
|
||||
|
||||
Item_field *item_field= (Item_field*) item;
|
||||
Item_field *item_field= (Item_field*) real_item;
|
||||
if (item_field->field && field)
|
||||
return item_field->field == field;
|
||||
/*
|
||||
@ -5642,8 +5643,7 @@ bool Item_outer_ref::fix_fields(THD *thd, Item **reference)
|
||||
DESCRIPTION
|
||||
A view column reference is considered equal to another column
|
||||
reference if the second one is a view column and if both column
|
||||
references resolve to the same item. It is assumed that both
|
||||
items are of the same type.
|
||||
references resolve to the same item.
|
||||
|
||||
RETURN
|
||||
TRUE Referenced item is equal to given item
|
||||
@ -5659,8 +5659,6 @@ bool Item_direct_view_ref::eq(const Item *item, bool binary_cmp) const
|
||||
if (item_ref->ref_type() == VIEW_REF)
|
||||
{
|
||||
Item *item_ref_ref= *(item_ref->ref);
|
||||
DBUG_ASSERT((*ref)->real_item()->type() ==
|
||||
item_ref_ref->real_item()->type());
|
||||
return ((*ref)->real_item() == item_ref_ref->real_item());
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user