summaryrefslogtreecommitdiff
path: root/myisammrg
diff options
context:
space:
mode:
authorKristofer.Pettersson@naruto. <>2006-09-19 17:40:09 +0200
committerKristofer.Pettersson@naruto. <>2006-09-19 17:40:09 +0200
commit70316e06873e645e09da63a8eec7a48a9abde906 (patch)
treebd18651be61661b07a4846ec2c0dba96be7b19c2 /myisammrg
parent441e16e8077f0d26534826e10d2aa90972a9da1d (diff)
downloadmariadb-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.c13
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);
}