| Bug #16511 | Decimal data types broken with prepared statements | ||
|---|---|---|---|
| Submitted: | 15 Jan 2006 1:12 | Modified: | 14 Feb 2006 3:21 | 
| Reporter: | Eric Huss (Candidate Quality Contributor) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S2 (Serious) | 
| Version: | 5.0/5.1 | OS: | Any (all) | 
| Assigned to: | Ramil Kalimullin | CPU Architecture: | Any | 
   [26 Jan 2006 9:16]
   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/1662
   [27 Jan 2006 8:24]
   Ramil Kalimullin        
  Eric, thanks a lot for your contribution!
   [27 Jan 2006 8:58]
   Konstantin Osipov        
  Approved by email: the patch is ok to push with a testcase.
   [10 Feb 2006 9:21]
   Ramil Kalimullin        
  fixed in 5.0.19
   [14 Feb 2006 3:21]
   Paul DuBois        
  Noted in 5.0.19 changelog.
          The <literal>DECIMAL</literal> data type was not being handled
           correctly with prepared statements. (Bug #16511)
 

Description: Attempting to bind a DECIMAL type parameter with the prepared statement API can cause various errors (such as ER_WRONG_ARGUMENTS) because it is unpacking the packet incorrectly. How to repeat: My particular test was trying to insert 2 values, the first of which was a DECIMAL type using the C Prepared Statement API. Suggested fix: In set_param_decimal() in sql_prepare.cc the following line: *pos+= len; should be: *pos+= length;