summaryrefslogtreecommitdiff
path: root/sql/item_cmpfunc.h
diff options
context:
space:
mode:
authorVicențiu Ciorbaru <vicentiu@mariadb.org>2017-06-28 18:42:56 +0300
committerVicențiu Ciorbaru <vicentiu@mariadb.org>2017-06-28 19:21:31 +0300
commit31ba0fa48d27715e82258b1e74401093e0ee17a2 (patch)
treef4f4f6faa740c127d69cab064ad27fe58cdeacc8 /sql/item_cmpfunc.h
parent23edc7c88f29d7bee01f39f1a58f4ada05f724c3 (diff)
downloadmariadb-git-31ba0fa48d27715e82258b1e74401093e0ee17a2.tar.gz
MDEV-12851: Case with window functions query crashes server
The "is null" function performs one operation which no other Item_func does, which is to update used tables during fix_length_and_dec(). This however can not be performed before window functions have had a chance to resolve their order by and partition by definitions, which happens after the initial setup_fields call. Consequently, do not call Item_func_isnull update_used_tables during fix_length_and_dec(). There was another issue detected once the crash was resolved. Because window functions did not implement is_null() method, we would end up returning bad results for "is null" and "is not null" functions. Implemented is_null() method for Item_windowfunc.
Diffstat (limited to 'sql/item_cmpfunc.h')
-rw-r--r--sql/item_cmpfunc.h5
1 files changed, 0 insertions, 5 deletions
diff --git a/sql/item_cmpfunc.h b/sql/item_cmpfunc.h
index c81a1621f8a..2f98c68bb5f 100644
--- a/sql/item_cmpfunc.h
+++ b/sql/item_cmpfunc.h
@@ -1770,11 +1770,6 @@ public:
Item_func_isnull(THD *thd, Item *a): Item_func_null_predicate(thd, a) {}
longlong val_int();
enum Functype functype() const { return ISNULL_FUNC; }
- void fix_length_and_dec()
- {
- Item_func_null_predicate::fix_length_and_dec();
- update_used_tables();
- }
const char *func_name() const { return "isnull"; }
void print(String *str, enum_query_type query_type);
enum precedence precedence() const { return CMP_PRECEDENCE; }