diff options
-rw-r--r-- | mysql-test/r/rpl000001.result | 23 | ||||
-rw-r--r-- | mysys/mf_iocache2.c | 14 | ||||
-rw-r--r-- | sql/opt_sum.cc | 2 |
3 files changed, 25 insertions, 14 deletions
diff --git a/mysql-test/r/rpl000001.result b/mysql-test/r/rpl000001.result index ab242b349cd..3dae52c6d3f 100644 --- a/mysql-test/r/rpl000001.result +++ b/mysql-test/r/rpl000001.result @@ -7,7 +7,7 @@ use test; drop table if exists t1,t3; create table t1 (word char(20) not null); load data infile '../../std_data/words.dat' into table t1; -load data local infile '$MYSQL_TEST_DIR/std_data/words.dat' into table t1; +load data local infile '/home/sasha/bk/mysql-4.0/mysql-test/std_data/words.dat' into table t1; select * from t1; word Aarhus @@ -44,19 +44,18 @@ sum(length(word)) 141 drop table t1,t3; reset master; +slave stop; reset slave; drop table if exists t1,t2; create table t1(n int); -insert into t1 values(10); -insert into t1 values(9); -insert into t1 values(8); -insert into t1 values(7); -insert into t1 values(6); -insert into t1 values(5); -insert into t1 values(4); -insert into t1 values(3); -insert into t1 values(2); -insert into t1 values(1); +select get_lock("hold_slave",10); +get_lock("hold_slave",10) +1 +slave start; +select release_lock("hold_slave"); +release_lock("hold_slave") +1 +unlock tables; create table t2(id int); insert into t2 values(connection_id()); create temporary table t1_temp(n int); @@ -72,7 +71,7 @@ set sql_slave_skip_counter=1; slave start; select count(*) from t1; count(*) -10 +5000 drop table t1; create table t1 (n int); insert into t1 values(3456); diff --git a/mysys/mf_iocache2.c b/mysys/mf_iocache2.c index 00ebf1e6846..127bf20e8fe 100644 --- a/mysys/mf_iocache2.c +++ b/mysys/mf_iocache2.c @@ -41,8 +41,20 @@ my_off_t my_b_append_tell(IO_CACHE* info) /* save the value of my_tell in res so we can see it when studying coredump */ - DBUG_ASSERT(info->end_of_file - (info->append_read_pos-info->write_buffer) +#ifndef DBUG_OFF + /* make sure EOF is where we think it is. Note that we cannot just use + my_tell() because we have a reader thread that could have left the + file offset in a non-EOF location + */ + { + volatile my_off_t save_pos; + save_pos = my_tell(info->file,MYF(0)); + my_seek(info->file,(my_off_t)0,MY_SEEK_END,MYF(0)); + DBUG_ASSERT(info->end_of_file - (info->append_read_pos-info->write_buffer) == (res=my_tell(info->file,MYF(0)))); + my_seek(info->file,save_pos,MY_SEEK_SET,MYF(0)); + } +#endif res = info->end_of_file + (info->write_pos-info->append_read_pos); #ifdef THREAD pthread_mutex_unlock(&info->append_buffer_lock); diff --git a/sql/opt_sum.cc b/sql/opt_sum.cc index 31611798064..78878c40b37 100644 --- a/sql/opt_sum.cc +++ b/sql/opt_sum.cc @@ -299,7 +299,7 @@ static bool find_range_key(TABLE_REF *ref, Field* field, COND *cond) uint idx=0; /* Check if some key has field as first key part */ - if ((field->key_start & field->table->keys_in_use_for_query) &&A + if ((field->key_start & field->table->keys_in_use_for_query) && (! cond || ! (cond->used_tables() & table->map))) { for (key_map key=field->key_start ; !(key & 1) ; idx++) |