summaryrefslogtreecommitdiff
path: root/sql/opt_rewrite_date_cmp.cc
diff options
context:
space:
mode:
authorOleg Smirnov <olernov@gmail.com>2023-03-24 21:01:09 +0700
committerOleg Smirnov <olernov@gmail.com>2023-04-25 20:21:35 +0700
commit9f9a53be4057a1c65478dfd04cd11fe9c079ce59 (patch)
tree8b141f912b9bd3a4da7f136d8df66107392152fc /sql/opt_rewrite_date_cmp.cc
parentf0b665f880bb6a6864660818d926fde9db18fa3e (diff)
downloadmariadb-git-9f9a53be4057a1c65478dfd04cd11fe9c079ce59.tar.gz
MDEV-30901 Index usage for DATE(datetime_column) = const does not work for engine Memory
Fix incorrect approach to determine whether a field is part of an index. Remove "force index" hints from tests. Add tests with composite indexes
Diffstat (limited to 'sql/opt_rewrite_date_cmp.cc')
-rw-r--r--sql/opt_rewrite_date_cmp.cc4
1 files changed, 1 insertions, 3 deletions
diff --git a/sql/opt_rewrite_date_cmp.cc b/sql/opt_rewrite_date_cmp.cc
index 234dbb09311..5a6410414da 100644
--- a/sql/opt_rewrite_date_cmp.cc
+++ b/sql/opt_rewrite_date_cmp.cc
@@ -195,14 +195,12 @@ Item_field *Date_cmp_func_rewriter::is_date_rounded_field(Item* item,
if (arg->real_item()->type() == Item::FIELD_ITEM)
{
Item_field *item_field= (Item_field*)(arg->real_item());
- const key_map * used_indexes=
- &item_field->field->table->keys_in_use_for_query;
enum_field_types field_type= item_field->field_type();
if ((field_type == MYSQL_TYPE_DATE ||
field_type == MYSQL_TYPE_DATETIME ||
field_type == MYSQL_TYPE_NEWDATE ||
field_type == MYSQL_TYPE_TIMESTAMP) &&
- item_field->field->part_of_key.is_overlapping(*used_indexes))
+ item_field->field->flags & PART_KEY_FLAG)
{
*out_func_type= func_type;
return item_field;