Bug #72827 5.5.38 fails func_math MTR test
Submitted: 1 Jun 2014 15:54 Modified: 3 Dec 2014 15:25
Reporter: Laurynas Biveinis (OCA) Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:5.5.38 OS:MacOS
Assigned to: CPU Architecture:Any

[1 Jun 2014 15:54] Laurynas Biveinis
Description:
cmake -DBUILD_CONFIG=mysql_release [-DWITH_DEBUG=ON]
...
make
...
mysql-test-run func_math
...
main.func_math                           [ fail ]
        Test ended at 2014-06-01 18:51:06

CURRENT_TEST: main.func_math
mysqltest: At line 482: query 'SELECT -a FROM t1' succeeded - should have failed with errno 1690...

The result from queries just before the failure was:
< snip >
SELECT 9223372036854775808 * 2;
ERROR 22003: BIGINT UNSIGNED value is out of range in '(9223372036854775808 * 2)'
SELECT 9223372036854775808 * 2;
ERROR 22003: BIGINT UNSIGNED value is out of range in '(9223372036854775808 * 2)'
SELECT 7158278827 * 3221225472;
ERROR 22003: BIGINT value is out of range in '(7158278827 * 3221225472)'
SELECT 9223372036854775807 * (-2);
ERROR 22003: BIGINT value is out of range in '(9223372036854775807 * -(2))'
SELECT CAST(1 as UNSIGNED) * (-1);
ERROR 22003: BIGINT UNSIGNED value is out of range in '(cast(1 as unsigned) * -(1))'
SELECT 9223372036854775807 * 2;
ERROR 22003: BIGINT value is out of range in '(9223372036854775807 * 2)'
SELECT ABS(-9223372036854775808);
ERROR 22003: BIGINT value is out of range in 'abs(-(9223372036854775808))'
SELECT -9223372036854775808 DIV -1;
ERROR 22003: BIGINT value is out of range in '(-(9223372036854775808) DIV -(1))'
SELECT 18446744073709551615 DIV -1;
ERROR 22003: BIGINT UNSIGNED value is out of range in '(18446744073709551615 DIV -(1))'
CREATE TABLE t1(a BIGINT, b BIGINT UNSIGNED);
INSERT INTO t1 VALUES(-9223372036854775808, 9223372036854775809);

How to repeat:
See above
[1 Jun 2014 20:52] MySQL Verification Team
Thank you for the bug report. I couldn't repeat with current source on Mavericks:

Logging: mysql-test-run.pl  func_math
140601 17:47:31 [Warning] Setting lower_case_table_names=2 because file system for /var/folders/_q/gbljyvnj1g97b03433vcb2hr0000gn/T/wJ9w7hDKeP/ is case insensitive
MySQL Version 5.5.39
Checking supported features...
 - skipping SSL, mysqld not compiled with SSL
 - binaries are debug compiled
Collecting tests...
Removing old var directory...
Creating var directory '/Users/miguel/mysql-5.5/mysql-test/var'...
Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.func_math                           [ pass ]   3471
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 3.471 of 20 seconds executing testcases

Completed: All 1 tests were successful.

[17:47:49][pochita:]mysql-test miguel$ sw_vers -productVersion
10.9.3
[17:49:10][pochita:]mysql-test miguel$
[2 Jun 2014 5:57] Laurynas Biveinis
Thanks. Would it be possible to get more details why this is non-repeatable under 5.5.39? Was there a fix? If yes, can you share anything about it?
[21 Jul 2014 11:27] James Page
We've seen this test failure for 5.5.38 in Debian unstable:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=753196
[1 Aug 2014 10:01] James Page
I also continue to see this issue in 5.5.39
[2 Aug 2014 8:11] Laurynas Biveinis
Please re-open this bug, this is repeatable with 5.5.39 too:

main.func_math                           [ fail ]
        Test ended at 2014-08-01 22:02:46

CURRENT_TEST: main.func_math
mysqltest: At line 482: query 'SELECT -a FROM t1' succeeded - should have failed with errno 1690...

The result from queries just before the failure was:
< snip >
SELECT 9223372036854775808 * 2;
ERROR 22003: BIGINT UNSIGNED value is out of range in '(9223372036854775808 * 2)'
SELECT 9223372036854775808 * 2;
ERROR 22003: BIGINT UNSIGNED value is out of range in '(9223372036854775808 * 2)'
SELECT 7158278827 * 3221225472;
ERROR 22003: BIGINT value is out of range in '(7158278827 * 3221225472)'
SELECT 9223372036854775807 * (-2);
ERROR 22003: BIGINT value is out of range in '(9223372036854775807 * -(2))'
SELECT CAST(1 as UNSIGNED) * (-1);
ERROR 22003: BIGINT UNSIGNED value is out of range in '(cast(1 as unsigned) * -(1))'
SELECT 9223372036854775807 * 2;
ERROR 22003: BIGINT value is out of range in '(9223372036854775807 * 2)'
SELECT ABS(-9223372036854775808);
ERROR 22003: BIGINT value is out of range in 'abs(-(9223372036854775808))'
SELECT -9223372036854775808 DIV -1;
ERROR 22003: BIGINT value is out of range in '(-(9223372036854775808) DIV -(1))'
SELECT 18446744073709551615 DIV -1;
ERROR 22003: BIGINT UNSIGNED value is out of range in '(18446744073709551615 DIV -(1))'
CREATE TABLE t1(a BIGINT, b BIGINT UNSIGNED);
INSERT INTO t1 VALUES(-9223372036854775808, 9223372036854775809);

