bugfix: Item_cache_temporal::convert_to_basic_const_item assumed DATETIME
this is a 10.3 version of 1c6f6dc8924
This commit is contained in:
parent
7601331140
commit
c43a0e0a77
@ -11819,7 +11819,7 @@ EXPLAIN
|
|||||||
"access_type": "ALL",
|
"access_type": "ALL",
|
||||||
"rows": 3,
|
"rows": 3,
|
||||||
"filtered": 100,
|
"filtered": 100,
|
||||||
"attached_condition": "t1.i = TIMESTAMP'2007-05-28 00:00:00'"
|
"attached_condition": "t1.i = DATE'2007-05-28'"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
29
sql/item.cc
29
sql/item.cc
@ -10168,17 +10168,32 @@ Item *Item_cache_temporal::convert_to_basic_const_item(THD *thd)
|
|||||||
Item *new_item;
|
Item *new_item;
|
||||||
DBUG_ASSERT(value_cached || example != 0);
|
DBUG_ASSERT(value_cached || example != 0);
|
||||||
if (null_value)
|
if (null_value)
|
||||||
new_item= (Item*) new (thd->mem_root) Item_null(thd);
|
return new (thd->mem_root) Item_null(thd);
|
||||||
else
|
else
|
||||||
{
|
return make_literal(thd);
|
||||||
MYSQL_TIME ltime;
|
|
||||||
unpack_time(val_datetime_packed(), <ime, MYSQL_TIMESTAMP_DATETIME);
|
|
||||||
new_item= (Item*) new (thd->mem_root) Item_datetime_literal(thd, <ime,
|
|
||||||
decimals);
|
|
||||||
}
|
|
||||||
return new_item;
|
return new_item;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Item *Item_cache_datetime::make_literal(THD *thd)
|
||||||
|
{
|
||||||
|
MYSQL_TIME ltime;
|
||||||
|
unpack_time(val_datetime_packed(), <ime, MYSQL_TIMESTAMP_DATETIME);
|
||||||
|
return new (thd->mem_root) Item_datetime_literal(thd, <ime, decimals);
|
||||||
|
}
|
||||||
|
|
||||||
|
Item *Item_cache_date::make_literal(THD *thd)
|
||||||
|
{
|
||||||
|
MYSQL_TIME ltime;
|
||||||
|
unpack_time(val_datetime_packed(), <ime, MYSQL_TIMESTAMP_DATE);
|
||||||
|
return new (thd->mem_root) Item_date_literal(thd, <ime);
|
||||||
|
}
|
||||||
|
|
||||||
|
Item *Item_cache_time::make_literal(THD *thd)
|
||||||
|
{
|
||||||
|
MYSQL_TIME ltime;
|
||||||
|
unpack_time(val_time_packed(), <ime, MYSQL_TIMESTAMP_TIME);
|
||||||
|
return new (thd->mem_root) Item_time_literal(thd, <ime, decimals);
|
||||||
|
}
|
||||||
|
|
||||||
bool Item_cache_real::cache_value()
|
bool Item_cache_real::cache_value()
|
||||||
{
|
{
|
||||||
|
@ -6169,6 +6169,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
Item *clone_item(THD *thd);
|
Item *clone_item(THD *thd);
|
||||||
Item *convert_to_basic_const_item(THD *thd);
|
Item *convert_to_basic_const_item(THD *thd);
|
||||||
|
virtual Item *make_literal(THD *) =0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -6180,6 +6181,7 @@ public:
|
|||||||
bool cache_value();
|
bool cache_value();
|
||||||
Item *get_copy(THD *thd)
|
Item *get_copy(THD *thd)
|
||||||
{ return get_item_copy<Item_cache_time>(thd, this); }
|
{ return get_item_copy<Item_cache_time>(thd, this); }
|
||||||
|
Item *make_literal(THD *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -6190,6 +6192,7 @@ public:
|
|||||||
:Item_cache_temporal(thd, &type_handler_datetime2) { }
|
:Item_cache_temporal(thd, &type_handler_datetime2) { }
|
||||||
Item *get_copy(THD *thd)
|
Item *get_copy(THD *thd)
|
||||||
{ return get_item_copy<Item_cache_datetime>(thd, this); }
|
{ return get_item_copy<Item_cache_datetime>(thd, this); }
|
||||||
|
Item *make_literal(THD *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
@ -6200,6 +6203,7 @@ public:
|
|||||||
:Item_cache_temporal(thd, &type_handler_newdate) { }
|
:Item_cache_temporal(thd, &type_handler_newdate) { }
|
||||||
Item *get_copy(THD *thd)
|
Item *get_copy(THD *thd)
|
||||||
{ return get_item_copy<Item_cache_date>(thd, this); }
|
{ return get_item_copy<Item_cache_date>(thd, this); }
|
||||||
|
Item *make_literal(THD *);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user