diff options
author | unknown <monty@mysql.com> | 2006-06-04 21:05:22 +0300 |
---|---|---|
committer | unknown <monty@mysql.com> | 2006-06-04 21:05:22 +0300 |
commit | 555eb848f2aa3ac5eb09b251072930eb38cd8f7e (patch) | |
tree | 8e3365da0e05942d80e6e6ae092f7e0e40832fe2 /sql/sql_delete.cc | |
parent | 14e1d69aeaa09075fe3ec609d5ccdcf899508d7d (diff) | |
parent | 01d03e7b4b14b805a0d19c8473a495f05b34de65 (diff) | |
download | mariadb-git-555eb848f2aa3ac5eb09b251072930eb38cd8f7e.tar.gz |
Merge bk-internal.mysql.com:/home/bk/mysql-5.1-new
into mysql.com:/home/my/mysql-5.1
BitKeeper/etc/ignore:
auto-union
include/heap.h:
Auto merged
include/my_base.h:
Auto merged
include/mysql_com.h:
Auto merged
mysql-test/mysql-test-run.pl:
Auto merged
mysql-test/mysql-test-run.sh:
Auto merged
mysql-test/extra/binlog_tests/mix_innodb_myisam_binlog.test:
Auto merged
mysql-test/r/binlog_stm_mix_innodb_myisam.result:
Auto merged
mysql-test/r/func_time.result:
Auto merged
mysql-test/r/ndb_index_unique.result:
Auto merged
mysql-test/t/func_time.test:
Auto merged
mysql-test/t/view_grant.test:
Auto merged
sql/field.cc:
Auto merged
sql/field.h:
Auto merged
sql/ha_berkeley.cc:
Auto merged
sql/ha_berkeley.h:
Auto merged
mysql-test/r/view_grant.result:
Auto merged
sql/ha_federated.cc:
Auto merged
sql/ha_federated.h:
Auto merged
sql/ha_heap.h:
Auto merged
sql/ha_innodb.cc:
Auto merged
sql/ha_innodb.h:
Auto merged
sql/ha_myisam.h:
Auto merged
sql/ha_myisammrg.cc:
Auto merged
sql/ha_ndbcluster.h:
Auto merged
sql/ha_partition.h:
Auto merged
sql/item.cc:
Auto merged
sql/item_cmpfunc.h:
Auto merged
sql/item_func.cc:
Auto merged
sql/item_func.h:
Auto merged
sql/item_strfunc.h:
Auto merged
sql/item_subselect.cc:
Auto merged
sql/item_subselect.h:
Auto merged
sql/log.cc:
Auto merged
sql/mysqld.cc:
Auto merged
sql/set_var.cc:
Auto merged
sql/sp.cc:
Auto merged
sql/sp_head.cc:
Auto merged
sql/spatial.cc:
Auto merged
sql/sql_acl.cc:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_class.cc:
Auto merged
sql/sql_class.h:
Auto merged
sql/sql_bitmap.h:
Auto merged
sql/sql_parse.cc:
Auto merged
sql/sql_partition.cc:
Auto merged
sql/sql_plugin.cc:
Auto merged
sql/sql_prepare.cc:
Auto merged
sql/share/errmsg.txt:
Auto merged
sql/sql_handler.cc:
Auto merged
sql/sql_view.cc:
Auto merged
sql/table.h:
Auto merged
storage/archive/ha_archive.cc:
Auto merged
storage/archive/ha_archive.h:
Auto merged
storage/example/ha_example.cc:
Auto merged
storage/myisam/ft_boolean_search.c:
Auto merged
unittest/mysys/base64-t.c:
Auto merged
mysql-test/r/innodb_mysql.result:
manual merge
mysql-test/t/innodb_mysql.test:
manual merge
mysql-test/valgrind.supp:
manual merge
sql/event.cc:
manual merge
sql/ha_heap.cc:
manual merge
sql/ha_myisam.cc:
manual merge
sql/ha_ndbcluster.cc:
manual merge
sql/ha_ndbcluster_binlog.cc:
manual merge
sql/ha_partition.cc:
manual merge
sql/handler.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/handler.h:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/item.h:
automatic merge
sql/item_cmpfunc.cc:
automatic merge
sql/log_event.cc:
manual merge
Trivial cleanup
sql/mysql_priv.h:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/opt_range.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_delete.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_insert.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_load.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_select.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_show.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_table.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/sql_update.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
sql/table.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
storage/blackhole/ha_blackhole.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
storage/csv/ha_tina.cc:
manual merge
renamed print_key_dupp_error to print_key_dup_error
mysql-test/valgrind.supp.orig:
Manual merge
Diffstat (limited to 'sql/sql_delete.cc')
-rw-r--r-- | sql/sql_delete.cc | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/sql/sql_delete.cc b/sql/sql_delete.cc index eb05ad654e4..a7a50611a02 100644 --- a/sql/sql_delete.cc +++ b/sql/sql_delete.cc @@ -80,9 +80,9 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, !(specialflag & (SPECIAL_NO_NEW_FUNC | SPECIAL_SAFE_MODE)) && !(table->triggers && table->triggers->has_delete_triggers())) { - /* Update the table->file->records number */ + /* Update the table->file->stats.records number */ table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK); - ha_rows const maybe_deleted= table->file->records; + ha_rows const maybe_deleted= table->file->stats.records; /* If all rows shall be deleted, we (almost) always log this statement-based (see [binlog], below), so we set this flag and @@ -113,7 +113,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, DBUG_RETURN(0); } #endif - /* Update the table->file->records number */ + /* Update the table->file->stats.records number */ table->file->info(HA_STATUS_VARIABLE | HA_STATUS_NO_LOCK); table->used_keys.clear_all(); @@ -184,7 +184,7 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, if (!(sortorder= make_unireg_sortorder((ORDER*) order->first, &length)) || (table->sort.found_records = filesort(thd, table, sortorder, length, - select, HA_POS_ERROR, + select, HA_POS_ERROR, 1, &examined_rows)) == HA_POS_ERROR) { @@ -226,6 +226,8 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, if (ha_delete_all_rows) thd->options&= ~static_cast<ulonglong>(OPTION_BIN_LOG); + table->mark_columns_needed_for_delete(); + while (!(error=info.read_record(&info)) && !thd->killed && !thd->net.report_error) { @@ -285,7 +287,6 @@ bool mysql_delete(THD *thd, TABLE_LIST *table_list, COND *conds, } thd->proc_info= "end"; end_read_record(&info); - free_io_cache(table); // Will not do any harm if (options & OPTION_QUICK) (void) table->file->extra(HA_EXTRA_NORMAL); @@ -396,7 +397,7 @@ bool mysql_prepare_delete(THD *thd, TABLE_LIST *table_list, Item **conds) thd->lex->allow_sum_func= 0; if (setup_tables_and_check_access(thd, &thd->lex->select_lex.context, &thd->lex->select_lex.top_join_list, - table_list, conds, + table_list, &select_lex->leaf_tables, FALSE, DELETE_ACL) || setup_conds(thd, table_list, select_lex->leaf_tables, conds) || @@ -459,7 +460,7 @@ bool mysql_multi_delete_prepare(THD *thd) */ if (setup_tables_and_check_access(thd, &thd->lex->select_lex.context, &thd->lex->select_lex.top_join_list, - lex->query_tables, &lex->select_lex.where, + lex->query_tables, &lex->select_lex.leaf_tables, FALSE, DELETE_ACL)) DBUG_RETURN(TRUE); @@ -567,6 +568,8 @@ multi_delete::initialize_tables(JOIN *join) transactional_tables= 1; else normal_tables= 1; + tbl->prepare_for_position(); + tbl->mark_columns_needed_for_delete(); } else if ((tab->type != JT_SYSTEM && tab->type != JT_CONST) && walk == delete_tables) @@ -606,7 +609,6 @@ multi_delete::~multi_delete() table_being_deleted= table_being_deleted->next_local) { TABLE *table= table_being_deleted->table; - free_io_cache(table); // Alloced by unique table->no_keyread=0; } |