diff options
author | unknown <konstantin@mysql.com> | 2006-02-02 18:17:18 +0300 |
---|---|---|
committer | unknown <konstantin@mysql.com> | 2006-02-02 18:17:18 +0300 |
commit | 95a3509a6637699fdcc26d7042013778c5e55d08 (patch) | |
tree | 336ed0f3ebd53f06d2b14904f4fd937b5fe487c6 /sql/sql_update.cc | |
parent | 9b3e6c27b0615270042cff92c88cb338ded9b69f (diff) | |
parent | 1e686ae7702d297cc9fd261c42864653f4fdd7b3 (diff) | |
download | mariadb-git-95a3509a6637699fdcc26d7042013778c5e55d08.tar.gz |
Merge mysql.com:/opt/local/work/mysql-4.1-root
into mysql.com:/opt/local/work/mysql-5.0-root
BitKeeper/deleted/.del-rpl_ignore_table.result:
Delete: mysql-test/r/rpl_ignore_table.result
BitKeeper/deleted/.del-rpl_multi_update4.result:
Delete: mysql-test/r/rpl_multi_update4.result
BitKeeper/deleted/.del-rpl_ignore_table-slave.opt:
Delete: mysql-test/t/rpl_ignore_table-slave.opt
BitKeeper/deleted/.del-rpl_ignore_table.test:
Delete: mysql-test/t/rpl_ignore_table.test
BitKeeper/deleted/.del-rpl_multi_update4-slave.opt:
Delete: mysql-test/t/rpl_multi_update4-slave.opt
BitKeeper/deleted/.del-disabled.def:
Auto merged
BitKeeper/deleted/.del-rpl_multi_update4.test:
Delete: mysql-test/t/rpl_multi_update4.test
heap/hp_create.c:
Auto merged
mysql-test/r/date_formats.result:
Auto merged
mysql-test/r/myisam.result:
Auto merged
mysql-test/r/update.result:
Auto merged
mysql-test/t/date_formats.test:
Auto merged
mysql-test/t/heap.test:
Auto merged
mysql-test/t/kill.test:
Auto merged
mysql-test/t/update.test:
Auto merged
ndb/include/mgmapi/mgmapi_config_parameters.h:
Auto merged
ndb/test/ndbapi/testBlobs.cpp:
Auto merged
sql/sql_base.cc:
Auto merged
sql/sql_select.cc:
Auto merged
sql/sql_select.h:
Auto merged
configure.in:
Manual merge.
libmysql/libmysql.c:
Manual merge.
mysql-test/r/heap.result:
Manual merge.
mysql-test/r/heap_hash.result:
Manual merge.
mysql-test/r/kill.result:
Manual merge.
sql/ha_heap.cc:
Manual merge.
sql/ha_heap.h:
Manual merge.
sql/item_timefunc.cc:
Manual merge.
sql/sql_class.cc:
Manual merge.
sql/sql_parse.cc:
Manual merge.
sql/sql_update.cc:
Manual merge.
tests/mysql_client_test.c:
Manual merge.
Diffstat (limited to 'sql/sql_update.cc')
-rw-r--r-- | sql/sql_update.cc | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 2ff8a4bc244..d319167b61d 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -308,7 +308,6 @@ int mysql_update(THD *thd, SORT_FIELD *sortorder; ha_rows examined_rows; - used_index= MAX_KEY; // For call to init_read_record() table->sort.io_cache = (IO_CACHE *) my_malloc(sizeof(IO_CACHE), MYF(MY_FAE | MY_ZEROFILL)); if (!(sortorder=make_unireg_sortorder(order, &length)) || @@ -339,10 +338,21 @@ int mysql_update(THD *thd, if (open_cached_file(&tempfile, mysql_tmpdir,TEMP_PREFIX, DISK_BUFFER_SIZE, MYF(MY_WME))) goto err; - + /* If quick select is used, initialize it before retrieving rows. */ if (select && select->quick && select->quick->reset()) goto err; + + /* + When we get here, we have one of the following options: + A. used_index == MAX_KEY + This means we should use full table scan, and start it with + init_read_record call + B. used_index != MAX_KEY + B.1 quick select is used, start the scan with init_read_record + B.2 quick select is not used, this is full index scan (with LIMIT) + Full index scan must be started with init_read_record_idx + */ if (used_index == MAX_KEY || (select && select->quick)) init_read_record(&info,thd,table,select,0,1); else |