Bug #36031 Test funcs_1.<engine>_views failing on Windows
Submitted: 13 Apr 2008 15:58 Modified: 14 May 2008 15:52
Reporter: Patrick Crews Email Updates:
Status: Closed Impact on me:
None 
Category:Tests: Server Severity:S3 (Non-critical)
Version:5.1 OS:Windows
Assigned to: Davi Arnaut CPU Architecture:Any
Tags: funcs_1, mysql-test-run, Tests, windows

[13 Apr 2008 15:58] Patrick Crews
Description:
Test funcs_1.<engine>_views failing on Windows.

Appears that leading zeros are missing from the results.

13209: -f75	00000001.175494352e-38
13210: -f76	00000001.175494352e-38
13211: +f75	0000001.175494352e-38
13212: +f76	0000001.175494352e-38

Failures appear to be the same for all <engine> values

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

From the mysql-test directory, run the following:

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

Suggested fix:
Will disable subtests that are failing as a temp-fix to maintain some test function

Need to make the tests able to account for differences in OS's and 32 bit vs 64 bit status.
[30 Apr 2008 17:25] Davi Arnaut
Reduced test case:

create table t1 (a real zerofill, b real unsigned zerofill);
insert into t1 values (1.175494361e-38, 1.175494361e-38);
select * from t1;

-00000001.175494361e-38 00000001.175494361e-38
+0000001.175494361e-38  0000001.175494361e-38

Probably some problem related to zerofill.
[30 Apr 2008 18:35] Davi Arnaut
What happens is that mysqltest.c::append_field modifies that exponential notation of the number by removing a zero after the the symbol 'e' (eg: 1.2e+018 is converted to 1.2e+18). The problem is that the string was zero filled by the server and it has one less zero because of the converted value is large due to the extra zero after the symbol.
[30 Apr 2008 19:40] Davi Arnaut
After the above one is fixed, another test case failure shows up:

create table t1 (a datetime not null default '2/2/2', b timestamp not null default 20001231235959);
insert into t1 values ('1970-01-02 00:00:01', 19700102000001);
insert into t1 values ('1970-01-03 00:00:02', 19700103000002);
insert into t1 values ('1970-01-04 00:00:03', 19700104000003);
select * from t1;

-1970-01-02 00:00:01    1970-01-02 00:00:01
-1970-01-03 00:00:02    1970-01-03 00:00:02
-1970-01-04 00:00:03    1970-01-04 00:00:03
+1970-01-02 00:00:01    1970-01-01 00:00:01
+1970-01-03 00:00:02    1970-01-02 00:00:02
+1970-01-04 00:00:03    1970-01-03 00:00:03
[2 May 2008 18:10] 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/46308

ChangeSet@1.2603, 2008-05-02 15:10:32-03:00, davi@mysql.com +1 -0
  Bug#36031 Test funcs_1.<engine>_views failing on Windows
  
  The problem is a hack in mysqltest.c::append_field that modifies
  the exponential notation of floating point numbers by removing a
  zero after the the symbol 'e' (eg: 00001.2e+018 is converted to
  00001.2e+18) but does not take into account the zerofill affect
  in the start of the string.
  
  The solution is to check if the field was zero filled and insert
  a zero at the start of the string if a zero after the exponential
  notation symbol is removed.
[5 May 2008 15:17] Davi Arnaut
Queued to 5.1-bugteam
[14 May 2008 15:20] Bugs System
Pushed into 5.1.25-rc
[14 May 2008 15:52] Paul DuBois
Test suite change. No changelog entry needed.
[22 May 2008 9:49] Bugs System
Pushed into 6.0.6-alpha