summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mysql-test/lib/mtr_report.pl6
-rw-r--r--mysql-test/r/alter_table.result2
-rw-r--r--mysql-test/r/check.result8
-rw-r--r--mysql-test/r/federated.result22
-rw-r--r--mysql-test/r/lowercase_table3.result8
-rw-r--r--mysql-test/t/check.test9
-rw-r--r--mysql-test/t/disabled.def2
-rw-r--r--mysql-test/t/federated.test26
-rw-r--r--mysql-test/t/lowercase_table3.test6
-rw-r--r--sql/handler.cc8
-rw-r--r--sql/sql_cache.cc12
-rw-r--r--sql/sql_table.cc4
-rw-r--r--storage/federated/ha_federated.cc17
-rw-r--r--storage/federated/ha_federated.h1
14 files changed, 114 insertions, 17 deletions
diff --git a/mysql-test/lib/mtr_report.pl b/mysql-test/lib/mtr_report.pl
index 306a0fe5d9d..fa38e8507f8 100644
--- a/mysql-test/lib/mtr_report.pl
+++ b/mysql-test/lib/mtr_report.pl
@@ -362,7 +362,11 @@ sub mtr_report_stats ($) {
# BUG#29807 - innodb_mysql.test: Cannot find table test/t2
# from the internal data dictionary
- /Cannot find table test\/bug29807 from the internal data dictionary/
+ /Cannot find table test\/bug29807 from the internal data dictionary/ or
+
+ # BUG#29839 - lowercase_table3.test: Cannot find table test/T1
+ # from the internal data dictiona
+ /Cannot find table test\/BUG29839 from the internal data dictionary/
)
{
next; # Skip these lines
diff --git a/mysql-test/r/alter_table.result b/mysql-test/r/alter_table.result
index a9c01f308f7..cc93eab0cd5 100644
--- a/mysql-test/r/alter_table.result
+++ b/mysql-test/r/alter_table.result
@@ -1030,6 +1030,7 @@ select * from t2;
c
NULL
1
+Two
Three
lock table t2 write, t3 read;
alter table t2 change c vc varchar(100) default "Four", rename to t1;
@@ -1046,6 +1047,7 @@ select * from t1;
vc
NULL
1
+Two
Three
Four
drop tables t1, t3;
diff --git a/mysql-test/r/check.result b/mysql-test/r/check.result
index 739eab2ed76..0bff34dba20 100644
--- a/mysql-test/r/check.result
+++ b/mysql-test/r/check.result
@@ -15,3 +15,11 @@ test.v1 check status OK
test.t2 check status OK
drop view v1;
drop table t1, t2;
+CREATE TEMPORARY TABLE t1(a INT);
+CHECK TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 check status OK
+REPAIR TABLE t1;
+Table Op Msg_type Msg_text
+test.t1 repair status OK
+DROP TABLE t1;
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/r/lowercase_table3.result b/mysql-test/r/lowercase_table3.result
index 995a2c0d08a..14cff4f98c9 100644
--- a/mysql-test/r/lowercase_table3.result
+++ b/mysql-test/r/lowercase_table3.result
@@ -4,7 +4,7 @@ SELECT * from T1;
a
drop table t1;
flush tables;
-CREATE TABLE t1 (a int) ENGINE=INNODB;
-SELECT * from T1;
-ERROR 42S02: Table 'test.T1' doesn't exist
-drop table t1;
+CREATE TABLE bug29839 (a int) ENGINE=INNODB;
+SELECT * from BUG29839;
+ERROR 42S02: Table 'test.BUG29839' doesn't exist
+drop table bug29839;
diff --git a/mysql-test/t/check.test b/mysql-test/t/check.test
index eb72d75da3c..363f9d419d6 100644
--- a/mysql-test/t/check.test
+++ b/mysql-test/t/check.test
@@ -37,3 +37,12 @@ Create view v1 as Select * from t1;
Check Table v1,t2;
drop view v1;
drop table t1, t2;
+
+#
+# BUG#26325 - TEMPORARY TABLE "corrupt" after first read, according to CHECK
+# TABLE
+#
+CREATE TEMPORARY TABLE t1(a INT);
+CHECK TABLE t1;
+REPAIR TABLE t1;
+DROP TABLE t1;
diff --git a/mysql-test/t/disabled.def b/mysql-test/t/disabled.def
index 07c5b4d56a3..f04809b668d 100644
--- a/mysql-test/t/disabled.def
+++ b/mysql-test/t/disabled.def
@@ -25,4 +25,4 @@ 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()
-lowercase_table3 : Bug#29839 2007-07-17 ingo Cannot find table test/T1 from the internal data dictionary
+federated_transactions : Bug#29523 Transactions do not work
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/mysql-test/t/lowercase_table3.test b/mysql-test/t/lowercase_table3.test
index 75f6e5188c5..51385b4b178 100644
--- a/mysql-test/t/lowercase_table3.test
+++ b/mysql-test/t/lowercase_table3.test
@@ -27,9 +27,9 @@ flush tables;
# storing things in lower case.
#
-CREATE TABLE t1 (a int) ENGINE=INNODB;
+CREATE TABLE bug29839 (a int) ENGINE=INNODB;
--error 1146
-SELECT * from T1;
-drop table t1;
+SELECT * from BUG29839;
+drop table bug29839;
# End of 4.1 tests
diff --git a/sql/handler.cc b/sql/handler.cc
index 2d836b30862..55e2e478027 100644
--- a/sql/handler.cc
+++ b/sql/handler.cc
@@ -2355,7 +2355,13 @@ static bool update_frm_version(TABLE *table)
int result= 1;
DBUG_ENTER("update_frm_version");
- if (table->s->mysql_version != MYSQL_VERSION_ID)
+ /*
+ No need to update frm version in case table was created or checked
+ by server with the same version. This also ensures that we do not
+ update frm version for temporary tables as this code doesn't support
+ temporary tables.
+ */
+ if (table->s->mysql_version == MYSQL_VERSION_ID)
DBUG_RETURN(0);
strxmov(path, table->s->normalized_path.str, reg_ext, NullS);
diff --git a/sql/sql_cache.cc b/sql/sql_cache.cc
index cab9ef94d6d..39a7aebcc5d 100644
--- a/sql/sql_cache.cc
+++ b/sql/sql_cache.cc
@@ -878,10 +878,14 @@ ulong Query_cache::resize(ulong query_cache_size_arg)
query_cache_size= query_cache_size_arg;
ulong new_query_cache_size= init_cache();
- DBUG_EXECUTE("check_querycache",check_integrity(0););
-
STRUCT_LOCK(&structure_guard_mutex);
m_cache_status= Query_cache::NO_FLUSH_IN_PROGRESS;
+ /*
+ Must not call check_integrity() with
+ m_cache_status != Query_cache::NO_FLUSH_IN_PROGRESS.
+ It would wait forever.
+ */
+ DBUG_EXECUTE("check_querycache",check_integrity(1););
pthread_cond_signal(&COND_cache_status_changed);
STRUCT_UNLOCK(&structure_guard_mutex);
@@ -4025,6 +4029,10 @@ my_bool Query_cache::check_integrity(bool locked)
Query_cache_block * block = first_block;
do
{
+ /* When checking at system start, there is no block. */
+ if (!block)
+ break;
+
DBUG_PRINT("qcache", ("block 0x%lx, type %u...",
(ulong) block, (uint) block->type));
// Check allignment
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index c603f1ad77f..b97c74d3666 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -6330,11 +6330,9 @@ view_err:
{
VOID(pthread_mutex_lock(&LOCK_open));
wait_while_table_is_used(thd, table, HA_EXTRA_FORCE_REOPEN);
- table->file->ha_external_lock(thd, F_WRLCK);
+ VOID(pthread_mutex_unlock(&LOCK_open));
alter_table_manage_keys(table, table->file->indexes_are_disabled(),
alter_info->keys_onoff);
- table->file->ha_external_lock(thd, F_UNLCK);
- VOID(pthread_mutex_unlock(&LOCK_open));
error= ha_commit_stmt(thd);
if (ha_commit(thd))
error= 1;
diff --git a/storage/federated/ha_federated.cc b/storage/federated/ha_federated.cc
index 635a6fa79e0..67dc37a8ff2 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,
@@ -3160,11 +3167,16 @@ bool ha_federated::get_error_message(int error, String* buf)
int ha_federated::external_lock(THD *thd, int lock_type)
{
int error= 0;
- 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)
{
+ ha_federated *trx= (ha_federated *)thd->ha_data[ht->slot];
+
DBUG_PRINT("info",("federated not lock F_UNLCK"));
if (!(thd->options & (OPTION_NOT_AUTOCOMMIT | OPTION_BEGIN)))
{
@@ -3216,7 +3228,8 @@ int ha_federated::external_lock(THD *thd, int lock_type)
}
}
}
- DBUG_RETURN(0);
+#endif /* XXX_SUPERCEDED_BY_WL2952 */
+ DBUG_RETURN(error);
}
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);
}
/*