diff --git a/mysql-test/r/having.result b/mysql-test/r/having.result
index 981813c5c0dd21dde88b8d3f1529a01d5f15d401..e54f6d7f2a4467a295eaf57e53fa02399e3e591c 100644
--- a/mysql-test/r/having.result
+++ b/mysql-test/r/having.result
@@ -141,23 +141,6 @@ SUM(a)
 6
 4
 DROP TABLE t1;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 CREATE TABLE t1 (a int);
 INSERT INTO t1 VALUES (1), (2), (1), (3), (2), (1);
 SELECT a FROM t1 GROUP BY a HAVING a > 1;
diff --git a/sql/sql_prepare.cc b/sql/sql_prepare.cc
index bd5dd4234fe1b5b694a3d30764d7905338ade73f..efe73dbe2750045b499272494cc44de3dfc98d67 100644
--- a/sql/sql_prepare.cc
+++ b/sql/sql_prepare.cc
@@ -1862,96 +1862,6 @@ void mysql_stmt_prepare(THD *thd, const char *packet, uint packet_length)
   {
     /* Statement map deletes statement on erase */
     thd->stmt_map.erase(stmt);
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
   }
   else
     mysql_log.write(thd, COM_STMT_PREPARE, "[%lu] %s", stmt->id, packet);
@@ -2045,14 +1955,11 @@ static const char *get_dynamic_sql_string(LEX *lex, uint *query_len)
   }
   else
   {
-    stmt->setup_set_params();
-    SELECT_LEX *sl= stmt->lex->all_selects_list;
-    for (; sl; sl= sl->next_select_in_list())
-    {
-      /*
-        during query optimisation.
-      */
-      sl->prep_where= sl->where;
+    query_str= lex->prepared_stmt_code.str;
+    *query_len= lex->prepared_stmt_code.length;
+  }
+end:
+  return query_str;
 }
 
 
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 6d3c32b123920e9a0ae1d580214aabeb085ddf73..9160c0235760127d540be6e3e375d72edec12111 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -628,7 +628,7 @@ JOIN::optimize()
 
   {
     Item::cond_result having_value;
-    having= optimize_cond(thd, having, &having_value);
+    having= optimize_cond(this, having, join_list, &having_value);
     if (thd->net.report_error)
     {
       error= 1;
@@ -641,7 +641,7 @@ JOIN::optimize()
     {						/* Impossible cond */
       DBUG_PRINT("info", (having_value == Item::COND_FALSE ? 
                             "Impossible HAVING" : "Impossible WHERE"));
-      zero_result_cause=  ?
+      zero_result_cause=  having_value == Item::COND_FALSE ?
                            "Impossible HAVING" : "Impossible WHERE";
       error= 0;
       DBUG_RETURN(0);