diff --git a/BUILD/FINISH.sh b/BUILD/FINISH.sh
index 72188b9c24bff8d3af20ac94e1228a6cff0ef930..094eb8275d66be7984f51fd6990153b01277efdc 100644
--- a/BUILD/FINISH.sh
+++ b/BUILD/FINISH.sh
@@ -49,7 +49,7 @@ strip sql/mysqld"
   fi
 fi
 
-if test -z "$nonono"
+if test -z "$just_print"
 then
   eval "set -x; $commands"
 else
diff --git a/BUILD/SETUP.sh b/BUILD/SETUP.sh
index 4d41f514704bf63d1d5d808b9f4b38d3095d51c9..aa6b412d73b322b29bbcf4ed8c3ff18e319b94a0 100644
--- a/BUILD/SETUP.sh
+++ b/BUILD/SETUP.sh
@@ -4,13 +4,13 @@ then
   exit 1
 fi
 
-nonono=
+just_print=
 just_configure=
 while test $# -gt 0
 do
   case "$1" in
   -c | --just-configure ) just_configure=1; shift ;;
-  -n | --just-print | --print ) nonono=1; shift ;;
+  -n | --just-print | --print ) just_print=1; shift ;;
   -h | --help ) cat <<EOF; exit 0 ;;
 Usage: $0 [-h|-n] [configure-options]
   -h, --help              Show this help message.
diff --git a/BUILD/compile-pentium-valgrind-max b/BUILD/compile-pentium-valgrind-max
index f752af86d1cba26b12c75256dcb6ddc930124155..f47061b95dde8769734a5506d00adbbfbd822b10 100755
--- a/BUILD/compile-pentium-valgrind-max
+++ b/BUILD/compile-pentium-valgrind-max
@@ -1,17 +1,5 @@
 #! /bin/sh
 
-echo "\
-********************************************************************************
-Note that by default BUILD/compile-pentium-valgrind-max calls 'configure' with
---enable-assembler. When Valgrind detects an error involving an assembly
-function (for example an uninitialized value used as an argument of an assembly
-function), Valgrind will not print the stacktrace and 'valgrind
---gdb-attach=yes' will not work either. If you need a stacktrace in those cases,
-you have to run BUILD/compile-pentium-valgrind-max with the --disable-assembler
-argument.
-********************************************************************************
-"
-
 path=`dirname $0`
 . "$path/SETUP.sh"
 
@@ -24,14 +12,16 @@ extra_configs="$extra_configs --with-berkeley-db --with-innodb --without-isam --
 
 . "$path/FINISH.sh"
 
-echo "\
-********************************************************************************
+if test -z "$just_print"
+then
+  echo "\
+******************************************************************************
 Note that by default BUILD/compile-pentium-valgrind-max calls 'configure' with
 --enable-assembler. When Valgrind detects an error involving an assembly
-function (for example an uninitialized value used as an argument of an assembly
-function), Valgrind will not print the stacktrace and 'valgrind
---gdb-attach=yes' will not work either. If you need a stacktrace in those cases,
-you have to run BUILD/compile-pentium-valgrind-max with the --disable-assembler
-argument.
-********************************************************************************
-"
+function (for example an uninitialized value used as an argument of an
+assembly function), Valgrind will not print the stacktrace and 'valgrind
+--gdb-attach=yes' will not work either. If you need a stacktrace in those
+cases, you have to run BUILD/compile-pentium-valgrind-max with the
+--disable-assembler argument.
+******************************************************************************"
+fi
diff --git a/mysql-test/r/innodb.result b/mysql-test/r/innodb.result
index 718e554b9046f454916e4d5c7489f96d24d3a3dd..af39dbf51f1bbbdd3112911b85cdea22d57d56bb 100644
--- a/mysql-test/r/innodb.result
+++ b/mysql-test/r/innodb.result
@@ -256,7 +256,6 @@ start transaction;
 insert into t1 values (4);
 flush tables with read lock;
 commit;
