mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge office:mysql/autopush/B20466-5.0-opt
into macbook.mshome.net:/Users/kgeorge/mysql/work/B20466-5.0-opt sql/sql_select.cc: Auto merged
This commit is contained in:
@ -796,3 +796,28 @@ aaa
|
|||||||
show warnings;
|
show warnings;
|
||||||
Level Code Message
|
Level Code Message
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
CREATE TABLE t1 (a tinyint(3), b varchar(255), PRIMARY KEY (a));
|
||||||
|
INSERT INTO t1 VALUES (1,'-----'), (6,'Allemagne'), (17,'Autriche'),
|
||||||
|
(25,'Belgique'), (54,'Danemark'), (62,'Espagne'), (68,'France');
|
||||||
|
CREATE TABLE t2 (a tinyint(3), b tinyint(3), PRIMARY KEY (a), KEY b (b));
|
||||||
|
INSERT INTO t2 VALUES (1,1), (2,1), (6,6), (18,17), (15,25), (16,25),
|
||||||
|
(17,25), (10,54), (5,62),(3,68);
|
||||||
|
CREATE VIEW v1 AS select t1.a, concat(t1.b,'') AS b, t1.b as real_b from t1;
|
||||||
|
explain
|
||||||
|
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||||
|
where t2.b=v1.a GROUP BY t2.b;
|
||||||
|
id select_type table type possible_keys key key_len ref rows Extra
|
||||||
|
1 PRIMARY t2 index b b 2 NULL 10 Using index
|
||||||
|
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 1 test.t2.b 1
|
||||||
|
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||||
|
where t2.b=v1.a GROUP BY t2.b;
|
||||||
|
a b real_b
|
||||||
|
1 ----- -----
|
||||||
|
6 Allemagne Allemagne
|
||||||
|
17 Autriche Autriche
|
||||||
|
25 Belgique Belgique
|
||||||
|
54 Danemark Danemark
|
||||||
|
62 Espagne Espagne
|
||||||
|
68 France France
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -632,3 +632,26 @@ group by t1.c1;
|
|||||||
show warnings;
|
show warnings;
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug #20466: a view is mixing data when there's a trigger on the table
|
||||||
|
#
|
||||||
|
CREATE TABLE t1 (a tinyint(3), b varchar(255), PRIMARY KEY (a));
|
||||||
|
|
||||||
|
INSERT INTO t1 VALUES (1,'-----'), (6,'Allemagne'), (17,'Autriche'),
|
||||||
|
(25,'Belgique'), (54,'Danemark'), (62,'Espagne'), (68,'France');
|
||||||
|
|
||||||
|
CREATE TABLE t2 (a tinyint(3), b tinyint(3), PRIMARY KEY (a), KEY b (b));
|
||||||
|
|
||||||
|
INSERT INTO t2 VALUES (1,1), (2,1), (6,6), (18,17), (15,25), (16,25),
|
||||||
|
(17,25), (10,54), (5,62),(3,68);
|
||||||
|
|
||||||
|
CREATE VIEW v1 AS select t1.a, concat(t1.b,'') AS b, t1.b as real_b from t1;
|
||||||
|
|
||||||
|
explain
|
||||||
|
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||||
|
where t2.b=v1.a GROUP BY t2.b;
|
||||||
|
SELECT straight_join sql_no_cache v1.a, v1.b, v1.real_b from t2, v1
|
||||||
|
where t2.b=v1.a GROUP BY t2.b;
|
||||||
|
|
||||||
|
DROP VIEW v1;
|
||||||
|
DROP TABLE t1,t2;
|
||||||
|
@ -13066,10 +13066,11 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
|
|||||||
param->copy_funcs.empty();
|
param->copy_funcs.empty();
|
||||||
for (i= 0; (pos= li++); i++)
|
for (i= 0; (pos= li++); i++)
|
||||||
{
|
{
|
||||||
if (pos->real_item()->type() == Item::FIELD_ITEM)
|
Item *real_pos= pos->real_item();
|
||||||
|
if (real_pos->type() == Item::FIELD_ITEM)
|
||||||
{
|
{
|
||||||
Item_field *item;
|
Item_field *item;
|
||||||
pos= pos->real_item();
|
pos= real_pos;
|
||||||
if (!(item= new Item_field(thd, ((Item_field*) pos))))
|
if (!(item= new Item_field(thd, ((Item_field*) pos))))
|
||||||
goto err;
|
goto err;
|
||||||
pos= item;
|
pos= item;
|
||||||
@ -13108,12 +13109,13 @@ setup_copy_fields(THD *thd, TMP_TABLE_PARAM *param,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if ((pos->type() == Item::FUNC_ITEM ||
|
else if ((real_pos->type() == Item::FUNC_ITEM ||
|
||||||
pos->type() == Item::SUBSELECT_ITEM ||
|
real_pos->type() == Item::SUBSELECT_ITEM ||
|
||||||
pos->type() == Item::CACHE_ITEM ||
|
real_pos->type() == Item::CACHE_ITEM ||
|
||||||
pos->type() == Item::COND_ITEM) &&
|
real_pos->type() == Item::COND_ITEM) &&
|
||||||
!pos->with_sum_func)
|
!real_pos->with_sum_func)
|
||||||
{ // Save for send fields
|
{ // Save for send fields
|
||||||
|
pos= real_pos;
|
||||||
/* TODO:
|
/* TODO:
|
||||||
In most cases this result will be sent to the user.
|
In most cases this result will be sent to the user.
|
||||||
This should be changed to use copy_int or copy_real depending
|
This should be changed to use copy_int or copy_real depending
|
||||||
|
Reference in New Issue
Block a user