diff options
Diffstat (limited to 'sql/item_cmpfunc.cc')
-rw-r--r-- | sql/item_cmpfunc.cc | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sql/item_cmpfunc.cc b/sql/item_cmpfunc.cc index dc457ed6484..44dc8ff9e09 100644 --- a/sql/item_cmpfunc.cc +++ b/sql/item_cmpfunc.cc @@ -1,5 +1,5 @@ /* Copyright (c) 2000, 2013, Oracle and/or its affiliates. - Copyright (c) 2009, 2015, MariaDB + Copyright (c) 2009, 2016, MariaDB This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -2579,7 +2579,7 @@ Item_func_nullif::fix_length_and_dec() args[0] and args[2] should still point to the same original l_expr. */ DBUG_ASSERT(args[0] == args[2] || thd->stmt_arena->is_stmt_execute()); - if (args[0]->type() == SUM_FUNC_ITEM) + if (args[0]->type() == SUM_FUNC_ITEM && !thd->lex->context_analysis_only) { /* NULLIF(l_expr, r_expr) @@ -2703,7 +2703,8 @@ Item_func_nullif::fix_length_and_dec() m_cache->setup(current_thd, args[0]); m_cache->store(args[0]); m_cache->set_used_tables(args[0]->used_tables()); - args[0]= args[2]= m_cache; + thd->change_item_tree(&args[0], m_cache); + thd->change_item_tree(&args[2], m_cache); } set_handler_by_field_type(args[2]->field_type()); collation.set(args[2]->collation); @@ -2751,7 +2752,7 @@ void Item_func_nullif::print(String *str, enum_query_type query_type) Note, the EXPLAIN EXTENDED and EXPLAIN FORMAT=JSON routines do pass QT_ITEM_FUNC_NULLIF_TO_CASE to print(). */ - DBUG_ASSERT(args[0] == args[2]); + DBUG_ASSERT(args[0] == args[2] || current_thd->lex->context_analysis_only); str->append(func_name()); str->append('('); args[2]->print(str, query_type); |