summaryrefslogtreecommitdiff
path: root/sql/opt_range.cc
diff options
context:
space:
mode:
authorunknown <igor@rurik.mysql.com>2003-08-26 00:13:22 -0700
committerunknown <igor@rurik.mysql.com>2003-08-26 00:13:22 -0700
commitf6758b47fb75fb7f39e4883d53523bfda589adfd (patch)
tree8f6c56f59666be1b54701f57e779e904575b1a4a /sql/opt_range.cc
parent3b799e8fd8eb13c7ad6e2bb01a922e37d9101ea7 (diff)
parentb9a90dffb6c429ab405d036734b3b04b98df69d6 (diff)
downloadmariadb-git-f6758b47fb75fb7f39e4883d53523bfda589adfd.tar.gz
Manual merge
include/my_base.h: Auto merged include/my_global.h: Auto merged include/my_sys.h: Auto merged myisam/mi_check.c: Auto merged myisam/mi_extra.c: Auto merged myisam/mi_locking.c: Auto merged myisam/myisamchk.c: Auto merged myisam/myisamdef.h: Auto merged mysql-test/r/key_cache.result: Auto merged mysql-test/t/key_cache.test: Auto merged sql/ha_myisam.cc: Auto merged sql/handler.cc: Auto merged sql/handler.h: Auto merged sql/item_cmpfunc.h: Auto merged sql/mysql_priv.h: Auto merged sql/opt_range.cc: Auto merged sql/set_var.h: Auto merged sql/sql_base.cc: Auto merged sql/sql_parse.cc: Auto merged sql/sql_table.cc: Auto merged sql/table.h: Auto merged
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r--sql/opt_range.cc15
1 files changed, 15 insertions, 0 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 23fb36c0c91..8720603f3f9 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -880,10 +880,17 @@ static SEL_TREE *
get_mm_parts(PARAM *param,Field *field, Item_func::Functype type,Item *value,
Item_result cmp_type)
{
+ bool ne_func= FALSE;
DBUG_ENTER("get_mm_parts");
if (field->table != param->table)
DBUG_RETURN(0);
+ if (type == Item_func::NE_FUNC)
+ {
+ ne_func= TRUE;
+ type= Item_func::LT_FUNC;
+ }
+
KEY_PART *key_part = param->key_parts,*end=param->key_parts_end;
SEL_TREE *tree=0;
if (value &&
@@ -913,6 +920,14 @@ get_mm_parts(PARAM *param,Field *field, Item_func::Functype type,Item *value,
tree->keys[key_part->key]=sel_add(tree->keys[key_part->key],sel_arg);
}
}
+
+ if (ne_func)
+ {
+ SEL_TREE *tree2= get_mm_parts(param, field, Item_func::GT_FUNC,
+ value, cmp_type);
+ if (tree2)
+ tree= tree=tree_or(param,tree,tree2);
+ }
DBUG_RETURN(tree);
}