From: Ramil Kalimullin Date: March 1 2010 7:48am Subject: bzr commit into mysql-5.1-bugteam branch (ramil:3370) Bug#48451 List-Archive: http://lists.mysql.com/commits/101793 X-Bug: 48451 Message-Id: <0KYL00KJDF0ACC50@fe-emea-09.sun.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Boundary_(ID_BQu/q9oknILdfqZ8/RBPpQ)" --Boundary_(ID_BQu/q9oknILdfqZ8/RBPpQ) MIME-version: 1.0 Content-type: text/plain; CHARSET=US-ASCII Content-transfer-encoding: 7BIT Content-disposition: inline #At file:///home/ram/mysql/b48451-5.1-bugteam/ based on revid:ramil@stripped 3370 Ramil Kalimullin 2010-03-01 Fix for bug#48451: my_seek and my_tell ignore MY_WME flag my_seek() and my_tell() functions now honour MY_WME flag. @ include/mysys_err.h Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - EE_CANT_SEEK added, used in my_seek() and my_tell() functions. @ mysys/errors.c Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - EE_CANT_SEEK added, used in my_seek() and my_tell() functions. @ mysys/my_seek.c Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - my_seek() and my_tell() handle MY_WME flag. @ mysys/my_symlink.c Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - __attribute__((unused)) removed, as myf MyFlags is actually used in the my_realpath() function. @ storage/myisam/ha_myisam.cc Fix for bug#48451: my_seek and my_tell ignore MY_WME flag - check my_seek() result. modified: include/mysys_err.h mysys/errors.c mysys/my_seek.c mysys/my_symlink.c storage/myisam/ha_myisam.cc === modified file 'include/mysys_err.h' --- a/include/mysys_err.h 2007-03-02 16:43:45 +0000 +++ b/include/mysys_err.h 2010-03-01 07:47:55 +0000 @@ -62,7 +62,8 @@ extern const char * NEAR globerrs[]; /* #define EE_UNKNOWN_COLLATION 28 #define EE_FILENOTFOUND 29 #define EE_FILE_NOT_CLOSED 30 -#define EE_ERROR_LAST 30 /* Copy last error nr */ +#define EE_CANT_SEEK 31 +#define EE_ERROR_LAST 31 /* Copy last error nr */ /* Add error numbers before EE_ERROR_LAST and change it accordingly. */ /* exit codes for all MySQL programs */ === modified file 'mysys/errors.c' --- a/mysys/errors.c 2009-03-06 09:38:14 +0000 +++ b/mysys/errors.c 2010-03-01 07:47:55 +0000 @@ -50,6 +50,7 @@ const char * NEAR globerrs[GLOBERRS]= "Collation '%s' is not a compiled collation and is not specified in the '%s' file", "File '%s' not found (Errcode: %d)", "File '%s' (fileno: %d) was not closed" + "Can't seek in file '%s' (Errcode: %d)" }; void init_glob_errs(void) @@ -90,6 +91,7 @@ void init_glob_errs() EE(EE_UNKNOWN_COLLATION)= "Collation '%s' is not a compiled collation and is not specified in the %s file"; EE(EE_FILENOTFOUND) = "File '%s' not found (Errcode: %d)"; EE(EE_FILE_NOT_CLOSED) = "File '%s' (fileno: %d) was not closed"; + EE(EE_CANT_SEEK) = "Can't seek in file '%s' (Errcode: %d)"; } #endif === modified file 'mysys/my_seek.c' --- a/mysys/my_seek.c 2007-06-04 22:43:11 +0000 +++ b/mysys/my_seek.c 2010-03-01 07:47:55 +0000 @@ -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"); @@ -69,6 +69,8 @@ my_off_t my_seek(File fd, my_off_t pos, if (newpos == (os_off_t) -1) { 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, /* 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,12 @@ my_off_t my_tell(File fd, myf MyFlags __ pos=lseek(fd, 0L, MY_SEEK_CUR); #endif if (pos == (os_off_t) -1) + { my_errno=errno; + if (MyFlags & MY_WME) + my_error(EE_CANT_SEEK, MYF(0), my_filename(fd), my_errno); + DBUG_PRINT("error",("tell: %lu errno: %d", (ulong) pos, my_errno)); + } DBUG_PRINT("exit",("pos: %lu", (ulong) pos)); DBUG_RETURN((my_off_t) pos); } /* my_tell */ === modified file 'mysys/my_symlink.c' --- a/mysys/my_symlink.c 2009-10-27 13:20:34 +0000 +++ b/mysys/my_symlink.c 2010-03-01 07:47:55 +0000 @@ -119,8 +119,7 @@ int my_is_symlink(const char *filename _ 'to' may be equal to 'filename' */ -int my_realpath(char *to, const char *filename, - myf MyFlags __attribute__((unused))) +int my_realpath(char *to, const char *filename, myf MyFlags) { #if defined(HAVE_REALPATH) && !defined(HAVE_BROKEN_REALPATH) int result=0; === modified file 'storage/myisam/ha_myisam.cc' --- a/storage/myisam/ha_myisam.cc 2009-10-27 14:27:27 +0000 +++ b/storage/myisam/ha_myisam.cc 2010-03-01 07:47:55 +0000 @@ -590,7 +590,11 @@ int ha_myisam::net_read_dump(NET* net) int data_fd = file->dfile; int error = 0; - my_seek(data_fd, 0L, MY_SEEK_SET, MYF(MY_WME)); + if (my_seek(data_fd, 0L, MY_SEEK_SET, MYF(MY_WME)) == MY_FILEPOS_ERROR) + { + error= my_errno; + goto err; + } for (;;) { ulong packet_len = my_net_read(net); @@ -626,7 +630,11 @@ int ha_myisam::dump(THD* thd, int fd) return ENOMEM; int error = 0; - my_seek(data_fd, 0L, MY_SEEK_SET, MYF(MY_WME)); + if (my_seek(data_fd, 0L, MY_SEEK_SET, MYF(MY_WME)) == MY_FILEPOS_ERROR) + { + error= my_errno; + goto err; + } for (; bytes_to_read > 0;) { size_t bytes = my_read(data_fd, buf, blocksize, MYF(MY_WME)); --Boundary_(ID_BQu/q9oknILdfqZ8/RBPpQ) MIME-version: 1.0 Content-type: text/bzr-bundle; CHARSET=US-ASCII; name="bzr/ramil@stripped" Content-transfer-encoding: 7BIT Content-disposition: inline; filename="bzr/ramil@stripped" # Bazaar merge directive format 2 (Bazaar 0.90) # revision_id: ramil@stripped # target_branch: file:///home/ram/mysql/b48451-5.1-bugteam/ # testament_sha1: b587dfeca961209afcea718107a539b50502fa7e # timestamp: 2010-03-01 11:48:01 +0400 # base_revision_id: ramil@stripped # # Begin bundle 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 --Boundary_(ID_BQu/q9oknILdfqZ8/RBPpQ)--