diff options
author | unknown <gkodinov/kgeorge@macbook.gmz> | 2007-02-06 11:08:57 +0200 |
---|---|---|
committer | unknown <gkodinov/kgeorge@macbook.gmz> | 2007-02-06 11:08:57 +0200 |
commit | c35ceeca9e11062516bd93d10d89ac818a6e1f23 (patch) | |
tree | 2c29aa1d71aa6438281906e4da3ddab01ebbe7ba /sql/item.cc | |
parent | 1534bb792ba4b8ca5806ed2953274c31fc8c8e44 (diff) | |
download | mariadb-git-c35ceeca9e11062516bd93d10d89ac818a6e1f23.tar.gz |
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
Ignoring error codes from type conversion allows default (wrong) values to
go unnoticed in the formation of index search conditions.
Fixed by correctly checking for conversion errors.
mysql-test/r/select.result:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- test case
mysql-test/t/select.test:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- test case
sql/field.h:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- don't ignore coversion errors
sql/field_conv.cc:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- don't ignore coversion errors
sql/item.cc:
Bug #22344: InnoDB keys act strange on datetime vs timestamp comparison
- don't ignore coversion errors
Diffstat (limited to 'sql/item.cc')
-rw-r--r-- | sql/item.cc | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/sql/item.cc b/sql/item.cc index 9a55eb25e2c..6d0297f909e 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -4245,18 +4245,19 @@ void Item_field::save_org_in_field(Field *to) int Item_field::save_in_field(Field *to, bool no_conversions) { + int res; if (result_field->is_null()) { null_value=1; - return set_field_to_null_with_conversions(to, no_conversions); + res= set_field_to_null_with_conversions(to, no_conversions); } else { to->set_notnull(); - field_conv(to,result_field); + res= field_conv(to,result_field); null_value=0; } - return 0; + return res; } @@ -5284,9 +5285,9 @@ int Item_ref::save_in_field(Field *to, bool no_conversions) return set_field_to_null_with_conversions(to, no_conversions); } to->set_notnull(); - field_conv(to, result_field); + res= field_conv(to, result_field); null_value= 0; - return 0; + return res; } res= (*ref)->save_in_field(to, no_conversions); null_value= (*ref)->null_value; |