diff options
author | unknown <monty@tik.mysql.com> | 2000-10-15 18:45:53 +0300 |
---|---|---|
committer | unknown <monty@tik.mysql.com> | 2000-10-15 18:45:53 +0300 |
commit | d78f9840978cf60b73f13f6a5201ed5593636573 (patch) | |
tree | 51edb97a7ba1e486acf5bdba590984b73c775b29 /myisam | |
parent | 31ed959ba37ae81b9b0eb2079f1576f34f1241c7 (diff) | |
download | mariadb-git-d78f9840978cf60b73f13f6a5201ed5593636573.tar.gz |
Changed meaning of HA_EXTRA_RESET and start of hidden primary keys for BDB tables
heap/hp_extra.c:
Changed meaning of HA_EXTRA_RESET
include/my_base.h:
Added HA_EXTRA_RESET_STATE
isam/extra.c:
Changed meaning of HA_EXTRA_RESET
isam/pack_isam.c:
Addapt to changed HA_EXTRA_RESET
merge/extra.c:
Changed meaning of HA_EXTRA_RESET
myisam/mi_extra.c:
Changed meaning of HA_EXTRA_RESET
myisam/myisampack.c:
Addapt to changed HA_EXTRA_RESET
myisammrg/myrg_extra.c:
Addapt to changed HA_EXTRA_RESET
sql/filesort.cc:
Addapt to changed HA_EXTRA_RESET
sql/ha_berkeley.cc:
Hidden primary key
sql/ha_berkeley.h:
Hidden primary key
BitKeeper/etc/logging_ok:
Logging to logging@openlogging.org accepted
Diffstat (limited to 'myisam')
-rw-r--r-- | myisam/mi_extra.c | 18 | ||||
-rw-r--r-- | myisam/myisampack.c | 4 |
2 files changed, 20 insertions, 2 deletions
diff --git a/myisam/mi_extra.c b/myisam/mi_extra.c index b90b5b35780..eaf9400babe 100644 --- a/myisam/mi_extra.c +++ b/myisam/mi_extra.c @@ -37,6 +37,24 @@ int mi_extra(MI_INFO *info, enum ha_extra_function function) switch (function) { case HA_EXTRA_RESET: + /* + Free buffers and reset the following flags: + EXTRA_CACHE, EXTRA_WRITE_CACHE, EXTRA_KEYREAD, EXTRA_QUICK + */ + if (info->opt_flag & (READ_CACHE_USED | WRITE_CACHE_USED)) + { + info->opt_flag&= ~(READ_CACHE_USED | WRITE_CACHE_USED); + error=end_io_cache(&info->rec_cache); + } +#if defined(HAVE_MMAP) && defined(HAVE_MADVICE) + if (info->opt_flag & MEMMAP_USED) + madvise(share->file_map,share->state.state.data_file_length,MADV_RANDOM); +#endif + info->opt_flag&= ~(KEY_READ_USED | REMEMBER_OLD_POS); + info->quick_mode=0; + /* Fall through */ + + case HA_EXTRA_RESET_STATE: /* Reset state (don't free buffers) */ info->lastinx= 0; /* Use first index as def */ info->last_search_keypage=info->lastpos= HA_OFFSET_ERROR; info->page_changed=1; diff --git a/myisam/myisampack.c b/myisam/myisampack.c index fbb543152f8..ef9be13687e 100644 --- a/myisam/myisampack.c +++ b/myisam/myisampack.c @@ -2104,8 +2104,8 @@ static int mrg_rrnd(MRG_INFO *info,byte *buf) { isam_info= *(info->current=info->file); info->end=info->current+info->count; - mi_extra(isam_info,HA_EXTRA_CACHE); mi_extra(isam_info,HA_EXTRA_RESET); + mi_extra(isam_info,HA_EXTRA_CACHE); filepos=isam_info->s->pack.header_length; } else @@ -2127,8 +2127,8 @@ static int mrg_rrnd(MRG_INFO *info,byte *buf) info->current++; isam_info= *info->current; filepos=isam_info->s->pack.header_length; - mi_extra(isam_info,HA_EXTRA_CACHE); mi_extra(isam_info,HA_EXTRA_RESET); + mi_extra(isam_info,HA_EXTRA_CACHE); } } |