From: kevin.lewis Date: November 21 2012 3:14pm Subject: bzr push into mysql-5.6 branch (kevin.lewis:4644 to 4645) Bug#15882860 List-Archive: http://lists.mysql.com/commits/145361 X-Bug: 15882860 Message-Id: <20121121151450.27985.20462.4645@dhcp-adc-twvpn-3-vpnpool-10-154-121-126.vpn.oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 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).