diff options
author | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2016-09-12 18:50:47 +0200 |
---|---|---|
committer | Vicențiu Ciorbaru <vicentiu@mariadb.org> | 2016-09-12 18:50:47 +0200 |
commit | 54b81ac57f89cf38f7166c0691eb78a093d94824 (patch) | |
tree | c23c8031eedce86c172e1b19ad382d5064c417e3 /sql/item_windowfunc.h | |
parent | ec59220f2c83945026e829b353e3bda84ad41a7a (diff) | |
download | mariadb-git-54b81ac57f89cf38f7166c0691eb78a093d94824.tar.gz |
Window functions fail with --ps-protocol
When running with --ps protocol, window functions cleanup method may
be called twice. Enforce proper cleanup by setting pointers to NULL
after deletion. This prevents double deletion on second cleanup.
Diffstat (limited to 'sql/item_windowfunc.h')
-rw-r--r-- | sql/item_windowfunc.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/sql/item_windowfunc.h b/sql/item_windowfunc.h index bb2256207ec..433b3f6c4fd 100644 --- a/sql/item_windowfunc.h +++ b/sql/item_windowfunc.h @@ -198,8 +198,11 @@ public: void cleanup() { if (peer_tracker) + { peer_tracker->cleanup(); - delete peer_tracker; + delete peer_tracker; + peer_tracker= NULL; + } Item_sum_int::cleanup(); } Item *get_copy(THD *thd, MEM_ROOT *mem_root) @@ -268,6 +271,7 @@ class Item_sum_dense_rank: public Item_sum_int { peer_tracker->cleanup(); delete peer_tracker; + peer_tracker= NULL; } Item_sum_int::cleanup(); } @@ -379,6 +383,7 @@ class Item_sum_percent_rank: public Item_sum_window_with_row_count { peer_tracker->cleanup(); delete peer_tracker; + peer_tracker= NULL; } Item_sum_num::cleanup(); } |