summaryrefslogtreecommitdiff
path: root/sql/sql_load.cc
diff options
context:
space:
mode:
authorunknown <monty@hundin.mysql.fi>2001-08-28 06:43:55 +0300
committerunknown <monty@hundin.mysql.fi>2001-08-28 06:43:55 +0300
commitbfe2213babce74eac616dd3be0c8ac5bce16f032 (patch)
tree476d8d3dea118db2d3981f0e5754e23cc70924ab /sql/sql_load.cc
parent30774b35493d3ad14ee40b73d4b9ffff51dd6cd1 (diff)
downloadmariadb-git-bfe2213babce74eac616dd3be0c8ac5bce16f032.tar.gz
Fixed that LOAD DATA INFILE works with transactions.
Fix for lower case filenames BitKeeper/deleted/.del-select.tst~2e626fa07144d2c8: Delete: mysql-test/misc/select.tst Docs/manual.texi: Better examples for sub selects bdb/lock/lock_region.c: Fixed not critical error mysql-test/r/gemini.result: Testcase for load data infile mysql-test/t/gemini.test: Testcase for load data infile sql/sql_load.cc: Fixed that LOAD DATA INFILE works with transactions sql/sql_show.cc: Fix for lower case filenames sql/sql_string.cc: cleanup
Diffstat (limited to 'sql/sql_load.cc')
-rw-r--r--sql/sql_load.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index 274b1814674..9d3b899d31b 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -71,6 +71,8 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
String *field_term=ex->field_term,*escaped=ex->escaped,
*enclosed=ex->enclosed;
bool is_fifo=0;
+ bool using_transactions;
+
DBUG_ENTER("mysql_load");
if (escaped->length() > 1 || enclosed->length() > 1)
@@ -239,8 +241,13 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
free_blobs(table); /* if pack_blob was used */
table->copy_blobs=0;
thd->count_cuted_fields=0; /* Don`t calc cuted fields */
+ using_transactions = table->file->has_transactions();
if (error)
- DBUG_RETURN(-1); // Error on read
+ {
+ if (using_transactions)
+ ha_autocommit_or_rollback(thd,error);
+ DBUG_RETURN(-1); // Error on read
+ }
sprintf(name,ER(ER_LOAD_INFO),info.records,info.deleted,
info.records-info.copied,thd->cuted_fields);
send_ok(&thd->net,info.copied+info.deleted,0L,name);
@@ -248,7 +255,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
if(!thd->slave_thread)
mysql_update_log.write(thd,thd->query,thd->query_length);
- if (!table->file->has_transactions())
+ if (!using_transactions)
thd->options|=OPTION_STATUS_NO_TRANS_UPDATE;
if (!read_file_from_client && mysql_bin_log.is_open())
{
@@ -257,7 +264,9 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
handle_duplicates);
mysql_bin_log.write(&qinfo);
}
- DBUG_RETURN(0);
+ if (using_transactions)
+ error=ha_autocommit_or_rollback(thd,error);
+ DBUG_RETURN(error);
}