diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-06-11 10:09:24 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-06-11 10:09:24 +0200 |
commit | 805d302dec2b39e3d12f2636c3e64c245f8e325c (patch) | |
tree | 1392a6a2e9a6634e985224228a24a60530ba62fe | |
parent | 6e8d49b8f51a573fa13a40a9b0bffe5424830db6 (diff) | |
download | mariadb-git-805d302dec2b39e3d12f2636c3e64c245f8e325c.tar.gz |
MDEV-6065 MySQL Bug#13623473 "MISSING ROWS ON SELECT AND JOIN WITH TIME/DATETIME COMPARE
fix for ranges like "indexed_datetime OP time"
(test case is in the previous revision)
-rw-r--r-- | sql/item.cc | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sql/item.cc b/sql/item.cc index 9abf62df545..21baf779781 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -8850,7 +8850,7 @@ int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) */ if (field->cmp_type() == TIME_RESULT) { - MYSQL_TIME field_time, item_time; + MYSQL_TIME field_time, item_time, item_time2, *item_time_cmp= &item_time; if (field->type() == MYSQL_TYPE_TIME) { field->get_time(&field_time); @@ -8860,8 +8860,11 @@ int stored_field_cmp_to_item(THD *thd, Field *field, Item *item) { field->get_date(&field_time, TIME_INVALID_DATES); item->get_date(&item_time, TIME_INVALID_DATES); + if (item_time.time_type == MYSQL_TIMESTAMP_TIME) + if (time_to_datetime(thd, &item_time, item_time_cmp= &item_time2)) + return 1; } - return my_time_compare(&field_time, &item_time); + return my_time_compare(&field_time, item_time_cmp); } if (res_type == STRING_RESULT) { |