Bug #944 | make test failure - select_safe | ||
---|---|---|---|
Submitted: | 29 Jul 2003 5:02 | Modified: | 21 Aug 2003 10:43 |
Reporter: | Neeraj Patel | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | MySQL Server: Compiling | Severity: | S3 (Non-critical) |
Version: | 4.0.14 | OS: | Linux (Linux / SuSE 8.2) |
Assigned to: | Lenz Grimmer | CPU Architecture: | Any |
[29 Jul 2003 5:02]
Neeraj Patel
[29 Jul 2003 12:08]
Indrek Siitan
Yes, we have received other reports too of the select_safe test failing, with exactly the same configuration - SuSE 8.2 and gcc 3.3. We are investigating this issue as well, but could you try downgrading to an older gcc (2.95.3 for example) to see if that solves the failure?
[29 Jul 2003 15:54]
Neeraj Patel
I built gcc 3.3 from source using: export gcc_lang="c,c++,ada,f77,objc" export CFLAGS="-O2" CXXFLAGS="-O2" GCJFLAGS="-O2" && ../configure --prefix=/usr/local/gcc33 --enable-shared --with-system-zlib --enable-threads=posix --disable-checking --enable-long-long --enable-cstudio=stdio --enable-clocale=generic --enable-version-specfic-runtime-libs --with-local-prefix=/usr/local/gcc33 and then built MySQL with my new gcc: export PATH=/usr/local/gcc33/bin:$PATH CC="gcc" CXXFLAGS="gcc" CFLAGS="-O3" CXXFLAGS="-O3 -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql4014 --with-mysqld-user=mysqladm --enable-local-infile --enable-thread-safe-client --enable-assembler --without-berkeley-db --without-innodb --with-extra-charsets=complex --with-mysqld-ldflags=-all-static --without-raid && make 'make test' completes sucessfully
[30 Jul 2003 13:25]
Lenz Grimmer
I was able to repeat this test failure here, using SuSE Linux with the gcc-3.3-43 RPMs (which is available as an update from ftp.suse.com). It only seems to occur, if you compile with "-O3" optimization flags - using "-O2" for compiling does not reveal this problem. Another user reported that he compiled gcc-3.3 by himself and was not able to reproduce the problem (even when using -O3), so it might be a SuSE-specific problem with their gcc-3.3 packages.
[21 Aug 2003 10:43]
Michael Widenius
The failed test in select_safe is a test where it's equaly good to use t1 before t2 as it is to use t2 before t1. In other words, the "new failed" result is also correct. I assume that this has something to how some internal floating point variables are stored in the join optimizer. If the compiler stores some of them in register and compared these to variables stored in memory. mysqld may get a difference for something that would be equal if both variables where stored in memory. I would regard this as a bug in our test suite as we are working within the limits of the floating point precission. I have now fixed this by forcing the join order, which should fix this problem. The fix will be in 4.0.15