Bug #29079 Semantics of "bigint" depend on platform specifics (size, signedness of char ?)
Submitted: 13 Jun 2007 18:40 Modified: 11 Jul 2007 0:51
Reporter: Joerg Bruehe
Status: Closed
Category:Server: Types Severity:S3 (Non-critical)
Version:4.1.23 OS:Other (AIX + Solaris(Sparc) 64 bit)
Assigned to: Ramil Kalimullin Target Version:

[13 Jun 2007 18:40] Joerg Bruehe
Description:
Occurred during 4.1.23 release builds:

-------------------------------------------------------
*** r/select.result
--- r/select.reject
***************
*** 2828,2838
  Warning       1264    Data truncated; out of range for column 'b' at row 1
  Warning       1264    Data truncated; out of range for column 'a' at row 2
  Warning       1264    Data truncated; out of range for column 'b' at row 2
- Warning       1264    Data truncated; out of range for column 'b' at row 3
  select hex(a), hex(b) from t1;
  hex(a)        hex(b)
  FFFFFFFFFFFFFFFF      7FFFFFFFFFFFFFFF
  FFFFFFFFFFFFFFFF      7FFFFFFFFFFFFFFF
! 8FFFFFFFFFFFFFFF      7FFFFFFFFFFFFFFF
  drop table t1;
  End of 4.1 tests
--- 2828,2837
  Warning       1264    Data truncated; out of range for column 'b' at row 1
  Warning       1264    Data truncated; out of range for column 'a' at row 2
  Warning       1264    Data truncated; out of range for column 'b' at row 2
  select hex(a), hex(b) from t1;
  hex(a)        hex(b)
  FFFFFFFFFFFFFFFF      7FFFFFFFFFFFFFFF
  FFFFFFFFFFFFFFFF      7FFFFFFFFFFFFFFF
! 8FFFFFFFFFFFFFFF      8FFFFFFFFFFFFFFF
  drop table t1;
  End of 4.1 tests
-------------------------------------------------------

Occurred in all configurations, all tests,
on the 64 bit versions of AIX and Solaris 8, 9, and 10 (Sparc-64).

This part of the test was added with the fix of bug#22533.

I suspect this may be an issue of "char" being by default signed vs unsigned.

How to repeat:
Found by running the test suite.
[20 Jun 2007 9:40] 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/29154

ChangeSet@1.2667, 2007-06-20 12:40:35+05:00, ramil@mysql.com +1 -0
  Fix for bug #29079: Semantics of "bigint" depend on platform specifics (size, signedness
of char ?)
  
  Problem: comparing a big ulonglong variable with a longlong constant may depend on
compiler used
  and lead to unexpected results.
  Fix: use explicit type cast.
[22 Jun 2007 15: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/29394

ChangeSet@1.2667, 2007-06-22 17:12:40+05:00, ramil@mysql.com +1 -0
  Fix for bug #29079: Semantics of "bigint" depend on platform specifics (size, signedness
of char ?)
  
  Problem: long and long long types mess in a comparison may lead to wrong results on some
platforms.
  Fix: prefer [unsigned] long long as [u]longlong as it's used unconditionally in many
places.
[10 Jul 2007 15:27] Bugs System
Pushed into 5.1.21-beta
[10 Jul 2007 15:28] Bugs System
Pushed into 5.0.46
[10 Jul 2007 15:29] Bugs System
Pushed into 4.1.24
[11 Jul 2007 0:51] Paul DuBois
Noted in 4.1.24, 5.0.46, 5.1.21 changelogs.

The semantics of BIGINT depended on platform-specific characteristics.