diff --git a/mysql-test/include/rpl_stmt_seq.inc b/mysql-test/include/rpl_stmt_seq.inc
index 6f207e661565e389f37bcdd62431a3acb0b67b68..d56ee02e33c744a294fbecfd7b5b1b8f027c05c7 100644
--- a/mysql-test/include/rpl_stmt_seq.inc
+++ b/mysql-test/include/rpl_stmt_seq.inc
@@ -4,6 +4,12 @@
 # the $variables is extreme sensitive. 
 #
 
+###############################################################
+# Debug options : To debug this test script
+###############################################################
+let $showbinlog= 0;
+let $manipulate= 1;
+
 ######## The typical test sequence
 # 1. INSERT without commit
 #    check table content of master and slave
@@ -52,9 +58,12 @@ let $MAX= `SELECT MAX(f1) FROM t1` ;
 eval INSERT INTO t1 SET f1= $MAX + 1;
 # results before DDL(to be tested)
 SELECT MAX(f1) FROM t1;
+if ($show_binlog)
+{
 --replace_result $VERSION VERSION
 --replace_column 2 # 5 #
 eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
+}
 sync_slave_with_master;
 
 connection slave;
@@ -63,9 +72,12 @@ SELECT '-------- switch to slave --------' as "";
 --enable_query_log
 # results before DDL(to be tested)
 SELECT MAX(f1) FROM t1;
+if ($show_binlog)
+{
 --replace_result $VERSION VERSION
 --replace_column 2 # 5 #
 eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
+}
 
 ###############################################################
 # command to be tested
@@ -79,9 +91,12 @@ eval $my_stmt;
 let $my_stmt= ERROR: YOU FORGOT TO FILL IN THE STATEMENT;
 # results after DDL(to be tested)
 SELECT MAX(f1) FROM t1;
+if ($show_binlog)
+{
 --replace_result $VERSION VERSION
 --replace_column 2 # 5 #
 eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
+}
 sync_slave_with_master;
 
 connection slave;
@@ -90,9 +105,12 @@ SELECT '-------- switch to slave --------' as "";
 --enable_query_log
 # results after DDL(to be tested)
 SELECT MAX(f1) FROM t1;
+if ($show_binlog)
+{
 --replace_result $VERSION VERSION
 --replace_column 2 # 5 #
 eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
+}
 
 ###############################################################
 # ROLLBACK
@@ -114,9 +132,12 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: MASTER: The INSERT is ',
                 ' (Failed)')) AS "" 
                FROM mysqltest1.t1;
 --enable_query_log
+if ($show_binlog)
+{
 --replace_result $VERSION VERSION
 --replace_column 2 # 5 #
 eval SHOW BINLOG EVENTS IN 'master-bin.$_log_num_s';
+}
 sync_slave_with_master;
 
 connection slave;
@@ -133,16 +154,17 @@ eval SELECT CONCAT(CONCAT('TEST-INFO: SLAVE:  The INSERT is ',
                 ' (Failed)')) AS "" 
                FROM mysqltest1.t1;
 --enable_query_log
+if ($show_binlog)
+{
 --replace_result $VERSION VERSION
 --replace_column 2 # 5 #
 eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
+}
 
 ###############################################################
 # Manipulate binlog
 ###############################################################
-#let $manipulate= 0;
-let $manipulate= 1;
-while ($manipulate)
+if ($manipulate)
 {
 #### Manipulate the binary logs,
 # so that the output of SHOW BINLOG EVENTS IN <current log>
@@ -171,7 +193,6 @@ flush logs;
 # sleep 1;
 # eval SHOW BINLOG EVENTS IN 'slave-bin.$_log_num_s';
 inc $_log_num_n;
-let $manipulate= 0;
 }
 
 connection master;
