From 79ad6ff22af83b305d2dfeb45b80667747a94665 Mon Sep 17 00:00:00 2001 From: "tomas@whalegate.ndb.mysql.com" <> Date: Tue, 19 Jun 2007 12:14:02 +0200 Subject: [PATCH] Bug #29185 Large IN list crashes mysqld with cluster and condition pushdown --- sql/ha_ndbcluster_cond.h | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/sql/ha_ndbcluster_cond.h b/sql/ha_ndbcluster_cond.h index d4e68de663..adc12e8cd7 100644 --- a/sql/ha_ndbcluster_cond.h +++ b/sql/ha_ndbcluster_cond.h @@ -259,8 +259,24 @@ class Ndb_cond : public Sql_alloc ~Ndb_cond() { if (ndb_item) delete ndb_item; - ndb_item= NULL; - if (next) delete next; + ndb_item= NULL; + /* + First item in the linked list deletes all in a loop + Note - doing it recursively causes stack issues for + big IN clauses + */ + if (prev != NULL) + { + next= prev= NULL; + return; + } + Ndb_cond *n= next; + while (n) + { + Ndb_cond *tmp= n; + n= n->next; + delete tmp; + } next= prev= NULL; }; Ndb_item *ndb_item; -- 2.30.9