summaryrefslogtreecommitdiff
path: root/sql
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
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')
-rw-r--r--sql/sql_load.cc15
-rw-r--r--sql/sql_show.cc16
-rw-r--r--sql/sql_string.cc6
3 files changed, 28 insertions, 9 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);
}
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 71ee60e1eca..5869feefdc3 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -182,6 +182,8 @@ mysql_find_files(THD *thd,List<char> *files, const char *db,const char *path,
TABLE_LIST table_list;
DBUG_ENTER("mysql_find_files");
+ if (wild && !wild[0])
+ wild=0;
bzero((char*) &table_list,sizeof(table_list));
if (!(dirp = my_dir(path,MYF(MY_WME | (dir ? MY_WANT_STAT : 0)))))
@@ -200,7 +202,7 @@ mysql_find_files(THD *thd,List<char> *files, const char *db,const char *path,
#endif
{
if (file->name[0] == '.' || !MY_S_ISDIR(file->mystat.st_mode) ||
- (wild && wild[0] && wild_compare(file->name,wild)))
+ (wild && wild_compare(file->name,wild)))
continue;
}
}
@@ -211,8 +213,16 @@ mysql_find_files(THD *thd,List<char> *files, const char *db,const char *path,
is_prefix(file->name,tmp_file_prefix))
continue;
*ext=0;
- if (wild && wild[0] && wild_compare(file->name,wild))
- continue;
+ if (wild)
+ {
+ if (lower_case_table_names)
+ {
+ if (wild_case_compare(file->name,wild))
+ continue;
+ }
+ else if (wild_compare(file->name,wild))
+ continue;
+ }
}
/* Don't show tables where we don't have any privileges */
if (db && !(col_access & TABLE_ACLS))
diff --git a/sql/sql_string.cc b/sql/sql_string.cc
index 174d07d8ec4..e6cdd089bf1 100644
--- a/sql/sql_string.cc
+++ b/sql/sql_string.cc
@@ -542,8 +542,8 @@ String *copy_if_not_alloced(String *to,String *from,uint32 from_length)
#endif
int wild_case_compare(const char *str,const char *str_end,
- const char *wildstr,const char *wildend,
- char escape)
+ const char *wildstr,const char *wildend,
+ char escape)
{
int result= -1; // Not found, using wildcards
#ifdef USE_MB
@@ -677,7 +677,7 @@ int wild_case_compare(String &match,String &wild, char escape)
*/
int wild_compare(const char *str,const char *str_end,
- const char *wildstr,const char *wildend,char escape)
+ const char *wildstr,const char *wildend,char escape)
{
int result= -1; // Not found, using wildcards
while (wildstr != wildend)