diff --git a/mysql-test/r/bdb_cache.result b/mysql-test/r/bdb_cache.result
index 218fd489c6a373f4ccda91ffea73aac92e97fae1..6506ce0412a650af0c5b9b0ca4616b7a8f4d150f 100644
--- a/mysql-test/r/bdb_cache.result
+++ b/mysql-test/r/bdb_cache.result
@@ -12,10 +12,9 @@ show status like "Qcache_queries_in_cache";
 Variable_name	Value
 Qcache_queries_in_cache	0
 drop table t1;
-commit;
 set autocommit=1;
-begin;
 create table t1 (a int not null) engine=bdb;
+begin;
 insert into t1 values (1),(2),(3);
 select * from t1;
 a
@@ -26,7 +25,6 @@ show status like "Qcache_queries_in_cache";
 Variable_name	Value
 Qcache_queries_in_cache	0
 drop table t1;
-commit;
 create table t1 (a int not null) engine=bdb;
 create table t2 (a int not null) engine=bdb;
 create table t3 (a int not null) engine=bdb;
diff --git a/mysql-test/r/group_by.result b/mysql-test/r/group_by.result
index 7b97f998fe5e6b4dc2dae0e5f80e9d8b085dc3aa..ae986dc2a75525822f0be45d1f9c9fa9cf0f526a 100644
--- a/mysql-test/r/group_by.result
+++ b/mysql-test/r/group_by.result
@@ -721,7 +721,8 @@ SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1
 WHERE hostname LIKE '%aol%'
     GROUP BY hostname;
 hostname	no
-cache-dtc-af05.proxy.aol.com	1
+cache-dtc-af05.proxy.aol.com
+DROP TABLE t1;	1
 drop table if exists t1, t2;
 Warnings:
 Note	1051	Unknown table 't2'
@@ -746,3 +747,13 @@ aaa
 show warnings;
 Level	Code	Message
 drop table t1, t2;
+DROP TABLE t1;
+CREATE TABLE t1 (a  int, b int);
+INSERT INTO t1 VALUES (1,2), (1,3);
+SELECT a, b FROM t1 GROUP BY 'const';
+a	b
+1	2
+SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
+a	b
+1	2
+DROP TABLE t1;
diff --git a/mysql-test/t/bdb_cache.test b/mysql-test/t/bdb_cache.test
index 0082c83faffd05273505859713043bfa7344dc03..401456711ac15f706e40f0598720218dd2ebc263 100644
--- a/mysql-test/t/bdb_cache.test
+++ b/mysql-test/t/bdb_cache.test
@@ -14,15 +14,13 @@ insert into t1 values (1),(2),(3);
 select * from t1;
 show status like "Qcache_queries_in_cache";
 drop table t1;
-commit;
 set autocommit=1;
-begin;
 create table t1 (a int not null) engine=bdb;
+begin;
 insert into t1 values (1),(2),(3);
 select * from t1;
 show status like "Qcache_queries_in_cache";
 drop table t1;
-commit;
 create table t1 (a int not null) engine=bdb;
 create table t2 (a int not null) engine=bdb;
 create table t3 (a int not null) engine=bdb;
diff --git a/mysql-test/t/group_by.test b/mysql-test/t/group_by.test
index b4762b847b8f95892a3f91ecb56040013c7ff44d..0e94f4678b7b4629388a4267f6a912ba7588c2d9 100644
--- a/mysql-test/t/group_by.test
+++ b/mysql-test/t/group_by.test
@@ -1,3 +1,4 @@
+
 # Initialise
 --disable_warnings
 drop table if exists t1,t2,t3;
@@ -524,7 +525,7 @@ select min(b) from t1;
 drop table t1;
 
 #
-# Test for bug #11088: GROUP BY a BLOB colimn with COUNT(DISTINCT column1) 
+# Test for bug #11088: GROUP BY a BLOB column with COUNT(DISTINCT column1) 
 #
 
 CREATE TABLE t1 (id int PRIMARY KEY, user_id int, hostname longtext);
@@ -539,6 +540,8 @@ SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1
   WHERE hostname LIKE '%aol%'
     GROUP BY hostname;
 
