Bug #39275 | Inserting negative time value through the use of MySqlParameter throws exception | ||
---|---|---|---|
Submitted: | 5 Sep 2008 14:04 | Modified: | 15 Sep 2008 14:34 |
Reporter: | Michal Minárik | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Connector / NET | Severity: | S2 (Serious) |
Version: | 5.2.3 | OS: | Windows (Vista 32-bit) |
Assigned to: | CPU Architecture: | Any | |
Tags: | time negative insert parameter exception |
[5 Sep 2008 14:04]
Michal Minárik
[5 Sep 2008 16:43]
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/53383
[5 Sep 2008 16:44]
Reggie Burnett
fixed in 5.2.4
[7 Sep 2008 13:07]
Michal Minárik
I think there's still a bug. The correct format for insert negative time value is '-x xx:xx:xx.xx' The code in MySqlTime.WriteValue(...) could be: TimeSpan ts = (TimeSpan)val; bool negative = ts.TotalMilliseconds < 0 ? true : false; if (negative) ts = ts.Duration(); if (binary) { stream.WriteByte(8); stream.WriteByte((byte)(negative ? 1 : 0)); stream.WriteInteger(ts.Days, 4); stream.WriteByte((byte)ts.Hours); stream.WriteByte((byte)ts.Minutes); stream.WriteByte((byte)ts.Seconds); } else { string s; if (negative) { s = String.Format("'-{0} {1:00}:{2:00}:{3:00}.{4}'", ts.Days, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds); } else { s = String.Format("'{0} {1:00}:{2:00}:{3:00}.{4}'", ts.Days, ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds); } stream.WriteStringNoNull(s); } Testing solution of this bug will give correct results only after fix Bug#39294
[8 Sep 2008 18:47]
Reggie Burnett
You are right. There is a case that is not properly handled. I've taken the code you included and optimized it a bit and added more test cases. Thanks for catching it!
[8 Sep 2008 18:50]
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/53541
[8 Sep 2008 18:51]
Reggie Burnett
It is now :)
[15 Sep 2008 14:34]
Tony Bedford
An entry was added to the 5.2.4 changelog: Inserting a negative time value (negative TimeSpan) into a Time column through the use of MySqlParameter caused MySqlException to be thrown.