developers
Threads by month
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- 8 participants
- 6811 discussions
Hi!
I fixed the maria-developers address so that everyone else can follow
and participate in the discussion.
jim> jim> Monty,
jim> jim>
jim> jim> My T-SQL parser is now complete and a number of people are using
jim> jim> the Java, C# and C version. Would you like to have a look at it?
jim>
jim> Monty> Yes, I would be intrested to know more about this!
jim>
jim> OK - I have my demo online now. If you visit http://www.temporal-wave.com
jim>
jim> and take the Online Demos->T-SQL menu option you can enter T-SQL
jim> batches and see the parse results. Over the next day or so, I am
jim> adding demos of my C# and VB.Net parsers, so if the site goes up and
jim> down then just wait a few minutes and try again :-) Once I have
jim> evaluated some of the things you mention below then I will let you
jim> have a scan at the source code.
ok. I will take a look as soon as I have got through the emails that
has batched up during the last 3 weeks.
jim> jim> I think that I could steal a lot of common syntax from this for a
jim> new MySQL parser. There are 1100 regression tests culled from the
jim> T-SQL language spec and user examples; on my Linux system the parse
jim> time, including building and walking the AST is:
jim> jim>
jim> jim> jimi(50_64)-clean: wc -l *.sql
jim> jim> ...
jim> jim> 12923 total
jim> jim>
jim> jim> jimi(50_64)-clean: time tsqlc . >out
jim> jim> 0.15user 0.19system 0:00.34elapsed 100%CPU (0avgtext+0avgdata
jim> 0maxresident)k
jim> jim> 0inputs+232outputs (0major+102772minor)pagefaults 0swaps
jim>
jim> jim> Which includes the time taken to read each of the 1100 files from
jim> the file system and to print a message for each saying the parse was
jim> successful of course.
jim> jim> Anyway, if you want to take a look at the code, just let me know :-)
jim>
jim> Monty> The big question is how much work it would be to
jim> replace the MySQLparser with your T-SQL parser.
jim> Indeed. Obviously syntactical changes are just slog really and
jim> most of that is ensuring that there is enough coverage in regression
jim> tests to exercise all the syntactic differences between T-SQL and
jim> MySql, or rather, all the syntax of MySQL. A lot of commonality but
jim> still a fair bit of work. What is the definitive language reference
jim> for MySQL Marina? I can locate reference manuals and ANSI specs of
jim> course, but if you have one particular document in mind, then it would
jim> be useful to work off that so I can evaluate the syntactical changes I
jim> would need to make.
Unfortunately there is no other spec than the sql_yacc.yy file that
comes with the MySQL source code.
jim>
jim> I would like to do this in two steps:
jim>
jim> a) Replace the mysql_yacc.yy file, with as few changes as possible in
jim> the rest of the MySQL source.
jim>
jim>
jim> ANTLR is essentially the same gestalt as bison: one or more source files define the grammar and contain actions in C, triggered at the parse points; These grammar definition files are converted into C source by invoking an external program (in the case of ANTLR it is a Java program) and the resulting .c/.h files are compiled with the rest of the code.
jim>
jim> I wrote the C output to be machine independent. The idea being that you can generate the .c files on one machine, check that source code in and use it on any other machine without re-generating. This can be useful when targeting systems without Java machines (or ones that don't work very well). So, like many other systems you can have a 'build completely from scratch' option and a 'use pre-generated files option'.
jim>
jim> In the main then, I suspect that the bigger changes to the MySQL base would be build changes. I say this based upon the assumption that any new parser should build the same AST for a query as the yacc based version does. This means the new parser makes the same calls as the old one and thus the code external to the parser would probably require little, if anything in the way of change (but see b below).
That sounds very good.
jim> b) Optimze MySQL to be even faster, with the new parser at a base.
jim>
jim> Obviously there are two aspects, being the speed of the parser itself, which I don't think will be an issue, and then what kind of transformations are done on the resulting AST for optimization purposes. If we use exactly the same AST as MySQL does now, then improving MySQL performance is the same problem domain as it is now. However, perhaps there is opportunity for a new parser to provide more information about the query that would aid optimization. Possibilities here include modifications to the AST, external information structures that current code can use when walking the AST, or even a completely new AST. The latter would probably have quite an effect on the front end of the parse->AST->execution phase of course, so I would think that the first step is to try to achieve your step a with the existing AST as output.
Agree.
jim> Of course maintaining and changing an ANTLR based grammar is somewhat easier than changing bison/yacc, if for no other reason than ANTLR doesn't need much in the way of code assists for correct parsing, whereas Bison quite often does.
jim> The a) option is quite important to be able to do easy merges with the
jim> main MySQL tree.
jim>
jim> I have time this week to take a look at this. Mechanically I know it is easy enough, but I need to look at the calls that are made from the current yacc/bison parser and see if there is anything in there that would be awkward. The only things I could think of would be if the existing code relies on internal structures of bison rather than more generic structures. That should be easy to define.
The MySQL code doesn't rely on bison structures at all (as far as I know).
Did you get time to do the analyse?
jim>
jim> A few other things that may be of note:
jim>
jim> 1) The ANTLR generated code is free threading so long as any action code that you place withing the parser is also free threading.
In other words, same as with bison
jim> 2) The only system calls it uses is {m|c|re}alloc/free, which the C runtime component can re-direct (say to the MySQL overrides). For completely free threading, those calls also need to be free threading and so they are the only limit to threading of course.
Sounds perfect.
I would *really* like to see a new parser for MariaDB. Anything that
we can do to help get this done ?
Regards,
Monty
2
1
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2698)
by knielsenīŧ knielsen-hq.org 06 May '09
by knielsenīŧ knielsen-hq.org 06 May '09
06 May '09
#At lp:maria
2698 knielsen(a)knielsen-hq.org 2009-05-06
We are now using Valgrind rather than purify, and have for quite some time.
Consequently, rename HAVE_purify to HAVE_valgrind, and related changes.
Leave some comments about purify when not clear that they apply also to Valgrind.
Fix redundant IF_VALGRIND declaration.
Misc. small fixes:
- Fixes for pool-of-threads patch.
- Fixes for push of PBXT storage engine.
- mysql-test-run.pl fix.
- Fix build problem in compile-pentium64-max.
modified:
BUILD/SETUP.sh
BUILD/build_mccge.sh
BUILD/compile-dist
BUILD/compile-pentium64-max
BUILD/compile-solaris-sparc-purify
include/m_string.h
include/my_global.h
mysql-test/Makefile.am
mysql-test/lib/mtr_unique.pm
mysql-test/t/pool_of_threads.cnf
mysys/mf_qsort.c
mysys/my_alloc.c
mysys/my_init.c
mysys/my_rnd.c
mysys/safemalloc.c
scripts/mysql_config.pl.in
scripts/mysql_config.sh
sql/field_conv.cc
sql/filesort.cc
sql/ha_partition.cc
sql/hostname.cc
sql/item_timefunc.cc
sql/log_event.cc
sql/log_event_old.cc
sql/my_decimal.h
sql/mysqld.cc
sql/opt_range.cc
sql/opt_range.h
sql/records.cc
sql/rpl_rli.cc
sql/rpl_rli.h
sql/set_var.cc
sql/slave.cc
sql/sql_base.cc
sql/sql_binlog.cc
sql/sql_class.cc
sql/sql_list.h
sql/sql_load.cc
sql/sql_select.cc
sql/table.cc
storage/archive/azio.c
storage/innobase/buf/buf0buf.c
storage/innobase/include/univ.i
storage/innobase/srv/srv0start.c
storage/maria/ha_maria.cc
storage/maria/ma_blockrec.c
storage/maria/ma_check.c
storage/maria/ma_loghandler.c
storage/maria/ma_packrec.c
storage/maria/ma_page.c
storage/maria/ma_pagecrc.c
storage/maria/ma_search.c
storage/myisam/mi_check.c
storage/myisam/mi_page.c
storage/myisam/mi_search.c
storage/myisammrg/ha_myisammrg.cc
strings/bcmp.c
strings/decimal.c
strings/strmake.c
per-file messages:
BUILD/SETUP.sh
Rename purify -> valgrind.
BUILD/build_mccge.sh
Rename purify -> valgrind.
BUILD/compile-dist
Fix that PBXT was missing in source tarball after `BUILD/compile-dist && make dist`
BUILD/compile-pentium64-max
Fix a build problem with BUILD/compile-pentium64-max on CentOS/Fedora Core 10 amd64.
On these systems, there is libz.so but no libz.a. Finding libz.so, ./configure decides
to use system zlib. But since BUILD/compile-pentium64-max builds a fully static binary
with -all-static, the link of mysqld fails due to missing libz.a.
Fix by using bundled zlib in the build script.
BUILD/compile-solaris-sparc-purify
Rename purify -> valgrind.
include/m_string.h
Rename purify -> valgrind.
include/my_global.h
Rename purify -> valgrind.
mysql-test/Makefile.am
Fix that PBXT test suite was missing from `make dist` source tarball.
mysql-test/lib/mtr_unique.pm
Better fix to avoid races when chmod'ing the semaphore file.
(Though using chmod 666 shared files in /tmp/ is still not a very good solution).
mysql-test/t/pool_of_threads.cnf
Fix that test case pool_of_threads fails if run on mysqld with no --with-libevent support.
mysys/mf_qsort.c
Rename purify -> valgrind.
mysys/my_alloc.c
Rename purify -> valgrind.
mysys/my_init.c
Rename purify -> valgrind.
mysys/my_rnd.c
Rename purify -> valgrind.
mysys/safemalloc.c
Rename purify -> valgrind.
scripts/mysql_config.pl.in
Rename purify -> valgrind.
scripts/mysql_config.sh
Rename purify -> valgrind.
sql/field_conv.cc
Rename purify -> valgrind.
sql/filesort.cc
Rename purify -> valgrind.
sql/ha_partition.cc
Rename purify -> valgrind.
sql/hostname.cc
Rename purify -> valgrind.
sql/item_timefunc.cc
Rename purify -> valgrind.
sql/log_event.cc
Rename purify -> valgrind.
sql/log_event_old.cc
Rename purify -> valgrind.
sql/my_decimal.h
Rename purify -> valgrind.
sql/mysqld.cc
Rename purify -> valgrind.
Fix redundant IF_VALGRIND declaration.
sql/opt_range.cc
Rename purify -> valgrind.
sql/opt_range.h
Rename purify -> valgrind.
sql/records.cc
Rename purify -> valgrind.
sql/rpl_rli.cc
Rename purify -> valgrind.
sql/rpl_rli.h
Rename purify -> valgrind.
sql/set_var.cc
Fix missing static declaration on pool_of_threads.
sql/slave.cc
Rename purify -> valgrind.
sql/sql_base.cc
Rename purify -> valgrind.
sql/sql_binlog.cc
Rename purify -> valgrind.
sql/sql_class.cc
Rename purify -> valgrind.
sql/sql_list.h
Rename purify -> valgrind.
sql/sql_load.cc
Rename purify -> valgrind.
sql/sql_select.cc
Rename purify -> valgrind.
sql/table.cc
Rename purify -> valgrind.
storage/archive/azio.c
Rename purify -> valgrind.
storage/innobase/buf/buf0buf.c
Rename purify -> valgrind.
storage/innobase/include/univ.i
Rename purify -> valgrind.
storage/innobase/srv/srv0start.c
Rename purify -> valgrind.
storage/maria/ha_maria.cc
Rename purify -> valgrind.
storage/maria/ma_blockrec.c
Rename purify -> valgrind.
storage/maria/ma_check.c
Rename purify -> valgrind.
storage/maria/ma_loghandler.c
Rename purify -> valgrind.
storage/maria/ma_packrec.c
Rename purify -> valgrind.
storage/maria/ma_page.c
Rename purify -> valgrind.
storage/maria/ma_pagecrc.c
Rename purify -> valgrind.
storage/maria/ma_search.c
Rename purify -> valgrind.
storage/myisam/mi_check.c
Rename purify -> valgrind.
storage/myisam/mi_page.c
Rename purify -> valgrind.
storage/myisam/mi_search.c
Rename purify -> valgrind.
storage/myisammrg/ha_myisammrg.cc
Rename purify -> valgrind.
strings/bcmp.c
Rename purify -> valgrind.
strings/decimal.c
Rename purify -> valgrind.
strings/strmake.c
Rename purify -> valgrind.
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-03-22 12:16:09 +0000
+++ b/BUILD/SETUP.sh 2009-05-06 12:03:24 +0000
@@ -119,7 +119,7 @@ fi
# Set flags for various build configurations.
# Used in -valgrind builds
-valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify "
+valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_valgrind "
valgrind_flags="$valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
#
# Used in -debug builds
=== modified file 'BUILD/build_mccge.sh'
--- a/BUILD/build_mccge.sh 2008-02-07 23:12:34 +0000
+++ b/BUILD/build_mccge.sh 2009-05-06 12:03:24 +0000
@@ -938,7 +938,7 @@ set_up_ccache()
set_valgrind_flags()
{
if test "x$valgrind_flag" = "xyes" ; then
- loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify "
+ loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_valgrind "
loc_valgrind_flags="$loc_valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
compiler_flags="$compiler_flags $loc_valgrind_flags"
fi
=== modified file 'BUILD/compile-dist'
--- a/BUILD/compile-dist 2009-02-19 09:01:25 +0000
+++ b/BUILD/compile-dist 2009-05-06 12:03:24 +0000
@@ -60,8 +60,6 @@ fi
# Make sure to enable all features that affect "make dist"
# Remember that configure restricts the man pages to the configured features !
./configure \
- --with-maria-storage-engine \
- --with-embedded-server \
- --with-ndbcluster
-$gmake
-
+ --with-plugins=max-no-ndb \
+ --with-embedded-server
+$gmake -j4
=== modified file 'BUILD/compile-pentium64-max'
--- a/BUILD/compile-pentium64-max 2007-04-11 12:12:00 +0000
+++ b/BUILD/compile-pentium64-max 2009-05-06 12:03:24 +0000
@@ -4,7 +4,10 @@ path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$pentium64_cflags $fast_cflags"
-extra_configs="$pentium_configs $max_configs $static_link"
+# On CentOS/Fedora Core 10 amd64, there is system libz.so but not
+# libz.a, so need to use bundled zlib when building static
+# binary. Hence we use --with-zlib-dir=bundled
+extra_configs="$pentium_configs $max_configs $static_link --with-zlib-dir=bundled"
CC="$CC --pipe"
strip=yes
=== modified file 'BUILD/compile-solaris-sparc-purify'
--- a/BUILD/compile-solaris-sparc-purify 2007-02-26 15:12:40 +0000
+++ b/BUILD/compile-solaris-sparc-purify 2009-05-06 12:03:24 +0000
@@ -37,7 +37,7 @@ make -k maintainer-clean || true
path=`dirname $0`
. "$path/autorun.sh"
-CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -DHAVE_purify -DEXTRA_DEBUG -O2" CXX=gcc CXXLD=g++ CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -DHAVE_purify -DEXTRA_DEBUG -O2" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-embedded-server --with-innodb $EXTRA_CONFIG_FLAGS
+CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -DHAVE_valgrind -DEXTRA_DEBUG -O2" CXX=gcc CXXLD=g++ CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -DHAVE_valgrind -DEXTRA_DEBUG -O2" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-embedded-server --with-innodb $EXTRA_CONFIG_FLAGS
make -j 4
=== modified file 'include/m_string.h'
--- a/include/m_string.h 2008-06-26 15:10:11 +0000
+++ b/include/m_string.h 2009-05-06 12:03:24 +0000
@@ -108,7 +108,7 @@ extern const double log_10[309];
#define memcpy_fixed(A,B,C) memcpy((A),(B),(C))
#endif
-#if (!defined(USE_BMOVE512) || defined(HAVE_purify)) && !defined(bmove512)
+#if (!defined(USE_BMOVE512) || defined(HAVE_valgrind)) && !defined(bmove512)
#define bmove512(A,B,C) memcpy(A,B,C)
#endif
@@ -125,14 +125,14 @@ extern void bzero(uchar * dst,size_t len
#if !defined(bcmp) && !defined(HAVE_BCMP)
extern size_t bcmp(const uchar *s1,const uchar *s2,size_t len);
#endif
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
extern size_t my_bcmp(const uchar *s1,const uchar *s2,size_t len);
#undef bcmp
#define bcmp(A,B,C) my_bcmp((A),(B),(C))
-#define bzero_if_purify(A,B) bzero(A,B)
+#define bzero_if_valgrind(A,B) bzero(A,B)
#else
-#define bzero_if_purify(A,B)
-#endif /* HAVE_purify */
+#define bzero_if_valgrind(A,B)
+#endif /* HAVE_valgrind */
#if defined(_lint) || defined(FORCE_INIT_OF_VARS)
#define LINT_INIT_STRUCT(var) bzero(&var, sizeof(var)) /* No uninitialize-warning */
=== modified file 'include/my_global.h'
--- a/include/my_global.h 2009-04-08 16:55:26 +0000
+++ b/include/my_global.h 2009-05-06 12:03:24 +0000
@@ -563,16 +563,16 @@ int __void__;
#define LINT_INIT(var)
#endif
-#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(HAVE_purify)
-#define PURIFY_OR_LINT_INIT(var) var=0
+#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(HAVE_valgrind)
+#define VALGRIND_OR_LINT_INIT(var) var=0
#else
-#define PURIFY_OR_LINT_INIT(var)
+#define VALGRIND_OR_LINT_INIT(var)
#endif
-#ifdef HAVE_purify
-#define IF_PURIFY(A,B) (A)
+#ifdef HAVE_valgrind
+#define IF_VALGRIND(A,B) (A)
#else
-#define IF_PURIFY(A,B) (B)
+#define IF_VALGRIND(A,B) (B)
#endif
#if !defined(HAVE_UINT)
@@ -1174,7 +1174,7 @@ typedef char bool; /* Ordinary boolean
((uint32) (uchar) (A)[0])))
#define sint4korr(A) (*((const long *) (A)))
#define uint2korr(A) (*((const uint16 *) (A)))
-#if defined(HAVE_purify) && !defined(_WIN32)
+#if defined(HAVE_valgrind) && !defined(_WIN32)
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
(((uint32) ((uchar) (A)[1])) << 8) +\
(((uint32) ((uchar) (A)[2])) << 16))
@@ -1186,7 +1186,7 @@ typedef char bool; /* Ordinary boolean
It means, that you have to provide enough allocated space !
*/
#define uint3korr(A) (long) (*((const unsigned int *) (A)) & 0xFFFFFF)
-#endif /* HAVE_purify && !_WIN32 */
+#endif /* HAVE_valgrind && !_WIN32 */
#define uint4korr(A) (*((const uint32 *) (A)))
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
(((uint32) ((uchar) (A)[1])) << 8) +\
=== modified file 'mysql-test/Makefile.am'
--- a/mysql-test/Makefile.am 2009-02-13 12:25:41 +0000
+++ b/mysql-test/Makefile.am 2009-05-06 12:03:24 +0000
@@ -98,7 +98,8 @@ TEST_DIRS = t r include std_data std_dat
suite/stress/include suite/stress/t suite/stress/r \
suite/ndb suite/ndb/t suite/ndb/r \
suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \
- suite/parts suite/parts/t suite/parts/r suite/parts/inc
+ suite/parts suite/parts/t suite/parts/r suite/parts/inc \
+ suite/pbxt/t suite/pbxt/r
# Used by dist-hook and install-data-local to copy all
# test files into either dist or install directory
=== modified file 'mysql-test/lib/mtr_unique.pm'
--- a/mysql-test/lib/mtr_unique.pm 2009-04-08 16:55:26 +0000
+++ b/mysql-test/lib/mtr_unique.pm 2009-05-06 12:03:24 +0000
@@ -62,14 +62,14 @@ sub mtr_get_unique_id($$) {
die 'lock file is a symbolic link';
}
+ my $save_umask= umask(0);
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
- chmod 0777, "$file.sem";
flock SEM, LOCK_EX or die "can't lock $file.sem";
if(! -e $file) {
open FILE, ">", $file or die "can't create $file";
close FILE;
}
- chmod 0777, $file;
+ umask($save_umask);
msg("HAVE THE LOCK");
@@ -135,8 +135,8 @@ sub mtr_release_unique_id($) {
die 'lock file is a symbolic link';
}
+ my $save_umask= umask(0);
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
- chmod 0777, "$file.sem";
flock SEM, LOCK_EX or die "can't lock $file.sem";
msg("HAVE THE LOCK");
@@ -149,7 +149,7 @@ sub mtr_release_unique_id($) {
open FILE, ">", $file or die "can't create $file";
close FILE;
}
- chmod 0777, "$file.sem";
+ umask($save_umask);
open FILE, "+<", $file or die "can't open $file";
#select undef,undef,undef,0.2;
seek FILE, 0, 0;
=== modified file 'mysql-test/t/pool_of_threads.cnf'
--- a/mysql-test/t/pool_of_threads.cnf 2009-03-18 15:46:32 +0000
+++ b/mysql-test/t/pool_of_threads.cnf 2009-05-06 12:03:24 +0000
@@ -2,8 +2,8 @@
[mysqld.1]
test-ignore-wrong-options
-thread-handling= pool-of-threads
-thread_pool_size= 2
+loose-thread-handling= pool-of-threads
+loose-thread_pool_size= 2
extra-port= @mysqld.1.#extra-port
extra-max-connections=1
=== modified file 'mysys/mf_qsort.c'
--- a/mysys/mf_qsort.c 2007-10-17 16:08:58 +0000
+++ b/mysys/mf_qsort.c 2009-05-06 12:03:24 +0000
@@ -108,7 +108,7 @@ qsort_t my_qsort(void *base_ptr, size_t
low = (char*) base_ptr;
high = low+ size * (count - 1);
stack_ptr = stack + 1;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* The first element in the stack will be accessed for the last POP */
stack[0].low=stack[0].high=0;
#endif
=== modified file 'mysys/my_alloc.c'
--- a/mysys/my_alloc.c 2009-01-15 18:11:25 +0000
+++ b/mysys/my_alloc.c 2009-05-06 12:03:24 +0000
@@ -56,7 +56,7 @@ void init_alloc_root(MEM_ROOT *mem_root,
mem_root->block_num= 4; /* We shift this with >>2 */
mem_root->first_block_usage= 0;
-#if !(defined(HAVE_purify) && defined(EXTRA_DEBUG))
+#if !(defined(HAVE_valgrind) && defined(EXTRA_DEBUG))
if (pre_alloc_size)
{
if ((mem_root->free= mem_root->pre_alloc=
@@ -96,7 +96,7 @@ void reset_root_defaults(MEM_ROOT *mem_r
DBUG_ASSERT(alloc_root_inited(mem_root));
mem_root->block_size= block_size - ALLOC_ROOT_MIN_BLOCK_SIZE;
-#if !(defined(HAVE_purify) && defined(EXTRA_DEBUG))
+#if !(defined(HAVE_valgrind) && defined(EXTRA_DEBUG))
if (pre_alloc_size)
{
size_t size= pre_alloc_size + ALIGN_SIZE(sizeof(USED_MEM));
@@ -147,7 +147,7 @@ void reset_root_defaults(MEM_ROOT *mem_r
void *alloc_root(MEM_ROOT *mem_root, size_t length)
{
-#if defined(HAVE_purify) && defined(EXTRA_DEBUG)
+#if defined(HAVE_valgrind) && defined(EXTRA_DEBUG)
reg1 USED_MEM *next;
DBUG_ENTER("alloc_root");
DBUG_PRINT("enter",("root: 0x%lx", (long) mem_root));
=== modified file 'mysys/my_init.c'
--- a/mysys/my_init.c 2009-02-19 09:01:25 +0000
+++ b/mysys/my_init.c 2009-05-06 12:03:24 +0000
@@ -170,7 +170,7 @@ void my_end(int infoflag)
{
#ifdef HAVE_GETRUSAGE
struct rusage rus;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Purify assumes that rus is uninitialized after getrusage call */
bzero((char*) &rus, sizeof(rus));
#endif
=== modified file 'mysys/my_rnd.c'
--- a/mysys/my_rnd.c 2007-12-14 08:47:00 +0000
+++ b/mysys/my_rnd.c 2009-05-06 12:03:24 +0000
@@ -26,7 +26,7 @@
void my_rnd_init(struct my_rnd_struct *rand_st, ulong seed1, ulong seed2)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero((char*) rand_st,sizeof(*rand_st)); /* Avoid UMC varnings */
#endif
rand_st->max_value= 0x3FFFFFFFL;
=== modified file 'mysys/safemalloc.c'
--- a/mysys/safemalloc.c 2008-10-10 15:28:41 +0000
+++ b/mysys/safemalloc.c 2009-05-06 12:03:24 +0000
@@ -304,7 +304,7 @@ void _myfree(void *ptr, const char *file
sf_malloc_count--;
pthread_mutex_unlock(&THR_LOCK_malloc);
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/* Mark this data as free'ed */
if (!sf_malloc_quick)
bfill(ptr, irem->datasize, (pchar) FREE_VAL);
=== modified file 'scripts/mysql_config.pl.in'
--- a/scripts/mysql_config.pl.in 2008-11-10 21:12:15 +0000
+++ b/scripts/mysql_config.pl.in 2009-05-06 12:03:24 +0000
@@ -44,7 +44,7 @@ use strict;
my @exclude_cflags =
qw/DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS
- DEXTRA_DEBUG DHAVE_purify O O[0-9] xO[0-9] W[-A-Za-z]*
+ DEXTRA_DEBUG DHAVE_valgrind 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 2008-11-10 21:12:15 +0000
+++ b/scripts/mysql_config.sh 2009-05-06 12:03:24 +0000
@@ -129,7 +129,7 @@ include="-I$pkgincludedir"
# to make --cflags usable for HP C++ (aCC)
for remove in DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX \
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
- DEXTRA_DEBUG DHAVE_purify O 'O[0-9]' 'xO[0-9]' 'W[-A-Za-z]*' \
+ DEXTRA_DEBUG DHAVE_valgrind 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 \
unroll2 ip mp restrict
=== modified file 'sql/field_conv.cc'
--- a/sql/field_conv.cc 2009-01-31 21:22:44 +0000
+++ b/sql/field_conv.cc 2009-05-06 12:03:24 +0000
@@ -773,7 +773,7 @@ int field_conv(Field *to,Field *from)
((Field_varstring*)from)->length_bytes ==
((Field_varstring*)to)->length_bytes))
{ // Identical fields
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* This may happen if one does 'UPDATE ... SET x=x' */
if (to->ptr != from->ptr)
#endif
=== modified file 'sql/filesort.cc'
--- a/sql/filesort.cc 2009-02-19 09:01:25 +0000
+++ b/sql/filesort.cc 2009-05-06 12:03:24 +0000
@@ -953,13 +953,13 @@ static void make_sortkey(register SORTPA
if (addonf->null_bit && field->is_null())
{
nulls[addonf->null_offset]|= addonf->null_bit;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(to, addonf->length);
#endif
}
else
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
uchar *end= field->pack(to, field->ptr);
uint length= (uint) ((to + addonf->length) - end);
DBUG_ASSERT((int) length >= 0);
=== modified file 'sql/ha_partition.cc'
--- a/sql/ha_partition.cc 2009-02-19 09:01:25 +0000
+++ b/sql/ha_partition.cc 2009-05-06 12:03:24 +0000
@@ -3548,10 +3548,10 @@ void ha_partition::position(const uchar
(ref_length - PARTITION_BYTES_IN_POS));
#ifdef SUPPORTING_PARTITION_OVER_DIFFERENT_ENGINES
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(ref + PARTITION_BYTES_IN_POS + ref_length,
max_ref_length-ref_length);
-#endif /* HAVE_purify */
+#endif /* HAVE_valgrind */
#endif
DBUG_VOID_RETURN;
}
=== modified file 'sql/hostname.cc'
--- a/sql/hostname.cc 2007-10-11 17:29:09 +0000
+++ b/sql/hostname.cc 2009-05-06 12:03:24 +0000
@@ -175,7 +175,7 @@ char * ip_to_hostname(struct in_addr *in
char buff[GETHOSTBYADDR_BUFF_SIZE],buff2[GETHOSTBYNAME_BUFF_SIZE];
int tmp_errno;
struct hostent tmp_hostent, tmp_hostent2;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(buff,sizeof(buff)); // Bug in purify
#endif
if (!(hp=gethostbyaddr_r((char*) in,sizeof(*in),
=== modified file 'sql/item_timefunc.cc'
--- a/sql/item_timefunc.cc 2009-02-15 10:58:34 +0000
+++ b/sql/item_timefunc.cc 2009-05-06 12:03:24 +0000
@@ -290,8 +290,8 @@ static bool extract_date_time(DATE_TIME_
LINT_INIT(strict_week_number);
/* Remove valgrind varnings when using gcc 3.3 and -O1 */
- PURIFY_OR_LINT_INIT(strict_week_number_year_type);
- PURIFY_OR_LINT_INIT(sunday_first_n_first_week_non_iso);
+ VALGRIND_OR_LINT_INIT(strict_week_number_year_type);
+ VALGRIND_OR_LINT_INIT(sunday_first_n_first_week_non_iso);
if (!sub_pattern_end)
bzero((char*) l_time, sizeof(*l_time));
=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc 2009-02-19 09:01:25 +0000
+++ b/sql/log_event.cc 2009-05-06 12:03:24 +0000
@@ -6990,7 +6990,7 @@ int Rows_log_event::do_add_row_data(ucha
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("row_data", row_data, min(length, 32));
#endif
@@ -7771,7 +7771,7 @@ Table_map_log_event::Table_map_log_event
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("event buffer", (uchar*) buf, event_len);
#endif
@@ -8674,7 +8674,7 @@ int Rows_log_event::find_row(const Relay
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("key data", m_key, table->key_info->key_length);
#endif
@@ -8704,7 +8704,7 @@ int Rows_log_event::find_row(const Relay
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_PRINT("info",("found first matching record"));
DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
#endif
@@ -9067,7 +9067,7 @@ Update_rows_log_event::do_exec_row(const
Now we have the right row to update. The old row (the one we're
looking for) is in record[1] and the new row is in record[0].
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
Don't print debug messages when running valgrind since they can
trigger false warnings.
=== modified file 'sql/log_event_old.cc'
--- a/sql/log_event_old.cc 2009-01-31 21:22:44 +0000
+++ b/sql/log_event_old.cc 2009-05-06 12:03:24 +0000
@@ -724,7 +724,7 @@ static int find_and_fetch_row(TABLE *tab
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("table->record[0]", table->record[0], table->s->reclength);
DBUG_DUMP("table->record[1]", table->record[1], table->s->reclength);
#endif
@@ -750,7 +750,7 @@ static int find_and_fetch_row(TABLE *tab
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("table->record[0]", table->record[0], table->s->reclength);
DBUG_DUMP("table->record[1]", table->record[1], table->s->reclength);
#endif
@@ -1404,7 +1404,7 @@ int Old_rows_log_event::do_add_row_data(
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("row_data", row_data, min(length, 32));
#endif
@@ -2353,7 +2353,7 @@ int Old_rows_log_event::find_row(const R
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("key data", m_key, table->key_info->key_length);
#endif
@@ -2383,7 +2383,7 @@ int Old_rows_log_event::find_row(const R
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_PRINT("info",("found first matching record"));
DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
#endif
@@ -2878,7 +2878,7 @@ Update_rows_log_event_old::do_exec_row(c
Now we have the right row to update. The old row (the one we're
looking for) is in record[1] and the new row is in record[0].
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
Don't print debug messages when running valgrind since they can
trigger false warnings.
=== modified file 'sql/my_decimal.h'
--- a/sql/my_decimal.h 2008-05-20 07:38:17 +0000
+++ b/sql/my_decimal.h 2009-05-06 12:03:24 +0000
@@ -99,7 +99,7 @@ public:
{
len= DECIMAL_BUFF_LENGTH;
buf= buffer;
-#if !defined (HAVE_purify) && !defined(DBUG_OFF)
+#if !defined (HAVE_valgrind) && !defined(DBUG_OFF)
/* Set buffer to 'random' value to find wrong buffer usage */
for (uint i= 0; i < DECIMAL_BUFF_LENGTH; i++)
buffer[i]= i;
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2009-04-08 21:16:10 +0000
+++ b/sql/mysqld.cc 2009-05-06 12:03:24 +0000
@@ -57,12 +57,6 @@
#define mysqld_charset &my_charset_latin1
-#ifdef HAVE_purify
-#define IF_PURIFY(A,B) (A)
-#else
-#define IF_PURIFY(A,B) (B)
-#endif
-
#if SIZEOF_CHARP == 4
#define MAX_MEM_TABLE_SIZE ~(ulong) 0
#else
@@ -76,9 +70,9 @@
char pstack_file_name[80];
#endif /* __linux__ */
-/* We have HAVE_purify below as this speeds up the shutdown of MySQL */
+/* We have HAVE_valgrind below as this speeds up the shutdown of MySQL */
-#if defined(HAVE_DEC_3_2_THREADS) || defined(SIGNALS_DONT_BREAK_READ) || defined(HAVE_purify) && defined(__linux__)
+#if defined(HAVE_DEC_3_2_THREADS) || defined(SIGNALS_DONT_BREAK_READ) || defined(HAVE_valgrind) && defined(__linux__)
#define HAVE_CLOSE_SERVER_SOCK 1
#endif
@@ -6520,7 +6514,7 @@ log and this option does nothing anymore
purify. These are not suppressed: instead we disable symlinks
option if compiled with valgrind support.
*/
- IF_PURIFY(0,1), 0, 0, 0, 0, 0},
+ IF_VALGRIND(0,1), 0, 0, 0, 0, 0},
{"sysdate-is-now", OPT_SYSDATE_IS_NOW,
"Non-default option to alias SYSDATE() to NOW() to make it safe-replicable. Since 5.0, SYSDATE() returns a `dynamic' value different for different invocations, even within the same statement.",
(uchar**) &global_system_variables.sysdate_is_now,
@@ -6561,7 +6555,7 @@ log and this option does nothing anymore
0, 0, 0, 0, 0},
{"use-symbolic-links", 's', "Enable symbolic link support. Deprecated option; use --symbolic-links instead.",
(uchar**) &my_use_symdir, (uchar**) &my_use_symdir, 0, GET_BOOL, NO_ARG,
- IF_PURIFY(0,1), 0, 0, 0, 0, 0},
+ IF_VALGRIND(0,1), 0, 0, 0, 0, 0},
{"user", 'u', "Run mysqld daemon as user.", 0, 0, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Used with --help option for detailed help",
@@ -7661,7 +7655,7 @@ static int mysql_init_variables(void)
/* Things reset to zero */
opt_skip_slave_start= opt_reckless_slave = 0;
mysql_home[0]= pidfile_name[0]= log_error_file[0]= 0;
-#if defined(HAVE_REALPATH) && !defined(HAVE_purify) && !defined(HAVE_BROKEN_REALPATH)
+#if defined(HAVE_REALPATH) && !defined(HAVE_valgrind) && !defined(HAVE_BROKEN_REALPATH)
/* We can only test for sub paths if my_symlink.c is using realpath */
myisam_test_invalid_symlink= test_if_data_home_dir;
#endif
=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc 2009-02-19 09:01:25 +0000
+++ b/sql/opt_range.cc 2009-05-06 12:03:24 +0000
@@ -8347,7 +8347,7 @@ int QUICK_RANGE_SELECT::reset()
multi_range_buff->buffer= mrange_buff;
multi_range_buff->buffer_end= mrange_buff + mrange_bufsiz;
multi_range_buff->end_of_used_area= mrange_buff;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
We need this until ndb will use the buffer efficiently
(Now ndb stores complete row in here, instead of only the used fields
=== modified file 'sql/opt_range.h'
--- a/sql/opt_range.h 2008-08-25 17:18:22 +0000
+++ b/sql/opt_range.h 2009-05-06 12:03:24 +0000
@@ -44,7 +44,7 @@ class QUICK_RANGE :public Sql_alloc {
uint16 min_length,max_length,flag;
key_part_map min_keypart_map, // bitmap of used keyparts in min_key
max_keypart_map; // bitmap of used keyparts in max_key
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
uint16 dummy; /* Avoid warnings on 'flag' */
#endif
QUICK_RANGE(); /* Full range */
@@ -61,7 +61,7 @@ class QUICK_RANGE :public Sql_alloc {
min_keypart_map(min_keypart_map_arg),
max_keypart_map(max_keypart_map_arg)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
dummy=0;
#endif
}
=== modified file 'sql/records.cc'
--- a/sql/records.cc 2008-07-17 18:26:55 +0000
+++ b/sql/records.cc 2009-05-06 12:03:24 +0000
@@ -520,7 +520,7 @@ static int init_rr_cache(THD *thd, READ_
info->struct_length+1,
MYF(0))))
DBUG_RETURN(1);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
// Avoid warnings in qsort
bzero(info->cache,rec_cache_size+info->cache_records* info->struct_length+1);
#endif
=== modified file 'sql/rpl_rli.cc'
--- a/sql/rpl_rli.cc 2009-02-19 09:01:25 +0000
+++ b/sql/rpl_rli.cc 2009-05-06 12:03:24 +0000
@@ -34,7 +34,7 @@ Relay_log_info::Relay_log_info()
no_storage(FALSE), replicate_same_server_id(::replicate_same_server_id),
info_fd(-1), cur_log_fd(-1), save_temporary_tables(0),
cur_log_old_open_count(0), group_relay_log_pos(0), event_relay_log_pos(0),
-#if HAVE_purify
+#if HAVE_valgrind
is_fake(FALSE),
#endif
group_master_log_pos(0), log_space_total(0), ignore_log_space_limit(0),
=== modified file 'sql/rpl_rli.h'
--- a/sql/rpl_rli.h 2008-02-27 17:46:06 +0000
+++ b/sql/rpl_rli.h 2009-05-06 12:03:24 +0000
@@ -154,7 +154,7 @@ public:
ulonglong event_relay_log_pos;
ulonglong future_event_relay_log_pos;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bool is_fake; /* Mark that this is a fake relay log info structure */
#endif
=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc 2009-04-08 16:55:26 +0000
+++ b/sql/set_var.cc 2009-05-06 12:03:24 +0000
@@ -642,8 +642,8 @@ static sys_var_long_ptr sys_table_lock_w
static sys_var_long_ptr sys_thread_cache_size(&vars, "thread_cache_size",
&thread_cache_size);
#if HAVE_POOL_OF_THREADS == 1
-sys_var_long_ptr sys_thread_pool_size(&vars, "thread_pool_size",
- &thread_pool_size);
+static sys_var_long_ptr sys_thread_pool_size(&vars, "thread_pool_size",
+ &thread_pool_size);
#endif
static sys_var_thd_enum sys_tx_isolation(&vars, "tx_isolation",
&SV::tx_isolation,
=== modified file 'sql/slave.cc'
--- a/sql/slave.cc 2009-02-19 09:01:25 +0000
+++ b/sql/slave.cc 2009-05-06 12:03:24 +0000
@@ -2014,7 +2014,7 @@ int apply_event_and_update_pos(Log_event
if (exec_res == 0)
{
int error= ev->update_pos(rli);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (!rli->is_fake)
#endif
{
=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc 2009-02-19 09:01:25 +0000
+++ b/sql/sql_base.cc 2009-05-06 12:03:24 +0000
@@ -3000,7 +3000,7 @@ TABLE *open_table(THD *thd, TABLE_LIST *
table->pos_in_table_list= table_list;
table_list->updatable= 1; // It is not derived table nor non-updatable VIEW
table->clear_column_bitmaps();
-#if !defined(DBUG_OFF) && !defined(HAVE_purify)
+#if !defined(DBUG_OFF) && !defined(HAVE_valgrind)
/*
Fill record with random values to find bugs where we access fields
without first reading them.
@@ -7363,7 +7363,7 @@ int setup_wild(THD *thd, TABLE_LIST *tab
/* make * substituting permanent */
SELECT_LEX *select_lex= thd->lex->current_select;
select_lex->with_wild= 0;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (&select_lex->item_list != &fields) // Avoid warning
#endif
select_lex->item_list= fields;
=== modified file 'sql/sql_binlog.cc'
--- a/sql/sql_binlog.cc 2009-01-09 12:49:24 +0000
+++ b/sql/sql_binlog.cc 2009-05-06 12:03:24 +0000
@@ -59,7 +59,7 @@ void mysql_client_binlog_statement(THD*
if (!thd->rli_fake)
{
thd->rli_fake= new Relay_log_info;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
thd->rli_fake->is_fake= TRUE;
#endif
have_fd_event= FALSE;
@@ -95,7 +95,7 @@ void mysql_client_binlog_statement(THD*
char const *endptr= 0;
int bytes_decoded= base64_decode(strptr, coded_len, buf, &endptr);
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
This debug printout should not be used for valgrind builds
since it will read from unassigned memory.
@@ -188,7 +188,7 @@ void mysql_client_binlog_statement(THD*
bufptr += event_len;
DBUG_PRINT("info",("ev->get_type_code()=%d", ev->get_type_code()));
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
This debug printout should not be used for valgrind builds
since it will read from unassigned memory.
=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc 2009-03-12 22:27:35 +0000
+++ b/sql/sql_class.cc 2009-05-06 12:03:24 +0000
@@ -3480,7 +3480,7 @@ int THD::binlog_update_row(TABLE* table,
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("before_record", before_record, table->s->reclength);
DBUG_DUMP("after_record", after_record, table->s->reclength);
DBUG_DUMP("before_row", before_row, before_size);
=== modified file 'sql/sql_list.h'
--- a/sql/sql_list.h 2009-01-15 18:11:25 +0000
+++ b/sql/sql_list.h 2009-05-06 12:03:24 +0000
@@ -43,7 +43,7 @@ public:
static void operator delete[](void *ptr, MEM_ROOT *mem_root)
{ /* never called */ }
static void operator delete[](void *ptr, size_t size) { TRASH(ptr, size); }
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bool dummy;
inline Sql_alloc() :dummy(0) {}
inline ~Sql_alloc() {}
=== modified file 'sql/sql_load.cc'
--- a/sql/sql_load.cc 2009-01-31 21:22:44 +0000
+++ b/sql/sql_load.cc 2009-05-06 12:03:24 +0000
@@ -581,7 +581,7 @@ read_fixed_length(THD *thd, COPY_INFO &i
}
it.rewind();
uchar *pos=read_info.row_start;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
read_info.row_end[0]=0;
#endif
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2009-04-08 16:55:26 +0000
+++ b/sql/sql_select.cc 2009-05-06 12:03:24 +0000
@@ -1818,7 +1818,7 @@ JOIN::exec()
curr_join->having= curr_join->tmp_having= 0; // Allready done
/* Change sum_fields reference to calculated fields in tmp_table */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (curr_join != this)
#endif
curr_join->all_fields= *curr_all_fields;
@@ -1840,7 +1840,7 @@ JOIN::exec()
fields_list.elements, all_fields))
DBUG_VOID_RETURN;
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (curr_join != this)
#endif
{
@@ -1994,7 +1994,7 @@ JOIN::exec()
tmp_fields_list2, tmp_all_fields2,
fields_list.elements, tmp_all_fields1))
DBUG_VOID_RETURN;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
Some GCCs use memcpy() for struct assignment, even for x=x.
GCC bug 19410: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19410
@@ -2059,7 +2059,7 @@ JOIN::exec()
tmp_table_param.save_copy_field= curr_join->tmp_table_param.copy_field;
tmp_table_param.save_copy_field_end=
curr_join->tmp_table_param.copy_field_end;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (curr_join != this)
#endif
{
@@ -3848,7 +3848,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_AR
continue;
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Valgrind complains about overlapped memcpy when save_pos==use. */
if (save_pos != use)
#endif
@@ -15138,7 +15138,7 @@ setup_copy_fields(THD *thd, TMP_TABLE_PA
DBUG_ASSERT (param->field_count > (uint) (copy - copy_start));
copy->set(tmp, item->result_field);
item->result_field->move_field(copy->to_ptr,copy->to_null_ptr,1);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
copy->to_ptr[copy->from_length]= 0;
#endif
copy++;
=== modified file 'sql/table.cc'
--- a/sql/table.cc 2009-02-19 09:01:25 +0000
+++ b/sql/table.cc 2009-05-06 12:03:24 +0000
@@ -1694,7 +1694,7 @@ int open_table_from_share(THD *thd, TABL
outparam->record[1]= outparam->record[0]; // Safety
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
We need this because when we read var-length rows, we are not updating
bytes after end of varchar
@@ -1916,7 +1916,7 @@ partititon_err:
}
}
-#if defined(HAVE_purify) && !defined(DBUG_OFF)
+#if defined(HAVE_valgrind) && !defined(DBUG_OFF)
bzero((char*) bitmaps, bitmap_size*3);
#endif
=== modified file 'storage/archive/azio.c'
--- a/storage/archive/azio.c 2009-04-08 16:55:26 +0000
+++ b/storage/archive/azio.c 2009-05-06 12:03:24 +0000
@@ -63,7 +63,7 @@ void read_header(azio_stream *s, unsigne
*/
static void *az_allocator(void *dummy, uInt items, uInt size)
{
- return my_malloc((size_t)items*(size_t)size, IF_PURIFY(MY_ZEROFILL, MYF(0)));
+ return my_malloc((size_t)items*(size_t)size, IF_VALGRIND(MY_ZEROFILL, MYF(0)));
}
static void az_free(void *dummy, void *address)
=== modified file 'storage/innobase/buf/buf0buf.c'
--- a/storage/innobase/buf/buf0buf.c 2008-08-20 00:37:41 +0000
+++ b/storage/innobase/buf/buf0buf.c 2009-05-06 12:03:24 +0000
@@ -756,7 +756,7 @@ buf_pool_init(
/* Wipe contents of frame to eliminate a Purify
warning */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
memset(block->frame, '\0', UNIV_PAGE_SIZE);
#endif
if (srv_use_awe) {
=== modified file 'storage/innobase/include/univ.i'
--- a/storage/innobase/include/univ.i 2008-03-27 01:40:45 +0000
+++ b/storage/innobase/include/univ.i 2009-05-06 12:03:24 +0000
@@ -107,7 +107,7 @@ operations (very slow); also UNIV_DEBUG
#define UNIV_BTR_DEBUG /* check B-tree links */
#define UNIV_LIGHT_MEM_DEBUG /* light memory debugging */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* The following sets all new allocated memory to zero before use:
this can be used to eliminate unnecessary Purify warnings, but note that
it also masks many bugs Purify could detect. For detailed Purify analysis it
=== modified file 'storage/innobase/srv/srv0start.c'
--- a/storage/innobase/srv/srv0start.c 2008-12-14 19:21:24 +0000
+++ b/storage/innobase/srv/srv0start.c 2009-05-06 12:03:24 +0000
@@ -104,7 +104,7 @@ static char* srv_monitor_file_name;
/* Avoid warnings when using purify */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
static int inno_bcmp(register const char *s1, register const char *s2,
register uint len)
{
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ha_maria.cc 2009-05-06 12:03:24 +0000
@@ -3166,7 +3166,7 @@ static int ha_maria_init(void *p)
ma_checkpoint_init(checkpoint_interval);
maria_multi_threaded= maria_in_ha_maria= TRUE;
-#if defined(HAVE_REALPATH) && !defined(HAVE_purify) && !defined(HAVE_BROKEN_REALPATH)
+#if defined(HAVE_REALPATH) && !defined(HAVE_valgrind) && !defined(HAVE_BROKEN_REALPATH)
/* We can only test for sub paths if my_symlink.c is using realpath */
maria_test_invalid_symlink= test_if_data_home_dir;
#endif
=== modified file 'storage/maria/ma_blockrec.c'
--- a/storage/maria/ma_blockrec.c 2009-04-08 08:47:30 +0000
+++ b/storage/maria/ma_blockrec.c 2009-05-06 12:03:24 +0000
@@ -1594,7 +1594,7 @@ static void make_empty_page(MARIA_HA *in
bzero(buff, PAGE_HEADER_SIZE);
-#if !defined(DONT_ZERO_PAGE_BLOCKS) || defined(HAVE_purify)
+#if !defined(DONT_ZERO_PAGE_BLOCKS) || defined(HAVE_valgrind)
/*
We zero the rest of the block to avoid getting old memory information
to disk and to allow the file to be compressed better if archived.
=== modified file 'storage/maria/ma_check.c'
--- a/storage/maria/ma_check.c 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ma_check.c 2009-05-06 12:03:24 +0000
@@ -4522,7 +4522,7 @@ static int sort_key_read(MARIA_SORT_PARA
sort_param->current_filepos,
0);
sort_param->real_key_length= int_key.data_length + int_key.ref_length;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
#endif
@@ -4567,7 +4567,7 @@ static int sort_maria_ft_key_read(MARIA_
sort_param->current_filepos);
sort_param->real_key_length= int_key.data_length + int_key.ref_length;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (sort_param->key_length > sort_param->real_key_length)
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
@@ -5104,7 +5104,7 @@ static int sort_get_next_record(MARIA_SO
llstr(sort_param->pos,llbuff));
continue;
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(sort_param->rec_buff + block_info.rec_len,
share->base.extra_rec_buff_size);
#endif
=== modified file 'storage/maria/ma_loghandler.c'
--- a/storage/maria/ma_loghandler.c 2009-03-17 19:05:01 +0000
+++ b/storage/maria/ma_loghandler.c 2009-05-06 12:03:24 +0000
@@ -6194,12 +6194,12 @@ my_bool translog_write_record(LSN *lsn,
{
uint i;
uint len= 0;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
ha_checksum checksum= 0;
#endif
for (i= TRANSLOG_INTERNAL_PARTS; i < part_no; i++)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Find unitialized bytes early */
checksum+= my_checksum(checksum, parts_data[i].str,
parts_data[i].length);
=== modified file 'storage/maria/ma_packrec.c'
--- a/storage/maria/ma_packrec.c 2009-01-09 04:23:25 +0000
+++ b/storage/maria/ma_packrec.c 2009-05-06 12:03:24 +0000
@@ -256,7 +256,7 @@ static my_bool _ma_read_pack_info(MARIA_
(uint) (share->pack.header_length-sizeof(header)),
MYF(MY_NABP)))
goto err2;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Zero bytes accessed by fill_buffer */
bzero(disk_cache + (share->pack.header_length-sizeof(header)),
share->base.extra_rec_buff_size);
=== modified file 'storage/maria/ma_page.c'
--- a/storage/maria/ma_page.c 2008-09-01 17:31:40 +0000
+++ b/storage/maria/ma_page.c 2009-05-06 12:03:24 +0000
@@ -200,7 +200,7 @@ my_bool _ma_write_keypage(MARIA_PAGE *pa
/* Verify that keynr is correct */
DBUG_ASSERT(_ma_get_keynr(share, buff) == page->keyinfo->key_nr);
-#if defined(EXTRA_DEBUG) && defined(HAVE_purify) && defined(NOT_ANYMORE)
+#if defined(EXTRA_DEBUG) && defined(HAVE_valgrind) && defined(NOT_ANYMORE)
{
/* This is here to catch uninitialized bytes */
uint length= page->size;
=== modified file 'storage/maria/ma_pagecrc.c'
--- a/storage/maria/ma_pagecrc.c 2008-03-04 11:58:21 +0000
+++ b/storage/maria/ma_pagecrc.c 2009-05-06 12:03:24 +0000
@@ -318,7 +318,7 @@ my_bool maria_page_filler_set_none(uchar
__attribute__((unused)),
uchar *data_ptr __attribute__((unused)))
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
int4store_aligned(page + ((MARIA_SHARE *)data_ptr)->block_size - CRC_SIZE,
0);
#endif
=== modified file 'storage/maria/ma_search.c'
--- a/storage/maria/ma_search.c 2009-01-12 11:12:00 +0000
+++ b/storage/maria/ma_search.c 2009-05-06 12:03:24 +0000
@@ -2172,7 +2172,7 @@ int _ma_calc_bin_pack_key_length(const M
s_temp->totlength= key_length= (int_key->data_length + int_key->ref_length+
nod_flag);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
s_temp->n_length= s_temp->n_ref_length=0; /* For valgrind */
#endif
s_temp->key=key;
=== modified file 'storage/myisam/mi_check.c'
--- a/storage/myisam/mi_check.c 2009-02-19 09:01:25 +0000
+++ b/storage/myisam/mi_check.c 2009-05-06 12:03:24 +0000
@@ -3147,7 +3147,7 @@ static int sort_key_read(MI_SORT_PARAM *
(info->s->rec_reflength+
_mi_make_key(info, sort_param->key, (uchar*) key,
sort_param->record, sort_param->filepos));
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
#endif
@@ -3187,7 +3187,7 @@ static int sort_ft_key_read(MI_SORT_PARA
sort_param->real_key_length=(info->s->rec_reflength+
_ft_make_key(info, sort_param->key,
key, wptr++, sort_param->filepos));
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (sort_param->key_length > sort_param->real_key_length)
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
=== modified file 'storage/myisam/mi_page.c'
--- a/storage/myisam/mi_page.c 2008-08-28 12:43:44 +0000
+++ b/storage/myisam/mi_page.c 2009-05-06 12:03:24 +0000
@@ -86,7 +86,7 @@ int _mi_write_keypage(register MI_INFO *
if ((length=keyinfo->block_length) > IO_SIZE*2 &&
info->state->key_file_length != page+length)
length= ((mi_getint(buff)+IO_SIZE-1) & (uint) ~(IO_SIZE-1));
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
{
length=mi_getint(buff);
bzero((uchar*) buff+length,keyinfo->block_length-length);
=== modified file 'storage/myisam/mi_search.c'
--- a/storage/myisam/mi_search.c 2008-08-28 18:52:23 +0000
+++ b/storage/myisam/mi_search.c 2009-05-06 12:03:24 +0000
@@ -1749,7 +1749,7 @@ _mi_calc_bin_pack_key_length(MI_KEYDEF *
uint length,key_length,ref_length;
s_temp->totlength=key_length=_mi_keylength(keyinfo,key)+nod_flag;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
s_temp->n_length= s_temp->n_ref_length=0; /* For valgrind */
#endif
s_temp->key=key;
=== modified file 'storage/myisammrg/ha_myisammrg.cc'
--- a/storage/myisammrg/ha_myisammrg.cc 2008-12-04 00:36:55 +0000
+++ b/storage/myisammrg/ha_myisammrg.cc 2009-05-06 12:03:24 +0000
@@ -837,7 +837,7 @@ int ha_myisammrg::info(uint flag)
{
if (table->s->key_parts && mrg_info.rec_per_key)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
valgrind may be unhappy about it, because optimizer may access values
between file->keys and table->key_parts, that will be uninitialized.
=== modified file 'strings/bcmp.c'
--- a/strings/bcmp.c 2007-05-10 09:59:39 +0000
+++ b/strings/bcmp.c 2009-05-06 12:03:24 +0000
@@ -24,7 +24,7 @@
#include <my_global.h>
#include "m_string.h"
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
#undef bcmp
#undef HAVE_BCMP
#endif
@@ -50,7 +50,7 @@ uint len; /* 0 <= len <= 65535 */
#else
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
size_t bcmp(register const uchar *s1,register const uchar *s2,
register size_t len)
#else
=== modified file 'strings/decimal.c'
--- a/strings/decimal.c 2008-08-15 19:49:43 +0000
+++ b/strings/decimal.c 2009-05-06 12:03:24 +0000
@@ -144,7 +144,7 @@ static double scaler1[]= {
1.0, 10.0, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9
};
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
#define sanity(d) DBUG_ASSERT((d)->len > 0)
#else
#define sanity(d) DBUG_ASSERT((d)->len >0 && ((d)->buf[0] | \
=== modified file 'strings/strmake.c'
--- a/strings/strmake.c 2008-04-28 16:24:05 +0000
+++ b/strings/strmake.c 2009-05-06 12:03:24 +0000
@@ -51,11 +51,11 @@ char *strmake(register char *dst, regist
*/
if (length)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
dst[length-1]= 'Z';
#else
bfill(dst, length-1, (int) 'Z');
-#endif /* HAVE_purify */
+#endif /* HAVE_valgrind */
}
#endif /* EXTRA_DEBUG */
return dst-1;
1
0
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2699)
by knielsenīŧ knielsen-hq.org 06 May '09
by knielsenīŧ knielsen-hq.org 06 May '09
06 May '09
#At lp:maria
2699 knielsen(a)knielsen-hq.org 2009-04-27
We are now using Valgrind rather than purify, and have for quite some time.
Consequently, rename HAVE_purify to HAVE_valgrind, and related changes.
Leave some comments about purify when not clear that they apply also to Valgrind.
Fix redundant IF_VALGRIND declaration.
modified:
BUILD/SETUP.sh
BUILD/build_mccge.sh
BUILD/compile-solaris-sparc-purify
include/m_string.h
include/my_global.h
mysys/mf_qsort.c
mysys/my_alloc.c
mysys/my_init.c
mysys/my_rnd.c
mysys/safemalloc.c
scripts/mysql_config.pl.in
scripts/mysql_config.sh
sql/field_conv.cc
sql/filesort.cc
sql/ha_partition.cc
sql/hostname.cc
sql/item_timefunc.cc
sql/log_event.cc
sql/log_event_old.cc
sql/my_decimal.h
sql/mysqld.cc
sql/opt_range.cc
sql/opt_range.h
sql/records.cc
sql/rpl_rli.cc
sql/rpl_rli.h
sql/slave.cc
sql/sql_base.cc
sql/sql_binlog.cc
sql/sql_class.cc
sql/sql_list.h
sql/sql_load.cc
sql/sql_select.cc
sql/table.cc
storage/archive/azio.c
storage/innobase/buf/buf0buf.c
storage/innobase/include/univ.i
storage/innobase/srv/srv0start.c
storage/maria/ha_maria.cc
storage/maria/ma_blockrec.c
storage/maria/ma_check.c
storage/maria/ma_loghandler.c
storage/maria/ma_packrec.c
storage/maria/ma_page.c
storage/maria/ma_pagecrc.c
storage/maria/ma_search.c
storage/myisam/mi_check.c
storage/myisam/mi_page.c
storage/myisam/mi_search.c
storage/myisammrg/ha_myisammrg.cc
strings/bcmp.c
strings/decimal.c
strings/strmake.c
=== modified file 'BUILD/SETUP.sh'
--- a/BUILD/SETUP.sh 2009-03-22 12:16:09 +0000
+++ b/BUILD/SETUP.sh 2009-04-27 18:01:20 +0000
@@ -119,7 +119,7 @@ fi
# Set flags for various build configurations.
# Used in -valgrind builds
-valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify "
+valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_valgrind "
valgrind_flags="$valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
#
# Used in -debug builds
=== modified file 'BUILD/build_mccge.sh'
--- a/BUILD/build_mccge.sh 2008-02-07 23:12:34 +0000
+++ b/BUILD/build_mccge.sh 2009-04-27 18:01:20 +0000
@@ -938,7 +938,7 @@ set_up_ccache()
set_valgrind_flags()
{
if test "x$valgrind_flag" = "xyes" ; then
- loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_purify "
+ loc_valgrind_flags="-USAFEMALLOC -UFORCE_INIT_OF_VARS -DHAVE_valgrind "
loc_valgrind_flags="$loc_valgrind_flags -DMYSQL_SERVER_SUFFIX=-valgrind-max"
compiler_flags="$compiler_flags $loc_valgrind_flags"
fi
=== modified file 'BUILD/compile-solaris-sparc-purify'
--- a/BUILD/compile-solaris-sparc-purify 2007-02-26 15:12:40 +0000
+++ b/BUILD/compile-solaris-sparc-purify 2009-04-27 18:01:20 +0000
@@ -37,7 +37,7 @@ make -k maintainer-clean || true
path=`dirname $0`
. "$path/autorun.sh"
-CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -DHAVE_purify -DEXTRA_DEBUG -O2" CXX=gcc CXXLD=g++ CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -DHAVE_purify -DEXTRA_DEBUG -O2" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-embedded-server --with-innodb $EXTRA_CONFIG_FLAGS
+CFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wimplicit-int -Wparentheses -Wsign-compare -Wwrite-strings -Wunused -DHAVE_valgrind -DEXTRA_DEBUG -O2" CXX=gcc CXXLD=g++ CXXFLAGS="-g -Wimplicit -Wreturn-type -Wswitch -Wtrigraphs -Wcomment -W -Wchar-subscripts -Wformat -Wparentheses -Wsign-compare -Wwrite-strings -Woverloaded-virtual -Wsign-promo -Wreorder -Wctor-dtor-privacy -Wnon-virtual-dtor -felide-constructors -fno-exceptions -fno-rtti -DHAVE_valgrind -DEXTRA_DEBUG -O2" ./configure --prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-embedded-server --with-innodb $EXTRA_CONFIG_FLAGS
make -j 4
=== modified file 'include/m_string.h'
--- a/include/m_string.h 2008-06-26 15:10:11 +0000
+++ b/include/m_string.h 2009-04-27 18:01:20 +0000
@@ -108,7 +108,7 @@ extern const double log_10[309];
#define memcpy_fixed(A,B,C) memcpy((A),(B),(C))
#endif
-#if (!defined(USE_BMOVE512) || defined(HAVE_purify)) && !defined(bmove512)
+#if (!defined(USE_BMOVE512) || defined(HAVE_valgrind)) && !defined(bmove512)
#define bmove512(A,B,C) memcpy(A,B,C)
#endif
@@ -125,14 +125,14 @@ extern void bzero(uchar * dst,size_t len
#if !defined(bcmp) && !defined(HAVE_BCMP)
extern size_t bcmp(const uchar *s1,const uchar *s2,size_t len);
#endif
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
extern size_t my_bcmp(const uchar *s1,const uchar *s2,size_t len);
#undef bcmp
#define bcmp(A,B,C) my_bcmp((A),(B),(C))
-#define bzero_if_purify(A,B) bzero(A,B)
+#define bzero_if_valgrind(A,B) bzero(A,B)
#else
-#define bzero_if_purify(A,B)
-#endif /* HAVE_purify */
+#define bzero_if_valgrind(A,B)
+#endif /* HAVE_valgrind */
#if defined(_lint) || defined(FORCE_INIT_OF_VARS)
#define LINT_INIT_STRUCT(var) bzero(&var, sizeof(var)) /* No uninitialize-warning */
=== modified file 'include/my_global.h'
--- a/include/my_global.h 2009-04-08 16:55:26 +0000
+++ b/include/my_global.h 2009-04-27 18:01:20 +0000
@@ -563,16 +563,16 @@ int __void__;
#define LINT_INIT(var)
#endif
-#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(HAVE_purify)
-#define PURIFY_OR_LINT_INIT(var) var=0
+#if defined(_lint) || defined(FORCE_INIT_OF_VARS) || defined(HAVE_valgrind)
+#define VALGRIND_OR_LINT_INIT(var) var=0
#else
-#define PURIFY_OR_LINT_INIT(var)
+#define VALGRIND_OR_LINT_INIT(var)
#endif
-#ifdef HAVE_purify
-#define IF_PURIFY(A,B) (A)
+#ifdef HAVE_valgrind
+#define IF_VALGRIND(A,B) (A)
#else
-#define IF_PURIFY(A,B) (B)
+#define IF_VALGRIND(A,B) (B)
#endif
#if !defined(HAVE_UINT)
@@ -1174,7 +1174,7 @@ typedef char bool; /* Ordinary boolean
((uint32) (uchar) (A)[0])))
#define sint4korr(A) (*((const long *) (A)))
#define uint2korr(A) (*((const uint16 *) (A)))
-#if defined(HAVE_purify) && !defined(_WIN32)
+#if defined(HAVE_valgrind) && !defined(_WIN32)
#define uint3korr(A) (uint32) (((uint32) ((uchar) (A)[0])) +\
(((uint32) ((uchar) (A)[1])) << 8) +\
(((uint32) ((uchar) (A)[2])) << 16))
@@ -1186,7 +1186,7 @@ typedef char bool; /* Ordinary boolean
It means, that you have to provide enough allocated space !
*/
#define uint3korr(A) (long) (*((const unsigned int *) (A)) & 0xFFFFFF)
-#endif /* HAVE_purify && !_WIN32 */
+#endif /* HAVE_valgrind && !_WIN32 */
#define uint4korr(A) (*((const uint32 *) (A)))
#define uint5korr(A) ((ulonglong)(((uint32) ((uchar) (A)[0])) +\
(((uint32) ((uchar) (A)[1])) << 8) +\
=== modified file 'mysys/mf_qsort.c'
--- a/mysys/mf_qsort.c 2007-10-17 16:08:58 +0000
+++ b/mysys/mf_qsort.c 2009-04-27 18:01:20 +0000
@@ -108,7 +108,7 @@ qsort_t my_qsort(void *base_ptr, size_t
low = (char*) base_ptr;
high = low+ size * (count - 1);
stack_ptr = stack + 1;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* The first element in the stack will be accessed for the last POP */
stack[0].low=stack[0].high=0;
#endif
=== modified file 'mysys/my_alloc.c'
--- a/mysys/my_alloc.c 2009-01-15 18:11:25 +0000
+++ b/mysys/my_alloc.c 2009-04-27 18:01:20 +0000
@@ -56,7 +56,7 @@ void init_alloc_root(MEM_ROOT *mem_root,
mem_root->block_num= 4; /* We shift this with >>2 */
mem_root->first_block_usage= 0;
-#if !(defined(HAVE_purify) && defined(EXTRA_DEBUG))
+#if !(defined(HAVE_valgrind) && defined(EXTRA_DEBUG))
if (pre_alloc_size)
{
if ((mem_root->free= mem_root->pre_alloc=
@@ -96,7 +96,7 @@ void reset_root_defaults(MEM_ROOT *mem_r
DBUG_ASSERT(alloc_root_inited(mem_root));
mem_root->block_size= block_size - ALLOC_ROOT_MIN_BLOCK_SIZE;
-#if !(defined(HAVE_purify) && defined(EXTRA_DEBUG))
+#if !(defined(HAVE_valgrind) && defined(EXTRA_DEBUG))
if (pre_alloc_size)
{
size_t size= pre_alloc_size + ALIGN_SIZE(sizeof(USED_MEM));
@@ -147,7 +147,7 @@ void reset_root_defaults(MEM_ROOT *mem_r
void *alloc_root(MEM_ROOT *mem_root, size_t length)
{
-#if defined(HAVE_purify) && defined(EXTRA_DEBUG)
+#if defined(HAVE_valgrind) && defined(EXTRA_DEBUG)
reg1 USED_MEM *next;
DBUG_ENTER("alloc_root");
DBUG_PRINT("enter",("root: 0x%lx", (long) mem_root));
=== modified file 'mysys/my_init.c'
--- a/mysys/my_init.c 2009-02-19 09:01:25 +0000
+++ b/mysys/my_init.c 2009-04-27 18:01:20 +0000
@@ -170,7 +170,7 @@ void my_end(int infoflag)
{
#ifdef HAVE_GETRUSAGE
struct rusage rus;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Purify assumes that rus is uninitialized after getrusage call */
bzero((char*) &rus, sizeof(rus));
#endif
=== modified file 'mysys/my_rnd.c'
--- a/mysys/my_rnd.c 2007-12-14 08:47:00 +0000
+++ b/mysys/my_rnd.c 2009-04-27 18:01:20 +0000
@@ -26,7 +26,7 @@
void my_rnd_init(struct my_rnd_struct *rand_st, ulong seed1, ulong seed2)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero((char*) rand_st,sizeof(*rand_st)); /* Avoid UMC varnings */
#endif
rand_st->max_value= 0x3FFFFFFFL;
=== modified file 'mysys/safemalloc.c'
--- a/mysys/safemalloc.c 2008-10-10 15:28:41 +0000
+++ b/mysys/safemalloc.c 2009-04-27 18:01:20 +0000
@@ -304,7 +304,7 @@ void _myfree(void *ptr, const char *file
sf_malloc_count--;
pthread_mutex_unlock(&THR_LOCK_malloc);
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/* Mark this data as free'ed */
if (!sf_malloc_quick)
bfill(ptr, irem->datasize, (pchar) FREE_VAL);
=== modified file 'scripts/mysql_config.pl.in'
--- a/scripts/mysql_config.pl.in 2008-11-10 21:12:15 +0000
+++ b/scripts/mysql_config.pl.in 2009-04-27 18:01:20 +0000
@@ -44,7 +44,7 @@ use strict;
my @exclude_cflags =
qw/DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS
- DEXTRA_DEBUG DHAVE_purify O O[0-9] xO[0-9] W[-A-Za-z]*
+ DEXTRA_DEBUG DHAVE_valgrind 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 2008-11-10 21:12:15 +0000
+++ b/scripts/mysql_config.sh 2009-04-27 18:01:20 +0000
@@ -129,7 +129,7 @@ include="-I$pkgincludedir"
# to make --cflags usable for HP C++ (aCC)
for remove in DDBUG_OFF DSAFEMALLOC USAFEMALLOC DSAFE_MUTEX \
DPEDANTIC_SAFEMALLOC DUNIV_MUST_NOT_INLINE DFORCE_INIT_OF_VARS \
- DEXTRA_DEBUG DHAVE_purify O 'O[0-9]' 'xO[0-9]' 'W[-A-Za-z]*' \
+ DEXTRA_DEBUG DHAVE_valgrind 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 \
unroll2 ip mp restrict
=== modified file 'sql/field_conv.cc'
--- a/sql/field_conv.cc 2009-01-31 21:22:44 +0000
+++ b/sql/field_conv.cc 2009-04-27 18:01:20 +0000
@@ -773,7 +773,7 @@ int field_conv(Field *to,Field *from)
((Field_varstring*)from)->length_bytes ==
((Field_varstring*)to)->length_bytes))
{ // Identical fields
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* This may happen if one does 'UPDATE ... SET x=x' */
if (to->ptr != from->ptr)
#endif
=== modified file 'sql/filesort.cc'
--- a/sql/filesort.cc 2009-02-19 09:01:25 +0000
+++ b/sql/filesort.cc 2009-04-27 18:01:20 +0000
@@ -953,13 +953,13 @@ static void make_sortkey(register SORTPA
if (addonf->null_bit && field->is_null())
{
nulls[addonf->null_offset]|= addonf->null_bit;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(to, addonf->length);
#endif
}
else
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
uchar *end= field->pack(to, field->ptr);
uint length= (uint) ((to + addonf->length) - end);
DBUG_ASSERT((int) length >= 0);
=== modified file 'sql/ha_partition.cc'
--- a/sql/ha_partition.cc 2009-02-19 09:01:25 +0000
+++ b/sql/ha_partition.cc 2009-04-27 18:01:20 +0000
@@ -3548,10 +3548,10 @@ void ha_partition::position(const uchar
(ref_length - PARTITION_BYTES_IN_POS));
#ifdef SUPPORTING_PARTITION_OVER_DIFFERENT_ENGINES
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(ref + PARTITION_BYTES_IN_POS + ref_length,
max_ref_length-ref_length);
-#endif /* HAVE_purify */
+#endif /* HAVE_valgrind */
#endif
DBUG_VOID_RETURN;
}
=== modified file 'sql/hostname.cc'
--- a/sql/hostname.cc 2007-10-11 17:29:09 +0000
+++ b/sql/hostname.cc 2009-04-27 18:01:20 +0000
@@ -175,7 +175,7 @@ char * ip_to_hostname(struct in_addr *in
char buff[GETHOSTBYADDR_BUFF_SIZE],buff2[GETHOSTBYNAME_BUFF_SIZE];
int tmp_errno;
struct hostent tmp_hostent, tmp_hostent2;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(buff,sizeof(buff)); // Bug in purify
#endif
if (!(hp=gethostbyaddr_r((char*) in,sizeof(*in),
=== modified file 'sql/item_timefunc.cc'
--- a/sql/item_timefunc.cc 2009-02-15 10:58:34 +0000
+++ b/sql/item_timefunc.cc 2009-04-27 18:01:20 +0000
@@ -290,8 +290,8 @@ static bool extract_date_time(DATE_TIME_
LINT_INIT(strict_week_number);
/* Remove valgrind varnings when using gcc 3.3 and -O1 */
- PURIFY_OR_LINT_INIT(strict_week_number_year_type);
- PURIFY_OR_LINT_INIT(sunday_first_n_first_week_non_iso);
+ VALGRIND_OR_LINT_INIT(strict_week_number_year_type);
+ VALGRIND_OR_LINT_INIT(sunday_first_n_first_week_non_iso);
if (!sub_pattern_end)
bzero((char*) l_time, sizeof(*l_time));
=== modified file 'sql/log_event.cc'
--- a/sql/log_event.cc 2009-02-19 09:01:25 +0000
+++ b/sql/log_event.cc 2009-04-27 18:01:20 +0000
@@ -6990,7 +6990,7 @@ int Rows_log_event::do_add_row_data(ucha
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("row_data", row_data, min(length, 32));
#endif
@@ -7771,7 +7771,7 @@ Table_map_log_event::Table_map_log_event
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("event buffer", (uchar*) buf, event_len);
#endif
@@ -8674,7 +8674,7 @@ int Rows_log_event::find_row(const Relay
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("key data", m_key, table->key_info->key_length);
#endif
@@ -8704,7 +8704,7 @@ int Rows_log_event::find_row(const Relay
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_PRINT("info",("found first matching record"));
DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
#endif
@@ -9067,7 +9067,7 @@ Update_rows_log_event::do_exec_row(const
Now we have the right row to update. The old row (the one we're
looking for) is in record[1] and the new row is in record[0].
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
Don't print debug messages when running valgrind since they can
trigger false warnings.
=== modified file 'sql/log_event_old.cc'
--- a/sql/log_event_old.cc 2009-01-31 21:22:44 +0000
+++ b/sql/log_event_old.cc 2009-04-27 18:01:20 +0000
@@ -724,7 +724,7 @@ static int find_and_fetch_row(TABLE *tab
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("table->record[0]", table->record[0], table->s->reclength);
DBUG_DUMP("table->record[1]", table->record[1], table->s->reclength);
#endif
@@ -750,7 +750,7 @@ static int find_and_fetch_row(TABLE *tab
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("table->record[0]", table->record[0], table->s->reclength);
DBUG_DUMP("table->record[1]", table->record[1], table->s->reclength);
#endif
@@ -1404,7 +1404,7 @@ int Old_rows_log_event::do_add_row_data(
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("row_data", row_data, min(length, 32));
#endif
@@ -2353,7 +2353,7 @@ int Old_rows_log_event::find_row(const R
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("key data", m_key, table->key_info->key_length);
#endif
@@ -2383,7 +2383,7 @@ int Old_rows_log_event::find_row(const R
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_PRINT("info",("found first matching record"));
DBUG_DUMP("record[0]", table->record[0], table->s->reclength);
#endif
@@ -2878,7 +2878,7 @@ Update_rows_log_event_old::do_exec_row(c
Now we have the right row to update. The old row (the one we're
looking for) is in record[1] and the new row is in record[0].
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
Don't print debug messages when running valgrind since they can
trigger false warnings.
=== modified file 'sql/my_decimal.h'
--- a/sql/my_decimal.h 2008-05-20 07:38:17 +0000
+++ b/sql/my_decimal.h 2009-04-27 18:01:20 +0000
@@ -99,7 +99,7 @@ public:
{
len= DECIMAL_BUFF_LENGTH;
buf= buffer;
-#if !defined (HAVE_purify) && !defined(DBUG_OFF)
+#if !defined (HAVE_valgrind) && !defined(DBUG_OFF)
/* Set buffer to 'random' value to find wrong buffer usage */
for (uint i= 0; i < DECIMAL_BUFF_LENGTH; i++)
buffer[i]= i;
=== modified file 'sql/mysqld.cc'
--- a/sql/mysqld.cc 2009-04-08 21:16:10 +0000
+++ b/sql/mysqld.cc 2009-04-27 18:01:20 +0000
@@ -57,12 +57,6 @@
#define mysqld_charset &my_charset_latin1
-#ifdef HAVE_purify
-#define IF_PURIFY(A,B) (A)
-#else
-#define IF_PURIFY(A,B) (B)
-#endif
-
#if SIZEOF_CHARP == 4
#define MAX_MEM_TABLE_SIZE ~(ulong) 0
#else
@@ -76,9 +70,9 @@
char pstack_file_name[80];
#endif /* __linux__ */
-/* We have HAVE_purify below as this speeds up the shutdown of MySQL */
+/* We have HAVE_valgrind below as this speeds up the shutdown of MySQL */
-#if defined(HAVE_DEC_3_2_THREADS) || defined(SIGNALS_DONT_BREAK_READ) || defined(HAVE_purify) && defined(__linux__)
+#if defined(HAVE_DEC_3_2_THREADS) || defined(SIGNALS_DONT_BREAK_READ) || defined(HAVE_valgrind) && defined(__linux__)
#define HAVE_CLOSE_SERVER_SOCK 1
#endif
@@ -6520,7 +6514,7 @@ log and this option does nothing anymore
purify. These are not suppressed: instead we disable symlinks
option if compiled with valgrind support.
*/
- IF_PURIFY(0,1), 0, 0, 0, 0, 0},
+ IF_VALGRIND(0,1), 0, 0, 0, 0, 0},
{"sysdate-is-now", OPT_SYSDATE_IS_NOW,
"Non-default option to alias SYSDATE() to NOW() to make it safe-replicable. Since 5.0, SYSDATE() returns a `dynamic' value different for different invocations, even within the same statement.",
(uchar**) &global_system_variables.sysdate_is_now,
@@ -6561,7 +6555,7 @@ log and this option does nothing anymore
0, 0, 0, 0, 0},
{"use-symbolic-links", 's', "Enable symbolic link support. Deprecated option; use --symbolic-links instead.",
(uchar**) &my_use_symdir, (uchar**) &my_use_symdir, 0, GET_BOOL, NO_ARG,
- IF_PURIFY(0,1), 0, 0, 0, 0, 0},
+ IF_VALGRIND(0,1), 0, 0, 0, 0, 0},
{"user", 'u', "Run mysqld daemon as user.", 0, 0, 0, GET_STR, REQUIRED_ARG,
0, 0, 0, 0, 0, 0},
{"verbose", 'v', "Used with --help option for detailed help",
@@ -7661,7 +7655,7 @@ static int mysql_init_variables(void)
/* Things reset to zero */
opt_skip_slave_start= opt_reckless_slave = 0;
mysql_home[0]= pidfile_name[0]= log_error_file[0]= 0;
-#if defined(HAVE_REALPATH) && !defined(HAVE_purify) && !defined(HAVE_BROKEN_REALPATH)
+#if defined(HAVE_REALPATH) && !defined(HAVE_valgrind) && !defined(HAVE_BROKEN_REALPATH)
/* We can only test for sub paths if my_symlink.c is using realpath */
myisam_test_invalid_symlink= test_if_data_home_dir;
#endif
=== modified file 'sql/opt_range.cc'
--- a/sql/opt_range.cc 2009-02-19 09:01:25 +0000
+++ b/sql/opt_range.cc 2009-04-27 18:01:20 +0000
@@ -8347,7 +8347,7 @@ int QUICK_RANGE_SELECT::reset()
multi_range_buff->buffer= mrange_buff;
multi_range_buff->buffer_end= mrange_buff + mrange_bufsiz;
multi_range_buff->end_of_used_area= mrange_buff;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
We need this until ndb will use the buffer efficiently
(Now ndb stores complete row in here, instead of only the used fields
=== modified file 'sql/opt_range.h'
--- a/sql/opt_range.h 2008-08-25 17:18:22 +0000
+++ b/sql/opt_range.h 2009-04-27 18:01:20 +0000
@@ -44,7 +44,7 @@ class QUICK_RANGE :public Sql_alloc {
uint16 min_length,max_length,flag;
key_part_map min_keypart_map, // bitmap of used keyparts in min_key
max_keypart_map; // bitmap of used keyparts in max_key
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
uint16 dummy; /* Avoid warnings on 'flag' */
#endif
QUICK_RANGE(); /* Full range */
@@ -61,7 +61,7 @@ class QUICK_RANGE :public Sql_alloc {
min_keypart_map(min_keypart_map_arg),
max_keypart_map(max_keypart_map_arg)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
dummy=0;
#endif
}
=== modified file 'sql/records.cc'
--- a/sql/records.cc 2008-07-17 18:26:55 +0000
+++ b/sql/records.cc 2009-04-27 18:01:20 +0000
@@ -520,7 +520,7 @@ static int init_rr_cache(THD *thd, READ_
info->struct_length+1,
MYF(0))))
DBUG_RETURN(1);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
// Avoid warnings in qsort
bzero(info->cache,rec_cache_size+info->cache_records* info->struct_length+1);
#endif
=== modified file 'sql/rpl_rli.cc'
--- a/sql/rpl_rli.cc 2009-02-19 09:01:25 +0000
+++ b/sql/rpl_rli.cc 2009-04-27 18:01:20 +0000
@@ -34,7 +34,7 @@ Relay_log_info::Relay_log_info()
no_storage(FALSE), replicate_same_server_id(::replicate_same_server_id),
info_fd(-1), cur_log_fd(-1), save_temporary_tables(0),
cur_log_old_open_count(0), group_relay_log_pos(0), event_relay_log_pos(0),
-#if HAVE_purify
+#if HAVE_valgrind
is_fake(FALSE),
#endif
group_master_log_pos(0), log_space_total(0), ignore_log_space_limit(0),
=== modified file 'sql/rpl_rli.h'
--- a/sql/rpl_rli.h 2008-02-27 17:46:06 +0000
+++ b/sql/rpl_rli.h 2009-04-27 18:01:20 +0000
@@ -154,7 +154,7 @@ public:
ulonglong event_relay_log_pos;
ulonglong future_event_relay_log_pos;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bool is_fake; /* Mark that this is a fake relay log info structure */
#endif
=== modified file 'sql/slave.cc'
--- a/sql/slave.cc 2009-02-19 09:01:25 +0000
+++ b/sql/slave.cc 2009-04-27 18:01:20 +0000
@@ -2014,7 +2014,7 @@ int apply_event_and_update_pos(Log_event
if (exec_res == 0)
{
int error= ev->update_pos(rli);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (!rli->is_fake)
#endif
{
=== modified file 'sql/sql_base.cc'
--- a/sql/sql_base.cc 2009-02-19 09:01:25 +0000
+++ b/sql/sql_base.cc 2009-04-27 18:01:20 +0000
@@ -3000,7 +3000,7 @@ TABLE *open_table(THD *thd, TABLE_LIST *
table->pos_in_table_list= table_list;
table_list->updatable= 1; // It is not derived table nor non-updatable VIEW
table->clear_column_bitmaps();
-#if !defined(DBUG_OFF) && !defined(HAVE_purify)
+#if !defined(DBUG_OFF) && !defined(HAVE_valgrind)
/*
Fill record with random values to find bugs where we access fields
without first reading them.
@@ -7363,7 +7363,7 @@ int setup_wild(THD *thd, TABLE_LIST *tab
/* make * substituting permanent */
SELECT_LEX *select_lex= thd->lex->current_select;
select_lex->with_wild= 0;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (&select_lex->item_list != &fields) // Avoid warning
#endif
select_lex->item_list= fields;
=== modified file 'sql/sql_binlog.cc'
--- a/sql/sql_binlog.cc 2009-01-09 12:49:24 +0000
+++ b/sql/sql_binlog.cc 2009-04-27 18:01:20 +0000
@@ -59,7 +59,7 @@ void mysql_client_binlog_statement(THD*
if (!thd->rli_fake)
{
thd->rli_fake= new Relay_log_info;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
thd->rli_fake->is_fake= TRUE;
#endif
have_fd_event= FALSE;
@@ -95,7 +95,7 @@ void mysql_client_binlog_statement(THD*
char const *endptr= 0;
int bytes_decoded= base64_decode(strptr, coded_len, buf, &endptr);
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
This debug printout should not be used for valgrind builds
since it will read from unassigned memory.
@@ -188,7 +188,7 @@ void mysql_client_binlog_statement(THD*
bufptr += event_len;
DBUG_PRINT("info",("ev->get_type_code()=%d", ev->get_type_code()));
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
/*
This debug printout should not be used for valgrind builds
since it will read from unassigned memory.
=== modified file 'sql/sql_class.cc'
--- a/sql/sql_class.cc 2009-03-12 22:27:35 +0000
+++ b/sql/sql_class.cc 2009-04-27 18:01:20 +0000
@@ -3480,7 +3480,7 @@ int THD::binlog_update_row(TABLE* table,
Don't print debug messages when running valgrind since they can
trigger false warnings.
*/
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
DBUG_DUMP("before_record", before_record, table->s->reclength);
DBUG_DUMP("after_record", after_record, table->s->reclength);
DBUG_DUMP("before_row", before_row, before_size);
=== modified file 'sql/sql_list.h'
--- a/sql/sql_list.h 2009-01-15 18:11:25 +0000
+++ b/sql/sql_list.h 2009-04-27 18:01:20 +0000
@@ -43,7 +43,7 @@ public:
static void operator delete[](void *ptr, MEM_ROOT *mem_root)
{ /* never called */ }
static void operator delete[](void *ptr, size_t size) { TRASH(ptr, size); }
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bool dummy;
inline Sql_alloc() :dummy(0) {}
inline ~Sql_alloc() {}
=== modified file 'sql/sql_load.cc'
--- a/sql/sql_load.cc 2009-01-31 21:22:44 +0000
+++ b/sql/sql_load.cc 2009-04-27 18:01:20 +0000
@@ -581,7 +581,7 @@ read_fixed_length(THD *thd, COPY_INFO &i
}
it.rewind();
uchar *pos=read_info.row_start;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
read_info.row_end[0]=0;
#endif
=== modified file 'sql/sql_select.cc'
--- a/sql/sql_select.cc 2009-04-08 16:55:26 +0000
+++ b/sql/sql_select.cc 2009-04-27 18:01:20 +0000
@@ -1818,7 +1818,7 @@ JOIN::exec()
curr_join->having= curr_join->tmp_having= 0; // Allready done
/* Change sum_fields reference to calculated fields in tmp_table */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (curr_join != this)
#endif
curr_join->all_fields= *curr_all_fields;
@@ -1840,7 +1840,7 @@ JOIN::exec()
fields_list.elements, all_fields))
DBUG_VOID_RETURN;
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (curr_join != this)
#endif
{
@@ -1994,7 +1994,7 @@ JOIN::exec()
tmp_fields_list2, tmp_all_fields2,
fields_list.elements, tmp_all_fields1))
DBUG_VOID_RETURN;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
Some GCCs use memcpy() for struct assignment, even for x=x.
GCC bug 19410: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=19410
@@ -2059,7 +2059,7 @@ JOIN::exec()
tmp_table_param.save_copy_field= curr_join->tmp_table_param.copy_field;
tmp_table_param.save_copy_field_end=
curr_join->tmp_table_param.copy_field_end;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (curr_join != this)
#endif
{
@@ -3848,7 +3848,7 @@ update_ref_and_keys(THD *thd, DYNAMIC_AR
continue;
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Valgrind complains about overlapped memcpy when save_pos==use. */
if (save_pos != use)
#endif
@@ -15138,7 +15138,7 @@ setup_copy_fields(THD *thd, TMP_TABLE_PA
DBUG_ASSERT (param->field_count > (uint) (copy - copy_start));
copy->set(tmp, item->result_field);
item->result_field->move_field(copy->to_ptr,copy->to_null_ptr,1);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
copy->to_ptr[copy->from_length]= 0;
#endif
copy++;
=== modified file 'sql/table.cc'
--- a/sql/table.cc 2009-02-19 09:01:25 +0000
+++ b/sql/table.cc 2009-04-27 18:01:20 +0000
@@ -1694,7 +1694,7 @@ int open_table_from_share(THD *thd, TABL
outparam->record[1]= outparam->record[0]; // Safety
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
We need this because when we read var-length rows, we are not updating
bytes after end of varchar
@@ -1916,7 +1916,7 @@ partititon_err:
}
}
-#if defined(HAVE_purify) && !defined(DBUG_OFF)
+#if defined(HAVE_valgrind) && !defined(DBUG_OFF)
bzero((char*) bitmaps, bitmap_size*3);
#endif
=== modified file 'storage/archive/azio.c'
--- a/storage/archive/azio.c 2009-04-08 16:55:26 +0000
+++ b/storage/archive/azio.c 2009-04-27 18:01:20 +0000
@@ -63,7 +63,7 @@ void read_header(azio_stream *s, unsigne
*/
static void *az_allocator(void *dummy, uInt items, uInt size)
{
- return my_malloc((size_t)items*(size_t)size, IF_PURIFY(MY_ZEROFILL, MYF(0)));
+ return my_malloc((size_t)items*(size_t)size, IF_VALGRIND(MY_ZEROFILL, MYF(0)));
}
static void az_free(void *dummy, void *address)
=== modified file 'storage/innobase/buf/buf0buf.c'
--- a/storage/innobase/buf/buf0buf.c 2008-08-20 00:37:41 +0000
+++ b/storage/innobase/buf/buf0buf.c 2009-04-27 18:01:20 +0000
@@ -756,7 +756,7 @@ buf_pool_init(
/* Wipe contents of frame to eliminate a Purify
warning */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
memset(block->frame, '\0', UNIV_PAGE_SIZE);
#endif
if (srv_use_awe) {
=== modified file 'storage/innobase/include/univ.i'
--- a/storage/innobase/include/univ.i 2008-03-27 01:40:45 +0000
+++ b/storage/innobase/include/univ.i 2009-04-27 18:01:20 +0000
@@ -107,7 +107,7 @@ operations (very slow); also UNIV_DEBUG
#define UNIV_BTR_DEBUG /* check B-tree links */
#define UNIV_LIGHT_MEM_DEBUG /* light memory debugging */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* The following sets all new allocated memory to zero before use:
this can be used to eliminate unnecessary Purify warnings, but note that
it also masks many bugs Purify could detect. For detailed Purify analysis it
=== modified file 'storage/innobase/srv/srv0start.c'
--- a/storage/innobase/srv/srv0start.c 2008-12-14 19:21:24 +0000
+++ b/storage/innobase/srv/srv0start.c 2009-04-27 18:01:20 +0000
@@ -104,7 +104,7 @@ static char* srv_monitor_file_name;
/* Avoid warnings when using purify */
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
static int inno_bcmp(register const char *s1, register const char *s2,
register uint len)
{
=== modified file 'storage/maria/ha_maria.cc'
--- a/storage/maria/ha_maria.cc 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ha_maria.cc 2009-04-27 18:01:20 +0000
@@ -3166,7 +3166,7 @@ static int ha_maria_init(void *p)
ma_checkpoint_init(checkpoint_interval);
maria_multi_threaded= maria_in_ha_maria= TRUE;
-#if defined(HAVE_REALPATH) && !defined(HAVE_purify) && !defined(HAVE_BROKEN_REALPATH)
+#if defined(HAVE_REALPATH) && !defined(HAVE_valgrind) && !defined(HAVE_BROKEN_REALPATH)
/* We can only test for sub paths if my_symlink.c is using realpath */
maria_test_invalid_symlink= test_if_data_home_dir;
#endif
=== modified file 'storage/maria/ma_blockrec.c'
--- a/storage/maria/ma_blockrec.c 2009-04-08 08:47:30 +0000
+++ b/storage/maria/ma_blockrec.c 2009-04-27 18:01:20 +0000
@@ -1594,7 +1594,7 @@ static void make_empty_page(MARIA_HA *in
bzero(buff, PAGE_HEADER_SIZE);
-#if !defined(DONT_ZERO_PAGE_BLOCKS) || defined(HAVE_purify)
+#if !defined(DONT_ZERO_PAGE_BLOCKS) || defined(HAVE_valgrind)
/*
We zero the rest of the block to avoid getting old memory information
to disk and to allow the file to be compressed better if archived.
=== modified file 'storage/maria/ma_check.c'
--- a/storage/maria/ma_check.c 2009-02-19 09:01:25 +0000
+++ b/storage/maria/ma_check.c 2009-04-27 18:01:20 +0000
@@ -4522,7 +4522,7 @@ static int sort_key_read(MARIA_SORT_PARA
sort_param->current_filepos,
0);
sort_param->real_key_length= int_key.data_length + int_key.ref_length;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
#endif
@@ -4567,7 +4567,7 @@ static int sort_maria_ft_key_read(MARIA_
sort_param->current_filepos);
sort_param->real_key_length= int_key.data_length + int_key.ref_length;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (sort_param->key_length > sort_param->real_key_length)
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
@@ -5104,7 +5104,7 @@ static int sort_get_next_record(MARIA_SO
llstr(sort_param->pos,llbuff));
continue;
}
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(sort_param->rec_buff + block_info.rec_len,
share->base.extra_rec_buff_size);
#endif
=== modified file 'storage/maria/ma_loghandler.c'
--- a/storage/maria/ma_loghandler.c 2009-03-17 19:05:01 +0000
+++ b/storage/maria/ma_loghandler.c 2009-04-27 18:01:20 +0000
@@ -6194,12 +6194,12 @@ my_bool translog_write_record(LSN *lsn,
{
uint i;
uint len= 0;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
ha_checksum checksum= 0;
#endif
for (i= TRANSLOG_INTERNAL_PARTS; i < part_no; i++)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Find unitialized bytes early */
checksum+= my_checksum(checksum, parts_data[i].str,
parts_data[i].length);
=== modified file 'storage/maria/ma_packrec.c'
--- a/storage/maria/ma_packrec.c 2009-01-09 04:23:25 +0000
+++ b/storage/maria/ma_packrec.c 2009-04-27 18:01:20 +0000
@@ -256,7 +256,7 @@ static my_bool _ma_read_pack_info(MARIA_
(uint) (share->pack.header_length-sizeof(header)),
MYF(MY_NABP)))
goto err2;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/* Zero bytes accessed by fill_buffer */
bzero(disk_cache + (share->pack.header_length-sizeof(header)),
share->base.extra_rec_buff_size);
=== modified file 'storage/maria/ma_page.c'
--- a/storage/maria/ma_page.c 2008-09-01 17:31:40 +0000
+++ b/storage/maria/ma_page.c 2009-04-27 18:01:20 +0000
@@ -200,7 +200,7 @@ my_bool _ma_write_keypage(MARIA_PAGE *pa
/* Verify that keynr is correct */
DBUG_ASSERT(_ma_get_keynr(share, buff) == page->keyinfo->key_nr);
-#if defined(EXTRA_DEBUG) && defined(HAVE_purify) && defined(NOT_ANYMORE)
+#if defined(EXTRA_DEBUG) && defined(HAVE_valgrind) && defined(NOT_ANYMORE)
{
/* This is here to catch uninitialized bytes */
uint length= page->size;
=== modified file 'storage/maria/ma_pagecrc.c'
--- a/storage/maria/ma_pagecrc.c 2008-03-04 11:58:21 +0000
+++ b/storage/maria/ma_pagecrc.c 2009-04-27 18:01:20 +0000
@@ -318,7 +318,7 @@ my_bool maria_page_filler_set_none(uchar
__attribute__((unused)),
uchar *data_ptr __attribute__((unused)))
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
int4store_aligned(page + ((MARIA_SHARE *)data_ptr)->block_size - CRC_SIZE,
0);
#endif
=== modified file 'storage/maria/ma_search.c'
--- a/storage/maria/ma_search.c 2009-01-12 11:12:00 +0000
+++ b/storage/maria/ma_search.c 2009-04-27 18:01:20 +0000
@@ -2172,7 +2172,7 @@ int _ma_calc_bin_pack_key_length(const M
s_temp->totlength= key_length= (int_key->data_length + int_key->ref_length+
nod_flag);
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
s_temp->n_length= s_temp->n_ref_length=0; /* For valgrind */
#endif
s_temp->key=key;
=== modified file 'storage/myisam/mi_check.c'
--- a/storage/myisam/mi_check.c 2009-02-19 09:01:25 +0000
+++ b/storage/myisam/mi_check.c 2009-04-27 18:01:20 +0000
@@ -3147,7 +3147,7 @@ static int sort_key_read(MI_SORT_PARAM *
(info->s->rec_reflength+
_mi_make_key(info, sort_param->key, (uchar*) key,
sort_param->record, sort_param->filepos));
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
#endif
@@ -3187,7 +3187,7 @@ static int sort_ft_key_read(MI_SORT_PARA
sort_param->real_key_length=(info->s->rec_reflength+
_ft_make_key(info, sort_param->key,
key, wptr++, sort_param->filepos));
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
if (sort_param->key_length > sort_param->real_key_length)
bzero(key+sort_param->real_key_length,
(sort_param->key_length-sort_param->real_key_length));
=== modified file 'storage/myisam/mi_page.c'
--- a/storage/myisam/mi_page.c 2008-08-28 12:43:44 +0000
+++ b/storage/myisam/mi_page.c 2009-04-27 18:01:20 +0000
@@ -86,7 +86,7 @@ int _mi_write_keypage(register MI_INFO *
if ((length=keyinfo->block_length) > IO_SIZE*2 &&
info->state->key_file_length != page+length)
length= ((mi_getint(buff)+IO_SIZE-1) & (uint) ~(IO_SIZE-1));
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
{
length=mi_getint(buff);
bzero((uchar*) buff+length,keyinfo->block_length-length);
=== modified file 'storage/myisam/mi_search.c'
--- a/storage/myisam/mi_search.c 2008-08-28 18:52:23 +0000
+++ b/storage/myisam/mi_search.c 2009-04-27 18:01:20 +0000
@@ -1749,7 +1749,7 @@ _mi_calc_bin_pack_key_length(MI_KEYDEF *
uint length,key_length,ref_length;
s_temp->totlength=key_length=_mi_keylength(keyinfo,key)+nod_flag;
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
s_temp->n_length= s_temp->n_ref_length=0; /* For valgrind */
#endif
s_temp->key=key;
=== modified file 'storage/myisammrg/ha_myisammrg.cc'
--- a/storage/myisammrg/ha_myisammrg.cc 2008-12-04 00:36:55 +0000
+++ b/storage/myisammrg/ha_myisammrg.cc 2009-04-27 18:01:20 +0000
@@ -837,7 +837,7 @@ int ha_myisammrg::info(uint flag)
{
if (table->s->key_parts && mrg_info.rec_per_key)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
/*
valgrind may be unhappy about it, because optimizer may access values
between file->keys and table->key_parts, that will be uninitialized.
=== modified file 'strings/bcmp.c'
--- a/strings/bcmp.c 2007-05-10 09:59:39 +0000
+++ b/strings/bcmp.c 2009-04-27 18:01:20 +0000
@@ -24,7 +24,7 @@
#include <my_global.h>
#include "m_string.h"
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
#undef bcmp
#undef HAVE_BCMP
#endif
@@ -50,7 +50,7 @@ uint len; /* 0 <= len <= 65535 */
#else
-#ifndef HAVE_purify
+#ifndef HAVE_valgrind
size_t bcmp(register const uchar *s1,register const uchar *s2,
register size_t len)
#else
=== modified file 'strings/decimal.c'
--- a/strings/decimal.c 2008-08-15 19:49:43 +0000
+++ b/strings/decimal.c 2009-04-27 18:01:20 +0000
@@ -144,7 +144,7 @@ static double scaler1[]= {
1.0, 10.0, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9
};
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
#define sanity(d) DBUG_ASSERT((d)->len > 0)
#else
#define sanity(d) DBUG_ASSERT((d)->len >0 && ((d)->buf[0] | \
=== modified file 'strings/strmake.c'
--- a/strings/strmake.c 2008-04-28 16:24:05 +0000
+++ b/strings/strmake.c 2009-04-27 18:01:20 +0000
@@ -51,11 +51,11 @@ char *strmake(register char *dst, regist
*/
if (length)
{
-#ifdef HAVE_purify
+#ifdef HAVE_valgrind
dst[length-1]= 'Z';
#else
bfill(dst, length-1, (int) 'Z');
-#endif /* HAVE_purify */
+#endif /* HAVE_valgrind */
}
#endif /* EXTRA_DEBUG */
return dst-1;
2
1
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2698)
by knielsenīŧ knielsen-hq.org 06 May '09
by knielsenīŧ knielsen-hq.org 06 May '09
06 May '09
#At lp:maria
2698 knielsen(a)knielsen-hq.org 2009-04-27
Misc. small fixes:
- Fixes for pool-of-threads patch.
- Fixes for push of PBXT storage engine.
- mysql-test-run.pl fix.
modified:
BUILD/compile-dist
mysql-test/Makefile.am
mysql-test/lib/mtr_unique.pm
mysql-test/t/pool_of_threads.cnf
sql/set_var.cc
per-file messages:
BUILD/compile-dist
Fix that PBXT was missing in source tarball after `BUILD/compile-dist && make dist`
mysql-test/Makefile.am
Fix that PBXT test suite was missing from `make dist` source tarball.
mysql-test/lib/mtr_unique.pm
Better fix to avoid races when chmod'ing the semaphore file.
(Though using chmod 666 shared files in /tmp/ is still not a very good solution).
mysql-test/t/pool_of_threads.cnf
Fix that test case pool_of_threads fails if run on mysqld with no --with-libevent support.
sql/set_var.cc
Fix missing static declaration on pool_of_threads.
=== modified file 'BUILD/compile-dist'
--- a/BUILD/compile-dist 2009-02-19 09:01:25 +0000
+++ b/BUILD/compile-dist 2009-04-27 13:17:47 +0000
@@ -60,8 +60,6 @@ fi
# Make sure to enable all features that affect "make dist"
# Remember that configure restricts the man pages to the configured features !
./configure \
- --with-maria-storage-engine \
- --with-embedded-server \
- --with-ndbcluster
-$gmake
-
+ --with-plugins=max-no-ndb \
+ --with-embedded-server
+$gmake -j4
=== modified file 'mysql-test/Makefile.am'
--- a/mysql-test/Makefile.am 2009-02-13 12:25:41 +0000
+++ b/mysql-test/Makefile.am 2009-04-27 13:17:47 +0000
@@ -98,7 +98,8 @@ TEST_DIRS = t r include std_data std_dat
suite/stress/include suite/stress/t suite/stress/r \
suite/ndb suite/ndb/t suite/ndb/r \
suite/rpl_ndb suite/rpl_ndb/t suite/rpl_ndb/r \
- suite/parts suite/parts/t suite/parts/r suite/parts/inc
+ suite/parts suite/parts/t suite/parts/r suite/parts/inc \
+ suite/pbxt/t suite/pbxt/r
# Used by dist-hook and install-data-local to copy all
# test files into either dist or install directory
=== modified file 'mysql-test/lib/mtr_unique.pm'
--- a/mysql-test/lib/mtr_unique.pm 2009-04-08 16:55:26 +0000
+++ b/mysql-test/lib/mtr_unique.pm 2009-04-27 13:17:47 +0000
@@ -62,14 +62,14 @@ sub mtr_get_unique_id($$) {
die 'lock file is a symbolic link';
}
+ my $save_umask= umask(0);
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
- chmod 0777, "$file.sem";
flock SEM, LOCK_EX or die "can't lock $file.sem";
if(! -e $file) {
open FILE, ">", $file or die "can't create $file";
close FILE;
}
- chmod 0777, $file;
+ umask($save_umask);
msg("HAVE THE LOCK");
@@ -135,8 +135,8 @@ sub mtr_release_unique_id($) {
die 'lock file is a symbolic link';
}
+ my $save_umask= umask(0);
open SEM, ">", "$file.sem" or die "can't write to $file.sem";
- chmod 0777, "$file.sem";
flock SEM, LOCK_EX or die "can't lock $file.sem";
msg("HAVE THE LOCK");
@@ -149,7 +149,7 @@ sub mtr_release_unique_id($) {
open FILE, ">", $file or die "can't create $file";
close FILE;
}
- chmod 0777, "$file.sem";
+ umask($save_umask);
open FILE, "+<", $file or die "can't open $file";
#select undef,undef,undef,0.2;
seek FILE, 0, 0;
=== modified file 'mysql-test/t/pool_of_threads.cnf'
--- a/mysql-test/t/pool_of_threads.cnf 2009-03-18 15:46:32 +0000
+++ b/mysql-test/t/pool_of_threads.cnf 2009-04-27 13:17:47 +0000
@@ -2,8 +2,8 @@
[mysqld.1]
test-ignore-wrong-options
-thread-handling= pool-of-threads
-thread_pool_size= 2
+loose-thread-handling= pool-of-threads
+loose-thread_pool_size= 2
extra-port= @mysqld.1.#extra-port
extra-max-connections=1
=== modified file 'sql/set_var.cc'
--- a/sql/set_var.cc 2009-04-08 16:55:26 +0000
+++ b/sql/set_var.cc 2009-04-27 13:17:47 +0000
@@ -642,7 +642,7 @@ static sys_var_long_ptr sys_table_lock_w
static sys_var_long_ptr sys_thread_cache_size(&vars, "thread_cache_size",
&thread_cache_size);
#if HAVE_POOL_OF_THREADS == 1
-sys_var_long_ptr sys_thread_pool_size(&vars, "thread_pool_size",
+static sys_var_long_ptr sys_thread_pool_size(&vars, "thread_pool_size",
&thread_pool_size);
#endif
static sys_var_thd_enum sys_tx_isolation(&vars, "tx_isolation",
2
1
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2698)
by knielsenīŧ knielsen-hq.org 06 May '09
by knielsenīŧ knielsen-hq.org 06 May '09
06 May '09
#At lp:maria
2698 knielsen(a)knielsen-hq.org 2009-05-06
Fix a build problem with BUILD/compile-pentium64-max on CentOS/Fedora Core 10 amd64.
On these systems, there is libz.so but no libz.a. Finding libz.so, ./configure decides
to use system zlib. But since BUILD/compile-pentium64-max builds a fully static binary
with -all-static, the link of mysqld fails due to missing libz.a.
Fix by using bundled zlib in the build script.
modified:
BUILD/compile-pentium64-max
=== modified file 'BUILD/compile-pentium64-max'
--- a/BUILD/compile-pentium64-max 2007-04-11 12:12:00 +0000
+++ b/BUILD/compile-pentium64-max 2009-05-06 09:51:46 +0000
@@ -4,7 +4,10 @@ path=`dirname $0`
. "$path/SETUP.sh"
extra_flags="$pentium64_cflags $fast_cflags"
-extra_configs="$pentium_configs $max_configs $static_link"
+# On CentOS/Fedora Core 10 amd64, there is system libz.so but not
+# libz.a, so need to use bundled zlib when building static
+# binary. Hence we use --with-zlib-dir=bundled
+extra_configs="$pentium_configs $max_configs $static_link --with-zlib-dir=bundled"
CC="$CC --pipe"
strip=yes
2
1
[Maria-developers] bzr commit into MariaDB 5.1, with Maria 1.5:maria branch (knielsen:2702)
by knielsenīŧ knielsen-hq.org 05 May '09
by knielsenīŧ knielsen-hq.org 05 May '09
05 May '09
#At lp:maria
2702 knielsen(a)knielsen-hq.org 2009-05-05 [merge]
test merge 2
1
0
27 Apr '09
Toby,
You might also want to check this page out:
http://askmonty.org/wiki/index.php/MariaDB_versus_MySQL
-Adam
1
0
Hi list,
I am setting up a buildbot for Solaris 10/amd64 (later SPARC) and I
see this test failure on Sun cc (only).
gcc builds pass all tests. (Although a patch is required.)
Any clues?
--Toby
bzr branch lp:maria
...
BUILD/compile-solaris-amd64-forte && cd mysql-test/ && ./mysql-test-run
...
main.connect [ pass ] 16399
worker[1] mysql-test-run: WARNING: Process [mysqld.1 - pid: 495,
winpid: 495, exit: 1792] died
main.pool_of_threads [ fail ]
Test ended at 2009-04-26 15:18:41
090426 22:17:50 [Note] /home/buildbot/maria/sql/mysqld: Normal shutdown
090426 22:17:50 [Note] Event Scheduler: Purging the queue. 0 events
090426 22:17:53 InnoDB: Starting shutdown...
090426 22:17:53 InnoDB: Shutdown completed; log sequence number 0
1943684
090426 22:17:53 [Note] /home/buildbot/maria/sql/mysqld: Shutdown
complete
090426 22:17:54 InnoDB: Started; log sequence number 0 1943684
090426 22:17:54 [Warning] /home/buildbot/maria/sql/mysqld: unknown
variable 'loose-debug-sync-timeout=300'
090426 22:17:54 [Note] Event Scheduler: Loaded 0 events
090426 22:17:54 [Note] /home/buildbot/maria/sql/mysqld: ready for
connections.
Version: '5.1.32-maria-beta2-log' socket: '/home/buildbot/maria/
mysql-test/var/tmp/mysqld.1.sock' port: 12500 Source distribution
CURRENT_TEST: rpl.rpl_truncate_3innodb
090426 22:18:01 [Note] /home/buildbot/maria/sql/mysqld: Normal shutdown
090426 22:18:01 [Note] Event Scheduler: Purging the queue. 0 events
090426 22:18:03 InnoDB: Starting shutdown...
090426 22:18:05 InnoDB: Shutdown completed; log sequence number 0
1968339
090426 22:18:05 [Note] /home/buildbot/maria/sql/mysqld: Shutdown
complete
CURRENT_TEST: federated.federated
090426 22:18:05 [Note] Plugin 'InnoDB' disabled by command line option
090426 22:18:05 [Warning] /home/buildbot/maria/sql/mysqld: unknown
variable 'loose-debug-sync-timeout=300'
090426 22:18:05 [Note] Event Scheduler: Loaded 0 events
090426 22:18:05 [Note] /home/buildbot/maria/sql/mysqld: ready for
connections.
Version: '5.1.32-maria-beta2-log' socket: '/home/buildbot/maria/
mysql-test/var/tmp/mysqld.1.sock' port: 12500 Source distribution
CURRENT_TEST: federated.federated_archive
CURRENT_TEST: federated.federated_bug_13118
CURRENT_TEST: federated.federated_bug_25714
CURRENT_TEST: federated.federated_server
090426 22:18:17 [Note] /home/buildbot/maria/sql/mysqld: Normal shutdown
090426 22:18:17 [Note] Event Scheduler: Purging the queue. 0 events
090426 22:18:17 [Note] /home/buildbot/maria/sql/mysqld: Shutdown
complete
CURRENT_TEST: federated.federated_innodb
InnoDB: The first specified data file ./ibdata1 did not exist:
InnoDB: a new database to be created!
090426 22:18:18 InnoDB: Setting file ./ibdata1 size to 10 MB
InnoDB: Database physically writes the file full: wait...
090426 22:18:18 InnoDB: Log file ./ib_logfile0 did not exist: new to
be created
InnoDB: Setting log file ./ib_logfile0 size to 5 MB
InnoDB: Database physically writes the file full: wait...
090426 22:18:18 InnoDB: Log file ./ib_logfile1 did not exist: new to
be created
InnoDB: Setting log file ./ib_logfile1 size to 5 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Doublewrite buffer not found: creating new
InnoDB: Doublewrite buffer created
InnoDB: Creating foreign key constraint system tables
InnoDB: Foreign key constraint system tables created
090426 22:18:20 InnoDB: Started; log sequence number 0 0
090426 22:18:20 [Warning] /home/buildbot/maria/sql/mysqld: unknown
variable 'loose-debug-sync-timeout=300'
090426 22:18:20 [Note] Event Scheduler: Loaded 0 events
090426 22:18:20 [Note] /home/buildbot/maria/sql/mysqld: ready for
connections.
Version: '5.1.32-maria-beta2-log' socket: '/home/buildbot/maria/
mysql-test/var/tmp/mysqld.1.sock' port: 12500 Source distribution
090426 22:18:20 [Note] /home/buildbot/maria/sql/mysqld: Normal shutdown
090426 22:18:20 [Note] Event Scheduler: Purging the queue. 0 events
090426 22:18:21 InnoDB: Starting shutdown...
090426 22:18:23 InnoDB: Shutdown completed; log sequence number 0 46409
090426 22:18:23 [Note] /home/buildbot/maria/sql/mysqld: Shutdown
complete
CURRENT_TEST: main.connect
090426 22:18:23 [Note] Plugin 'InnoDB' disabled by command line option
090426 22:18:23 [Warning] /home/buildbot/maria/sql/mysqld: unknown
variable 'loose-debug-sync-timeout=300'
090426 22:18:23 [Note] Event Scheduler: Loaded 0 events
090426 22:18:23 [Note] /home/buildbot/maria/sql/mysqld: ready for
connections.
Version: '5.1.32-maria-beta2-log' socket: '/home/buildbot/maria/
mysql-test/var/tmp/mysqld.1.sock' port: 12500 Source distribution
090426 22:18:29 [Note] Event Scheduler: scheduler thread started with
id 21
090426 22:18:40 [Note] Event Scheduler: Killing the scheduler thread,
thread id 21
090426 22:18:40 [Note] Event Scheduler: Waiting for the scheduler
thread to reply
090426 22:18:40 [Note] Event Scheduler: Stopped
090426 22:18:40 [Note] Event Scheduler: scheduler thread started with
id 77
090426 22:18:40 [Note] Event Scheduler: Killing the scheduler thread,
thread id 77
090426 22:18:40 [Note] Event Scheduler: Waiting for the scheduler
thread to reply
090426 22:18:40 [Note] Event Scheduler: Stopped
090426 22:18:40 [Note] /home/buildbot/maria/sql/mysqld: Normal shutdown
090426 22:18:40 [Note] Event Scheduler: Purging the queue. 0 events
090426 22:18:40 [Note] /home/buildbot/maria/sql/mysqld: Shutdown
complete
CURRENT_TEST: main.pool_of_threads
Unknown option to thread_handling: pool-of-threads
Alternatives are: 'one-thread-per-connection','no-threads'
090426 22:18:40 [Note] Plugin 'InnoDB' disabled by command line option
090426 22:18:40 [ERROR] /home/buildbot/maria/sql/mysqld: unknown
variable 'thread_pool_size=2'
090426 22:18:40 [ERROR] Aborting
090426 22:18:40 [Note] /home/buildbot/maria/sql/mysqld: Shutdown
complete
Failed to start mysqld.1
- saving '/home/buildbot/maria/mysql-test/var/log/
main.pool_of_threads/' to '/home/buildbot/maria/mysql-test/var/log/
main.pool_of_threads/'
Only 863 of 866 completed.
mysql-test-run: *** ERROR: Not all tests completed
*** Error code 1
make: Fatal error: Command failed for target `test-ns'
2
1
Hi!
Just was looking at processlist and thinking "why he cannot optimize
such a easy case". I think there is a possible BOOST place (this is
common query in many apps):
mysql> select count(*) from url;
+----------+
| count(*) |
+----------+
| 17945916 |
+----------+
1 row in set (0.00 sec)
mysql>
mysql> show full processlist;
+------+------+-----------+-----------+---------+------+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Id | User | Host | db | Command | Time | State
| Info
|
+------+------+-----------+-----------+---------+------+----------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 78 | root | localhost | eeindexer | Query | 141 | Sorting result
| INSERT INTO udm_url_tmp SELECT url.rec_id FROM url WHERE
next_index_time<=1240742878 ORDER BY hops LIMIT
256
.....
So, it takes HUGE time to find out 256 rows with least hops. How I would
make it manually (MySQL engine has internally better ways to do it):
mysql> select min(hops) from url;
+-----------+
| min(hops) |
+-----------+
| 0 |
+-----------+
1 row in set (0.12 sec)
mysql> select count(hops) from url where hops=0;
+-------------+
| count(hops) |
+-------------+
| 1 |
+-------------+
1 row in set (0.00 sec)
mysql> select count(hops) from url where hops=1;
+-------------+
| count(hops) |
+-------------+
| 92 |
+-------------+
1 row in set (0.00 sec)
mysql> select count(hops) from url where hops=2;
+-------------+
| count(hops) |
+-------------+
| 9790 |
+-------------+
1 row in set (0.00 sec)
mysql>
mysql> SELECT url.rec_id FROM url WHERE hops in (0,1,2,3) ORDER BY hops
LIMIT 256;
+--------+
| rec_id |
+--------+
| 1 |
| 82 |
| 121 |
| 55 |
| 63 |
| 39 |
| 65 |
| 100 |
| 129 |
| 85 |
| 25 |
| 11 |
| 12 |
| 54 |
| 3 |
| 101 |
| 7 |
| 50 |
| 76 |
| 77 |
| 10 |
| 24 |
| 14 |
| 2 |
| 57 |
| 46 |
| 44 |
| 17 |
| 122 |
| 135 |
| 8 |
| 51 |
| 104 |
| 124 |
| 35 |
| 56 |
| 116 |
| 62 |
| 41 |
| 78 |
| 126 |
| 15 |
| 26 |
| 40 |
| 90 |
| 80 |
| 13 |
| 36 |
| 45 |
| 70 |
| 60 |
| 117 |
| 47 |
| 114 |
| 132 |
| 19 |
| 96 |
| 118 |
| 74 |
| 9 |
| 120 |
| 95 |
| 23 |
| 136 |
| 71 |
| 130 |
| 83 |
| 33 |
| 111 |
| 125 |
| 81 |
| 43 |
| 97 |
| 28 |
| 73 |
| 109 |
| 98 |
| 105 |
| 133 |
| 128 |
| 106 |
| 4 |
| 102 |
| 127 |
| 5 |
| 30 |
| 115 |
| 123 |
| 27 |
| 6 |
| 113 |
| 93 |
| 48 |
| 10047 |
| 55273 |
| 7120 |
| 21448 |
| 16872 |
| 17985 |
| 9862 |
| 20979 |
| 45717 |
| 491 |
| 16943 |
| 18183 |
| 1753 |
| 21176 |
| 16486 |
| 7578 |
| 2329 |
| 9824 |
| 1239 |
| 400 |
| 6470 |
| 8052 |
| 2752 |
| 1258 |
| 16039 |
| 593 |
| 49887 |
| 5884 |
| 7119 |
| 3011 |
| 7819 |
| 14710 |
| 244 |
| 6881 |
| 16518 |
| 240 |
| 16445 |
| 49988 |
| 62181 |
| 61227 |
| 61651 |
| 18118 |
| 9951 |
| 54964 |
| 61197 |
| 16361 |
| 21452 |
| 15361 |
| 2840 |
| 16479 |
| 17006 |
| 2768 |
| 7917 |
| 61198 |
| 21556 |
| 2650 |
| 2525 |
| 55022 |
| 54911 |
| 55672 |
| 15326 |
| 14763 |
| 15493 |
| 55156 |
| 21435 |
| 49959 |
| 18242 |
| 1887 |
| 6437 |
| 19407 |
| 7593 |
| 2355 |
| 16908 |
| 16102 |
| 1275 |
| 57868 |
| 15943 |
| 7977 |
| 16079 |
| 14712 |
| 49874 |
| 17269 |
| 55851 |
| 57783 |
| 3442 |
| 18085 |
| 50913 |
| 4067 |
| 19402 |
| 2785 |
| 7920 |
| 16456 |
| 19143 |
| 15141 |
| 54895 |
| 3578 |
| 2905 |
| 16623 |
| 16802 |
| 6472 |
| 5894 |
| 7004 |
| 14711 |
| 2545 |
| 19184 |
| 2994 |
| 3297 |
| 7993 |
| 10034 |
| 51738 |
| 16854 |
| 7007 |
| 7583 |
| 15967 |
| 3720 |
| 54940 |
| 15299 |
| 2343 |
| 9896 |
| 7016 |
| 19668 |
| 16128 |
| 21624 |
| 7529 |
| 3521 |
| 16602 |
| 16089 |
| 54821 |
| 51589 |
| 61828 |
| 19690 |
| 3608 |
| 17946 |
| 61146 |
| 2265 |
| 9809 |
| 2509 |
| 54729 |
| 2426 |
| 21617 |
| 7543 |
| 1841 |
| 3700 |
| 21391 |
| 21442 |
| 55155 |
| 7532 |
| 3490 |
| 7821 |
| 1891 |
| 9876 |
| 3677 |
| 10019 |
| 2862 |
| 16186 |
| 16299 |
| 16528 |
| 50641 |
| 5926 |
| 55135 |
| 16800 |
| 54734 |
| 19375 |
+--------+
256 rows in set (0.09 sec)
mysql>
So why not to look on index cardinality, limit size (let say, less than
1% of table), min or max value of field ordered by and then exclude big
part of table to avoid unnecessary work?
TÃĩnu
1
0
Hi Igor,
I have been trying to figure out the problems you see in the mysql_client_test
test case in the MariaDB 5.1 tree. It has been tricky due to not being able to
reproduce.
Patrick Crews was able to reproduce though, and was helpful enough to file
this bug with some additional info:
https://bugs.launchpad.net/maria/+bug/363181
>From this information, I pushed a few minor fixes to the Launchpad tree (two
missing DBUG_RETURN statements). After this push, Patrick can no longer
reproduce the failure.
So, while my fixes were done in the area of the code where the problem seems
to occur, I don't understand why two missing DBUG_RETURN would cause the error
we saw...
Maybe you can try again to see if you can reproduce the bug in the latest
tree?
If you cannot, then we may have to consider the problem fixed for now.
If you can still reproduce, it would be very helpful if you could reproduce it
with dbug enabled:
perl mysql-test-run.pl --debug mysql_client_test
and collect all the *.trace and *.err files from mysql-test/var/ and attach
them to the bug or email them. It would be good to get progress on this
annoying problem.
- Kristian.
1
0