This must be CMake-option specific.
[4 Aug 2014 12:27] MySQL Verification Team
Folks,

I don't what is happening on your environment to fail the test, first I checked
with source compiled server now I checked with released version using the *.tar.gz package and still I can't repeat:

[09:23:44][pochita:]mysql-test miguel$ perl mysql-test-run.pl  func_math
defined(@array) is deprecated at lib/mtr_cases.pm line 339.
	(Maybe you should just omit the defined()?)
defined(@array) is deprecated at mysql-test-run.pl line 491.
	(Maybe you should just omit the defined()?)
Logging: mysql-test-run.pl  func_math
140804  9:24:03 [Warning] Setting lower_case_table_names=2 because file system for /var/folders/_q/gbljyvnj1g97b03433vcb2hr0000gn/T/ZUP_2NuoMa/ is case insensitive
140804  9:24:03 [Note] Plugin 'FEDERATED' is disabled.
MySQL Version 5.5.39
Checking supported features...
 - SSL connections supported
Collecting tests...
Removing old var directory...
Creating var directory '/Users/miguel/mysql-5.5.39-osx10.6-x86_64/mysql-test/var'...
Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.func_math                           [ pass ]   3932
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 3.932 of 20 seconds executing testcases

Completed: All 1 tests were successful.
[4 Aug 2014 18:28] MySQL Verification Team
I checked on Windows with most recent source too:

C:\2014.07.27\mysql-5.5\mysql-test>perl mysql-test-run.pl  func_math
Found handle.exe version 3.51
Logging: mysql-test-run.pl  func_math
140804 15:26:20 [Note] Plugin 'FEDERATED' is disabled.
MySQL Version 5.5.40
Checking supported features...
 - SSL connections supported
Collecting tests...
Removing old var directory...
Creating var directory 'C:/2014.07.27/mysql-5.5/mysql-test/var'...
Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.func_math                           [ pass ]   2074
--------------------------------------------------------------------------
The servers were restarted 0 times
Spent 2.074 of 41 seconds executing testcases

Completed: All 1 tests were successful.
[6 Aug 2014 5:57] Laurynas Biveinis
You don't specify what CMake options you use for the source-compiled server, have you tried the ones I wrote in the initial bug description?
[6 Aug 2014 11:32] MySQL Verification Team
Thank you for the feedback.

[08:31:17][pochita:]mysql-test miguel$ ./mtr func_math
defined(@array) is deprecated at lib/mtr_cases.pm line 339.
	(Maybe you should just omit the defined()?)
defined(@array) is deprecated at ./mtr line 491.
	(Maybe you should just omit the defined()?)
Logging: ./mtr  func_math
140806  8:31:31 [Warning] Setting lower_case_table_names=2 because file system for /var/folders/_q/gbljyvnj1g97b03433vcb2hr0000gn/T/IuLwI7_xjL/ is case insensitive
140806  8:31:31 [Note] Plugin 'FEDERATED' is disabled.
MySQL Version 5.5.39
Checking supported features...
 - SSL connections supported
Collecting tests...
Removing old var directory...
Creating var directory '/Users/miguel/mysql-5.5.39/mysql-test/var'...
Installing system database...

==============================================================================

TEST                                      RESULT   TIME (ms) or COMMENT
--------------------------------------------------------------------------

worker[1] Using MTR_BUILD_THREAD 300, with reserved ports 13000..13009
main.func_math                           [ fail ]
        Test ended at 2014-08-06 08:31:48

CURRENT_TEST: main.func_math
mysqltest: At line 482: query 'SELECT -a FROM t1' succeeded - should have failed with errno 1690...

The result from queries just before the failure was:
[3 Nov 2014 14:59] Paul DuBois
Fixed in 5.5.41. Changes for test suite. No changelog entry needed.
[3 Dec 2014 15:25] Laurynas Biveinis
The fix is in the code, can you please confirm that it really does not need documenting?

$ bzr log -r 4735
------------------------------------------------------------
revno: 4735
tags: clone-5.5.41-build
committer: mithun <mithun.c.y@oracle.com>
branch nick: mysql-5.5
timestamp: Mon 2014-11-03 18:10:28 +0530
message:
  Bug #19372926 : 5.5.38 FAILS FUNC_MATH MTR TEST.
  
  Issue :
  -------
  This seems for some platform -(LONGLONG_MIN) is
  not flagged as out of range.
  
  Fix:
  ----
  Fix is backported from mysql-5.6 bug 14314156.
  Fixed by adding an explicit test for this value in
  Item_func_neg::int_op().