Commit 76ed6c26 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Fix of testcases after merge.

Small improvement to write caching.
parent 69f68026
...@@ -46340,6 +46340,10 @@ Fixed bug when joining with caching (unlikely to happen). ...@@ -46340,6 +46340,10 @@ Fixed bug when joining with caching (unlikely to happen).
Fixed race condition when using the binary log and @code{INSERT DELAYED} Fixed race condition when using the binary log and @code{INSERT DELAYED}
which could cause the binary log to have rows that was not yet written which could cause the binary log to have rows that was not yet written
to MyISAM tables. to MyISAM tables.
@item
Changed caching of binary log to make replication slightly faster.
@item
Fixed bug in replication on Mac OS X.
@end itemize @end itemize
@node News-3.23.45, News-3.23.44, News-3.23.46, News-3.23.x @node News-3.23.45, News-3.23.44, News-3.23.46, News-3.23.x
...@@ -10,7 +10,7 @@ insert into t1 values(1),(2),(3); ...@@ -10,7 +10,7 @@ insert into t1 values(1),(2),(3);
insert into t2 select * from t1; insert into t2 select * from t1;
create temporary table t1 (n int); create temporary table t1 (n int);
insert into t1 values (4),(5); insert into t1 values (4),(5);
insert into t2 select * from t1; insert into t2 select * from t1 as t10;
insert into t2 values(6); insert into t2 values(6);
select * from t2; select * from t2;
n n
......
...@@ -2,11 +2,11 @@ slave start; ...@@ -2,11 +2,11 @@ slave start;
Could not initialize master info structure, check permisions on master.info Could not initialize master info structure, check permisions on master.info
slave start; slave start;
Could not initialize master info structure, check permisions on master.info Could not initialize master info structure, check permisions on master.info
change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, change master to master_host='127.0.0.1',master_port=9306,
master_user='root'; master_user='root';
Could not initialize master info Could not initialize master info
reset slave; reset slave;
change master to master_host='127.0.0.1',master_port=$MASTER_MYPORT, change master to master_host='127.0.0.1',master_port=9306,
master_user='root'; master_user='root';
reset master; reset master;
slave start; slave start;
...@@ -15,14 +15,14 @@ create table t1 (s text); ...@@ -15,14 +15,14 @@ create table t1 (s text);
insert into t1 values('Could not break slave'),('Tried hard'); insert into t1 values('Could not break slave'),('Tried hard');
show slave status; show slave status;
Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Last_log_seq Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Last_log_seq
127.0.0.1 root $MASTER_MYPORT 60 master-bin.001 234 Yes 0 0 3 127.0.0.1 root 9306 60 master-bin.001 234 Yes 0 0 3
select * from t1; select * from t1;
s s
Could not break slave Could not break slave
Tried hard Tried hard
flush logs; flush logs;
drop table if exists t2; drop table if exists t2;
create table t2(m int not null primary key); create table t2(m int not null auto_increment primary key);
insert into t2 values (34),(67),(123); insert into t2 values (34),(67),(123);
flush logs; flush logs;
show master logs; show master logs;
...@@ -31,7 +31,8 @@ master-bin.001 ...@@ -31,7 +31,8 @@ master-bin.001
master-bin.002 master-bin.002
master-bin.003 master-bin.003
insert into t2 values(1234); insert into t2 values(1234);
insert into t2 values(1234); set insert_id=1234;
insert into t2 values(NULL);
slave stop; slave stop;
set sql_slave_skip_counter=1; set sql_slave_skip_counter=1;
slave start; slave start;
...@@ -42,7 +43,7 @@ master-bin.003 ...@@ -42,7 +43,7 @@ master-bin.003
insert into t2 values (65); insert into t2 values (65);
show slave status; show slave status;
Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Last_log_seq Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Last_log_seq
127.0.0.1 root $MASTER_MYPORT 60 master-bin.003 127 Yes 0 0 2 127.0.0.1 root 9306 60 master-bin.003 155 Yes 0 0 3
select * from t2; select * from t2;
m m
34 34
...@@ -60,12 +61,12 @@ master-bin.005 ...@@ -60,12 +61,12 @@ master-bin.005
master-bin.006 master-bin.006
show master status; show master status;
File Position Binlog_do_db Binlog_ignore_db File Position Binlog_do_db Binlog_ignore_db
master-bin.006 382 master-bin.006 445
slave stop; slave stop;
slave start; slave start;
show slave status; show slave status;
Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Last_log_seq Master_Host Master_User Master_Port Connect_retry Log_File Pos Slave_Running Replicate_do_db Replicate_ignore_db Last_errno Last_error Skip_counter Last_log_seq
127.0.0.1 root $MASTER_MYPORT 60 master-bin.006 382 Yes 0 0 6 127.0.0.1 root 9306 60 master-bin.006 445 Yes 0 0 7
lock tables t3 read; lock tables t3 read;
select count(*) from t3 where n >= 4; select count(*) from t3 where n >= 4;
count(*) count(*)
......
...@@ -60,16 +60,20 @@ void my_b_seek(IO_CACHE *info,my_off_t pos) ...@@ -60,16 +60,20 @@ void my_b_seek(IO_CACHE *info,my_off_t pos)
DBUG_VOID_RETURN; DBUG_VOID_RETURN;
} }
flush_io_cache(info); flush_io_cache(info);
/* Correct buffer end so that we write in increments of IO_SIZE */
info->write_end=(info->write_buffer+info->buffer_length-
(pos & (IO_SIZE-1)));
} }
info->pos_in_file=pos; info->pos_in_file=pos;
info->seek_not_done=1; info->seek_not_done=1;
} }
/* /*
** Fill buffer. Note that this assumes that you have already used Fill buffer. Note that this assumes that you have already used
** all characters in the CACHE, independent of the read_pos value! all characters in the CACHE, independent of the read_pos value!
** return: 0 on error or EOF (info->error = -1 on error) return: 0 on error or EOF (info->error = -1 on error)
** number of characters number of characters
*/ */
uint my_b_fill(IO_CACHE *info) uint my_b_fill(IO_CACHE *info)
...@@ -109,11 +113,12 @@ uint my_b_fill(IO_CACHE *info) ...@@ -109,11 +113,12 @@ uint my_b_fill(IO_CACHE *info)
return length; return length;
} }
/* /*
** Read a string ended by '\n' into a buffer of 'max_length' size. Read a string ended by '\n' into a buffer of 'max_length' size.
** Returns number of characters read, 0 on error. Returns number of characters read, 0 on error.
** last byte is set to '\0' last byte is set to '\0'
** If buffer is full then to[max_length-1] will be set to \0. If buffer is full then to[max_length-1] will be set to \0.
*/ */
uint my_b_gets(IO_CACHE *info, char *to, uint max_length) uint my_b_gets(IO_CACHE *info, char *to, uint max_length)
...@@ -151,6 +156,7 @@ uint my_b_gets(IO_CACHE *info, char *to, uint max_length) ...@@ -151,6 +156,7 @@ uint my_b_gets(IO_CACHE *info, char *to, uint max_length)
} }
} }
/* /*
Simple printf version. Supports '%s', '%d', '%u', "%ld" and "%lu" Simple printf version. Supports '%s', '%d', '%u', "%ld" and "%lu"
Used for logging in MySQL Used for logging in MySQL
......
...@@ -2322,7 +2322,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) ...@@ -2322,7 +2322,7 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond)
used_tables|=current_map; used_tables|=current_map;
if (tab->type == JT_REF && tab->quick && if (tab->type == JT_REF && tab->quick &&
tab->ref.key == tab->quick->index && (uint) tab->ref.key == tab->quick->index &&
tab->ref.key_length < tab->quick->max_used_key_length) tab->ref.key_length < tab->quick->max_used_key_length)
{ {
/* Range uses longer key; Use this instead of ref on key */ /* Range uses longer key; Use this instead of ref on key */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment