mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Manual merge of mysql-trunk into mysql-trunk-merge.
Conflicts: Text conflict in client/mysqlbinlog.cc Text conflict in mysql-test/Makefile.am Text conflict in mysql-test/collections/default.daily Text conflict in mysql-test/r/mysqlbinlog_row_innodb.result Text conflict in mysql-test/suite/rpl/r/rpl_typeconv_innodb.result Text conflict in mysql-test/suite/rpl/t/rpl_get_master_version_and_clock.test Text conflict in mysql-test/suite/rpl/t/rpl_row_create_table.test Text conflict in mysql-test/suite/rpl/t/rpl_slave_skip.test Text conflict in mysql-test/suite/rpl/t/rpl_typeconv_innodb.test Text conflict in mysys/charset.c Text conflict in sql/field.cc Text conflict in sql/field.h Text conflict in sql/item.h Text conflict in sql/item_func.cc Text conflict in sql/log.cc Text conflict in sql/log_event.cc Text conflict in sql/log_event_old.cc Text conflict in sql/mysqld.cc Text conflict in sql/rpl_utility.cc Text conflict in sql/rpl_utility.h Text conflict in sql/set_var.cc Text conflict in sql/share/Makefile.am Text conflict in sql/sql_delete.cc Text conflict in sql/sql_plugin.cc Text conflict in sql/sql_select.cc Text conflict in sql/sql_table.cc Text conflict in storage/example/ha_example.h Text conflict in storage/federated/ha_federated.cc Text conflict in storage/myisammrg/ha_myisammrg.cc Text conflict in storage/myisammrg/myrg_open.c
This commit is contained in:
@ -218,20 +218,20 @@ drop table t3,t1,t2;
|
||||
#
|
||||
# temporary merge tables
|
||||
#
|
||||
create table t1 (a int not null);
|
||||
create table t2 (a int not null);
|
||||
insert into t1 values (1);
|
||||
insert into t2 values (2);
|
||||
create temporary table t3 (a int not null) ENGINE=MERGE UNION=(t1,t2);
|
||||
CREATE TABLE t1 (c1 INT NOT NULL);
|
||||
CREATE TABLE t2 (c1 INT NOT NULL);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
CREATE TEMPORARY TABLE t3 (c1 INT NOT NULL) ENGINE=MRG_MYISAM UNION=(t1,t2);
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t3;
|
||||
create temporary table t4 (a int not null);
|
||||
create temporary table t5 (a int not null);
|
||||
insert into t4 values (1);
|
||||
insert into t5 values (2);
|
||||
create temporary table t6 (a int not null) ENGINE=MERGE UNION=(t4,t5);
|
||||
select * from t6;
|
||||
drop table t6, t3, t1, t2, t4, t5;
|
||||
SELECT * FROM t3;
|
||||
CREATE TEMPORARY TABLE t4 (c1 INT NOT NULL);
|
||||
CREATE TEMPORARY TABLE t5 (c1 INT NOT NULL);
|
||||
INSERT INTO t4 VALUES (4);
|
||||
INSERT INTO t5 VALUES (5);
|
||||
CREATE TEMPORARY TABLE t6 (c1 INT NOT NULL) ENGINE=MRG_MYISAM UNION=(t4,t5);
|
||||
SELECT * FROM t6;
|
||||
DROP TABLE t6, t3, t1, t2, t4, t5;
|
||||
#
|
||||
# Bug#19627 - temporary merge table locking
|
||||
# MERGE table and its children must match in temporary type.
|
||||
@ -558,7 +558,7 @@ CREATE TABLE t1(a INT);
|
||||
SELECT * FROM tm1;
|
||||
CHECK TABLE tm1;
|
||||
CREATE TABLE t2(a BLOB);
|
||||
--error 1168
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SELECT * FROM tm1;
|
||||
CHECK TABLE tm1;
|
||||
ALTER TABLE t2 MODIFY a INT;
|
||||
@ -677,12 +677,16 @@ SELECT * FROM t3;
|
||||
--echo # Truncate MERGE table under locked tables.
|
||||
LOCK TABLE t1 WRITE, t2 WRITE, t3 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
--error ER_LOCK_OR_ACTIVE_TRANSACTION
|
||||
TRUNCATE TABLE t3;
|
||||
SELECT * FROM t3;
|
||||
UNLOCK TABLES;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
--echo #
|
||||
--echo # Truncate child table under locked tables.
|
||||
--error ER_LOCK_OR_ACTIVE_TRANSACTION
|
||||
LOCK TABLE t1 WRITE, t2 WRITE, t3 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT * FROM t3;
|
||||
UNLOCK TABLES;
|
||||
@ -708,14 +712,18 @@ SELECT * FROM t3;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
CREATE TABLE t4 (c1 INT, INDEX(c1));
|
||||
LOCK TABLE t4 WRITE;
|
||||
--error ER_LOCK_OR_ACTIVE_TRANSACTION
|
||||
TRUNCATE TABLE t3;
|
||||
SELECT * FROM t3;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
--echo #
|
||||
--echo # Truncate temporary child table under locked tables.
|
||||
--error ER_LOCK_OR_ACTIVE_TRANSACTION
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
TRUNCATE TABLE t1;
|
||||
SELECT * FROM t3;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, t2, t3, t4;
|
||||
|
||||
@ -848,7 +856,8 @@ SHOW CREATE TABLE t3;
|
||||
DROP TABLE t1, t2;
|
||||
#
|
||||
--echo #
|
||||
--echo # CREATE ... LIKE
|
||||
--echo # Bug#37371 "CREATE TABLE LIKE merge loses UNION parameter"
|
||||
--echo # Demonstrate that this is no longer the case.
|
||||
--echo #
|
||||
--echo # 1. Create like.
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
@ -860,20 +869,24 @@ INSERT INTO t2 VALUES (2);
|
||||
INSERT INTO t3 VALUES (3);
|
||||
CREATE TABLE t4 LIKE t3;
|
||||
SHOW CREATE TABLE t4;
|
||||
--error ER_OPEN_AS_READONLY
|
||||
INSERT INTO t4 VALUES (4);
|
||||
DROP TABLE t4;
|
||||
--echo #
|
||||
--echo # 1. Create like with locked tables.
|
||||
LOCK TABLES t3 WRITE, t2 WRITE, t1 WRITE;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
CREATE TABLE t4 LIKE t3;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
SHOW CREATE TABLE t4;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
INSERT INTO t4 VALUES (4);
|
||||
UNLOCK TABLES;
|
||||
CREATE TEMPORARY TABLE t4 LIKE t3;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SHOW CREATE TABLE t4;
|
||||
--error ER_OPEN_AS_READONLY
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
INSERT INTO t4 VALUES (4);
|
||||
UNLOCK TABLES;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
INSERT INTO t4 VALUES (4);
|
||||
DROP TABLE t4;
|
||||
#
|
||||
@ -971,9 +984,9 @@ CREATE TABLE t2 (c1 INT, INDEX(c1)) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
LOCK TABLES t1 WRITE, t2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
DROP TABLE t1;
|
||||
--error 1168
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
SELECT * FROM t2;
|
||||
--error ER_NO_SUCH_TABLE
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
SELECT * FROM t1;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t2;
|
||||
@ -1409,6 +1422,7 @@ FLUSH TABLES m1, t1;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, m1;
|
||||
|
||||
|
||||
#
|
||||
# Bug#35068 - Assertion fails when reading from i_s.tables
|
||||
# and there is incorrect merge table
|
||||
@ -1766,3 +1780,405 @@ while ($1)
|
||||
--enable_query_log
|
||||
drop table t_parent;
|
||||
set @@global.table_definition_cache=@save_table_definition_cache;
|
||||
|
||||
#
|
||||
# WL#4144 - Lock MERGE engine children
|
||||
#
|
||||
# Test DATA/INDEX DIRECTORY
|
||||
#
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS mysql_test1;
|
||||
--enable_warnings
|
||||
CREATE DATABASE mysql_test1;
|
||||
--disable_query_log
|
||||
# data/index directory don't work in HAVE_purify builds. Disable
|
||||
# build-dependent warnings.
|
||||
--disable_warnings
|
||||
--echo CREATE TABLE t1 ... DATA DIRECTORY=... INDEX DIRECTORY=...
|
||||
eval CREATE TABLE t1 (c1 INT)
|
||||
DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp'
|
||||
INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp';
|
||||
--echo CREATE TABLE mysql_test1.t2 ... DATA DIRECTORY=... INDEX DIRECTORY=...
|
||||
eval CREATE TABLE mysql_test1.t2 (c1 INT)
|
||||
DATA DIRECTORY='$MYSQLTEST_VARDIR/tmp'
|
||||
INDEX DIRECTORY='$MYSQLTEST_VARDIR/tmp';
|
||||
--enable_query_log
|
||||
--enable_warnings
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1,mysql_test1.t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO mysql_test1.t2 VALUES (2);
|
||||
SELECT * FROM m1;
|
||||
#--copy_file $MYSQLTEST_VARDIR/master-data/test/m1.MRG /tmp/mysql-test-m1.MRG
|
||||
DROP TABLE t1, mysql_test1.t2, m1;
|
||||
DROP DATABASE mysql_test1;
|
||||
#
|
||||
# Review detected Crash #1. Detaching main tables while in sub statement.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
INSERT INTO t1 (c1) VALUES (1);
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1,t2) INSERT_METHOD=FIRST;
|
||||
CREATE TABLE t3 (c1 INT);
|
||||
INSERT INTO t3 (c1) VALUES (1);
|
||||
CREATE FUNCTION f1() RETURNS INT RETURN (SELECT MAX(c1) FROM t3);
|
||||
CREATE VIEW v1 AS SELECT foo.c1 c1, f1() c2, bar.c1 c3, f1() c4
|
||||
FROM tm1 foo, tm1 bar, t3;
|
||||
SELECT * FROM v1;
|
||||
DROP FUNCTION f1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE tm1, t1, t2, t3;
|
||||
#
|
||||
# Review detected Crash #2. Trying to attach temporary table twice.
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT);
|
||||
CREATE TEMPORARY TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=FIRST;
|
||||
CREATE FUNCTION f1() RETURNS INT RETURN (SELECT MAX(c1) FROM tm1);
|
||||
INSERT INTO tm1 (c1) VALUES (1);
|
||||
SELECT f1() FROM (SELECT 1) AS c1;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE tm1, t1, t2;
|
||||
#
|
||||
# Review suggested test. DDL in a stored function.
|
||||
#
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT);
|
||||
CREATE TEMPORARY TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1,t2);
|
||||
INSERT INTO t1 (c1) VALUES (1);
|
||||
RETURN (SELECT MAX(c1) FROM tm1);
|
||||
END|
|
||||
DELIMITER ;|
|
||||
SELECT f1() FROM (SELECT 1 UNION SELECT 1) c1;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE tm1, t1, t2;
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT);
|
||||
INSERT INTO t1 (c1) VALUES (1);
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1);
|
||||
DELIMITER |;
|
||||
--error ER_SP_BADSTATEMENT
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
CREATE TEMPORARY TABLE t2 (c1 INT);
|
||||
ALTER TEMPORARY TABLE tm1 UNION=(t1,t2);
|
||||
INSERT INTO t2 (c1) VALUES (2);
|
||||
RETURN (SELECT MAX(c1) FROM tm1);
|
||||
END|
|
||||
DELIMITER ;|
|
||||
DROP TABLE tm1, t1;
|
||||
#
|
||||
# Base table. No LOCK TABLES, no functions/triggers.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1) INSERT_METHOD=LAST;
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
DROP TABLE tm1, t1;
|
||||
#
|
||||
# Base table. No LOCK TABLES, sub-statement that is run inside a function.
|
||||
#
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
RETURN (SELECT MAX(c1) FROM tm1);
|
||||
END|
|
||||
DELIMITER ;|
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1) INSERT_METHOD=LAST;
|
||||
SELECT f1();
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE tm1, t1;
|
||||
#
|
||||
# Base table. LOCK TABLES, no functions/triggers.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1) INSERT_METHOD=LAST;
|
||||
LOCK TABLE tm1 WRITE;
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE tm1, t1;
|
||||
#
|
||||
# Base table. LOCK TABLES, sub-statement that is run inside a function.
|
||||
#
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
RETURN (SELECT MAX(c1) FROM tm1);
|
||||
END|
|
||||
DELIMITER ;|
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1) INSERT_METHOD=LAST;
|
||||
LOCK TABLE tm1 WRITE;
|
||||
SELECT f1();
|
||||
UNLOCK TABLES;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE tm1, t1;
|
||||
#
|
||||
# Base table. LOCK TABLES statement that locks a table that has a trigger
|
||||
# that inserts into a merge table, so an attempt is made to lock tables
|
||||
# of a sub-statement.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1) INSERT_METHOD=LAST;
|
||||
CREATE TRIGGER t2_ai AFTER INSERT ON t2
|
||||
FOR EACH ROW INSERT INTO tm1 VALUES(11);
|
||||
LOCK TABLE t2 WRITE;
|
||||
INSERT INTO t2 VALUES (2);
|
||||
SELECT * FROM tm1;
|
||||
SELECT * FROM t2;
|
||||
UNLOCK TABLES;
|
||||
DROP TRIGGER t2_ai;
|
||||
DROP TABLE tm1, t1, t2;
|
||||
#
|
||||
# Temporary. No LOCK TABLES, no functions/triggers.
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
DROP TABLE tm1, t1;
|
||||
#
|
||||
# Temporary. No LOCK TABLES, sub-statement that is run inside a function.
|
||||
#
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
RETURN (SELECT MAX(c1) FROM tm1);
|
||||
END|
|
||||
DELIMITER ;|
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT f1();
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE tm1, t1;
|
||||
#
|
||||
# Temporary. LOCK TABLES, no functions/triggers.
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE t9 (c1 INT) ENGINE=MyISAM;
|
||||
LOCK TABLE t9 WRITE;
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE tm1, t1, t9;
|
||||
#
|
||||
# Temporary. LOCK TABLES, sub-statement that is run inside a function.
|
||||
#
|
||||
DELIMITER |;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
BEGIN
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
RETURN (SELECT MAX(c1) FROM tm1);
|
||||
END|
|
||||
DELIMITER ;|
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE t9 (c1 INT) ENGINE=MyISAM;
|
||||
LOCK TABLE t9 WRITE;
|
||||
SELECT f1();
|
||||
UNLOCK TABLES;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE tm1, t1, t9;
|
||||
#
|
||||
# Temporary. LOCK TABLES statement that locks a table that has a trigger
|
||||
# that inserts into a merge table, so an attempt is made to lock tables
|
||||
# of a sub-statement.
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE t2 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TRIGGER t2_ai AFTER INSERT ON t2
|
||||
FOR EACH ROW INSERT INTO tm1 VALUES(11);
|
||||
LOCK TABLE t2 WRITE;
|
||||
INSERT INTO t2 VALUES (2);
|
||||
SELECT * FROM tm1;
|
||||
SELECT * FROM t2;
|
||||
UNLOCK TABLES;
|
||||
DROP TRIGGER t2_ai;
|
||||
DROP TABLE tm1, t1, t2;
|
||||
--echo #
|
||||
--echo # Don't allow an update of a MERGE child in a trigger
|
||||
--echo # if the table's already being modified by the main
|
||||
--echo # statement.
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TRIGGER tm1_ai AFTER INSERT ON tm1
|
||||
FOR EACH ROW INSERT INTO t1 VALUES(11);
|
||||
LOCK TABLE tm1 WRITE, t1 WRITE;
|
||||
--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
UNLOCK TABLES;
|
||||
LOCK TABLE t1 WRITE, tm1 WRITE;
|
||||
--error ER_CANT_UPDATE_USED_TABLE_IN_SF_OR_TRG
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
UNLOCK TABLES;
|
||||
DROP TRIGGER tm1_ai;
|
||||
DROP TABLE tm1, t1;
|
||||
|
||||
--echo #
|
||||
--echo # Don't select MERGE child when trying to get a prelocked table.
|
||||
--echo #
|
||||
--echo # Due to a limitation demonstrated by the previous test
|
||||
--echo # we can no longer use a write-locked prelocked table.
|
||||
--echo # The test is kept for historical purposes.
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TRIGGER tm1_ai AFTER INSERT ON tm1
|
||||
FOR EACH ROW SELECT max(c1) FROM t1 INTO @var;
|
||||
LOCK TABLE tm1 WRITE, t1 WRITE;
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
UNLOCK TABLES;
|
||||
LOCK TABLE t1 WRITE, tm1 WRITE;
|
||||
INSERT INTO tm1 VALUES (1);
|
||||
SELECT * FROM tm1;
|
||||
UNLOCK TABLES;
|
||||
DROP TRIGGER tm1_ai;
|
||||
DROP TABLE tm1, t1;
|
||||
|
||||
# Don't resurrect chopped off prelocked tables.
|
||||
# The problem is not visible by test results; only by debugging.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t3 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t4 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t5 (c1 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE tm1 (c1 INT) ENGINE=MRG_MYISAM UNION=(t1,t2,t3,t4,t5)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TRIGGER t2_au AFTER UPDATE ON t2
|
||||
FOR EACH ROW SELECT MAX(c1) FROM t1 INTO @var;
|
||||
CREATE FUNCTION f1() RETURNS INT
|
||||
RETURN (SELECT MAX(c1) FROM t4);
|
||||
LOCK TABLE tm1 WRITE, t1 WRITE, t2 WRITE, t3 WRITE, t4 WRITE, t5 WRITE;
|
||||
INSERT INTO t1 VALUES(1);
|
||||
INSERT INTO t2 VALUES(2);
|
||||
INSERT INTO t3 VALUES(3);
|
||||
INSERT INTO t4 VALUES(4);
|
||||
INSERT INTO t5 VALUES(5);
|
||||
connect (con1,localhost,root,,);
|
||||
send UPDATE t2, tm1 SET t2.c1=f1();
|
||||
connection default;
|
||||
# Force reopen in other thread.
|
||||
#sleep 1;
|
||||
FLUSH TABLES;
|
||||
#sleep 1;
|
||||
FLUSH TABLES;
|
||||
#sleep 1;
|
||||
UNLOCK TABLES;
|
||||
connection con1;
|
||||
reap;
|
||||
disconnect con1;
|
||||
connection default;
|
||||
SELECT * FROM tm1;
|
||||
DROP TRIGGER t2_au;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE tm1, t1, t2, t3, t4, t5;
|
||||
|
||||
--echo #
|
||||
--echo # Bug47098 assert in MDL_context::destroy on HANDLER
|
||||
--echo # <damaged merge table> OPEN
|
||||
--echo #
|
||||
--echo # Test that merge tables are closed correctly when opened using
|
||||
--echo # HANDLER ... OPEN.
|
||||
--echo # The general case.
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2, t3;
|
||||
--enable_warnings
|
||||
--echo # Connection con1.
|
||||
connect (con1,localhost,root,,);
|
||||
CREATE TABLE t1 (c1 int);
|
||||
CREATE TABLE t2 (c1 int);
|
||||
CREATE TABLE t3 (c1 int) ENGINE = MERGE UNION (t1,t2);
|
||||
START TRANSACTION;
|
||||
--error ER_ILLEGAL_HA
|
||||
HANDLER t3 OPEN;
|
||||
DROP TABLE t1, t2, t3;
|
||||
--echo # Connection default.
|
||||
connection default;
|
||||
--echo # Disconnecting con1, all mdl_tickets must have been released.
|
||||
disconnect con1;
|
||||
--echo # The bug-specific case.
|
||||
--echo # Connection con1.
|
||||
connect (con1,localhost,root,,);
|
||||
CREATE TABLE t1 (c1 int);
|
||||
CREATE TABLE t2 (c1 int);
|
||||
CREATE TABLE t3 (c1 int) ENGINE = MERGE UNION (t1,t2);
|
||||
DROP TABLE t2;
|
||||
START TRANSACTION;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
HANDLER t3 OPEN;
|
||||
DROP TABLE t1, t3;
|
||||
--echo # Connection default.
|
||||
connection default;
|
||||
--echo # Disconnecting con1, all mdl_tickets must have been released.
|
||||
disconnect con1;
|
||||
|
||||
--echo #
|
||||
--echo # A test case for Bug#47648 main.merge fails sporadically
|
||||
--echo #
|
||||
--echo # Make sure we correctly maintain lex->query_tables_last_own.
|
||||
--echo #
|
||||
create table t1 (c1 int not null);
|
||||
create table t2 (c1 int not null);
|
||||
create table t3 (c1 int not null);
|
||||
|
||||
create function f1 () returns int return (select max(c1) from t3);
|
||||
|
||||
create table t4 (c1 int not null) engine=merge union=(t1,t2) insert_method=last ;
|
||||
|
||||
select * from t4 where c1 < f1();
|
||||
prepare stmt from "select * from t4 where c1 < f1()";
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
execute stmt;
|
||||
drop function f1;
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
execute stmt;
|
||||
--error ER_SP_DOES_NOT_EXIST
|
||||
execute stmt;
|
||||
drop table t4, t3, t2, t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#51240 ALTER TABLE of a locked MERGE table fails
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS m1, t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1);
|
||||
LOCK TABLE m1 WRITE;
|
||||
# This used to cause an error.
|
||||
ALTER TABLE m1 ADD INDEX (c1);
|
||||
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m1, t1;
|
||||
|
||||
|
||||
--echo End of 6.0 tests
|
||||
|
||||
|
Reference in New Issue
Block a user