List:Commits« Previous MessageNext Message »
From:Ramil Kalimullin Date:December 9 2010 10:00am
Subject:bzr push into mysql-5.1-bugteam branch (ramil:3512 to 3513) Bug#48451
View as plain text  
 3513 Ramil Kalimullin	2010-12-09
      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
 3512 Luis Soares	2010-12-07 [merge]
      BUG#58416
      
      Automerging bzr bundle from bug report into latest 
      mysql-5.1-bugteam.

    modified:
      mysql-test/extra/binlog_tests/binlog_failure_mixing_engines.test
      mysql-test/suite/binlog/r/binlog_mixed_failure_mixing_engines.result
      mysql-test/suite/binlog/r/binlog_row_failure_mixing_engines.result
=== modified file 'include/mysys_err.h'
--- a/include/mysys_err.h	2010-07-20 18:07:36 +0000
+++ b/include/mysys_err.h	2010-12-09 09:59:12 +0000
@@ -64,7 +64,8 @@ extern const char * NEAR globerrs[];	/* 
 #define EE_FILE_NOT_CLOSED	30
 #define EE_CHANGE_OWNERSHIP     31
 #define EE_CHANGE_PERMISSIONS   32
-#define EE_ERROR_LAST           32 /* Copy last error nr */
+#define EE_CANT_SEEK            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 */

=== modified file 'mysys/errors.c'
--- a/mysys/errors.c	2010-07-20 18:07:36 +0000
+++ b/mysys/errors.c	2010-12-09 09:59:12 +0000
@@ -52,6 +52,7 @@ const char * NEAR globerrs[GLOBERRS]=
   "File '%s' (fileno: %d) was not closed",
   "Can't change ownership of the file '%s' (Errcode: %d)",
   "Can't change permissions of the file '%s' (Errcode: %d)",
+  "Can't seek in file '%s' (Errcode: %d)"
 };
 
 void init_glob_errs(void)
@@ -94,6 +95,7 @@ void init_glob_errs()
   EE(EE_FILE_NOT_CLOSED) = "File '%s' (fileno: %d) was not closed";
   EE(EE_CHANGE_OWNERSHIP)   = "Can't change ownership of the file '%s' (Errcode: %d)";
   EE(EE_CHANGE_PERMISSIONS) = "Can't change permissions of the file '%s' (Errcode: %d)";
+  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-12-09 09:59:12 +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	2010-10-17 11:00:13 +0000
+++ b/mysys/my_symlink.c	2010-12-09 09:59:12 +0000
@@ -118,8 +118,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	2010-03-02 09:45:50 +0000
+++ b/storage/myisam/ha_myisam.cc	2010-12-09 09:59:12 +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));

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.1-bugteam branch (ramil:3512 to 3513) Bug#48451Ramil Kalimullin9 Dec