diff options
author | Sergei Golubchik <sergii@pisem.net> | 2013-01-15 19:13:32 +0100 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2013-01-15 19:13:32 +0100 |
commit | d3935adf7a4ea943583e9e51fe8fa8a2c14521dd (patch) | |
tree | 4125365a32fa25dde9e79ccfb4dcd10269071607 /sql/item_subselect.cc | |
parent | 85ea99dcaf8fd91fa566a78062dbfa416c2309fe (diff) | |
parent | 14ba37f76f87cc48cae62eb6bdf3cda294dff78d (diff) | |
download | mariadb-git-d3935adf7a4ea943583e9e51fe8fa8a2c14521dd.tar.gz |
mysql-5.5.29 merge
Diffstat (limited to 'sql/item_subselect.cc')
-rw-r--r-- | sql/item_subselect.cc | 31 |
1 files changed, 22 insertions, 9 deletions
diff --git a/sql/item_subselect.cc b/sql/item_subselect.cc index 265db0055ad..dbc4f9818d5 100644 --- a/sql/item_subselect.cc +++ b/sql/item_subselect.cc @@ -3258,11 +3258,14 @@ int subselect_uniquesubquery_engine::scan_table() TABLE *table= tab->table; DBUG_ENTER("subselect_uniquesubquery_engine::scan_table"); - if (table->file->inited) - table->file->ha_index_end(); - - if (table->file->ha_rnd_init_with_error(1)) - DBUG_RETURN(1); + if ((table->file->inited && + (error= table->file->ha_index_end())) || + (error= table->file->ha_rnd_init(1))) + { + (void) report_error(table, error); + DBUG_RETURN(true); + } + table->file->extra_opt(HA_EXTRA_CACHE, current_thd->variables.read_buff_size); table->null_row= 0; @@ -3398,8 +3401,13 @@ int subselect_uniquesubquery_engine::exec() DBUG_RETURN(0); } - if (!table->file->inited) - table->file->ha_index_init(tab->ref.key, 0); + if (!table->file->inited && + (error= table->file->ha_index_init(tab->ref.key, 0))) + { + (void) report_error(table, error); + DBUG_RETURN(true); + } + error= table->file->ha_index_read_map(table->record[0], tab->ref.key_buff, make_prev_keypart_map(tab-> @@ -3563,8 +3571,13 @@ int subselect_indexsubquery_engine::exec() DBUG_RETURN(0); } - if (!table->file->inited) - table->file->ha_index_init(tab->ref.key, 1); + if (!table->file->inited && + (error= table->file->ha_index_init(tab->ref.key, 1))) + { + (void) report_error(table, error); + DBUG_RETURN(true); + } + error= table->file->ha_index_read_map(table->record[0], tab->ref.key_buff, make_prev_keypart_map(tab-> |