diff options
author | Kristofer.Pettersson@naruto. <> | 2006-09-19 17:40:09 +0200 |
---|---|---|
committer | Kristofer.Pettersson@naruto. <> | 2006-09-19 17:40:09 +0200 |
commit | 70316e06873e645e09da63a8eec7a48a9abde906 (patch) | |
tree | bd18651be61661b07a4846ec2c0dba96be7b19c2 /myisammrg | |
parent | 441e16e8077f0d26534826e10d2aa90972a9da1d (diff) | |
download | mariadb-git-70316e06873e645e09da63a8eec7a48a9abde906.tar.gz |
Bug#20789 Merge Subtable Rename Causes Crash
- When a MyISAM table which belongs to a merge table union and is
renamed the associated file descriptors are closed on windows.
This causes a server crash next time an insert or update is
performed on the merge table.
- This patch prevents the system from crashing on windows by
checking for bad file descriptors every time the MyISAM table
is locked by associated the merge table.
Diffstat (limited to 'myisammrg')
-rw-r--r-- | myisammrg/myrg_locking.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/myisammrg/myrg_locking.c b/myisammrg/myrg_locking.c index e5a8d3f3d9d..98e8305b9ce 100644 --- a/myisammrg/myrg_locking.c +++ b/myisammrg/myrg_locking.c @@ -26,8 +26,19 @@ int myrg_lock_database(MYRG_INFO *info, int lock_type) MYRG_TABLE *file; error=0; - for (file=info->open_tables ; file != info->end_table ; file++) + for (file=info->open_tables ; file != info->end_table ; file++) + { +#ifdef __WIN__ + /* + Make sure this table is marked as owned by a merge table. + The semaphore is never released as long as table remains + in memory. This should be refactored into a more generic + approach (observer pattern) + */ + (file->table)->owned_by_merge = TRUE; +#endif if ((new_error=mi_lock_database(file->table,lock_type))) error=new_error; + } return(error); } |