summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-06-11 10:09:24 +0200
committerSergei Golubchik <sergii@pisem.net>2014-06-11 10:09:24 +0200
commit805d302dec2b39e3d12f2636c3e64c245f8e325c (patch)
tree1392a6a2e9a6634e985224228a24a60530ba62fe
parent6e8d49b8f51a573fa13a40a9b0bffe5424830db6 (diff)
downloadmariadb-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.cc7
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)
{