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

A fix for new conditions being defined and upper condition not updated

mysql-test/r/type_datetime.result:
  result for datetime fix
mysql-test/t/type_datetime.test:
  test for datetime fix
sql/sql_select.cc:
  Fix for a bug caused implicitely by MySQL having to comply with 
  ODBC standard on datetime comparisons.
  
  This failed to update used_tables() for OR condition, which is why
  query returned all rows on query as in .test above, while
  none of types contains NULL nor 0 datetime (last one from ODBC)
This commit is contained in:
unknown
2003-02-06 18:50:12 +02:00
parent 3a180c331a
commit 82281dff1a
3 changed files with 11 additions and 0 deletions

View File

@ -3009,6 +3009,7 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
== Item_func::COND_AND_FUNC;
List_iterator<Item> li(*((Item_cond*) cond)->argument_list());
Item::cond_result tmp_cond_value;
bool should_fix_fields=0;
*cond_value=Item::COND_UNDEF;
Item *item;
@ -3028,6 +3029,7 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
delete item; // This may be shared
#endif
VOID(li.replace(new_item));
should_fix_fields=1;
}
if (*cond_value == Item::COND_UNDEF)
*cond_value=tmp_cond_value;
@ -3054,6 +3056,9 @@ remove_eq_conds(COND *cond,Item::cond_result *cond_value)
break; /* purecov: deadcode */
}
}
if (should_fix_fields)
cond->fix_fields(current_thd,0);
if (!((Item_cond*) cond)->argument_list()->elements ||
*cond_value != Item::COND_OK)
return (COND*) 0;