List:Commits« Previous MessageNext Message »
From:kevin.lewis Date:November 21 2012 3:14pm
Subject:bzr push into mysql-5.6 branch (kevin.lewis:4644 to 4645) Bug#15882860
View as plain text  
 4645 kevin.lewis@stripped	2012-11-21
      Bug#15882860 - WINDOWS: DEBUG BUILD CAN'T HANDLE LARGE INNODB_LOG_FILE_SIZE
      
      The change for WL6494 (InnoDB: Handle redo log file size mismatch),
      exposed an existing problem on Windows 64-bit platforms where any _stat()
      call will fail on any file larger than 4Gb.  This became evident when
      setting -innodb-log-file-size=4G or larger.  The patch mentioned above
      started using os_file_rename_func() for redo log files.  That function
      makes calls to os_file_status() in debug using ut_ad() to make sure that
      the source name exists and the destination name does not.
      An assert, ut_ad(exists), failed because the call to _stat failed, since
      the file was too big to store the size in a 4 byte integer.
      
      The fix is to exchange _stat with _stat64 in two places where _stat() is
      called by Windows-only code.  The function _stat64() works on both 32-bit
      and 64-bit versions of Windows and the compatibility list goes all the way
      back to Windows 95.
      
      Approved at http://rb.no.oracle.com/rb/r/1583/ by Marko

    modified:
      storage/innobase/os/os0file.cc
 4644 Harin Vadodaria	2012-11-21 [merge]
      Bug#15883127: PORT FIX FOR BUG #13904906 TO MYSQL 5.1
      
      Description: Null merge from 5.5 to 5.6

=== modified file 'storage/innobase/os/os0file.cc'
--- a/storage/innobase/os/os0file.cc	revid:harin.vadodaria@stripped
+++ b/storage/innobase/os/os0file.cc	revid:kevin.lewis@stripped
@@ -3003,9 +3003,9 @@ os_file_status(
 {
 #ifdef __WIN__
 	int		ret;
-	struct _stat	statinfo;
+	struct _stat64	statinfo;
 
-	ret = _stat(path, &statinfo);
+	ret = _stat64(path, &statinfo);
 	if (ret && (errno == ENOENT || errno == ENOTDIR)) {
 		/* file does not exist */
 		*exists = FALSE;
@@ -3078,9 +3078,9 @@ os_file_get_status(
 	int		ret;
 
 #ifdef __WIN__
-	struct _stat	statinfo;
+	struct _stat64	statinfo;
 
-	ret = _stat(path, &statinfo);
+	ret = _stat64(path, &statinfo);
 
 	if (ret && (errno == ENOENT || errno == ENOTDIR)) {
 		/* file does not exist */

No bundle (reason: useless for push emails).
Thread
bzr push into mysql-5.6 branch (kevin.lewis:4644 to 4645) Bug#15882860kevin.lewis21 Nov