mirror of
https://github.com/MariaDB/server.git
synced 2025-01-15 19:42:28 +01:00
Added error handling for my_seek() & my_tell() failures
mysys/my_seek.c: Give error if MY_WME is used sql/sql_insert.cc: Fixed compiler warning storage/maria/ha_maria.cc: Changed driver of Maria storage engine project
This commit is contained in:
parent
9b7a0fddbe
commit
166e0683c0
5 changed files with 19 additions and 8 deletions
|
@ -63,8 +63,9 @@ extern const char * NEAR globerrs[]; /* my_error_messages is here */
|
|||
#define EE_FILENOTFOUND 29
|
||||
#define EE_FILE_NOT_CLOSED 30
|
||||
#define EE_CANT_CHMOD 31
|
||||
#define EE_CANT_COPY_OWNERSHIP 32
|
||||
#define EE_ERROR_LAST 32 /* Copy last error nr */
|
||||
#define EE_CANT_SEEK 32
|
||||
#define EE_CANT_COPY_OWNERSHIP 33
|
||||
#define EE_ERROR_LAST 33 /* Copy last error nr */
|
||||
/* Add error numbers before EE_ERROR_LAST and change it accordingly. */
|
||||
|
||||
/* exit codes for all MySQL programs */
|
||||
|
|
|
@ -51,6 +51,7 @@ const char * NEAR globerrs[GLOBERRS]=
|
|||
"File '%s' not found (Errcode: %d)",
|
||||
"File '%s' (fileno: %d) was not closed",
|
||||
"Can't change mode for file '%s' to 0x%lx (Error: %d)",
|
||||
"Can't do seek on file '%s' (Errcode: %d)",
|
||||
"Warning: Can't copy ownership for file '%s' (Error: %d)"
|
||||
};
|
||||
|
||||
|
@ -93,6 +94,7 @@ void init_glob_errs()
|
|||
EE(EE_FILENOTFOUND) = "File '%s' not found (Errcode: %d)";
|
||||
EE(EE_FILE_NOT_CLOSED) = "File '%s' (fileno: %d) was not closed";
|
||||
EE(EE_CANT_CHMOD) = "Can't change mode for file '%s' to 0x%lx (Error: %d)";
|
||||
EE(EE_CANT_SEEK) = "Can't do seek on file '%s' (Errcode: %d)";
|
||||
EE(EE_CANT_COPY_OWNERSHIP)= "Warning: Can't copy ownership for file '%s' (Error: %d)";
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
|
||||
|
||||
#include "mysys_priv.h"
|
||||
#include "mysys_err.h"
|
||||
|
||||
/*
|
||||
Seek to a position in a file.
|
||||
|
@ -42,8 +43,7 @@
|
|||
actual error.
|
||||
*/
|
||||
|
||||
my_off_t my_seek(File fd, my_off_t pos, int whence,
|
||||
myf MyFlags __attribute__((unused)))
|
||||
my_off_t my_seek(File fd, my_off_t pos, int whence, myf MyFlags)
|
||||
{
|
||||
reg1 os_off_t newpos= -1;
|
||||
DBUG_ENTER("my_seek");
|
||||
|
@ -68,7 +68,9 @@ my_off_t my_seek(File fd, my_off_t pos, int whence,
|
|||
newpos= lseek(fd, pos, whence);
|
||||
if (newpos == (os_off_t) -1)
|
||||
{
|
||||
my_errno=errno;
|
||||
my_errno= errno;
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_SEEK, MYF(0), my_filename(fd), my_errno);
|
||||
DBUG_PRINT("error",("lseek: %lu errno: %d", (ulong) newpos,errno));
|
||||
DBUG_RETURN(MY_FILEPOS_ERROR);
|
||||
}
|
||||
|
@ -83,7 +85,7 @@ my_off_t my_seek(File fd, my_off_t pos, int whence,
|
|||
/* Tell current position of file */
|
||||
/* ARGSUSED */
|
||||
|
||||
my_off_t my_tell(File fd, myf MyFlags __attribute__((unused)))
|
||||
my_off_t my_tell(File fd, myf MyFlags)
|
||||
{
|
||||
os_off_t pos;
|
||||
DBUG_ENTER("my_tell");
|
||||
|
@ -95,7 +97,11 @@ my_off_t my_tell(File fd, myf MyFlags __attribute__((unused)))
|
|||
pos=lseek(fd, 0L, MY_SEEK_CUR);
|
||||
#endif
|
||||
if (pos == (os_off_t) -1)
|
||||
my_errno=errno;
|
||||
{
|
||||
my_errno= errno;
|
||||
if (MyFlags & MY_WME)
|
||||
my_error(EE_CANT_SEEK, MYF(0), my_filename(fd), my_errno);
|
||||
}
|
||||
DBUG_PRINT("exit",("pos: %lu", (ulong) pos));
|
||||
DBUG_RETURN((my_off_t) pos);
|
||||
} /* my_tell */
|
||||
|
|
|
@ -3437,10 +3437,12 @@ static TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info,
|
|||
Create_field *cr_field;
|
||||
Field *field, *def_field;
|
||||
if (item->type() == Item::FUNC_ITEM)
|
||||
{
|
||||
if (item->result_type() != STRING_RESULT)
|
||||
field= item->tmp_table_field(&tmp_table);
|
||||
else
|
||||
field= item->tmp_table_field_from_field_type(&tmp_table, 0);
|
||||
}
|
||||
else
|
||||
field= create_tmp_field(thd, &tmp_table, item, item->type(),
|
||||
(Item ***) 0, &tmp_field, &def_field, 0, 0, 0, 0,
|
||||
|
|
|
@ -3341,7 +3341,7 @@ mysql_declare_plugin(maria)
|
|||
MYSQL_STORAGE_ENGINE_PLUGIN,
|
||||
&maria_storage_engine,
|
||||
"MARIA",
|
||||
"MySQL AB",
|
||||
"Monty Program Ab",
|
||||
"Crash-safe tables with MyISAM heritage",
|
||||
PLUGIN_LICENSE_GPL,
|
||||
ha_maria_init, /* Plugin Init */
|
||||
|
|
Loading…
Reference in a new issue