summaryrefslogtreecommitdiff
path: root/sql/sql_insert.cc
diff options
context:
space:
mode:
authormonty@donna.mysql.fi <>2001-05-17 00:46:50 +0300
committermonty@donna.mysql.fi <>2001-05-17 00:46:50 +0300
commit2ba0846a60ac43e1ef477bdfd95c37901b6c7fe7 (patch)
treebfa83a61c2689e0f64e7be02d414bcf366c068a1 /sql/sql_insert.cc
parentb708df267d6fb180368f84405fbc06006a318f55 (diff)
downloadmariadb-git-2ba0846a60ac43e1ef477bdfd95c37901b6c7fe7.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.
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);