Loading myisam/mi_info.c +3 −3 Original line number Diff line number Diff line Loading @@ -57,9 +57,9 @@ int mi_status(MI_INFO *info, register MI_ISAMINFO *x, uint flag) x->keys = share->state.header.keys; x->check_time = share->state.check_time; x->mean_reclength = info->state->records ? (ulong) ((info->state->data_file_length-info->state->empty)/ info->state->records) : (ulong) share->min_pack_length; x->mean_reclength= x->records ? (ulong) ((x->data_file_length - x->delete_length) / x->records) : (ulong) share->min_pack_length; } if (flag & HA_STATUS_ERRKEY) { Loading myisam/mi_rkey.c +3 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len, key_buff=info->lastkey+info->s->base.max_key_length; pack_key_length= key_len; bmove(key_buff,key,key_len); last_used_keyseg= 0; last_used_keyseg= info->s->keyinfo[inx].seg + info->last_used_keyseg; } else { Loading @@ -61,6 +61,8 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len, key_len, &last_used_keyseg); /* Save packed_key_length for use by the MERGE engine. */ info->pack_key_length= pack_key_length; info->last_used_keyseg= (uint16) (last_used_keyseg - info->s->keyinfo[inx].seg); DBUG_EXECUTE("key",_mi_print_key(DBUG_FILE, keyinfo->seg, key_buff, pack_key_length);); } Loading myisam/myisamdef.h +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ struct st_myisam_info { enum ha_rkey_function last_key_func; /* CONTAIN, OVERLAP, etc */ uint save_lastkey_length; uint pack_key_length; /* For MYISAMMRG */ uint16 last_used_keyseg; /* For MyISAMMRG */ int errkey; /* Got last error on this key */ int lock_type; /* How database was locked */ int tmp_lock_type; /* When locked by readinfo */ Loading myisammrg/myrg_rkey.c +4 −0 Original line number Diff line number Diff line Loading @@ -40,12 +40,14 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key, { byte *key_buff; uint pack_key_length; uint16 last_used_keyseg; MYRG_TABLE *table; MI_INFO *mi; int err; DBUG_ENTER("myrg_rkey"); LINT_INIT(key_buff); LINT_INIT(pack_key_length); LINT_INIT(last_used_keyseg); if (_myrg_init_queue(info,inx,search_flag)) DBUG_RETURN(my_errno); Loading @@ -60,10 +62,12 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key, /* Get the saved packed key and packed key length. */ key_buff=(byte*) mi->lastkey+mi->s->base.max_key_length; pack_key_length=mi->pack_key_length; last_used_keyseg= mi->last_used_keyseg; } else { mi->once_flags|= USE_PACKED_KEYS; mi->last_used_keyseg= last_used_keyseg; err=mi_rkey(mi,0,inx,key_buff,pack_key_length,search_flag); } info->last_used_table=table+1; Loading mysql-test/r/fulltext.result +7 −0 Original line number Diff line number Diff line Loading @@ -456,3 +456,10 @@ a FORMAT(MATCH(a) AGAINST('test1 test'),6) test1 0.685267 DEALLOCATE PREPARE stmt; DROP TABLE t1; CREATE TABLE t1 (a VARCHAR(255), FULLTEXT(a)); SELECT * FROM t1 IGNORE INDEX(a) WHERE MATCH(a) AGAINST('test'); a ALTER TABLE t1 DISABLE KEYS; SELECT * FROM t1 WHERE MATCH(a) AGAINST('test'); ERROR HY000: Can't find FULLTEXT index matching the column list DROP TABLE t1; Loading
myisam/mi_info.c +3 −3 Original line number Diff line number Diff line Loading @@ -57,9 +57,9 @@ int mi_status(MI_INFO *info, register MI_ISAMINFO *x, uint flag) x->keys = share->state.header.keys; x->check_time = share->state.check_time; x->mean_reclength = info->state->records ? (ulong) ((info->state->data_file_length-info->state->empty)/ info->state->records) : (ulong) share->min_pack_length; x->mean_reclength= x->records ? (ulong) ((x->data_file_length - x->delete_length) / x->records) : (ulong) share->min_pack_length; } if (flag & HA_STATUS_ERRKEY) { Loading
myisam/mi_rkey.c +3 −1 Original line number Diff line number Diff line Loading @@ -49,7 +49,7 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len, key_buff=info->lastkey+info->s->base.max_key_length; pack_key_length= key_len; bmove(key_buff,key,key_len); last_used_keyseg= 0; last_used_keyseg= info->s->keyinfo[inx].seg + info->last_used_keyseg; } else { Loading @@ -61,6 +61,8 @@ int mi_rkey(MI_INFO *info, byte *buf, int inx, const byte *key, uint key_len, key_len, &last_used_keyseg); /* Save packed_key_length for use by the MERGE engine. */ info->pack_key_length= pack_key_length; info->last_used_keyseg= (uint16) (last_used_keyseg - info->s->keyinfo[inx].seg); DBUG_EXECUTE("key",_mi_print_key(DBUG_FILE, keyinfo->seg, key_buff, pack_key_length);); } Loading
myisam/myisamdef.h +1 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ struct st_myisam_info { enum ha_rkey_function last_key_func; /* CONTAIN, OVERLAP, etc */ uint save_lastkey_length; uint pack_key_length; /* For MYISAMMRG */ uint16 last_used_keyseg; /* For MyISAMMRG */ int errkey; /* Got last error on this key */ int lock_type; /* How database was locked */ int tmp_lock_type; /* When locked by readinfo */ Loading
myisammrg/myrg_rkey.c +4 −0 Original line number Diff line number Diff line Loading @@ -40,12 +40,14 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key, { byte *key_buff; uint pack_key_length; uint16 last_used_keyseg; MYRG_TABLE *table; MI_INFO *mi; int err; DBUG_ENTER("myrg_rkey"); LINT_INIT(key_buff); LINT_INIT(pack_key_length); LINT_INIT(last_used_keyseg); if (_myrg_init_queue(info,inx,search_flag)) DBUG_RETURN(my_errno); Loading @@ -60,10 +62,12 @@ int myrg_rkey(MYRG_INFO *info,byte *buf,int inx, const byte *key, /* Get the saved packed key and packed key length. */ key_buff=(byte*) mi->lastkey+mi->s->base.max_key_length; pack_key_length=mi->pack_key_length; last_used_keyseg= mi->last_used_keyseg; } else { mi->once_flags|= USE_PACKED_KEYS; mi->last_used_keyseg= last_used_keyseg; err=mi_rkey(mi,0,inx,key_buff,pack_key_length,search_flag); } info->last_used_table=table+1; Loading
mysql-test/r/fulltext.result +7 −0 Original line number Diff line number Diff line Loading @@ -456,3 +456,10 @@ a FORMAT(MATCH(a) AGAINST('test1 test'),6) test1 0.685267 DEALLOCATE PREPARE stmt; DROP TABLE t1; CREATE TABLE t1 (a VARCHAR(255), FULLTEXT(a)); SELECT * FROM t1 IGNORE INDEX(a) WHERE MATCH(a) AGAINST('test'); a ALTER TABLE t1 DISABLE KEYS; SELECT * FROM t1 WHERE MATCH(a) AGAINST('test'); ERROR HY000: Can't find FULLTEXT index matching the column list DROP TABLE t1;