Merge ibabaev@bk-internal.mysql.com:/home/bk/mysql-5.0

into  rurik.mysql.com:/home/igor/mysql-5.0
This commit is contained in:
igor@rurik.mysql.com 2006-03-27 20:16:52 -08:00
commit df80048d5f
3 changed files with 27 additions and 7 deletions

View file

@ -2553,3 +2553,12 @@ a b
3 3
drop view v2, v1;
drop table t1;
CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (1), (2);
CREATE VIEW v1 AS SELECT SQRT(a) my_sqrt FROM t1;
SELECT my_sqrt FROM v1 ORDER BY my_sqrt;
my_sqrt
1
1.4142135623731
DROP VIEW v1;
DROP TABLE t1;

View file

@ -2399,3 +2399,17 @@ update v2 set b=3 where a=2;
select * from v2;
drop view v2, v1;
drop table t1;
#
# Bug #18386: select from view over a table with ORDER BY view_col clause
# given view_col is not an image of any column from the base table
CREATE TABLE t1 (a int);
INSERT INTO t1 VALUES (1), (2);
CREATE VIEW v1 AS SELECT SQRT(a) my_sqrt FROM t1;
SELECT my_sqrt FROM v1 ORDER BY my_sqrt;
DROP VIEW v1;
DROP TABLE t1;

View file

@ -5076,11 +5076,8 @@ bool Item_direct_view_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 point to the same field. For views 'same field' means
the same Item_field object in the view translation table, where
the view translation table contains all result columns of the
view. This definition ensures that view columns are resolved
in the same manner as table columns.
references resolve to the same item. It is assumed that both
items are of the same type.
RETURN
TRUE Referenced item is equal to given item
@ -5096,8 +5093,8 @@ 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() == FIELD_ITEM &&
(item_ref_ref->real_item()->type() == FIELD_ITEM));
DBUG_ASSERT((*ref)->real_item()->type() ==
item_ref_ref->real_item()->type());
return ((*ref)->real_item() == item_ref_ref->real_item());
}
}