Bug #41952 Please add a maria-transactional mysqld option
Submitted: 8 Jan 2009 9:38 Modified: 26 May 2010 17:51
Reporter: Philip Stoev Email Updates:
Status: Unsupported Impact on me:
Category:MySQL Server: Maria storage engine Severity:S2 (Serious)
Version:6.0, 5.1-maria OS:Any
Assigned to: CPU Architecture:Any
Triage: Triaged: D3 (Medium) / R2 (Low) / E3 (Medium)

[8 Jan 2009 9:38] Philip Stoev
Please add a --maria-transactional option to mysqld, so that the Maria mode of operation can be selected server-wide and not just per-table using CREATE TABLE TRANSACTIONAL.

This is very important in order to run the existing tests both with maria transactional=1 and transactional=0 without modifying all CREATE TABLE inside the tests. Otherwise, just the default transactional=1 is being tested and transactional=0 will not receive any coverage.

How to repeat:
Attempt to write a test that can run against Falcon, Innodb, PBXT , Maria transactional and maria non-transactional. No other engine uses CREATE TABLE options exclusively to modify basic engine behavoir.

Suggested fix:
Create a mysqld option --maria-transactional with default value of 1. If CREATE TABLE TRANSACTIONAL is not specified explicitly, the --maria-transactional option becomes effective.
[8 Jan 2009 9:39] Guilhem Bichot
It's a MySQL habit to do this, and I can see the value, so it will probably be approved, but it then has the usual problems: replication of this option (if master and slave are accidentally not using the same value of the option)...
[13 Feb 2009 16:59] Guilhem Bichot
[13 Feb 2009 19:37] Guilhem Bichot
tried the patch and:
CURRENT_TEST: maria.maria
--- /home/mysql_src/bzrrepos/mysql-maria2/mysql-test/suite/maria/r/maria.result 2009-02-11 23:48:05.000000000 +0300
+++ /home/mysql_src/bzrrepos/mysql-maria2/mysql-test/suite/maria/r/maria.reject 2009-02-13 21:39:10.000000000 +0300
@@ -637,6 +637,8 @@
 Table  Non_unique      Key_name        Seq_in_index    Column_name     Collation       Cardinality     Sub_part        Packed  Null    Index_type      Comment
 t1     1       a       1       a       A       1000    NULL    NULL    YES     BTREE
 alter table t1 engine=heap;
+Error  1478    Table storage engine 'MEMORY' does not support the create option 'TRANSACTIONAL=1'
 alter table t1 disable keys;
 Note   1031    Table storage engine for 't1' doesn't have this option
@@ -690,14 +692,20 @@
 Table  Checksum
 test.t1        3235292310
 alter table t1 row_format=fixed;
+Note   1478    Row format set to PAGE because of TRANSACTIONAL=1 option

Note the note: row_format_fixed is discarded.
[11 Apr 2009 9:16] Guilhem Bichot
Workaround is: specify TRANSACTIONAL=0|1 in CREATE TABLE.
Impact: a substantial amount of people could want to use this option.
Effort: Medium; Sanja's patch does not work which shows that it's not a Low effort. The inner workings of CREATE TABLE and SHOW CREATE TABLE are not so simple. 2 days of work?