diff options
author | unknown <svoj@mysql.com/april.(none)> | 2006-12-01 19:11:43 +0400 |
---|---|---|
committer | unknown <svoj@mysql.com/april.(none)> | 2006-12-01 19:11:43 +0400 |
commit | d472978bb13a512661478600a66c5f82faf7f812 (patch) | |
tree | 864d7f3e6b50ed278b665908ef18382aea403af4 /myisam/mi_write.c | |
parent | a44762bcbd2cd3d7828d45878655c24a1b0f4c5f (diff) | |
download | mariadb-git-d472978bb13a512661478600a66c5f82faf7f812.tar.gz |
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.
Diffstat (limited to 'myisam/mi_write.c')
-rw-r--r-- | myisam/mi_write.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/myisam/mi_write.c b/myisam/mi_write.c index 720c96b2d38..76e164adc99 100644 --- a/myisam/mi_write.c +++ b/myisam/mi_write.c @@ -164,7 +164,7 @@ int mi_write(MI_INFO *info, byte *record) err: save_errno=my_errno; if (my_errno == HA_ERR_FOUND_DUPP_KEY || my_errno == HA_ERR_RECORD_FILE_FULL || - my_errno == HA_ERR_NULL_IN_SPATIAL) + my_errno == HA_ERR_NULL_IN_SPATIAL || my_errno == HA_ERR_OUT_OF_MEM) { if (info->bulk_insert) { |