summaryrefslogtreecommitdiff
path: root/sql/opt_range.cc
diff options
context:
space:
mode:
authorunknown <monty@mysql.com>2004-07-08 15:45:25 +0300
committerunknown <monty@mysql.com>2004-07-08 15:45:25 +0300
commita23fbc060ebd0aca9b34e793ec25533cbdb7d4f9 (patch)
tree15b952a3b20bb1c0c60974e9f451385a4fa45208 /sql/opt_range.cc
parent5ef15478cdbaa65c7d037ce5662117b8ed425dba (diff)
downloadmariadb-git-a23fbc060ebd0aca9b34e793ec25533cbdb7d4f9.tar.gz
New handler::index_flags() definition to make it easy to check the full used key and a specific key part.
Added key part to optimize_range() to fix problems when using fields in key parts. sql/examples/ha_archive.h: New handler::index_flags() definition sql/examples/ha_example.h: New handler::index_flags() definition sql/field.cc: New optimize_range() definition sql/field.h: New optimize_range() definition sql/ha_berkeley.cc: New handler::index_flags() definition sql/ha_berkeley.h: New handler::index_flags() definition sql/ha_heap.h: New handler::index_flags() definition sql/ha_innodb.h: New handler::index_flags() definition sql/ha_isam.h: New handler::index_flags() definition sql/ha_isammrg.h: New handler::index_flags() definition sql/ha_myisam.h: New handler::index_flags() definition sql/ha_myisammrg.h: New handler::index_flags() definition sql/ha_ndbcluster.cc: New handler::index_flags() definition sql/ha_ndbcluster.h: New handler::index_flags() definition sql/handler.h: New handler::index_flags() definition sql/log.cc: Fixed compiler warnings sql/log_event.cc: Fixed compiler warnings (and renamed short variable name) sql/opt_range.cc: New handler::index_flags() definition sql/opt_sum.cc: New handler::index_flags() definition sql/set_var.cc: Removed compiler warnings sql/sql_db.cc: Removed compiler warnings sql/sql_select.cc: New handler::index_flags() definition sql/sql_show.cc: Removed compiler warnings sql/sql_update.cc: Removed compiler warnings sql/table.cc: New handler::index_flags() definition
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r--sql/opt_range.cc9
1 files changed, 6 insertions, 3 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 32a0391a777..40e3ffebe56 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -727,7 +727,8 @@ int SQL_SELECT::test_quick_select(THD *thd, key_map keys_to_use,
found_records=check_quick_select(&param, idx, *key);
if (found_records != HA_POS_ERROR && found_records > 2 &&
head->used_keys.is_set(keynr) &&
- (head->file->index_flags(keynr) & HA_KEYREAD_ONLY))
+ (head->file->index_flags(keynr, param.max_key_part, 1) &
+ HA_KEYREAD_ONLY))
{
/*
We can resolve this by only reading through this key.
@@ -1028,7 +1029,8 @@ get_mm_leaf(PARAM *param, COND *conf_func, Field *field, KEY_PART *key_part,
String tmp(buff1,sizeof(buff1),value->collation.collation),*res;
uint length,offset,min_length,max_length;
- if (!field->optimize_range(param->real_keynr[key_part->key]))
+ if (!field->optimize_range(param->real_keynr[key_part->key],
+ key_part->part))
DBUG_RETURN(0); // Can't optimize this
if (!(res= value->val_str(&tmp)))
DBUG_RETURN(&null_element);
@@ -1093,7 +1095,8 @@ get_mm_leaf(PARAM *param, COND *conf_func, Field *field, KEY_PART *key_part,
DBUG_RETURN(new SEL_ARG(field,min_str,max_str));
}
- if (!field->optimize_range(param->real_keynr[key_part->key]) &&
+ if (!field->optimize_range(param->real_keynr[key_part->key],
+ key_part->part) &&
type != Item_func::EQ_FUNC &&
type != Item_func::EQUAL_FUNC)
DBUG_RETURN(0); // Can't optimize this