summaryrefslogtreecommitdiff
path: root/myisam
diff options
context:
space:
mode:
authorunknown <ingo@mysql.com>2006-03-10 15:06:04 +0100
committerunknown <ingo@mysql.com>2006-03-10 15:06:04 +0100
commitcefb1dc2743ee50c83f075897a9e0b3c4f303b68 (patch)
tree69f9a1581fb7f7add78372fcd17b5333622d8377 /myisam
parentcf539a5ac0420bb15d9eed06998510be4bb46598 (diff)
parentfbe17c2a36dcaa99c5a6570f7096745126113301 (diff)
downloadmariadb-git-cefb1dc2743ee50c83f075897a9e0b3c4f303b68.tar.gz
Merge mysql.com:/home/mydev/mysql-4.1-bug14980
into mysql.com:/home/mydev/mysql-5.0-bug14980 include/my_base.h: Auto merged myisam/mi_delete.c: Auto merged myisam/mi_key.c: Auto merged myisam/mi_rnext_same.c: Auto merged myisam/mi_unique.c: Auto merged myisam/mi_update.c: Auto merged myisam/mi_write.c: Auto merged mysql-test/r/myisam.result: SCCS merged mysql-test/t/myisam.test: SCCS merged
Diffstat (limited to 'myisam')
-rw-r--r--myisam/mi_delete.c2
-rw-r--r--myisam/mi_key.c4
-rw-r--r--myisam/mi_rnext_same.c4
-rw-r--r--myisam/mi_unique.c3
-rw-r--r--myisam/mi_update.c4
-rw-r--r--myisam/mi_write.c4
6 files changed, 19 insertions, 2 deletions
diff --git a/myisam/mi_delete.c b/myisam/mi_delete.c
index 2010b684300..2bc99d65dd2 100644
--- a/myisam/mi_delete.c
+++ b/myisam/mi_delete.c
@@ -88,6 +88,8 @@ int mi_delete(MI_INFO *info,const byte *record)
_mi_make_key(info,i,old_key,record,info->lastpos)))
goto err;
}
+ /* The above changed info->lastkey2. Inform mi_rnext_same(). */
+ info->update&= ~HA_STATE_RNEXT_SAME;
}
}
diff --git a/myisam/mi_key.c b/myisam/mi_key.c
index 4cabfc91197..5dcc99d41b4 100644
--- a/myisam/mi_key.c
+++ b/myisam/mi_key.c
@@ -444,6 +444,10 @@ static int _mi_put_key_in_record(register MI_INFO *info, uint keynr,
(char*) &blob_ptr,sizeof(char*));
memcpy(blob_ptr,key,length);
blob_ptr+=length;
+
+ /* The above changed info->lastkey2. Inform mi_rnext_same(). */
+ info->update&= ~HA_STATE_RNEXT_SAME;
+
_my_store_blob_length(record+keyseg->start,
(uint) keyseg->bit_start,length);
key+=length;
diff --git a/myisam/mi_rnext_same.c b/myisam/mi_rnext_same.c
index 92692d0517f..64d8d9b0baa 100644
--- a/myisam/mi_rnext_same.c
+++ b/myisam/mi_rnext_same.c
@@ -40,7 +40,7 @@ int mi_rnext_same(MI_INFO *info, byte *buf)
if (info->s->concurrent_insert)
rw_rdlock(&info->s->key_root_lock[inx]);
-
+
switch (keyinfo->key_alg)
{
#ifdef HAVE_RTREE_KEYS
@@ -102,4 +102,4 @@ int mi_rnext_same(MI_INFO *info, byte *buf)
DBUG_RETURN(0);
}
DBUG_RETURN(my_errno);
-} /* mi_rnext */
+} /* mi_rnext_same */
diff --git a/myisam/mi_unique.c b/myisam/mi_unique.c
index 34f5f595f30..b698968127b 100644
--- a/myisam/mi_unique.c
+++ b/myisam/mi_unique.c
@@ -30,6 +30,9 @@ my_bool mi_check_unique(MI_INFO *info, MI_UNIQUEDEF *def, byte *record,
mi_unique_store(record+key->seg->start, unique_hash);
_mi_make_key(info,def->key,key_buff,record,0);
+ /* The above changed info->lastkey2. Inform mi_rnext_same(). */
+ info->update&= ~HA_STATE_RNEXT_SAME;
+
if (_mi_search(info,info->s->keyinfo+def->key,key_buff,MI_UNIQUE_HASH_LENGTH,
SEARCH_FIND,info->s->state.key_root[def->key]))
{
diff --git a/myisam/mi_update.c b/myisam/mi_update.c
index 86652996afe..937c9983b45 100644
--- a/myisam/mi_update.c
+++ b/myisam/mi_update.c
@@ -111,6 +111,10 @@ int mi_update(register MI_INFO *info, const byte *oldrec, byte *newrec)
{
uint new_length=_mi_make_key(info,i,new_key,newrec,pos);
uint old_length=_mi_make_key(info,i,old_key,oldrec,pos);
+
+ /* The above changed info->lastkey2. Inform mi_rnext_same(). */
+ info->update&= ~HA_STATE_RNEXT_SAME;
+
if (new_length != old_length ||
memcmp((byte*) old_key,(byte*) new_key,new_length))
{
diff --git a/myisam/mi_write.c b/myisam/mi_write.c
index 2dd84674bff..5e79b2937cc 100644
--- a/myisam/mi_write.c
+++ b/myisam/mi_write.c
@@ -132,6 +132,10 @@ int mi_write(MI_INFO *info, byte *record)
goto err;
}
}
+
+ /* The above changed info->lastkey2. Inform mi_rnext_same(). */
+ info->update&= ~HA_STATE_RNEXT_SAME;
+
if (local_lock_tree)
rw_unlock(&share->key_root_lock[i]);
}