Bug #28713 Binary log and concurrent inserts
Submitted: 28 May 2007 4:53 Modified: 30 Aug 2007 17:12
Reporter: Yoshiaki Tajika (Basic Quality Contributor) Email Updates:
Status: Closed Impact on me:
Category:MySQL Server: Documentation Severity:S3 (Non-critical)
Version:5.0, 5.1 OS:Any
Assigned to: MC Brown CPU Architecture:Any
Tags: qc

[28 May 2007 4:53] Yoshiaki Tajika
According to the reference manual of 5.1 (or 5.0),

> 5.11.4. The Binary Log
> (snip)
> If you are using the binary log, concurrent inserts are 
> converted to normal inserts for CREATE ... SELECT or 
> INSERT ... SELECT statement. This is done to ensure that 
> you can re-create an exact copy of your tables by applying 
> the log during a backup operation. 

But I couldn't see such a conversion in the binlog.

How to repeat:
1. Set binlog ON.
2. Do the statements below.
create table t1(c1 int);
insert t1 values(1),(2),(3);
create table t2 select * from t1;
3. See into binlog, using mysqlbilog.

I could see just "create table t2 select * from t1" in the binlog,
though I expected it was converted into "create table t2(c1 int);
insert into t2 values(1),(2),(3)".

Suggested fix:
I think this is probably my misunderstanding of the manual.
But, if so, would you please improve the description above,
so that I know the true meaning of this paragraph
and nobody misundestands as I did?
[28 May 2007 5:00] Valeriy Kravchuk
Thank you for a reasonable documentation request.
[30 Aug 2007 17:12] MC Brown
The documentation has been updated. The scenario described only occurs during row-based logging in 5.1. In 5.1 and SBR and 5.0 the original statement is written to the binary log.