diff options
author | unknown <monty@hundin.mysql.fi> | 2001-08-28 06:43:55 +0300 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-08-28 06:43:55 +0300 |
commit | bfe2213babce74eac616dd3be0c8ac5bce16f032 (patch) | |
tree | 476d8d3dea118db2d3981f0e5754e23cc70924ab /sql/sql_load.cc | |
parent | 30774b35493d3ad14ee40b73d4b9ffff51dd6cd1 (diff) | |
download | mariadb-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.cc | 15 |
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); } |