summaryrefslogtreecommitdiff
path: root/sql/sql_insert.cc
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.fi>2001-05-17 00:46:50 +0300
committerunknown <monty@donna.mysql.fi>2001-05-17 00:46:50 +0300
commitb12ff6f0a70aebcbd6cb8909cdaf10a5d7f44501 (patch)
treebfa83a61c2689e0f64e7be02d414bcf366c068a1 /sql/sql_insert.cc
parent81f6b4585275ccf2650a70685301b1b9ed4f66b5 (diff)
downloadmariadb-git-b12ff6f0a70aebcbd6cb8909cdaf10a5d7f44501.tar.gz
Fixed bug when using MERGE on files > 4G
Fixed bug in SELECT db1.table.* FROM db1.table,db2.table Fixed bug in INSERT DELAYED when doing shutdown and a table was locked Changed that tmp_table_size =4G-1 means unlimited. Docs/manual.texi: Added new section about crashed MyISAM tables. Cleaned up subsections for InnoDB client/mysql.cc: Cleanup myisam/mi_rkey.c: Cleanup myisam/mi_search.c: Fixed wrong casts in debug messages myisammrg/myrg_rrnd.c: Fixed bug when using files > 4G mysys/getvar.c: Changed to use longlong to support arguments up to 4G mysys/thr_lock.c: Fix for delay insert sql/mysqld.cc: Increased default size for temporary tables sql/sql_base.cc: Fixed bug in SELECT db1.table.* FROM db1.table,db2.table sql/sql_insert.cc: Fixed bug in INSERT DELAYED when doing shutdown and a table was locked sql/sql_select.cc: Changed that tmp_table_size =4G-1 means unlimited.
Diffstat (limited to 'sql/sql_insert.cc')
-rw-r--r--sql/sql_insert.cc13
1 files changed, 9 insertions, 4 deletions
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index 3be195b8984..cfd16df5d17 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -1088,6 +1088,7 @@ bool delayed_insert::handle_inserts(void)
int error;
uint max_rows;
bool using_ignore=0;
+ delayed_row *row;
DBUG_ENTER("handle_inserts");
/* Allow client to insert new rows */
@@ -1113,7 +1114,6 @@ bool delayed_insert::handle_inserts(void)
table->file->extra(HA_EXTRA_WRITE_CACHE);
pthread_mutex_lock(&mutex);
- delayed_row *row;
while ((row=rows.get()))
{
stacked_inserts--;
@@ -1138,9 +1138,7 @@ bool delayed_insert::handle_inserts(void)
if (write_record(table,&info))
{
info.error++; // Ignore errors
- pthread_mutex_lock(&LOCK_delayed_status);
- delayed_insert_errors++;
- pthread_mutex_unlock(&LOCK_delayed_status);
+ thread_safe_increment(delayed_insert_errors,&LOCK_delayed_status);
row->log_query = 0;
}
if (using_ignore)
@@ -1209,6 +1207,13 @@ bool delayed_insert::handle_inserts(void)
DBUG_RETURN(0);
err:
+ /* Remove all not used rows */
+ while ((row=rows.get()))
+ {
+ delete row;
+ thread_safe_increment(delayed_insert_errors,&LOCK_delayed_status);
+ stacked_inserts--;
+ }
thread_safe_increment(delayed_insert_errors, &LOCK_delayed_status);
pthread_mutex_lock(&mutex);
DBUG_RETURN(1);