From d472978bb13a512661478600a66c5f82faf7f812 Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 1 Dec 2006 19:11:43 +0400 Subject: BUG#23196 - MySQL server does not exit / shutdown when storage engine returns errno 12 If there is not enough memory to store or update blob record (while allocating record buffer), myisam marks table as crashed. With this fix myisam attempts to roll an index back and return an error, not marking a table as crashed. Affects myisam tables with blobs only. No test case for this fix. myisam/mi_dynrec.c: If there is not enough memory to store or update blob record (while allocating record buffer), return HA_ERR_OUT_OF_MEM instead of ENOMEM. In this case storage engine can simply roll an index back and return an error, not marking table as crashed. myisam/mi_update.c: In some cases do not mark a table as crashed if we run out of memory. Instead roll an index back and return an error. These cases are signalled with my_errno set to HA_ERR_OUT_OF_MEM. myisam/mi_write.c: In some cases do not mark a table as crashed if we run out of memory. Instead roll an index back and return an error. These cases are signalled with my_errno set to HA_ERR_OUT_OF_MEM. --- myisam/mi_dynrec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'myisam/mi_dynrec.c') diff --git a/myisam/mi_dynrec.c b/myisam/mi_dynrec.c index 727f44341b1..260f461685e 100644 --- a/myisam/mi_dynrec.c +++ b/myisam/mi_dynrec.c @@ -81,7 +81,7 @@ int _mi_write_blob_record(MI_INFO *info, const byte *record) #endif if (!(rec_buff=(byte*) my_alloca(reclength))) { - my_errno=ENOMEM; + my_errno= HA_ERR_OUT_OF_MEM; /* purecov: inspected */ return(-1); } reclength2= _mi_rec_pack(info,rec_buff+ALIGN_SIZE(MI_MAX_DYN_BLOCK_HEADER), @@ -115,7 +115,7 @@ int _mi_update_blob_record(MI_INFO *info, my_off_t pos, const byte *record) #endif if (!(rec_buff=(byte*) my_alloca(reclength))) { - my_errno=ENOMEM; + my_errno= HA_ERR_OUT_OF_MEM; /* purecov: inspected */ return(-1); } reclength=_mi_rec_pack(info,rec_buff+ALIGN_SIZE(MI_MAX_DYN_BLOCK_HEADER), -- cgit v1.2.1