+DROP TABLE t1;
+
 #
 # Bug#11211: Ambiguous column reference in GROUP BY.
 #
@@ -563,3 +566,14 @@ group by t1.c1;
 show warnings;
 
 drop table t1, t2;
+
+#
+# Test for bug #8614: GROUP BY 'const with DISTINCT  
+#
+
+CREATE TABLE t1 (a  int, b int);
+INSERT INTO t1 VALUES (1,2), (1,3);
+SELECT a, b FROM t1 GROUP BY 'const';
+SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
+
+DROP TABLE t1;
diff --git a/ndb/test/ndbapi/testBlobs.cpp b/ndb/test/ndbapi/testBlobs.cpp
index 10d107f159c65d2a334a702439da3b067ce3776a..786e8eb1f2e3280d2b9a8e6ebb7a8611202d6016 100644
--- a/ndb/test/ndbapi/testBlobs.cpp
+++ b/ndb/test/ndbapi/testBlobs.cpp
@@ -365,7 +365,7 @@ calcBval(const Bcol& b, Bval& v, bool keepsize)
 {
   if (b.m_nullable && urandom(10) == 0) {
     v.m_len = 0;
-    delete v.m_val;
+    delete [] v.m_val;
     v.m_val = 0;
     v.m_buf = new char [1];
   } else {
@@ -375,7 +375,7 @@ calcBval(const Bcol& b, Bval& v, bool keepsize)
       v.m_len = urandom(b.m_inline);
     else
       v.m_len = urandom(b.m_inline + g_opt.m_parts * b.m_partsize + 1);
-    delete v.m_val;
+    delete [] v.m_val;
     v.m_val = new char [v.m_len + 1];
     for (unsigned i = 0; i < v.m_len; i++)
       v.m_val[i] = 'a' + urandom(25);
@@ -1445,6 +1445,7 @@ testperf()
   if (! testcase('p'))
     return 0;
   DBG("=== perf test ===");
+  g_bh1 = g_bh2 = 0;
   g_ndb = new Ndb(g_ncc, "TEST_DB");
   CHK(g_ndb->init() == 0);
   CHK(g_ndb->waitUntilReady() == 0);
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index 9eec763eb815872897356ed2733a95b7041715a0..80597aff3accd31e907e7949b172f60b15236862 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -812,9 +812,14 @@ JOIN::optimize()
       DBUG_RETURN(1);
   }
   simple_group= 0;
-  group_list= remove_const(this, group_list, conds,
-                           rollup.state == ROLLUP::STATE_NONE,
-                           &simple_group);
+  {
+    ORDER *old_group_list;
+    group_list= remove_const(this, (old_group_list= group_list), conds,
+                             rollup.state == ROLLUP::STATE_NONE,
+			     &simple_group);
+    if (old_group_list && !group_list)
+      select_distinct= 0;
+  }
   if (!group_list && group)
   {
     order=0;					// The output has only one row
@@ -11644,9 +11649,9 @@ store_record_in_cache(JOIN_CACHE *cache)
 	     end > str && end[-1] == ' ' ;
 	     end--) ;
 	length=(uint) (end-str);
-	memcpy(pos+sizeof(uint), str, length);
-	*((uint *) pos)= length;
-	pos+= length+sizeof(uint);
+	memcpy(pos+sizeof(length), str, length);
+	memcpy_fixed(pos, &length, sizeof(length));
+	pos+= length+sizeof(length);
       }
       else
       {
@@ -11709,9 +11714,10 @@ read_cached_record(JOIN_TAB *tab)
     {
       if (copy->strip)
       {
-	memcpy(copy->str, pos+sizeof(uint), length= *((uint *) pos));
+        memcpy_fixed(&length, pos, sizeof(length));
+	memcpy(copy->str, pos+sizeof(length), length);
 	memset(copy->str+length, ' ', copy->length-length);
-	pos+= sizeof(uint)+length;
+	pos+= sizeof(length)+length;
       }
       else
       {