Bug #31671 Falcon engine does not support ROW or STATEMENT binlog_format
Submitted: 17 Oct 2007 17:44 Modified: 3 Dec 2007 14:22
Reporter: Giuseppe Maxia Email Updates:
Status: Closed Impact on me:
None 
Category:MySQL Server: Falcon storage engine Severity:S1 (Critical)
Version:6.0.3 OS:Linux (ChangeSet@1.2630, 2007-10-10 07:46:05+02:00)
Assigned to: Kevin Lewis CPU Architecture:Any
Tags: binlog_format, falcon, replication, replication, row-based, statement-based

[17 Oct 2007 17:44] Giuseppe Maxia
Description:
Falcon engine does not support either ROW or STATEMENT based binlog format.

create table tmi (id int not null auto_increment primary key ) engine=myisam;
Query OK, 0 rows affected (0.01 sec)

create table tib (id int not null auto_increment primary key ) engine=innodb;
Query OK, 0 rows affected (0.01 sec)

create table tf (id int not null auto_increment primary key ) engine=falcon;
Query OK, 0 rows affected (0.01 sec)

set binlog_format=mixed;
Query OK, 0 rows affected (0.00 sec)

insert into tmi values ();
Query OK, 1 row affected (0.00 sec)

insert into tib values ();
Query OK, 1 row affected (0.00 sec)

insert into tf values ();
Query OK, 1 row affected (0.01 sec)

set binlog_format=row;
Query OK, 0 rows affected (0.00 sec)

insert into tmi values ();
Query OK, 1 row affected (0.00 sec)

insert into tib values ();
Query OK, 1 row affected (0.01 sec)

insert into tf values ();
ERROR 1597 (HY000): Binary logging not possible. Message: Row-based format required for this statement, but not allowed by this combination of engines

set binlog_format=statement;
Query OK, 0 rows affected (0.00 sec)

insert into tmi values ();
Query OK, 1 row affected (0.00 sec)

insert into tib values ();
Query OK, 1 row affected (0.01 sec)

insert into tf values ();
ERROR 1597 (HY000): Binary logging not possible. Message: Statement-based format required for this statement, but not allowed by this combination of engines

How to repeat:
# start a 6.0.3 server with binary log active

drop table if exists tmi,tib,tf;

create table tmi (id int not null auto_increment primary key ) engine=myisam;
create table tib (id int not null auto_increment primary key ) engine=innodb;
create table tf (id int not null auto_increment primary key ) engine=falcon;

set binlog_format=mixed;
insert into tmi values ();
insert into tib values ();
insert into tf values ();

set binlog_format=row;
insert into tmi values ();
insert into tib values ();
insert into tf values ();

set binlog_format=statement;
insert into tmi values ();
insert into tib values ();
insert into tf values ();

Suggested fix:
enable the RBR/SBR flag for Falcon
[18 Oct 2007 14:52] Kevin Lewis
Made the change suggested by Calvin to explicitly declare in StorageInterface::table_flags() that Falcon supports row based replication.
Pushed to mysql-6.0-falcon-team
[30 Nov 2007 17:33] Hakan Küçükyılmaz
Works now

[18:31] root@test>set binlog_format=row;
Query OK, 0 rows affected (0.00 sec)

[18:31] root@test>insert into tmi values ();
Query OK, 1 row affected (0.00 sec)

[18:31] root@test>insert into tib values ();
Query OK, 1 row affected (0.01 sec)

[18:31] root@test>insert into tf values ();
Query OK, 1 row affected (0.00 sec
[30 Nov 2007 20:42] Bugs System
Pushed into 6.0.4-alpha
[3 Dec 2007 14:22] MC Brown
A note has been added to the 6.0.4 changelog: 

Falcon tables would fail during replication if ROW-based replication was specified.