diff options
author | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2017-06-28 18:42:56 +0300 |
---|---|---|
committer | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2017-06-28 19:21:31 +0300 |
commit | 31ba0fa48d27715e82258b1e74401093e0ee17a2 (patch) | |
tree | f4f4f6faa740c127d69cab064ad27fe58cdeacc8 /sql/item_cmpfunc.h | |
parent | 23edc7c88f29d7bee01f39f1a58f4ada05f724c3 (diff) | |
download | mariadb-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.h | 5 |
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; } |