Failure to open a CSV table will give Out-of-memory message even if the problem is not related to memory
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MariaDB |
Confirmed
|
Low
|
Unassigned |
Bug Description
One can get out-of-memory errors when the server fails to open a CSV table. That is, an error like this:
120314 15:10:06 [ERROR] Failed to write to mysql.general_log: Out of memory; check if mysqld or some other process uses all available memory; if not, you may have to use 'ulimit' to allow mysqld to use more memory or you can add more swap space
can be caused by:
- stopping the server
- removing the general_log.CSV file (but leaving general_log.CSM and general_log.frm files intact)
- starting the server back
- running some query.
The error message is rather misleading.
One can think that missing CSV file is a very much edge-case. However, the whole point of using CSV storage engine is to allow the user to mess with the server's data files, so I could argue that missing table.CSV file is a more frequent scenario than, say, a missing table.MYI file.
The "Out of memory" error is caused by his code in storage/ csv/ha_ tina.cc:
int ha_tina::open(const char *name, int mode, uint open_options) "ha_tina: :open") ;
{
DBUG_ENTER(
if (!(share= get_share(name, table))) HA_ERR_ OUT_OF_ MEM);
DBUG_RETURN(
^^^ That is, all errors that occur when opening a table are reported back as "Out of memory".