From 395233b4f78d061584ec1246264ad49eebf6b798 Mon Sep 17 00:00:00 2001 From: "acurtis/antony@xiphis.org/ltamd64.xiphis.org" <> Date: Fri, 20 Jul 2007 11:35:19 -0700 Subject: [PATCH] Bug#29875 "Disable transaction support in Federated storage engine" Minimal patch to disable Federated's transactions until they can be fixed. --- mysql-test/r/federated.result | 22 ++++++++++++++++++++++ mysql-test/t/disabled.def | 1 + mysql-test/t/federated.test | 26 ++++++++++++++++++++++++++ storage/federated/ha_federated.cc | 12 ++++++++++++ storage/federated/ha_federated.h | 1 + 5 files changed, 62 insertions(+) diff --git a/mysql-test/r/federated.result b/mysql-test/r/federated.result index 42228fac2c9..690cc803608 100644 --- a/mysql-test/r/federated.result +++ b/mysql-test/r/federated.result @@ -1882,6 +1882,28 @@ a b 2 Curly drop table federated.t1; drop table federated.t1; +CREATE TABLE federated.t1 (a INT PRIMARY KEY) DEFAULT CHARSET=utf8; +CREATE TABLE federated.t1 (a INT PRIMARY KEY) +ENGINE=FEDERATED +CONNECTION='mysql://root@127.0.0.1:SLAVE_PORT/federated/t1' + DEFAULT CHARSET=utf8; +SELECT transactions FROM information_schema.engines WHERE engine="FEDERATED"; +transactions +NO +INSERT INTO federated.t1 VALUES (1); +SET autocommit=0; +INSERT INTO federated.t1 VALUES (2); +ROLLBACK; +Warnings: +Warning 1196 Some non-transactional changed tables couldn't be rolled back +SET autocommit=1; +SELECT * FROM federated.t1; +a +1 +2 +DROP TABLE federated.t1; +DROP TABLE federated.t1; +End of 5.1 tests DROP TABLE IF EXISTS federated.t1; DROP DATABASE IF EXISTS federated; DROP TABLE IF EXISTS federated.t1; diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def index 07c5b4d56a3..14b6979dd19 100644 --- a/mysql-test/t/disabled.def +++ b/mysql-test/t/disabled.def @@ -25,4 +25,5 @@ ctype_big5 : BUG#26711 2007-06-21 Lars Test has never worked on Do mysql_upgrade : Bug#28560 test links to /usr/local/mysql/lib libraries, causes non-determinism and failures on ABI breakage federated_innodb : Bug#29522 failed assertion in binlog_close_connection() +federated_transactions : Bug#29523 Transactions do not work lowercase_table3 : Bug#29839 2007-07-17 ingo Cannot find table test/T1 from the internal data dictionary diff --git a/mysql-test/t/federated.test b/mysql-test/t/federated.test index fa65568e9cc..d54934a2e73 100644 --- a/mysql-test/t/federated.test +++ b/mysql-test/t/federated.test @@ -1683,4 +1683,30 @@ connection slave; drop table federated.t1; +# +# BUG#29875 Disable support for transactions +# +connection slave; +CREATE TABLE federated.t1 (a INT PRIMARY KEY) DEFAULT CHARSET=utf8; +connection master; +--replace_result $SLAVE_MYPORT SLAVE_PORT +eval CREATE TABLE federated.t1 (a INT PRIMARY KEY) + ENGINE=FEDERATED + CONNECTION='mysql://root@127.0.0.1:$SLAVE_MYPORT/federated/t1' + DEFAULT CHARSET=utf8; + +SELECT transactions FROM information_schema.engines WHERE engine="FEDERATED"; +INSERT INTO federated.t1 VALUES (1); +SET autocommit=0; +INSERT INTO federated.t1 VALUES (2); +ROLLBACK; +SET autocommit=1; +SELECT * FROM federated.t1; + +DROP TABLE federated.t1; +connection slave; +DROP TABLE federated.t1; + +--echo End of 5.1 tests + source include/federated_cleanup.inc; diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc index 635a6fa79e0..2c9d692bb5b 100644 --- a/storage/federated/ha_federated.cc +++ b/storage/federated/ha_federated.cc @@ -449,6 +449,13 @@ int federated_db_init(void *p) federated_hton->create= federated_create_handler; federated_hton->flags= HTON_ALTER_NOT_SUPPORTED | HTON_NO_PARTITION; + /* + Support for transactions disabled until WL#2952 fixes it. + We do it like this to avoid "defined but not used" compiler warnings. + */ + federated_hton->commit= 0; + federated_hton->rollback= 0; + if (pthread_mutex_init(&federated_mutex, MY_MUTEX_INIT_FAST)) goto error; if (!hash_init(&federated_open_tables, &my_charset_bin, 32, 0, 0, @@ -3163,6 +3170,10 @@ int ha_federated::external_lock(THD *thd, int lock_type) ha_federated *trx= (ha_federated *)thd->ha_data[ht->slot]; DBUG_ENTER("ha_federated::external_lock"); + /* + Support for transactions disabled until WL#2952 fixes it. + */ +#ifdef XXX_SUPERCEDED_BY_WL2952 if (lock_type != F_UNLCK) { DBUG_PRINT("info",("federated not lock F_UNLCK")); @@ -3216,6 +3227,7 @@ int ha_federated::external_lock(THD *thd, int lock_type) } } } +#endif /* XXX_SUPERCEDED_BY_WL2952 */ DBUG_RETURN(0); } diff --git a/storage/federated/ha_federated.h b/storage/federated/ha_federated.h index 3443194817b..b6c99f4d3aa 100644 --- a/storage/federated/ha_federated.h +++ b/storage/federated/ha_federated.h @@ -141,6 +141,7 @@ public: | HA_REC_NOT_IN_SEQ | HA_AUTO_PART_KEY | HA_CAN_INDEX_BLOBS | HA_BINLOG_ROW_CAPABLE | HA_BINLOG_STMT_CAPABLE | HA_NO_PREFIX_CHAR_KEYS | HA_PRIMARY_KEY_REQUIRED_FOR_DELETE | + HA_NO_TRANSACTIONS /* until fixed by WL#2952 */ | HA_PARTIAL_COLUMN_READ | HA_NULL_IN_KEY); } /*