diff --git a/mysql-test/r/sp.result b/mysql-test/r/sp.result
index 158dd9bb949c550e8968db9666f83053f476d76c..fd63204e32fbb2830e75e8bdd2d977afbcbe983e 100644
--- a/mysql-test/r/sp.result
+++ b/mysql-test/r/sp.result
@@ -2657,16 +2657,22 @@ end|
 call avg ()|
 drop procedure avg|
 drop procedure if exists bug6129|
-set @@sql_mode = 'traditional'|
-create procedure bug6129(mode text)
-select @@sql_mode = mode|
-call bug6129(@@sql_mode)|
-@@sql_mode = mode
-1
-set @@sql_mode = ''|
-call bug6129(@@sql_mode)|
-@@sql_mode = mode
-0
+set @old_mode= @@sql_mode;
+set @@sql_mode= "";
+create procedure bug6129()
+select @@sql_mode|
+call bug6129()|
+@@sql_mode
+
+set @@sql_mode= "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO"|
+call bug6129()|
+@@sql_mode
+NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO
+set @@sql_mode= "NO_ZERO_IN_DATE"|
+call bug6129()|
+@@sql_mode
+NO_ZERO_IN_DATE
+set @@sql_mode=@old_mode;
 drop procedure bug6129|
 drop procedure if exists bug9856|
 create procedure bug9856()
diff --git a/mysql-test/r/view.result b/mysql-test/r/view.result
index e7bc3a1bb1f5e8cfa76354fc374d2e906cc98714..a132279c6bc0340f5bfe02566d0afd3e2a8171da 100644
--- a/mysql-test/r/view.result
+++ b/mysql-test/r/view.result
@@ -1836,7 +1836,7 @@ create table t2 (b timestamp default now());
 create view v1 as select a,b,t1.a < now() from t1,t2 where t1.a < now();
 SHOW CREATE VIEW v1;
 View	Create View
-v1	CREATE ALGORITHM=UNDEFINED VIEW `test`.`v1` AS select sql_no_cache `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b`,(`test`.`t1`.`a` < now()) AS `t1.a < now()` from `test`.`t1` join `test`.`t2` where (`test`.`t1`.`a` < now())
+v1	CREATE ALGORITHM=UNDEFINED VIEW `test`.`v1` AS select sql_no_cache `test`.`t1`.`a` AS `a`,`test`.`t2`.`b` AS `b`,(`test`.`t1`.`a` < now()) AS `t1.a < now()` from (`test`.`t1` join `test`.`t2`) where (`test`.`t1`.`a` < now())
 drop view v1;
 drop table t1, t2;
 CREATE TABLE t1 ( a varchar(50) );
diff --git a/mysql-test/t/sp.test b/mysql-test/t/sp.test
index 209386fcba4c7408614aa7b19b0c75b8b693b384..d9e6163cbc79208367c22f751351f0f265a87a8d 100644
--- a/mysql-test/t/sp.test
+++ b/mysql-test/t/sp.test
@@ -3377,15 +3377,16 @@ drop procedure avg|
 --disable_warnings
 drop procedure if exists bug6129|
 --enable_warnings
-set @@sql_mode = 'traditional'|
-create procedure bug6129(mode text)
-  select @@sql_mode = mode|
-
-# 1
-call bug6129(@@sql_mode)|
-set @@sql_mode = ''|
-# 0
-call bug6129(@@sql_mode)|
+set @old_mode= @@sql_mode;
+set @@sql_mode= "";
+create procedure bug6129()
+  select @@sql_mode|
+call bug6129()|
+set @@sql_mode= "NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO"|
+call bug6129()|
+set @@sql_mode= "NO_ZERO_IN_DATE"|
+call bug6129()|
+set @@sql_mode=@old_mode;
 
 drop procedure bug6129|
 
diff --git a/sql/item_func.cc b/sql/item_func.cc
index faf73536eb61f33fb4694258504f7e7683c82c06..c3bdb11418f62efbac929b4841ba890e5aa67ccd 100644
--- a/sql/item_func.cc
+++ b/sql/item_func.cc
@@ -4229,7 +4229,7 @@ Item_func_get_system_var(sys_var *var_arg, enum_var_type var_type_arg,
 
 
 bool
-Item_func_get_system_var::fix_fields(THD *thd, TABLE_LIST *tables, Item **ref)
+Item_func_get_system_var::fix_fields(THD *thd, Item **ref)
 {
   Item *item= var->item(thd, var_type, &component);
   DBUG_ENTER("Item_func_get_system_var::fix_fields");
diff --git a/sql/item_func.h b/sql/item_func.h
index b8638161787e7fa8339297e29df8523d54686c3b..43a85e6aa0bf9f566c349833424647fdb869f76c 100644
--- a/sql/item_func.h
+++ b/sql/item_func.h
@@ -1210,15 +1210,17 @@ class Item_func_get_system_var :public Item_func
   Item_func_get_system_var(sys_var *var_arg, enum_var_type var_type_arg,
                            LEX_STRING *component_arg, const char *name_arg,
                            size_t name_len_arg);
-  bool fix_fields(THD *thd, TABLE_LIST *tables, Item **ref);
+  bool fix_fields(THD *thd, Item **ref);
   /*
     Stubs for pure virtual methods. Should never be called: this
     item is always substituted with a constant in fix_fields().
   */
-  double val()              { DBUG_ASSERT(0); return 0.0; }
+  double val_real()         { DBUG_ASSERT(0); return 0.0; }
   longlong val_int()        { DBUG_ASSERT(0); return 0; }
   String* val_str(String*)  { DBUG_ASSERT(0); return 0; }
   void fix_length_and_dec() { DBUG_ASSERT(0); }
+  /* TODO: fix to support views */
+  const char *func_name() const { return "get_system_var"; }
 };
 
 
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index b7d5098e2305d57b2712641f9a0062bf294af90e..49eb50be580ca1daf016c77d01b6cf43562bd599 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -477,7 +477,7 @@ typedef my_bool (*qc_engine_callback)(THD *thd, char *table_key,
 class user_var_entry;
 enum enum_var_type
 {
-  OPT_DEFAULT, OPT_SESSION, OPT_GLOBAL
+  OPT_DEFAULT= 0, OPT_SESSION, OPT_GLOBAL
 };
 class sys_var;
 #include "item.h"
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index a9a81b47cda3527aa7ce7567ad0cd2640460401f..78d9af387da7583d924c7f94744d33f7e0ffc38e 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -685,13 +685,7 @@ static void close_connections(void)
   {
     DBUG_PRINT("quit",("Informing thread %ld that it's time to die",
 		       tmp->thread_id));
-    /* 
-     Re: bug 7403 - close_connection will be called mulitple times
-     bug a wholesale clean up of our network code is a very large 
-     project.  This will wake up the socket on Windows and prevent the
-     printing of the error message that we are force closing a connection.
-    */
-    close_connection(tmp, 0, 1);  
+    tmp->killed= THD::KILL_CONNECTION;
     if (tmp->mysys_var)
     {
       tmp->mysys_var->abort=1;