summaryrefslogtreecommitdiff
path: root/sql/opt_range.cc
diff options
context:
space:
mode:
authorunknown <sergefp@mysql.com>2005-09-21 21:36:15 +0400
committerunknown <sergefp@mysql.com>2005-09-21 21:36:15 +0400
commit0004c431dbbceeb928b3b0c3b0c530282615da74 (patch)
treedd26e7b03cdfca2dfb2b321b628e267396d5f5e2 /sql/opt_range.cc
parentda0f9ecef8afe617f048789ee95c841570540a5f (diff)
downloadmariadb-git-0004c431dbbceeb928b3b0c3b0c530282615da74.tar.gz
Fix for BUG#13317: Make range optimizer able to produce ranges for "view.field IN (c1,c2)"
and "view.field BETWEEN c1 AND c2" mysql-test/r/range.result: Testcase for BUG#13317 mysql-test/t/range.test: Testcase for BUG#13317
Diffstat (limited to 'sql/opt_range.cc')
-rw-r--r--sql/opt_range.cc8
1 files changed, 4 insertions, 4 deletions
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index edb4289e76f..caefdf92633 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -3533,17 +3533,17 @@ static SEL_TREE *get_mm_tree(PARAM *param,COND *cond)
switch (cond_func->functype()) {
case Item_func::BETWEEN:
- if (cond_func->arguments()[0]->type() != Item::FIELD_ITEM)
+ if (cond_func->arguments()[0]->real_item()->type() != Item::FIELD_ITEM)
DBUG_RETURN(0);
- field_item= (Item_field*) (cond_func->arguments()[0]);
+ field_item= (Item_field*) (cond_func->arguments()[0]->real_item());
value= NULL;
break;
case Item_func::IN_FUNC:
{
Item_func_in *func=(Item_func_in*) cond_func;
- if (func->key_item()->type() != Item::FIELD_ITEM)
+ if (func->key_item()->real_item()->type() != Item::FIELD_ITEM)
DBUG_RETURN(0);
- field_item= (Item_field*) (func->key_item());
+ field_item= (Item_field*) (func->key_item()->real_item());
value= NULL;
break;
}