Bug #36025 funcs_1.<engine>_storedproc Test failing on Windows
Submitted: 13 Apr 2008 14:58 Modified: 23 Jan 2009 10:38
Reporter: Patrick Crews Email Updates:
Status: Can't repeat Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:5.1 OS:Other (Windows, Solaris on x86)
Assigned to: Alexey Botchkov CPU Architecture:Any
Tags: funcs_1, StoredProc, Tests, windows

[13 Apr 2008 14:58] Patrick Crews
Description:
Test funcs_1.<engine>_storedproc test is failing on Windows 32 bit.

This appears to be a rounding issue - sample output
 @@ -867,7 +867,7 @@
12707:  Note	1265	Data truncated for column 'f1' at row 1
12708:  CALL sp1( 0.1234567890987654321e+29 );
12709:  @v1
12710: -12345678909876540000000000000.000000000000000000000000000000
12711: +12345678909876550000000000000.000000000000000000000000000000 *Windows

Test failures are the same for all engines.

How to repeat:
Run funcs_1.myisam_storedproc test using MySQL 5.1 on 32 bit Windows.

From the mysql-test directory, run:

./mysql-test-run.pl --suite=funcs_1 myisam_storedproc

Suggested fix:
Need to correct these tests to account for the differences between 32 bit and 64 bit precision / OS's.

Will disable the selected subtests as a temporary fix until the larger issue can be addressed.
[25 Apr 2008 0:19] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/45979

ChangeSet@1.2589, 2008-04-24 20:18:32-04:00, pcrews@pcrews-mac-local.local +1 -0
  Bug#36025 - funcs_1.<engine>_storedproc Test failing on Windows
  
  Adding change to CMakeLists.txt to make sure floating points will behave properly on Windows builds made with VS2003
[12 May 2008 6:08] Bugs System
A patch for this bug has been committed. After review, it may
be pushed to the relevant source trees for release in the next
version. You can access the patch from:

  http://lists.mysql.com/commits/46612

ChangeSet@1.2582, 2008-05-12 09:58:57+05:00, holyfoot@mysql.com +4 -0
  Bug #36025 func_1.<engine>_storedproc test failing on Windows.
  
  Float types are of limited precision (15 digits for DOUBLE for example), so
  if the string representation has more than 15 digits, the precision of
  the initial string will be lost. Which is worse, different sprintf() versions
  can produce slightly different result on these data (what caused this bug).
  As we implement homegrovn double->string conversion in 6.0, this bug will
  disappear there. Still i'd propose this patch. Here we store the initial
  string representation of a 'float' value and use it to produce decimal if
  it's necessary. That way, we won't lost the precision up to 60 digits.
[22 Aug 2008 16:39] Daniel Fischer
I can reproduce this on Solaris 10 x86, however the result seems to have even more differences that might or might not be related to rounding differences. Specifically:

-Warnings:
-Note	1265	Data truncated for column 'f1' at row 1

Full output for one of the *_storedproc tests follows:

funcs_1.innodb_storedproc [ fail ]

--- /export/home/pb2/test/sourcebuilder-build-4855-1219372712.97/mysql-5.1.28-solaris10-i386-test/mysql-test/suite/funcs_1/r/innodb_storedproc.result	Thu Aug 21 22:04:12 2008
+++ /export/home/pb2/test/sourcebuilder-build-4855-1219372712.97/mysql-5.1.28-solaris10-i386-test/mysql-test/suite/funcs_1/r/innodb_storedproc.reject	Fri Aug 22 14:08:07 2008
@@ -1111,8 +1111,6 @@
 CALL sp1( 0.1234567890987654321e-6 );
 @v1
 0.000000123456789098765400000000
-Warnings:
-Note	1265	Data truncated for column 'f1' at row 1
 CALL sp1( 0.1234567890987654321e+5 );
 @v1
 12345.678909876540000000000000000000
@@ -1130,7 +1128,7 @@
 Note	1265	Data truncated for column 'f1' at row 1
 CALL sp1( 0.1234567890987654321e-4 );
 @v1
-0.000012345678909876550000000000
+0.000012345678909876540000000000
 Warnings:
 Note	1265	Data truncated for column 'f1' at row 1
 CALL sp1( 0.1234567890987654321e+3 );
@@ -18006,8 +18004,6 @@
 CALL sp70_n(-1e+40);
 f1
 -10000000000000000000000000000000000000000
-Warnings:
-Note	1265	Data truncated for column 'f1' at row 1
 CALL sp70_n( -10000000000000000000000000000000000000000 );
 f1
 -10000000000000000000000000000000000000000
@@ -18020,8 +18016,6 @@
 CALL sp71_nu(1.00e+40);
 f1
 10000000000000000000000000000000000000000
-Warnings:
-Note	1265	Data truncated for column 'f1' at row 1
 CALL sp71_nu( 10000000000000000000000000000000000000000 );
 f1
 10000000000000000000000000000000000000000
@@ -18034,8 +18028,6 @@
 CALL sp72_nuz(1.00e+40);
 f1
 0000000000000000000000010000000000000000000000000000000000000000
-Warnings:
-Note	1265	Data truncated for column 'f1' at row 1
 CALL sp72_nuz( 10000000000000000000000000000000000000000 );
 f1
 0000000000000000000000010000000000000000000000000000000000000000
@@ -18048,8 +18040,6 @@
 CALL sp73_n_z(1.00e+40);
 f1
 0000000000000000000000010000000000000000000000000000000000000000
-Warnings:
-Note	1265	Data truncated for column 'f1' at row 1
 CALL sp73_n_z( 10000000000000000000000000000000000000000 );
 f1
 0000000000000000000000010000000000000000000000000000000000000000

mysqltest: Result content mismatch

Stopping All Servers
Restoring snapshot of databases
Resuming Tests
[22 Jan 2009 21:16] Matthias Leich
Hi Alexey,

some notes:
1. During a big cleanup I replaced the engine variants
   of the storedproc test by a modified non engine
   specific test
      mysql-test/suite/funcs_1/t/storedproc.test .
2. There is now a routine
      suite/funcs_1/storedproc/param_check.inc
   which covers the stored procedure + numerics related checks.
   The philosophy is now: 
   The final (after assignment) content of @v1_proc and 
   @v1_func should be as good/accurate/damaged as the content
   of a column f1 with data type DECIMAL(60,30).
Therefore the successor mysql-test/suite/funcs_1/t/storedproc.test
does no more suffer from the assumption that we get on every
OS etc. the same numeric results.

So the future of this bug just depends on your opinion.
If you say the current bug is
a) a bug within the test and the server is allowed to
   show slightly different values depending on the OS etc.
   than the current bug is fixed by my changes several
   months ago
b) within the server = the slightly different values depending
   on the OS/math lib etc. must not exist than the current bug
   - needs new replay scripts
   - is a server bug and no test bug
   - disappears most probably somewhere in future
     (maybe we have it already?) with a homegrown
      double->string conversion implementation.

I vote for a).

Regards

Matthias
[23 Jan 2009 10:37] Matthias Leich
- This bug was a valid bug within the test scripts 
  till ~ August 2008.
- A massive change within the test removed a lot
  of the differences.around September 2008.
- The fix for
  Bug#40177 Test funcs_1.storedproc failing on Pushbuild
  pushed to 5.1, 6.0 main trees January 2009
  should have removed the remaining result set differences.
Therefore I set the bug now to "Can't repeat".