From 54b81ac57f89cf38f7166c0691eb78a093d94824 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vicen=C8=9Biu=20Ciorbaru?= Date: Mon, 12 Sep 2016 18:50:47 +0200 Subject: 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. --- sql/item_windowfunc.h | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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(); } -- cgit v1.2.1