-ERROR HY000: Can't execute the query because you have a conflicting read lock
 unlock tables;
 commit;
 select * from t1;
diff --git a/mysql-test/r/rpl_max_relay_size.result b/mysql-test/r/rpl_max_relay_size.result
index a8b5527f687405ce0d3ef9a464167268dab95786..de66336b6d9a5ad2fca427b67c88fe7fa4888f44 100644
--- a/mysql-test/r/rpl_max_relay_size.result
+++ b/mysql-test/r/rpl_max_relay_size.result
@@ -49,12 +49,12 @@ flush logs;
 create table t1 (a int);
 show slave status;
 Master_Host	Master_User	Master_Port	Connect_retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_do_db	Replicate_ignore_db	Replicate_do_table	Replicate_ignore_table	Replicate_wild_do_table	Replicate_wild_ignore_table	Last_errno	Last_error	Skip_counter	Exec_master_log_pos	Relay_log_space	Until_condition	Until_Log_File	Until_Log_pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key
-127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50535	slave-relay-bin.000009	62	master-bin.000001	Yes	Yes							0		0	50535	62	None		0	No					
+127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50535	slave-relay-bin.000009	62	master-bin.000001	Yes	Yes							0		0	50535	#	None		0	No					
 flush logs;
 drop table t1;
 show slave status;
 Master_Host	Master_User	Master_Port	Connect_retry	Master_Log_File	Read_Master_Log_Pos	Relay_Log_File	Relay_Log_Pos	Relay_Master_Log_File	Slave_IO_Running	Slave_SQL_Running	Replicate_do_db	Replicate_ignore_db	Replicate_do_table	Replicate_ignore_table	Replicate_wild_do_table	Replicate_wild_ignore_table	Last_errno	Last_error	Skip_counter	Exec_master_log_pos	Relay_log_space	Until_condition	Until_Log_File	Until_Log_pos	Master_SSL_Allowed	Master_SSL_CA_File	Master_SSL_CA_Path	Master_SSL_Cert	Master_SSL_Cipher	Master_SSL_Key
-127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50583	slave-relay-bin.000010	52	master-bin.000001	Yes	Yes							0		0	50583	52	None		0	No					
+127.0.0.1	root	MASTER_PORT	1	master-bin.000001	50583	slave-relay-bin.000010	52	master-bin.000001	Yes	Yes							0		0	50583	#	None		0	No					
 flush logs;
 show master status;
 File	Position	Binlog_do_db	Binlog_ignore_db
diff --git a/mysql-test/t/innodb.test b/mysql-test/t/innodb.test
index 823ac25cf663deae0d0c78482bb06bcd768ce827..f298b1abf538a81241e4dd4607fc6098dfa8ee8e 100644
--- a/mysql-test/t/innodb.test
+++ b/mysql-test/t/innodb.test
@@ -141,7 +141,9 @@ create table t1 (n int not null primary key) type=innodb;
 start transaction;
 insert into t1 values (4);
 flush tables with read lock;
---error 1223;
+#
+# Current code can't handle a read lock in middle of transaction
+#--error 1223;
 commit;
 unlock tables;
 commit;
diff --git a/mysql-test/t/rpl_max_relay_size.test b/mysql-test/t/rpl_max_relay_size.test
index a2167b1ef365c97c661f42ee192ce400dba1d36e..eb38ffd3af335c0c7bd53f1eee1edbee0e2ec1c2 100644
--- a/mysql-test/t/rpl_max_relay_size.test
+++ b/mysql-test/t/rpl_max_relay_size.test
@@ -70,6 +70,7 @@ save_master_pos;
 connection slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
+--replace_column 22 #
 show slave status;
 # one more rotation, to be sure Relay_log_space is correctly updated
 flush logs;
@@ -79,6 +80,7 @@ save_master_pos;
 connection slave;
 sync_with_master;
 --replace_result $MASTER_MYPORT MASTER_PORT 3306 MASTER_PORT 3334 MASTER_PORT
