mirror of
https://github.com/MariaDB/server.git
synced 2025-08-01 03:47:19 +03:00
fixed restoring of thd->count_cuted_fields in store_val_in_field
(fixed #bug 2012) mysql-test/r/insert_select.result: added test case for bug #2012 mysql-test/t/insert_select.test: added test case for bug #2012
This commit is contained in:
@ -11,3 +11,15 @@ payoutID
|
|||||||
19
|
19
|
||||||
20
|
20
|
||||||
22
|
22
|
||||||
|
Month Type Field Count
|
||||||
|
2003-09-01 1 1 100
|
||||||
|
2003-09-01 1 2 100
|
||||||
|
2003-09-01 2 1 100
|
||||||
|
2003-09-01 2 2 100
|
||||||
|
2003-09-01 3 1 100
|
||||||
|
NULL Field Count
|
||||||
|
NULL 1 100
|
||||||
|
NULL 2 100
|
||||||
|
No Field Count
|
||||||
|
0 1 100
|
||||||
|
0 2 100
|
||||||
|
@ -10,3 +10,34 @@ insert into t2 (payoutID) SELECT DISTINCT payoutID FROM t1;
|
|||||||
insert into t2 (payoutID) SELECT payoutID+10 FROM t1;
|
insert into t2 (payoutID) SELECT payoutID+10 FROM t1;
|
||||||
select * from t2;
|
select * from t2;
|
||||||
drop table t1,t2;
|
drop table t1,t2;
|
||||||
|
|
||||||
|
#
|
||||||
|
# Another problem from Bug #2012
|
||||||
|
#
|
||||||
|
|
||||||
|
CREATE TABLE t1(
|
||||||
|
Month date NOT NULL,
|
||||||
|
Type tinyint(3) unsigned NOT NULL auto_increment,
|
||||||
|
Field int(10) unsigned NOT NULL,
|
||||||
|
Count int(10) unsigned NOT NULL,
|
||||||
|
UNIQUE KEY Month (Month,Type,Field)
|
||||||
|
);
|
||||||
|
|
||||||
|
insert into t1 Values
|
||||||
|
(20030901, 1, 1, 100),
|
||||||
|
(20030901, 1, 2, 100),
|
||||||
|
(20030901, 2, 1, 100),
|
||||||
|
(20030901, 2, 2, 100),
|
||||||
|
(20030901, 3, 1, 100);
|
||||||
|
|
||||||
|
select * from t1;
|
||||||
|
|
||||||
|
Select null, Field, Count From t1 Where Month=20030901 and Type=2;
|
||||||
|
|
||||||
|
create table t2(No int not null, Field int not null, Count int not null);
|
||||||
|
|
||||||
|
insert into t2 Select null, Field, Count From t1 Where Month=20030901 and Type=2;
|
||||||
|
|
||||||
|
select * from t2;
|
||||||
|
|
||||||
|
drop table t1, t2;
|
||||||
|
@ -2184,9 +2184,15 @@ store_val_in_field(Field *field,Item *item)
|
|||||||
{
|
{
|
||||||
THD *thd=current_thd;
|
THD *thd=current_thd;
|
||||||
ulong cuted_fields=thd->cuted_fields;
|
ulong cuted_fields=thd->cuted_fields;
|
||||||
|
/*
|
||||||
|
we should restore old value of count_cuted_fields because
|
||||||
|
store_val_in_field can be called from mysql_insert
|
||||||
|
with select_insert, which make count_cuted_fields= 1
|
||||||
|
*/
|
||||||
|
bool old_count_cuted_fields= thd->count_cuted_fields;
|
||||||
thd->count_cuted_fields=1;
|
thd->count_cuted_fields=1;
|
||||||
item->save_in_field(field);
|
item->save_in_field(field);
|
||||||
thd->count_cuted_fields=0;
|
thd->count_cuted_fields= old_count_cuted_fields;
|
||||||
return cuted_fields != thd->cuted_fields;
|
return cuted_fields != thd->cuted_fields;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user