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