Merge rkalimullin@bk-internal.mysql.com:/home/bk/mysql-5.0
into mysql.com:/usr/home/ram/work/5.0.b14290
This commit is contained in:
commit
ca31cf8dd3
@ -1294,25 +1294,30 @@ int mi_repair(MI_CHECK *param, register MI_INFO *info,
|
|||||||
param->calc_checksum=1;
|
param->calc_checksum=1;
|
||||||
|
|
||||||
info->update= (short) (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
|
info->update= (short) (HA_STATE_CHANGED | HA_STATE_ROW_CHANGED);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Clear all keys. Note that all key blocks allocated until now remain
|
||||||
|
"dead" parts of the key file. (Bug #4692)
|
||||||
|
*/
|
||||||
for (i=0 ; i < info->s->base.keys ; i++)
|
for (i=0 ; i < info->s->base.keys ; i++)
|
||||||
share->state.key_root[i]= HA_OFFSET_ERROR;
|
share->state.key_root[i]= HA_OFFSET_ERROR;
|
||||||
|
|
||||||
|
/* Drop the delete chain. */
|
||||||
for (i=0 ; i < share->state.header.max_block_size ; i++)
|
for (i=0 ; i < share->state.header.max_block_size ; i++)
|
||||||
share->state.key_del[i]= HA_OFFSET_ERROR;
|
share->state.key_del[i]= HA_OFFSET_ERROR;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
I think mi_repair and mi_repair_by_sort should do the same
|
If requested, activate (enable) all keys in key_map. In this case,
|
||||||
(according, e.g. to ha_myisam::repair), but as mi_repair doesn't
|
all indexes will be (re-)built.
|
||||||
touch key_map it cannot be used to T_CREATE_MISSING_KEYS.
|
|
||||||
That is what the next line is for
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
if (param->testflag & T_CREATE_MISSING_KEYS)
|
if (param->testflag & T_CREATE_MISSING_KEYS)
|
||||||
mi_copy_keys_active(share->state.key_map, share->base.keys,
|
mi_set_all_keys_active(share->state.key_map, share->base.keys);
|
||||||
param->keys_in_use);
|
|
||||||
|
|
||||||
info->state->key_file_length=share->base.keystart;
|
info->state->key_file_length=share->base.keystart;
|
||||||
|
|
||||||
lock_memory(param); /* Everything is alloced */
|
lock_memory(param); /* Everything is alloced */
|
||||||
|
|
||||||
|
/* Re-create all keys, which are set in key_map. */
|
||||||
while (!(error=sort_get_next_record(&sort_param)))
|
while (!(error=sort_get_next_record(&sort_param)))
|
||||||
{
|
{
|
||||||
if (writekeys(param,info,(byte*)sort_param.record,sort_param.filepos))
|
if (writekeys(param,info,(byte*)sort_param.record,sort_param.filepos))
|
||||||
|
@ -17,7 +17,6 @@
|
|||||||
#include <ndb_global.h>
|
#include <ndb_global.h>
|
||||||
#include "HugoCalculator.hpp"
|
#include "HugoCalculator.hpp"
|
||||||
#include <NDBT.hpp>
|
#include <NDBT.hpp>
|
||||||
#include <Base64.hpp>
|
|
||||||
|
|
||||||
static
|
static
|
||||||
Uint32
|
Uint32
|
||||||
|
@ -985,11 +985,16 @@ int ha_myisam::enable_indexes(uint mode)
|
|||||||
{
|
{
|
||||||
sql_print_warning("Warning: Enabling keys got errno %d, retrying",
|
sql_print_warning("Warning: Enabling keys got errno %d, retrying",
|
||||||
my_errno);
|
my_errno);
|
||||||
thd->clear_error();
|
/* Repairing by sort failed. Now try standard repair method. */
|
||||||
param.testflag&= ~(T_REP_BY_SORT | T_QUICK);
|
param.testflag&= ~(T_REP_BY_SORT | T_QUICK);
|
||||||
error= (repair(thd,param,0) != HA_ADMIN_OK);
|
error= (repair(thd,param,0) != HA_ADMIN_OK);
|
||||||
if (!error && thd->net.report_error)
|
/*
|
||||||
error= HA_ERR_CRASHED;
|
If the standard repair succeeded, clear all error messages which
|
||||||
|
might have been set by the first repair. They can still be seen
|
||||||
|
with SHOW WARNINGS then.
|
||||||
|
*/
|
||||||
|
if (! error)
|
||||||
|
thd->clear_error();
|
||||||
}
|
}
|
||||||
info(HA_STATUS_CONST);
|
info(HA_STATUS_CONST);
|
||||||
thd->proc_info=save_proc_info;
|
thd->proc_info=save_proc_info;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user