From: kevin.lewis Date: January 6 2011 5:19am Subject: bzr push into mysql-trunk-innodb branch (kevin.lewis:3404 to 3405) List-Archive: http://lists.mysql.com/commits/128034 Message-Id: <20110106051902.9D2C7971B14@kevin-lewis-macbook.local> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit 3405 kevin.lewis@stripped 2011-01-05 Bug58629 - Reverse the previous patch because it does not work on VS2008. It was tested on VS2010 where it works fine, along with all other compilers on pushbuild2 for mysql-trunk-innodb-pb2. InterlockedCompareExchange() on Windows uses a LONG, but three places in sync_rw.ic use unsigned long. VZ2008 does not forgive this this signed/unsigned mismatch when included directly, but does seem to do so when included via sync_rw.h. Strange! modified: BUILD/SETUP.sh BUILD/build_mccge.sh scripts/mysql_config.pl.in scripts/mysql_config.sh storage/innobase/CMakeLists.txt storage/innobase/include/univ.i 3404 Sunny Bains 2011-01-06 Fix Bug #59032- InnoDB data files for the same data are much bigger than in previous versions There are two problems that need to be fixed. 1. The purge batch size was in records, should have been in UNDO log pages. This caused trx_purge() to return 0 UNDO log pages processed for the case where multiple (20) small UNDO records fit into a single UNDO log page. This confused the caller into thinking that there are no more UNDO log to purge. This caused the caller to back off for sometime and in the meantime the UNDO records generated by user activity filled up the system tablespace. 2. The black magic constants in srv_purge_coordinator_thread() are too conservative. I've made them a little aggressive. Removed trx_purge_t::n_pages_handled, it is now a local variable. Made the code more obvious in trx_purge_read_undo_rec(). This change doesn't affect correctness. It was already doing the right thing. Approved by Jimmy, rb://558. modified: storage/innobase/include/trx0purge.h storage/innobase/srv/srv0srv.c storage/innobase/trx/trx0purge.c === modified file 'BUILD/SETUP.sh' --- a/BUILD/SETUP.sh revid:sunny.bains@stripped +++ b/BUILD/SETUP.sh revid:kevin.lewis@stripped @@ -125,7 +125,7 @@ valgrind_flags="$valgrind_flags -DMYSQL_ valgrind_configs="--with-valgrind" # # Used in -debug builds -debug_cflags="-DEXTRA_DEBUG -DFORCE_INIT_OF_VARS " +debug_cflags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS " debug_cflags="$debug_cflags -DSAFE_MUTEX" error_inject="--with-error-inject " # === modified file 'BUILD/build_mccge.sh' --- a/BUILD/build_mccge.sh revid:sunny.bains@stripped +++ b/BUILD/build_mccge.sh revid:kevin.lewis@stripped @@ -1161,7 +1161,7 @@ set_with_debug_flags() { if test "x$with_debug_flag" = "xyes" ; then if test "x$developer_flag" = "xyes" ; then - loc_debug_flags="-DEXTRA_DEBUG -DFORCE_INIT_OF_VARS " + loc_debug_flags="-DUNIV_MUST_NOT_INLINE -DEXTRA_DEBUG -DFORCE_INIT_OF_VARS " compiler_flags="$compiler_flags $loc_debug_flags" fi compiler_flags="$compiler_flags $extra_debug_flags" === modified file 'scripts/mysql_config.pl.in' --- a/scripts/mysql_config.pl.in revid:sunny.bains@stripped +++ b/scripts/mysql_config.pl.in revid:kevin.lewis@stripped @@ -42,7 +42,7 @@ use Cwd; use strict; my @exclude_cflags = - qw/DDBUG_OFF DSAFE_MUTEX DFORCE_INIT_OF_VARS + qw/DDBUG_OFF DSAFE_MUTEX DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS DEXTRA_DEBUG DHAVE_purify O O[0-9] xO[0-9] W[-A-Za-z]* Xa xstrconst xc99=none unroll2 ip mp restrict/; === modified file 'scripts/mysql_config.sh' --- a/scripts/mysql_config.sh revid:sunny.bains@stripped +++ b/scripts/mysql_config.sh revid:kevin.lewis@stripped @@ -133,7 +133,7 @@ include="-I$pkgincludedir" # and -xstrconst to make --cflags usable for Sun Forte C++ # FIXME until we have a --cxxflags, we need to remove -AC99 # to make --cflags usable for HP C++ (aCC) -for remove in DDBUG_OFF DSAFE_MUTEX DFORCE_INIT_OF_VARS \ +for remove in DDBUG_OFF DSAFE_MUTEX DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \ DEXTRA_DEBUG DHAVE_purify O 'O[0-9]' 'xO[0-9]' 'W[-A-Za-z]*' \ 'mtune=[-A-Za-z0-9]*' 'mcpu=[-A-Za-z0-9]*' 'march=[-A-Za-z0-9]*' \ Xa xstrconst "xc99=none" AC99 \ === modified file 'storage/innobase/CMakeLists.txt' --- a/storage/innobase/CMakeLists.txt revid:sunny.bains@stripped +++ b/storage/innobase/CMakeLists.txt revid:kevin.lewis@stripped @@ -30,11 +30,13 @@ IF(UNIX) LINK_LIBRARIES(aio) ENDIF() ELSEIF(CMAKE_SYSTEM_NAME MATCHES "HP*") - ADD_DEFINITIONS("-DUNIV_HPUX") + ADD_DEFINITIONS("-DUNIV_HPUX -DUNIV_MUST_NOT_INLINE") ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "AIX") - ADD_DEFINITIONS("-DUNIV_AIX") + ADD_DEFINITIONS("-DUNIV_AIX -DUNIX_MUST_NOT_INLINE") ELSEIF(CMAKE_SYSTEM_NAME STREQUAL "SunOS") ADD_DEFINITIONS("-DUNIV_SOLARIS") + ELSE() + ADD_DEFINITIONS("-DUNIV_MUST_NOT_INLINE") ENDIF() ENDIF() === modified file 'storage/innobase/include/univ.i' --- a/storage/innobase/include/univ.i revid:sunny.bains@stripped +++ b/storage/innobase/include/univ.i revid:kevin.lewis@stripped @@ -123,6 +123,11 @@ if we are compiling on Windows. */ /* We only try to do explicit inlining of functions with gcc and Sun Studio */ +# if !defined(__GNUC__) && !(defined(__SUNPRO_C) || defined(__SUNPRO_CC)) +# undef UNIV_MUST_NOT_INLINE /* Remove compiler warning */ +# define UNIV_MUST_NOT_INLINE +# endif + # ifdef HAVE_PREAD # define HAVE_PWRITE # endif No bundle (reason: useless for push emails).