Commit e0a48a8c authored by unknown's avatar unknown

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.
parent e4e2e502
......@@ -139,3 +139,18 @@ a b c
10 NULL Ten
15 NULL Fifteen
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
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
......@@ -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->next_number_field=0;
}
ha_enable_transaction(thd, TRUE);
if (file >= 0)
my_close(file,MYF(0));
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 (transactional_table)
ha_autocommit_or_rollback(thd,error);
if (read_file_from_client)
while (!read_info.next_line())
;
......@@ -465,8 +462,6 @@ bool mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
ignore, transactional_table);
}
#endif /*!EMBEDDED_LIBRARY*/
if (transactional_table)
error=ha_autocommit_or_rollback(thd,error);
err:
if (thd->lock)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment