diff options
author | Igor Babaev <igor@askmonty.org> | 2011-07-03 14:59:01 -0700 |
---|---|---|
committer | Igor Babaev <igor@askmonty.org> | 2011-07-03 14:59:01 -0700 |
commit | 3f7d51d0d87478910750fea4019acbc1e573e9ba (patch) | |
tree | 9f084bea4824b8f3a5e524df592b32a5740e2ec5 /sql/item.cc | |
parent | ec3c26a515ba5f52db28cfb06deba664fc61b7b5 (diff) | |
download | mariadb-git-3f7d51d0d87478910750fea4019acbc1e573e9ba.tar.gz |
Fixed LP bug #804686.
The assert conditions in the functions Item_direct_ref_to_ident::transform
and Item_direct_ref_to_ident::compile could be not valid after constant
propagation when fields and field references may be substituted for constants.
Not only these invalid asserts have been removed, but the functions containing
them have been removed as well because now Item_ref::transform and
Item_ref::compile can be used instead of them.
Diffstat (limited to 'sql/item.cc')
-rw-r--r-- | sql/item.cc | 34 |
1 files changed, 0 insertions, 34 deletions
diff --git a/sql/item.cc b/sql/item.cc index cad3e60e5fc..0f549b914eb 100644 --- a/sql/item.cc +++ b/sql/item.cc @@ -6883,40 +6883,6 @@ bool Item_direct_ref::get_date(MYSQL_TIME *ltime,uint fuzzydate) } -Item* Item_direct_ref_to_ident::transform(Item_transformer transformer, - uchar *argument) -{ - DBUG_ASSERT(!current_thd->is_stmt_prepare()); - - Item *new_item= ident->transform(transformer, argument); - if (!new_item) - return 0; - DBUG_ASSERT(new_item->type() == FIELD_ITEM || new_item->type() == REF_ITEM); - - if (ident != new_item) - current_thd->change_item_tree((Item**)&ident, new_item); - return (this->*transformer)(argument); -} - - -Item* Item_direct_ref_to_ident::compile(Item_analyzer analyzer, uchar **arg_p, - Item_transformer transformer, - uchar *arg_t) -{ - if (!(this->*analyzer)(arg_p)) - return 0; - - uchar *arg_v= *arg_p; - Item *new_item= ident->compile(analyzer, &arg_v, transformer, arg_t); - if (new_item && ident != new_item) - { - DBUG_ASSERT(new_item->type() == FIELD_ITEM || new_item->type() == REF_ITEM); - current_thd->change_item_tree((Item**)&ident, new_item); - } - return (this->*transformer)(arg_t); -} - - Item_cache_wrapper::~Item_cache_wrapper() { DBUG_ASSERT(expr_cache == 0); |