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).
| Thread |
|---|
| • bzr push into mysql-trunk-innodb branch (kevin.lewis:3404 to 3405) | kevin.lewis | 6 Jan |