summaryrefslogtreecommitdiff
path: root/sql/item_windowfunc.h
diff options
context:
space:
mode:
authorVarun Gupta <varun.gupta@mariadb.com>2019-06-04 12:41:52 +0530
committerVarun Gupta <varun.gupta@mariadb.com>2019-06-04 23:23:10 +0530
commit7906bee67bf3b9f9124da12dd1492d7b766bd53e (patch)
treef049c30099aea1ad8fcf5679e1f7811d66c7b04e /sql/item_windowfunc.h
parentaa83b9cf4f23d7f61b1f6abf92e8280e8c1757cb (diff)
downloadmariadb-git-7906bee67bf3b9f9124da12dd1492d7b766bd53e.tar.gz
MDEV-18015: Assertion `global_status_var.global_memory_used == 0' failed when using UDF , window functions and views
Adding destructor for Group_bound_tracker to free Cached_item_str. The Cached_item for window functions are allocated on THD:mem_root but the Cached_item_str has value of type string which is allocated on the heap, so we need to call free() for it
Diffstat (limited to 'sql/item_windowfunc.h')
-rw-r--r--sql/item_windowfunc.h12
1 files changed, 4 insertions, 8 deletions
diff --git a/sql/item_windowfunc.h b/sql/item_windowfunc.h
index 21270733051..b9df1b7482b 100644
--- a/sql/item_windowfunc.h
+++ b/sql/item_windowfunc.h
@@ -28,11 +28,6 @@ public:
first_check= true;
}
- void cleanup()
- {
- group_fields.empty();
- }
-
/*
Check if the current row is in a different group than the previous row
this function was called for.
@@ -70,6 +65,10 @@ public:
}
return 0;
}
+ ~Group_bound_tracker()
+ {
+ group_fields.delete_elements();
+ }
private:
List<Cached_item> group_fields;
@@ -199,7 +198,6 @@ public:
{
if (peer_tracker)
{
- peer_tracker->cleanup();
delete peer_tracker;
peer_tracker= NULL;
}
@@ -269,7 +267,6 @@ class Item_sum_dense_rank: public Item_sum_int
{
if (peer_tracker)
{
- peer_tracker->cleanup();
delete peer_tracker;
peer_tracker= NULL;
}
@@ -537,7 +534,6 @@ class Item_sum_percent_rank: public Item_sum_window_with_row_count
{
if (peer_tracker)
{
- peer_tracker->cleanup();
delete peer_tracker;
peer_tracker= NULL;
}