Indentation cleanups

Remove wait_if_global_read_lock on commit as this can cause deadlocks


BUILD/FINISH.sh:
  Cleanup
BUILD/SETUP.sh:
  Cleanup
BUILD/compile-pentium-valgrind-max:
  Don't write message twice
mysql-test/r/innodb.result:
  Removed failure as this can cause deadlocks
mysql-test/r/rpl_max_relay_size.result:
  Make test repeatable
mysql-test/t/innodb.test:
  Removed failure as this can cause deadlocks
mysql-test/t/rpl_max_relay_size.test:
  Removed failure as this can cause deadlocks
sql/handler.cc:
  Remove wait_if_global_read_lock as this can cause deadlocks
sql/opt_range.cc:
  Indentation cleanup
sql/sql_db.cc:
  Comment cleanup
sql/sql_parse.cc:
  Comment cleanup
sql/sql_repl.cc:
  Indentation cleanup
sql/sql_select.cc:
  Indentation cleanup
This commit is contained in:
unknown 2003-10-08 21:50:05 +03:00
parent 44e3cbcfeb
commit d1d07c99d7
13 changed files with 40 additions and 47 deletions

View File

@ -49,7 +49,7 @@ strip sql/mysqld"
fi
fi
if test -z "$nonono"
if test -z "$just_print"
then
eval "set -x; $commands"
else

View File

@ -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.

View File

@ -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"
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

View File

@ -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;

View File

@ -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

View File

@ -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;

View File

@ -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;

View File

@ -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;

View File

@ -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:

View File

@ -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;