summaryrefslogtreecommitdiff
path: root/sql/sql_update.cc
diff options
context:
space:
mode:
authorserg@serg.mylan <>2004-06-23 12:29:05 +0200
committerserg@serg.mylan <>2004-06-23 12:29:05 +0200
commit3f1c4ba745573eefb8739a9d16199ec552f190de (patch)
treeed41d441646213c959f138d9a933c09f994d81d9 /sql/sql_update.cc
parente70b330f6956041d5e57d77961e0de92682971eb (diff)
downloadmariadb-git-3f1c4ba745573eefb8739a9d16199ec552f190de.tar.gz
handler interface cleanups:
more logical table/index_flags return HA_ERR_WRONG_COMMAND instead of abstract methods where appropriate max_keys and other limits renamed to max_supported_keys/etc max_keys/etc are now wrappers to max_supported_keys/etc ha_index_init/ha_rnd_init/ha_index_end/ha_rnd_end are now wrappers to real {index,rnd}_{init,end} to enforce strict pairing
Diffstat (limited to 'sql/sql_update.cc')
-rw-r--r--sql/sql_update.cc21
1 files changed, 12 insertions, 9 deletions
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index 2428aac2da5..af8a9705e95 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -319,6 +319,7 @@ int mysql_update(THD *thd,
error= 1; // Aborted
end_read_record(&info);
free_io_cache(table); // If ORDER BY
+ delete select;
thd->proc_info="end";
VOID(table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY));
@@ -358,7 +359,6 @@ int mysql_update(THD *thd,
thd->lock=0;
}
- delete select;
free_underlaid_joins(thd, &thd->lex->select_lex);
if (error >= 0)
send_error(thd,thd->killed ? ER_SERVER_SHUTDOWN : 0); /* purecov: inspected */
@@ -964,25 +964,24 @@ int multi_update::do_updates(bool from_send_error)
TABLE_LIST *cur_table;
int local_error;
ha_rows org_updated;
- TABLE *table;
+ TABLE *table, *tmp_table;
DBUG_ENTER("do_updates");
-
- do_update= 0; // Don't retry this function
+
+ do_update= 0; // Don't retry this function
if (!found)
DBUG_RETURN(0);
for (cur_table= update_tables; cur_table ; cur_table= cur_table->next)
{
byte *ref_pos;
- TABLE *tmp_table;
-
+
table = cur_table->table;
if (table == table_to_update)
continue; // Already updated
org_updated= updated;
tmp_table= tmp_tables[cur_table->shared];
tmp_table->file->extra(HA_EXTRA_CACHE); // Change to read cache
- (void) table->file->rnd_init(0);
+ (void) table->file->ha_rnd_init(0);
table->file->extra(HA_EXTRA_NO_CACHE);
/*
@@ -998,7 +997,7 @@ int multi_update::do_updates(bool from_send_error)
}
copy_field_end=copy_field_ptr;
- if ((local_error = tmp_table->file->rnd_init(1)))
+ if ((local_error = tmp_table->file->ha_rnd_init(1)))
goto err;
ref_pos= (byte*) tmp_table->field[0]->ptr;
@@ -1049,7 +1048,8 @@ int multi_update::do_updates(bool from_send_error)
else
trans_safe= 0; // Can't do safe rollback
}
- (void) table->file->rnd_end();
+ (void) table->file->ha_rnd_end();
+ (void) tmp_table->file->ha_rnd_end();
}
DBUG_RETURN(0);
@@ -1057,6 +1057,9 @@ err:
if (!from_send_error)
table->file->print_error(local_error,MYF(0));
+ (void) table->file->ha_rnd_end();
+ (void) tmp_table->file->ha_rnd_end();
+
if (updated != org_updated)
{
if (table->tmp_table != NO_TMP_TABLE)