diff options
author | monty@hundin.mysql.fi <> | 2001-06-01 04:27:59 +0300 |
---|---|---|
committer | monty@hundin.mysql.fi <> | 2001-06-01 04:27:59 +0300 |
commit | 866a82782c180ca20044ece9634b2721580839a1 (patch) | |
tree | ffdc7daed643167b8c8097cf1b60e75151d39eb9 /sql/ha_myisam.cc | |
parent | 762f423d91a6f7f25db431d50da3d401d9053d8c (diff) | |
download | mariadb-git-866a82782c180ca20044ece9634b2721580839a1.tar.gz |
Added support for symlinked tables.
myisamchk: Don't force a repair if the only problem was that the
open count wasn't correct.
Added missing error messages.
Diffstat (limited to 'sql/ha_myisam.cc')
-rw-r--r-- | sql/ha_myisam.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/sql/ha_myisam.cc b/sql/ha_myisam.cc index 6409ec5d019..a8e5faa6eda 100644 --- a/sql/ha_myisam.cc +++ b/sql/ha_myisam.cc @@ -813,6 +813,8 @@ void ha_myisam::position(const byte* record) void ha_myisam::info(uint flag) { MI_ISAMINFO info; + char name_buff[FN_REFLEN]; + (void) mi_status(file,&info,flag); if (flag & HA_STATUS_VARIABLE) { @@ -842,6 +844,18 @@ void ha_myisam::info(uint flag) raid_type=info.raid_type; raid_chunks=info.raid_chunks; raid_chunksize=info.raid_chunksize; + + /* + Set data_file_name and index_file_name to point at the symlink value + if table is symlinked + */ + data_file_name=index_file_name=0; + fn_format(name_buff, file->filename, "", MI_NAME_IEXT, 4); + if (!strcmp(name_buff, info.data_file_name)) + data_file_name=info.data_file_name; + strmov(fn_ext(name_buff),MI_NAME_DEXT); + if (!strcmp(name_buff, info.index_file_name)) + index_file_name=info.index_file_name; } if (flag & HA_STATUS_ERRKEY) { @@ -897,6 +911,7 @@ THR_LOCK_DATA **ha_myisam::store_lock(THD *thd, void ha_myisam::update_create_info(HA_CREATE_INFO *create_info) { + MI_ISAMINFO info; table->file->info(HA_STATUS_AUTO | HA_STATUS_CONST); if (!(create_info->used_fields & HA_CREATE_USED_AUTO)) { @@ -908,6 +923,8 @@ void ha_myisam::update_create_info(HA_CREATE_INFO *create_info) create_info->raid_chunks= raid_chunks; create_info->raid_chunksize= raid_chunksize; } + create_info->data_file_name=data_file_name; + create_info->index_file_name=index_file_name; } @@ -1079,6 +1096,8 @@ int ha_myisam::create(const char *name, register TABLE *form, create_info.raid_type=info->raid_type; create_info.raid_chunks=info->raid_chunks ? info->raid_chunks : RAID_DEFAULT_CHUNKS; create_info.raid_chunksize=info->raid_chunksize ? info->raid_chunksize : RAID_DEFAULT_CHUNKSIZE; + create_info.data_file_name= info->data_file_name; + create_info.index_file_name=info->index_file_name; error=mi_create(fn_format(buff,name,"","",2+4+16), form->keys,keydef, |