mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Bug#11151: LOAD DATA INFILE commits transaction in 5.0
No longer create or commit transactions within the loading of files. mysql-test/r/loaddata.result: Add test result. mysql-test/t/loaddata.test: Add test case. sql/sql_load.cc: Loading data from a table should neither create new transactions nor destroy (by committing or rolling-back) existing transactions.
This commit is contained in:
@ -139,3 +139,18 @@ a b c
|
|||||||
10 NULL Ten
|
10 NULL Ten
|
||||||
15 NULL Fifteen
|
15 NULL Fifteen
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
create table bug11151 (a int, b int) engine=InnoDB;
|
||||||
|
start transaction;
|
||||||
|
insert into bug11151 values (0, 0);
|
||||||
|
rollback;
|
||||||
|
select a, b from bug11151;
|
||||||
|
a b
|
||||||
|
delete from bug11151;
|
||||||
|
start transaction;
|
||||||
|
insert into bug11151 values (42, 0);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' into table bug11151 fields terminated by '' enclosed by '' (a, b);
|
||||||
|
insert into bug11151 values (42, 99);
|
||||||
|
rollback;
|
||||||
|
select a, b from bug11151;
|
||||||
|
a b
|
||||||
|
drop table bug11151;
|
||||||
|
@ -113,4 +113,26 @@ select * from t1;
|
|||||||
# cleanup
|
# cleanup
|
||||||
drop table t1, t2;
|
drop table t1, t2;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#
|
||||||
|
# Bug#11151: LOAD DATA INFILE commits transaction in 5.0
|
||||||
|
#
|
||||||
|
create table bug11151 (a int, b int) engine=InnoDB;
|
||||||
|
|
||||||
|
start transaction;
|
||||||
|
insert into bug11151 values (0, 0);
|
||||||
|
rollback;
|
||||||
|
select a, b from bug11151;
|
||||||
|
delete from bug11151;
|
||||||
|
|
||||||
|
start transaction;
|
||||||
|
insert into bug11151 values (42, 0);
|
||||||
|
load data infile '../std_data_ln/loaddata5.dat' into table bug11151 fields terminated by '' enclosed by '' (a, b);
|
||||||
|
insert into bug11151 values (42, 99);
|
||||||
|
rollback;
|
||||||
|
select a, b from bug11151;
|
||||||
|
|
||||||
|
drop table bug11151;
|
||||||
|
|
||||||
# End of 5.0 tests
|
# End of 5.0 tests
|
||||||
|
@ -381,7 +381,7 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
|||||||
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
|
table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
|
||||||
table->next_number_field=0;
|
table->next_number_field=0;
|
||||||
}
|
}
|
||||||
ha_enable_transaction(thd, TRUE);
|
|
||||||
if (file >= 0)
|
if (file >= 0)
|
||||||
my_close(file,MYF(0));
|
my_close(file,MYF(0));
|
||||||
free_blobs(table); /* if pack_blob was used */
|
free_blobs(table); /* if pack_blob was used */
|
||||||
@ -396,9 +396,6 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
|||||||
|
|
||||||
if (error)
|
if (error)
|
||||||
{
|
{
|
||||||
if (transactional_table)
|
|
||||||
ha_autocommit_or_rollback(thd,error);
|
|
||||||
|
|
||||||
if (read_file_from_client)
|
if (read_file_from_client)
|
||||||
while (!read_info.next_line())
|
while (!read_info.next_line())
|
||||||
;
|
;
|
||||||
@ -465,8 +462,6 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
|
|||||||
ignore, transactional_table);
|
ignore, transactional_table);
|
||||||
}
|
}
|
||||||
#endif /*!EMBEDDED_LIBRARY*/
|
#endif /*!EMBEDDED_LIBRARY*/
|
||||||
if (transactional_table)
|
|
||||||
error=ha_autocommit_or_rollback(thd,error);
|
|
||||||
|
|
||||||
err:
|
err:
|
||||||
if (thd->lock)
|
if (thd->lock)
|
||||||
|
Reference in New Issue
Block a user