Commit 54b81ac5 authored by Vicențiu Ciorbaru's avatar Vicențiu Ciorbaru

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.
parent ec59220f
...@@ -198,8 +198,11 @@ class Item_sum_rank: public Item_sum_int ...@@ -198,8 +198,11 @@ class Item_sum_rank: public Item_sum_int
void cleanup() void cleanup()
{ {
if (peer_tracker) if (peer_tracker)
{
peer_tracker->cleanup(); peer_tracker->cleanup();
delete peer_tracker; delete peer_tracker;
peer_tracker= NULL;
}
Item_sum_int::cleanup(); Item_sum_int::cleanup();
} }
Item *get_copy(THD *thd, MEM_ROOT *mem_root) Item *get_copy(THD *thd, MEM_ROOT *mem_root)
...@@ -268,6 +271,7 @@ class Item_sum_dense_rank: public Item_sum_int ...@@ -268,6 +271,7 @@ class Item_sum_dense_rank: public Item_sum_int
{ {
peer_tracker->cleanup(); peer_tracker->cleanup();
delete peer_tracker; delete peer_tracker;
peer_tracker= NULL;
} }
Item_sum_int::cleanup(); Item_sum_int::cleanup();
} }
...@@ -379,6 +383,7 @@ class Item_sum_percent_rank: public Item_sum_window_with_row_count ...@@ -379,6 +383,7 @@ class Item_sum_percent_rank: public Item_sum_window_with_row_count
{ {
peer_tracker->cleanup(); peer_tracker->cleanup();
delete peer_tracker; delete peer_tracker;
peer_tracker= NULL;
} }
Item_sum_num::cleanup(); Item_sum_num::cleanup();
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment