diff options
Diffstat (limited to 'myisam/mi_rnext.c')
-rw-r--r-- | myisam/mi_rnext.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/myisam/mi_rnext.c b/myisam/mi_rnext.c index daab7c5f085..e1cf916d6d9 100644 --- a/myisam/mi_rnext.c +++ b/myisam/mi_rnext.c @@ -51,7 +51,7 @@ int mi_rnext(MI_INFO *info, byte *buf, int inx) case HA_KEY_ALG_BTREE: default: error=_mi_search_first(info,info->s->keyinfo+inx, - info->s->state.key_root[inx]); + info->s->state.key_root[inx]); break; } } @@ -60,17 +60,17 @@ int mi_rnext(MI_INFO *info, byte *buf, int inx) switch(info->s->keyinfo[inx].key_alg) { case HA_KEY_ALG_RTREE: - /* + /* Note that rtree doesn't support that the table may be changed since last call, so we do need to skip rows inserted by other threads like in btree */ error=rtree_get_next(info,inx,info->lastkey_length); break; - + case HA_KEY_ALG_BTREE: default: - if (!changed) + if (!changed) { error=_mi_search_next(info,info->s->keyinfo+inx,info->lastkey, info->lastkey_length,flag, @@ -81,15 +81,15 @@ int mi_rnext(MI_INFO *info, byte *buf, int inx) error=_mi_search(info,info->s->keyinfo+inx,info->lastkey, USE_WHOLE_KEY,flag, info->s->state.key_root[inx]); } - if (!error) + if (!error && info->s->concurrent_insert) { while (info->lastpos >= info->state->data_file_length) { /* Skip rows that are inserted by other threads since we got a lock */ - if ((error=_mi_search_next(info,info->s->keyinfo+inx,info->lastkey, - info->lastkey_length, - SEARCH_BIGGER, - info->s->state.key_root[inx]))) + if ((error=_mi_search_next(info,info->s->keyinfo+inx,info->lastkey, + info->lastkey_length, + SEARCH_BIGGER, + info->s->state.key_root[inx]))) break; } } |