diff options
author | unknown <sergefp@mysql.com> | 2005-09-21 21:36:15 +0400 |
---|---|---|
committer | unknown <sergefp@mysql.com> | 2005-09-21 21:36:15 +0400 |
commit | 0004c431dbbceeb928b3b0c3b0c530282615da74 (patch) | |
tree | dd26e7b03cdfca2dfb2b321b628e267396d5f5e2 /sql/opt_range.cc | |
parent | da0f9ecef8afe617f048789ee95c841570540a5f (diff) | |
download | mariadb-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.cc | 8 |
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; } |