1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-30 16:24:05 +03:00

join_outer.result, opt_range.cc, item_cmpfunc.cc:

Post merge changes
sql_yacc.yy:
  Post merge changes
sql_select.cc:
  Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
   for some expressions (post merge changes).
   The function add_key_fields() is modified. There cannot be NOT before
   BETWEEN/IN anymore. Rather Item_func_between/in objects can represent
   now [NOT]BETWEEN/IN expressions.


sql/item_cmpfunc.cc:
  Post merge changes
sql/opt_range.cc:
  Post merge changes
sql/sql_select.cc:
  Fixed bugs #12101, #12102: wrong calculation of not_null_tables()
   for some expressions (post merge changes).
   The function add_key_fields() is modified. There cannot be NOT before
   BETWEEN/IN anymore. Rather Item_func_between/in objects can represent
   now [NOT]BETWEEN/IN expressions.
sql/sql_yacc.yy:
  Post merge changes.
mysql-test/r/join_outer.result:
  Post merge changes
This commit is contained in:
unknown
2005-09-07 17:42:47 +04:00
parent 2e883d19cf
commit 0a61c3abda
5 changed files with 25 additions and 46 deletions

View File

@ -2862,19 +2862,6 @@ add_key_fields(KEY_FIELD **key_fields,uint *and_level,
if (cond->type() != Item::FUNC_ITEM)
return;
Item_func *cond_func= (Item_func*) cond;
if (cond_func->functype() == Item_func::NOT_FUNC)
{
Item *item= cond_func->arguments()[0];
/*
At this moment all NOT before simple comparison predicates
are eliminated. NOT IN and NOT BETWEEN are treated similar
IN and BETWEEN respectively.
*/
if (item->type() == Item::FUNC_ITEM &&
((Item_func *) item)->select_optimize() == Item_func::OPTIMIZE_KEY)
add_key_fields(key_fields,and_level,item,usable_tables);
return;
}
switch (cond_func->select_optimize()) {
case Item_func::OPTIMIZE_NONE:
break;