+--replace_column 22 #
 show slave status;
 
 connection master;
diff --git a/sql/handler.cc b/sql/handler.cc
index e14e326792d4c79899789e600ef626615e759564..a8e9f9cf50a51fe0fb8801fb9a2953c3940d18a6 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -359,10 +359,7 @@ int ha_commit_trans(THD *thd, THD_TRANS* trans)
     if (trans == &thd->transaction.all && mysql_bin_log.is_open() &&
 	my_b_tell(&thd->transaction.trans_log))
     {
-      if (wait_if_global_read_lock(thd, 0))
-	DBUG_RETURN(1);
       mysql_bin_log.write(thd, &thd->transaction.trans_log, 1);
-      start_waiting_global_read_lock(thd);
       reinit_io_cache(&thd->transaction.trans_log,
 		      WRITE_CACHE, (my_off_t) 0, 0, 1);
       thd->transaction.trans_log.end_of_file= max_binlog_cache_size;
diff --git a/sql/opt_range.cc b/sql/opt_range.cc
index 5b1e2c980015280ed01988922cd9f352963a0c9d..24768537e3d2be228b704f4e470964d0bd9987d6 100644
--- a/sql/opt_range.cc
+++ b/sql/opt_range.cc
@@ -456,7 +456,7 @@ SEL_ARG *SEL_ARG::clone(SEL_ARG *new_parent,SEL_ARG **next_arg)
   SEL_ARG *tmp;
   if (type != KEY_RANGE)
   {
-    if(!(tmp=new SEL_ARG(type)))
+    if (!(tmp=new SEL_ARG(type)))
       return 0;			// out of memory
     tmp->prev= *next_arg;			// Link into next/prev chain
     (*next_arg)->next=tmp;
@@ -464,7 +464,7 @@ SEL_ARG *SEL_ARG::clone(SEL_ARG *new_parent,SEL_ARG **next_arg)
   }
   else
   {
-    if(!(tmp=new SEL_ARG(field,part, min_value,max_value,
+    if (!(tmp=new SEL_ARG(field,part, min_value,max_value,
 			 min_flag, max_flag, maybe_flag)))
       return 0;			// out of memory
     tmp->parent=new_parent;
@@ -920,7 +920,7 @@ get_mm_parts(PARAM *param, Field *field, Item_func::Functype type,
       }
       else {
 	// This key may be used later
-	if(!(sel_arg=new SEL_ARG(SEL_ARG::MAYBE_KEY))) 
+	if (!(sel_arg=new SEL_ARG(SEL_ARG::MAYBE_KEY))) 
 	  DBUG_RETURN(0);	// out of memory
       }
       sel_arg->part=(uchar) key_part->part;
@@ -1488,7 +1488,7 @@ key_or(SEL_ARG *key1,SEL_ARG *key2)
 	SEL_ARG *key2_next=key2->next;
 	if (key2_shared)
 	{
-	  if(!(key2=new SEL_ARG(*key2)))
+	  if (!(key2=new SEL_ARG(*key2)))
 	    return 0;		// out of memory
 	  key2->increment_use_count(key1->use_count+1);
 	  key2->next=key2_next;			// New copy of key2
@@ -2333,7 +2333,7 @@ get_quick_keys(PARAM *param,QUICK_SELECT *quick,KEY_PART *key,
   }
 
   /* Get range for retrieving rows in QUICK_SELECT::get_next */
-  if(!(range= new QUICK_RANGE(param->min_key,
+  if (!(range= new QUICK_RANGE(param->min_key,
 			      (uint) (tmp_min_key - param->min_key),
 			      param->max_key,
 			      (uint) (tmp_max_key - param->max_key),
diff --git a/sql/sql_db.cc b/sql/sql_db.cc
index d48022f5829fbf498d598902fb3c71cf81c2458a..cd0445b42e2af492a10cbfffd3fa6b9db4387f28 100644
--- a/sql/sql_db.cc
+++ b/sql/sql_db.cc
@@ -393,16 +393,16 @@ exit:
   start_waiting_global_read_lock(thd);
   /*
     If this database was the client's selected database, we silently change the
-    client's selected database to nothing (to have an empty SELECT DATABASE() in
-    the future). For this we free() thd->db and set it to 0. But we don't do
+    client's selected database to nothing (to have an empty SELECT DATABASE()
+    in the future). For this we free() thd->db and set it to 0. But we don't do
     free() for the slave thread. Indeed, doing a x_free() on it leads to nasty
     problems (i.e. long painful debugging) because in this thread, thd->db is
     the same as data_buf and db of the Query_log_event which is dropping the
-    database. So if you free() thd->db, you're freeing data_buf. You set thd->db
-    to 0 but not data_buf (thd->db and data_buf are two distinct pointers which
-    point to the same place). Then in ~Query_log_event(), we have
-    'if (data_buf) free(data_buf)'
-    data_buf is !=0 so this makes a DOUBLE free().
+    database. So if you free() thd->db, you're freeing data_buf. You set
+    thd->db to 0 but not data_buf (thd->db and data_buf are two distinct
+    pointers which point to the same place). Then in ~Query_log_event(), we
+    have 'if (data_buf) free(data_buf)' data_buf is !=0 so this makes a
+    DOUBLE free().
     Side effects of this double free() are, randomly (depends on the machine),
     when the slave is replicating a DROP DATABASE: 
     - garbage characters in the error message:
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index b36d4041950f8b46526cf5ff7b9e681f1ef72216..e30fd0acfae2dbf2bd4d108392e6ea4563fd32ed 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -4449,7 +4449,10 @@ bool reload_acl_and_cache(THD *thd, ulong options, TABLE_LIST *tables,
   {
     if ((options & REFRESH_READ_LOCK) && thd)
     {
-      // writing to the binlog could cause deadlocks, as we don't log UNLOCK TABLES
+      /*
+	Writing to the binlog could cause deadlocks, as we don't log
+	UNLOCK TABLES
+      */
       tmp_write_to_binlog= 0;
       if (lock_global_read_lock(thd))
 	return 1;
diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc
index 7bb51989cc38281670fef4cd010c595c4e323bf1..2345355922c13491007a87c68b49cb52b9e029fd 100644
--- a/sql/sql_repl.cc
+++ b/sql/sql_repl.cc
@@ -730,7 +730,7 @@ int start_slave(THD* thd , MASTER_INFO* mi,  bool net_report)
               to p, no digits were found, error. If it contains '\0' it
               means  conversion went ok.
             */ 
-            if(p_end==p || *p_end)
+            if (p_end==p || *p_end)
               slave_errno=ER_BAD_SLAVE_UNTIL_COND;
           }
           else
@@ -753,7 +753,7 @@ int start_slave(THD* thd , MASTER_INFO* mi,  bool net_report)
             ER(ER_UNTIL_COND_IGNORED));
         
       
-      if(!slave_errno)
+      if (!slave_errno)
         slave_errno = start_slave_threads(0 /*no mutex */,
 					1 /* wait for start */,
 					mi,
diff --git a/sql/sql_select.cc b/sql/sql_select.cc
index f142db044ce6d094e769a81027a99a00964e4916..4bab97d4a46ea9e6ceb8a8b0d52fda115dc63812 100644
--- a/sql/sql_select.cc
+++ b/sql/sql_select.cc
@@ -5333,7 +5333,7 @@ do_select(JOIN *join,List<Item> *fields,TABLE *table,Procedure *procedure)
       HAVING will be chcked after processing aggregate functions,
       But WHERE should checkd here (we alredy have read tables)
     */
-    if(!join->conds || join->conds->val_int())
+    if (!join->conds || join->conds->val_int())
     {
       if (!(error=(*end_select)(join,join_tab,0)) || error == -3)
 	error=(*end_select)(join,join_tab,1);