mirror of
https://github.com/MariaDB/server.git
synced 2025-12-24 11:21:21 +03:00
Auto-merge from mysql-5.5.
This commit is contained in:
@@ -14,6 +14,7 @@ main.information_schema # Bug#47449 2009-09-19 alik main.inform
|
||||
main.lock_multi_bug38499 # Bug#47448 2009-09-19 alik main.lock_multi_bug38499 times out sporadically
|
||||
main.lock_multi_bug38691 @solaris # Bug#47792 2009-10-02 alik main.lock_multi_bug38691 times out sporadically on Solaris 10
|
||||
main.log_tables # Bug#47924 2009-10-08 alik main.log_tables times out sporadically
|
||||
main.lowercase_table2 @darwin # Bug#55509 2010-07-26 alik main.lowercase_table2 fails on Mac OSX (again)
|
||||
main.mysqlbinlog_row @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
|
||||
main.mysqlbinlog_row_innodb @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
|
||||
main.mysqlbinlog_row_myisam @solaris # Bug#52202 2010-03-22 alik mysqlbinlog_row* fail in daily-trunk on Sol10 x86_64 debug_max
|
||||
@@ -25,7 +26,6 @@ main.type_float @freebsd # Bug#38965 2010-05-04 alik test cases
|
||||
main.wait_timeout @solaris # Bug#51244 2010-04-26 alik wait_timeout fails on OpenSolaris
|
||||
|
||||
parts.partition_alter4_innodb # Bug#45299 2010-06-28 alik Test "partition_alter4_innodb" is taking too long, timeout
|
||||
perfschema.pfs_upgrade # Bug#53102 2010-06-15 alik perfschema.pfs_upgrade fails on sol10 sparc64 max in parallel mode
|
||||
|
||||
rpl.rpl_heartbeat_basic # BUG#54820 2010-06-26 alik rpl.rpl_heartbeat_basic fails sporadically again
|
||||
rpl.rpl_heartbeat_2slaves # BUG#43828 2009-10-22 luis fails sporadically
|
||||
|
||||
@@ -1757,3 +1757,35 @@ disconnect con51355;
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#54401 assert in Diagnostics_area::set_eof_status , HANDLER
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
--enable_warnings
|
||||
|
||||
delimiter |;
|
||||
CREATE FUNCTION f1() RETURNS INTEGER
|
||||
BEGIN
|
||||
SELECT 1 FROM t2 INTO @a;
|
||||
RETURN 1;
|
||||
END|
|
||||
delimiter ;|
|
||||
|
||||
# Get f1() parsed and cached
|
||||
--error ER_NO_SUCH_TABLE
|
||||
SELECT f1();
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
HANDLER t1 OPEN;
|
||||
# This used to cause the assert
|
||||
--error ER_NO_SUCH_TABLE
|
||||
HANDLER t1 READ FIRST WHERE f1() = 1;
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -3113,7 +3113,6 @@ sub install_db ($$) {
|
||||
mtr_add_arg($args, "--bootstrap");
|
||||
mtr_add_arg($args, "--basedir=%s", $path_my_basedir);
|
||||
mtr_add_arg($args, "--datadir=%s", $data_dir);
|
||||
mtr_add_arg($args, "--loose-skip-innodb");
|
||||
mtr_add_arg($args, "--loose-skip-ndbcluster");
|
||||
mtr_add_arg($args, "--tmpdir=.");
|
||||
mtr_add_arg($args, "--core-file");
|
||||
|
||||
@@ -1370,3 +1370,16 @@ CREATE TABLE t1 (id int);
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
ALTER TABLE t1 ADD COLUMN (f1 INT), ADD COLUMN (f2 INT), ADD KEY f2k(f2);
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Test for bug #53820 "ALTER a MEDIUMINT column table causes full
|
||||
# table copy".
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (a INT, b MEDIUMINT);
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2);
|
||||
# The below ALTER should not copy table and so no rows should
|
||||
# be shown as affected.
|
||||
ALTER TABLE t1 CHANGE a id INT;
|
||||
affected rows: 0
|
||||
info: Records: 0 Duplicates: 0 Warnings: 0
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -12775,3 +12775,29 @@ a
|
||||
1
|
||||
2
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (a int) ENGINE=ARCHIVE;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
|
||||
INSERT INTO t1 VALUES (1);
|
||||
OPTIMIZE TABLE t1;
|
||||
Table Op Msg_type Msg_text
|
||||
test.t1 optimize status OK
|
||||
FLUSH TABLES;
|
||||
INSERT INTO t1 VALUES (2);
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
a
|
||||
1
|
||||
2
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=ARCHIVE DEFAULT CHARSET=latin1
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -1710,3 +1710,23 @@ ERROR 42S02: Table 'test.t1' doesn't exist
|
||||
HANDLER t1 CLOSE;
|
||||
# Connection con51355
|
||||
# Connection default
|
||||
#
|
||||
# Bug#54401 assert in Diagnostics_area::set_eof_status , HANDLER
|
||||
#
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
CREATE FUNCTION f1() RETURNS INTEGER
|
||||
BEGIN
|
||||
SELECT 1 FROM t2 INTO @a;
|
||||
RETURN 1;
|
||||
END|
|
||||
SELECT f1();
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST WHERE f1() = 1;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
HANDLER t1 CLOSE;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -1707,6 +1707,26 @@ HANDLER t1 CLOSE;
|
||||
# Connection con51355
|
||||
# Connection default
|
||||
#
|
||||
# Bug#54401 assert in Diagnostics_area::set_eof_status , HANDLER
|
||||
#
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP FUNCTION IF EXISTS f1;
|
||||
CREATE FUNCTION f1() RETURNS INTEGER
|
||||
BEGIN
|
||||
SELECT 1 FROM t2 INTO @a;
|
||||
RETURN 1;
|
||||
END|
|
||||
SELECT f1();
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1);
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ FIRST WHERE f1() = 1;
|
||||
ERROR 42S02: Table 'test.t2' doesn't exist
|
||||
HANDLER t1 CLOSE;
|
||||
DROP FUNCTION f1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# BUG #46456: HANDLER OPEN + TRUNCATE + DROP (temporary) TABLE, crash
|
||||
#
|
||||
CREATE TABLE t1 AS SELECT 1 AS f1;
|
||||
|
||||
@@ -382,3 +382,14 @@ INSERT INTO t1 VALUES('A ', 'A ');
|
||||
ERROR 23000: Duplicate entry 'A -A ' for key 'key1'
|
||||
DROP TABLE t1;
|
||||
End of 5.0 tests
|
||||
#
|
||||
# Bug #55472: Assertion failed in heap_rfirst function of hp_rfirst.c
|
||||
# on DELETE statement
|
||||
#
|
||||
CREATE TABLE t1 (col_int_nokey INT,
|
||||
col_int_key INT,
|
||||
INDEX(col_int_key) USING HASH) ENGINE = HEAP;
|
||||
INSERT INTO t1 (col_int_nokey, col_int_key) VALUES (3, 0), (4, 0), (3, 1);
|
||||
DELETE FROM t1 WHERE col_int_nokey = 5 ORDER BY col_int_key LIMIT 2;
|
||||
DROP TABLE t1;
|
||||
End of 5.5 tests
|
||||
|
||||
@@ -116,3 +116,35 @@ Table Op Msg_type Msg_text
|
||||
test.t1 optimize note Table does not support optimize, doing recreate + analyze instead
|
||||
test.t1 optimize status OK
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#49891 View DDL breaks REPEATABLE READ
|
||||
#
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP VIEW IF EXISTS v2;
|
||||
CREATE TABLE t1 ( f1 INTEGER ) ENGINE = innodb;
|
||||
CREATE TABLE t2 ( f1 INTEGER );
|
||||
CREATE VIEW v1 AS SELECT 1 FROM t1;
|
||||
# Connection con3
|
||||
LOCK TABLE t1 WRITE;
|
||||
# Connection default
|
||||
START TRANSACTION;
|
||||
# Sending:
|
||||
SELECT * FROM v1;
|
||||
# Connection con2
|
||||
# Waiting for 'SELECT * FROM v1' to sync in.
|
||||
# Sending:
|
||||
ALTER VIEW v1 AS SELECT 2 FROM t2;
|
||||
# Connection con3
|
||||
# Waiting for 'ALTER VIEW v1 AS SELECT 2 FROM t2' to sync in.
|
||||
UNLOCK TABLES;
|
||||
# Connection default;
|
||||
# Reaping: SELECT * FROM v1
|
||||
1
|
||||
SELECT * FROM v1;
|
||||
1
|
||||
COMMIT;
|
||||
# Connection con2
|
||||
# Reaping: ALTER VIEW v1 AS SELECT 2 FROM t2
|
||||
# Connection default
|
||||
DROP TABLE t1, t2;
|
||||
DROP VIEW v1;
|
||||
|
||||
@@ -48,3 +48,21 @@ Warnings:
|
||||
Error 1146 Table 'test.t1' doesn't exist
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= "RESET";
|
||||
#
|
||||
# Bug#53757 assert in mysql_truncate_by_delete
|
||||
#
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
CREATE TABLE t1(a INT) Engine=InnoDB;
|
||||
CREATE TABLE t2(id INT);
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
INSERT INTO t2 VALUES(connection_id());
|
||||
SET DEBUG_SYNC= "open_and_process_table SIGNAL opening WAIT_FOR killed";
|
||||
# Sending: (not reaped since connection is killed later)
|
||||
TRUNCATE t1;
|
||||
SET DEBUG_SYNC= "now WAIT_FOR opening";
|
||||
SELECT ((@id := id) - id) FROM t2;
|
||||
((@id := id) - id)
|
||||
0
|
||||
KILL @id;
|
||||
SET DEBUG_SYNC= "now SIGNAL killed";
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
@@ -2527,3 +2527,240 @@ SET DEBUG_SYNC= "now SIGNAL completed";
|
||||
Field Type Collation Null Key Default Extra Privileges Comment
|
||||
a char(255) latin1_swedish_ci YES NULL #
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Tests for schema-scope locks
|
||||
#
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
# Test 1:
|
||||
# CREATE DATABASE blocks database DDL on the same database, but
|
||||
# not database DDL on different databases. Tests X vs X lock.
|
||||
#
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
CREATE DATABASE db1;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
CREATE DATABASE db1;
|
||||
# Connection con3
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: CREATE DATABASE db1
|
||||
# Connection con2
|
||||
# Reaping: CREATE DATABASE db1
|
||||
ERROR HY000: Can't create database 'db1'; database exists
|
||||
# Test 2:
|
||||
# ALTER DATABASE blocks database DDL on the same database, but
|
||||
# not database DDL on different databases. Tests X vs X lock.
|
||||
#
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
ALTER DATABASE db1 DEFAULT CHARACTER SET utf8;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
ALTER DATABASE db1 DEFAULT CHARACTER SET utf8;
|
||||
# Connection con3
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
# Connection con2
|
||||
# Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
ALTER DATABASE db1 DEFAULT CHARACTER SET utf8;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con3
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
# Connection con2
|
||||
# Reaping: DROP DATABASE db1
|
||||
CREATE DATABASE db1;
|
||||
# Test 3:
|
||||
# Two ALTER..UPGRADE of the same database are mutually exclusive, but
|
||||
# two ALTER..UPGRADE of different databases are not. Tests X vs X lock.
|
||||
#
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME;
|
||||
# Connection con3
|
||||
ALTER DATABASE `#mysql50#a-b-c-d` UPGRADE DATA DIRECTORY NAME;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: ALTER DATABASE '#mysql50#a-b-c' UPGRADE DATA DIRECTORY NAME
|
||||
# Connection con2
|
||||
# Reaping: ALTER DATABASE '#mysql50#a-b-c' UPGRADE DATA DIRECTORY NAME
|
||||
ERROR 42000: Unknown database '#mysql50#a-b-c'
|
||||
DROP DATABASE `a-b-c`;
|
||||
DROP DATABASE `a-b-c-d`;
|
||||
# Test 4:
|
||||
# DROP DATABASE blocks database DDL on the same database, but
|
||||
# not database DDL on different databases. Tests X vs X lock.
|
||||
#
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con3
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: DROP DATABASE db1
|
||||
# Connection con2
|
||||
# Reaping: DROP DATABASE db1
|
||||
ERROR HY000: Can't drop database 'db1'; database doesn't exist
|
||||
# Connection default
|
||||
CREATE DATABASE db1;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
ALTER DATABASE db1 DEFAULT CHARACTER SET utf8;
|
||||
# Connection con3
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: DROP DATABASE db1
|
||||
# Connection con2
|
||||
# Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
Got one of the listed errors
|
||||
# Test 5:
|
||||
# Locked database name prevents CREATE of tables in that database.
|
||||
# Tests X vs IX lock.
|
||||
#
|
||||
# Connection default
|
||||
CREATE DATABASE db1;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
CREATE TABLE db1.t1 (a INT);
|
||||
# Connection con3
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: DROP DATABASE db1
|
||||
# Connection con2
|
||||
# Reaping: CREATE TABLE db1.t1 (a INT)
|
||||
ERROR 42000: Unknown database 'db1'
|
||||
# Test 6:
|
||||
# Locked database name prevents RENAME of tables to/from that database.
|
||||
# Tests X vs IX lock.
|
||||
#
|
||||
# Connection default
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (a INT);
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
RENAME TABLE db1.t1 TO test.t1;
|
||||
# Connection con3
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: DROP DATABASE db1
|
||||
# Connection con2
|
||||
# Reaping: RENAME TABLE db1.t1 TO test.t1
|
||||
Got one of the listed errors
|
||||
# Connection default
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE test.t2 (a INT);
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
RENAME TABLE test.t2 TO db1.t2;
|
||||
# Connection con3
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: DROP DATABASE db1
|
||||
# Connection con2
|
||||
# Reaping: RENAME TABLE test.t2 TO db1.t2
|
||||
Got one of the listed errors
|
||||
DROP TABLE test.t2;
|
||||
# Test 7:
|
||||
# Locked database name prevents DROP of tables in that database.
|
||||
# Tests X vs IX lock.
|
||||
#
|
||||
# Connection default
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (a INT);
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con2
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
# Sending:
|
||||
DROP TABLE db1.t1;
|
||||
# Connection con3
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
# Connection default
|
||||
# Reaping: DROP DATABASE db1
|
||||
# Connection con2
|
||||
# Reaping: DROP TABLE db1.t1
|
||||
ERROR 42S02: Unknown table 't1'
|
||||
# Connection default
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
#
|
||||
# End of tests for schema-scope locks
|
||||
#
|
||||
#
|
||||
# Tests of granted global S lock (FLUSH TABLE WITH READ LOCK)
|
||||
#
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1(a INT);
|
||||
# Connection default
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
# Connection con2
|
||||
CREATE TABLE db1.t2(a INT);
|
||||
# Connection default
|
||||
UNLOCK TABLES;
|
||||
# Connection con2
|
||||
# Reaping CREATE TABLE db1.t2(a INT)
|
||||
# Connection default
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
# Connection con2
|
||||
ALTER DATABASE db1 DEFAULT CHARACTER SET utf8;
|
||||
# Connection default
|
||||
UNLOCK TABLES;
|
||||
# Connection con2
|
||||
# Reaping ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
# Connection default
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
# Connection con2
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
UNLOCK TABLES;
|
||||
# Connection default
|
||||
UNLOCK TABLES;
|
||||
DROP DATABASE db1;
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
set global storage_engine=myisam;
|
||||
set session storage_engine=myisam;
|
||||
drop table if exists t1,t2,t3,t4,t5,t6;
|
||||
drop database if exists mysqltest;
|
||||
create table t1 (a int not null primary key auto_increment, message char(20));
|
||||
@@ -584,7 +586,9 @@ INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2);
|
||||
CREATE TEMPORARY TABLE t3 (c1 INT NOT NULL) ENGINE=MRG_MYISAM UNION=(t1,t2);
|
||||
SELECT * FROM t3;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
c1
|
||||
1
|
||||
2
|
||||
CREATE TEMPORARY TABLE t4 (c1 INT NOT NULL);
|
||||
CREATE TEMPORARY TABLE t5 (c1 INT NOT NULL);
|
||||
INSERT INTO t4 VALUES (4);
|
||||
@@ -613,7 +617,9 @@ ERROR HY000: Unable to open underlying table which is differently defined or of
|
||||
drop table t3;
|
||||
create temporary table t3 (a int not null) ENGINE=MERGE UNION=(t1,t2);
|
||||
select * from t3;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
a
|
||||
1
|
||||
2
|
||||
drop table t3, t2, t1;
|
||||
# CREATE...SELECT is not implemented for MERGE tables.
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT NOT NULL);
|
||||
@@ -1196,12 +1202,13 @@ ERROR HY000: Table 't4' was not locked with LOCK TABLES
|
||||
# it can even be used.
|
||||
CREATE TEMPORARY TABLE t4 LIKE t3;
|
||||
SHOW CREATE TABLE t4;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
Table Create Table
|
||||
t4 CREATE TEMPORARY TABLE `t4` (
|
||||
`c1` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
INSERT INTO t4 VALUES (4);
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
UNLOCK TABLES;
|
||||
INSERT INTO t4 VALUES (4);
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
DROP TABLE t4;
|
||||
#
|
||||
# Rename child.
|
||||
@@ -1229,6 +1236,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
RENAME TABLE t2 TO t5;
|
||||
SELECT * FROM t3 ORDER BY c1;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
@@ -1239,6 +1248,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
#
|
||||
# 3. Normal rename with locked tables.
|
||||
LOCK TABLES t1 WRITE, t2 WRITE, t3 WRITE;
|
||||
@@ -1248,6 +1259,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
RENAME TABLE t2 TO t5;
|
||||
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
||||
SELECT * FROM t3 ORDER BY c1;
|
||||
@@ -1256,6 +1269,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
RENAME TABLE t5 TO t2;
|
||||
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
||||
SELECT * FROM t3 ORDER BY c1;
|
||||
@@ -1264,6 +1279,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
# 4. Alter table rename.
|
||||
@@ -1277,6 +1294,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
#
|
||||
# 5. Alter table rename with locked tables.
|
||||
LOCK TABLES t1 WRITE, t2 WRITE, t3 WRITE;
|
||||
@@ -1293,6 +1312,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
#
|
||||
# Rename parent.
|
||||
#
|
||||
@@ -1304,6 +1325,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
RENAME TABLE t3 TO t5;
|
||||
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
||||
SELECT * FROM t3 ORDER BY c1;
|
||||
@@ -1312,6 +1335,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
RENAME TABLE t5 TO t3;
|
||||
ERROR HY000: Can't execute the given command because you have active locked tables or an active transaction
|
||||
SELECT * FROM t3 ORDER BY c1;
|
||||
@@ -1320,6 +1345,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
#
|
||||
# 5. Alter table rename with locked tables.
|
||||
ALTER TABLE t3 RENAME TO t5;
|
||||
@@ -1335,6 +1362,8 @@ c1
|
||||
2
|
||||
3
|
||||
4
|
||||
4
|
||||
4
|
||||
DROP TABLE t1, t2, t3;
|
||||
#
|
||||
# Drop locked tables.
|
||||
@@ -2650,6 +2679,705 @@ test.t1 optimize Error Unable to open underlying table which is differently defi
|
||||
test.t1 optimize note The storage engine for the table doesn't support optimize
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#36171 - CREATE TEMPORARY TABLE and MERGE engine
|
||||
# More tests with TEMPORARY MERGE table and permanent children.
|
||||
# First without locked tables.
|
||||
#
|
||||
DROP TABLE IF EXISTS t1, t2, t3, t4, m1, m2;
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
INSERT INTO t1 VALUES (111, 121);
|
||||
INSERT INTO m1 VALUES (211, 221);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
#
|
||||
ALTER TABLE m1 RENAME m2;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TEMPORARY TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
#
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
ERROR 42S01: Table 'm1' already exists
|
||||
DROP TABLE m1;
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
#
|
||||
ALTER TABLE m1 ADD COLUMN c3 INT;
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
SELECT * FROM m1;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
ALTER TABLE t1 ADD COLUMN c3 INT;
|
||||
ALTER TABLE t2 ADD COLUMN c3 INT;
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
SELECT * FROM m1;
|
||||
c1 c2 c3
|
||||
111 121 NULL
|
||||
211 221 NULL
|
||||
212 222 232
|
||||
#
|
||||
ALTER TABLE m1 DROP COLUMN c3;
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
SELECT * FROM m1;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
ALTER TABLE t1 DROP COLUMN c3;
|
||||
ALTER TABLE t2 DROP COLUMN c3;
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
CREATE TABLE t3 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3);
|
||||
INSERT INTO m1 VALUES (311, 321);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
311 321
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
SELECT * FROM t3;
|
||||
c1 c2
|
||||
311 321
|
||||
#
|
||||
CREATE TEMPORARY TABLE t4 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3,t4);
|
||||
INSERT INTO m1 VALUES (411, 421);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
311 321
|
||||
411 421
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
SELECT * FROM t3;
|
||||
c1 c2
|
||||
311 321
|
||||
SELECT * FROM t4;
|
||||
c1 c2
|
||||
411 421
|
||||
#
|
||||
ALTER TABLE m1 ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO m1 VALUES (511, 521);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
311 321
|
||||
411 421
|
||||
511 521
|
||||
#
|
||||
ALTER TABLE m1 ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (611, 621);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
611 621
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE t1;
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
#
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
#
|
||||
CREATE TABLE m2 SELECT * FROM m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE m2;
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 SELECT * FROM m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TEMPORARY TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE m2;
|
||||
#
|
||||
CREATE TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT * FROM m2;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
DROP TABLE m2;
|
||||
#
|
||||
CREATE TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
ERROR HY000: 'test.m2' is not BASE TABLE
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
ERROR HY000: 'test.m2' is not BASE TABLE
|
||||
#
|
||||
CREATE TABLE m2 LIKE m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE m2;
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 LIKE m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TEMPORARY TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE m2;
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
311 321
|
||||
411 421
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
#
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
SELECT * FROM m1,m2 WHERE m1.c1=m2.c1;
|
||||
c1 c2 c1 c2
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
111 121 111 121
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
211 221 211 221
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
212 222 212 222
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
213 223 213 223
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, t2, t3, t4, m1, m2;
|
||||
#
|
||||
# Bug#36171 - CREATE TEMPORARY TABLE and MERGE engine
|
||||
# More tests with TEMPORARY MERGE table and permanent children.
|
||||
# (continued) Now the same with locked table.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
INSERT INTO t1 VALUES (111, 121);
|
||||
INSERT INTO m1 VALUES (211, 221);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
#
|
||||
LOCK TABLE m1 WRITE, t1 WRITE, t2 WRITE;
|
||||
#
|
||||
ALTER TABLE m1 RENAME m2;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TEMPORARY TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
#
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
ERROR 42S01: Table 'm1' already exists
|
||||
DROP TABLE m1;
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
#
|
||||
ALTER TABLE m1 ADD COLUMN c3 INT;
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
SELECT * FROM m1;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
ALTER TABLE t1 ADD COLUMN c3 INT;
|
||||
ALTER TABLE t2 ADD COLUMN c3 INT;
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
SELECT * FROM m1;
|
||||
c1 c2 c3
|
||||
111 121 NULL
|
||||
211 221 NULL
|
||||
212 222 232
|
||||
#
|
||||
ALTER TABLE m1 DROP COLUMN c3;
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
SELECT * FROM m1;
|
||||
ERROR HY000: Unable to open underlying table which is differently defined or of non-MyISAM type or doesn't exist
|
||||
ALTER TABLE t1 DROP COLUMN c3;
|
||||
ALTER TABLE t2 DROP COLUMN c3;
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
UNLOCK TABLES;
|
||||
CREATE TABLE t3 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3);
|
||||
LOCK TABLE m1 WRITE;
|
||||
INSERT INTO m1 VALUES (311, 321);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
311 321
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
SELECT * FROM t3;
|
||||
c1 c2
|
||||
311 321
|
||||
#
|
||||
CREATE TEMPORARY TABLE t4 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3,t4);
|
||||
INSERT INTO m1 VALUES (411, 421);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
311 321
|
||||
411 421
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
SELECT * FROM t3;
|
||||
c1 c2
|
||||
311 321
|
||||
SELECT * FROM t4;
|
||||
c1 c2
|
||||
411 421
|
||||
#
|
||||
ALTER TABLE m1 ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
INSERT INTO m1 VALUES (511, 521);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
311 321
|
||||
411 421
|
||||
511 521
|
||||
#
|
||||
ALTER TABLE m1 ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
SELECT * FROM t1;
|
||||
c1 c2
|
||||
111 121
|
||||
SELECT * FROM t2;
|
||||
c1 c2
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (611, 621);
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
611 621
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE t1;
|
||||
SELECT * FROM m1;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
#
|
||||
SHOW CREATE TABLE m1;
|
||||
Table Create Table
|
||||
m1 CREATE TEMPORARY TABLE `m1` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
CREATE TABLE m2 SELECT * FROM m1;
|
||||
ERROR HY000: Table 'm2' was not locked with LOCK TABLES
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 SELECT * FROM m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TEMPORARY TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE m2;
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
311 321
|
||||
411 421
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2;
|
||||
LOCK TABLE m1 WRITE;
|
||||
#
|
||||
# ER_TABLE_NOT_LOCKED is returned in ps-protocol
|
||||
CREATE TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
Got one of the listed errors
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
ERROR HY000: 'test.m2' is not BASE TABLE
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 LIKE m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TEMPORARY TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
SHOW CREATE TABLE m2;
|
||||
Table Create Table
|
||||
m2 CREATE TEMPORARY TABLE `m2` (
|
||||
`c1` int(11) DEFAULT NULL,
|
||||
`c2` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=LAST UNION=(`t1`,`t2`)
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
DROP TABLE m2;
|
||||
#
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1 c2
|
||||
311 321
|
||||
411 421
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
111 121
|
||||
211 221
|
||||
212 222
|
||||
213 223
|
||||
#
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, t2, t3, t4, m1, m2;
|
||||
#
|
||||
# Bug47098 assert in MDL_context::destroy on HANDLER
|
||||
# <damaged merge table> OPEN
|
||||
#
|
||||
@@ -2745,4 +3473,106 @@ m2 CREATE TABLE `m2` (
|
||||
`i` int(11) DEFAULT NULL
|
||||
) ENGINE=MRG_MyISAM DEFAULT CHARSET=latin1 INSERT_METHOD=FIRST UNION=(`t1`)
|
||||
drop tables m1, m2, t1;
|
||||
#
|
||||
# Test case for Bug#54811 "Assert in mysql_lock_have_duplicate()"
|
||||
# Check that unique_table() works correctly for merge tables.
|
||||
#
|
||||
drop table if exists t1, t2, t3, m1, m2;
|
||||
create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
create table t3 (b int);
|
||||
create view v1 as select * from t3,t1;
|
||||
create table m1 (a int) engine=merge union (t1, t2) insert_method=last;
|
||||
create table m2 (a int) engine=merge union (t1, t2) insert_method=first;
|
||||
create temporary table tmp (b int);
|
||||
insert into tmp (b) values (1);
|
||||
insert into t1 (a) values (1);
|
||||
insert into t3 (b) values (1);
|
||||
insert into m1 (a) values ((select max(a) from m1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from m2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from t1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from t2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from t3, m1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from t3, m2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from t3, t1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from t3, t2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from tmp, m1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from tmp, m2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from tmp, t1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from tmp, t2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
insert into m1 (a) values ((select max(a) from v1));
|
||||
ERROR HY000: The definition of table 'v1' prevents operation INSERT on table 'm1'.
|
||||
insert into m1 (a) values ((select max(a) from tmp, v1));
|
||||
ERROR HY000: The definition of table 'v1' prevents operation INSERT on table 'm1'.
|
||||
update m1 set a = ((select max(a) from m1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from m2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from t1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from t2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from t3, m1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from t3, m2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from t3, t1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from t3, t2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from tmp, m1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from tmp, m2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from tmp, t1));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from tmp, t2));
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
update m1 set a = ((select max(a) from v1));
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 'm1'.
|
||||
update m1 set a = ((select max(a) from tmp, v1));
|
||||
ERROR HY000: The definition of table 'v1' prevents operation UPDATE on table 'm1'.
|
||||
delete from m1 where a = (select max(a) from m1);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from m2);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from t1);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from t2);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from t3, m1);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from t3, m2);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from t3, t1);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from t3, t2);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from tmp, m1);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from tmp, m2);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from tmp, t1);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from tmp, t2);
|
||||
ERROR HY000: You can't specify target table 'm1' for update in FROM clause
|
||||
delete from m1 where a = (select max(a) from v1);
|
||||
ERROR HY000: The definition of table 'v1' prevents operation DELETE on table 'm1'.
|
||||
delete from m1 where a = (select max(a) from tmp, v1);
|
||||
ERROR HY000: The definition of table 'v1' prevents operation DELETE on table 'm1'.
|
||||
drop view v1;
|
||||
drop temporary table tmp;
|
||||
drop table t1, t2, t3, m1, m2;
|
||||
End of 6.0 tests
|
||||
|
||||
190
mysql-test/r/merge_mmap.result
Normal file
190
mysql-test/r/merge_mmap.result
Normal file
@@ -0,0 +1,190 @@
|
||||
SET GLOBAL storage_engine = MyISAM;
|
||||
SET SESSION storage_engine = MyISAM;
|
||||
DROP TABLE IF EXISTS t1, t2, m1, m2;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
SELECT * FROM t2;
|
||||
c1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
c1
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
1
|
||||
2
|
||||
3
|
||||
4
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
End of 6.0 tests
|
||||
@@ -47,7 +47,7 @@ ENGINE = MYISAM
|
||||
PARTITION p1 VALUES LESS THAN (20),
|
||||
PARTITION p2 VALUES LESS THAN (100),
|
||||
PARTITION p3 VALUES LESS THAN MAXVALUE ) */;
|
||||
SET DEBUG_SYNC= 'open_tables_acquire_upgradable_mdl SIGNAL removing_partitions WAIT_FOR waiting_for_alter';
|
||||
SET DEBUG_SYNC= 'alter_table_before_open_tables SIGNAL removing_partitions WAIT_FOR waiting_for_alter';
|
||||
SET DEBUG_SYNC= 'alter_table_before_rename_result_table WAIT_FOR delete_done';
|
||||
ALTER TABLE t2 REMOVE PARTITIONING;
|
||||
# Con default
|
||||
|
||||
@@ -1,208 +0,0 @@
|
||||
DROP TABLE IF EXISTS t1,t2;
|
||||
DROP DATABASE IF EXISTS test_$1;
|
||||
create database test_$1;
|
||||
create table test_$1.r1 (i int) raid_type=1;
|
||||
create table test_$1.r2 (i int) raid_type=1 raid_chunks=32;
|
||||
drop database test_$1;
|
||||
create database test_$1;
|
||||
create table test_$1.r2 (i int) raid_type=1 raid_chunks=257;
|
||||
show create table test_$1.r2;
|
||||
Table Create Table
|
||||
r2 CREATE TABLE `r2` (
|
||||
`i` int(11) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1 RAID_TYPE=striped RAID_CHUNKS=255 RAID_CHUNKSIZE=256
|
||||
drop database test_$1;
|
||||
CREATE TABLE t1 (
|
||||
id int unsigned not null auto_increment primary key,
|
||||
c char(255) not null
|
||||
) RAID_TYPE=STRIPED RAID_CHUNKS=2 RAID_CHUNKSIZE=123;
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
450
|
||||
ALTER TABLE t1 ADD COLUMN x INT UNSIGNED NOT NULL;
|
||||
ALTER TABLE t1 ADD KEY c (c);
|
||||
ALTER TABLE t1 DROP KEY c;
|
||||
ALTER TABLE t1 DROP COLUMN x;
|
||||
ALTER TABLE t1 RENAME t2;
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
450
|
||||
DROP TABLE t2;
|
||||
/* variable rows */
|
||||
CREATE TABLE t1 (
|
||||
id int unsigned not null auto_increment primary key,
|
||||
c varchar(255) not null
|
||||
) RAID_TYPE=STRIPED RAID_CHUNKS=5 RAID_CHUNKSIZE=121;
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
INSERT INTO t1 VALUES
|
||||
(NULL,'1'),(NULL,'a'),(NULL,'a'),(NULL,'a'),(NULL,'p'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'b'),(NULL,'a'),(NULL,'a'),(NULL,'q'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'c'),(NULL,'a'),(NULL,'a'),(NULL,'r'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'d'),(NULL,'a'),(NULL,'a'),(NULL,'s'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'e'),(NULL,'a'),(NULL,'a'),(NULL,'t'),(NULL,'a'),
|
||||
(NULL,'6'),(NULL,'f'),(NULL,'a'),(NULL,'a'),(NULL,'u'),(NULL,'a'),
|
||||
(NULL,'7'),(NULL,'g'),(NULL,'a'),(NULL,'a'),(NULL,'v'),(NULL,'a'),
|
||||
(NULL,'8'),(NULL,'h'),(NULL,'a'),(NULL,'a'),(NULL,'w'),(NULL,'a'),
|
||||
(NULL,'9'),(NULL,'i'),(NULL,'a'),(NULL,'a'),(NULL,'x'),(NULL,'a'),
|
||||
(NULL,'0'),(NULL,'j'),(NULL,'a'),(NULL,'a'),(NULL,'y'),(NULL,'a'),
|
||||
(NULL,'1'),(NULL,'k'),(NULL,'a'),(NULL,'a'),(NULL,'z'),(NULL,'a'),
|
||||
(NULL,'2'),(NULL,'l'),(NULL,'a'),(NULL,'a'),(NULL,'/'),(NULL,'a'),
|
||||
(NULL,'3'),(NULL,'m'),(NULL,'a'),(NULL,'a'),(NULL,'*'),(NULL,'a'),
|
||||
(NULL,'4'),(NULL,'n'),(NULL,'a'),(NULL,'a'),(NULL,'+'),(NULL,'a'),
|
||||
(NULL,'5'),(NULL,'o'),(NULL,'a'),(NULL,'a'),(NULL,'?'),(NULL,'a');
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
450
|
||||
ALTER TABLE t1 ADD COLUMN x INT UNSIGNED NOT NULL;
|
||||
ALTER TABLE t1 ADD KEY c (c);
|
||||
ALTER TABLE t1 DROP KEY c;
|
||||
ALTER TABLE t1 DROP COLUMN x;
|
||||
ALTER TABLE t1 RENAME t2;
|
||||
ALTER TABLE t2 CHANGE COLUMN c c VARCHAR(251) NOT NULL;
|
||||
select count(*) from t2;
|
||||
count(*)
|
||||
450
|
||||
DROP TABLE t2;
|
||||
@@ -16,19 +16,21 @@ drop schema foo;
|
||||
# Bug #48940 MDL deadlocks against mysql_rm_db
|
||||
#
|
||||
DROP SCHEMA IF EXISTS schema1;
|
||||
DROP SCHEMA IF EXISTS schema2;
|
||||
# Connection default
|
||||
CREATE SCHEMA schema1;
|
||||
CREATE SCHEMA schema2;
|
||||
CREATE TABLE schema1.t1 (a INT);
|
||||
SET autocommit= FALSE;
|
||||
INSERT INTO schema1.t1 VALUES (1);
|
||||
# Connection 2
|
||||
DROP SCHEMA schema1;
|
||||
# Connection default
|
||||
ALTER SCHEMA schema1 DEFAULT CHARACTER SET utf8;
|
||||
Got one of the listed errors
|
||||
ALTER SCHEMA schema2 DEFAULT CHARACTER SET utf8;
|
||||
SET autocommit= TRUE;
|
||||
# Connection 2
|
||||
# Connection default
|
||||
DROP SCHEMA schema2;
|
||||
#
|
||||
# Bug #49988 MDL deadlocks with mysql_create_db, reload_acl_and_cache
|
||||
#
|
||||
@@ -48,3 +50,48 @@ ERROR HY000: Can't execute the given command because you have active locked tabl
|
||||
UNLOCK TABLES;
|
||||
# Connection con2
|
||||
# Connection default
|
||||
#
|
||||
# Bug#54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER
|
||||
#
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (a INT);
|
||||
INSERT INTO db1.t1 VALUES (1), (2);
|
||||
# Connection con1
|
||||
HANDLER db1.t1 OPEN;
|
||||
# Connection default
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection con2
|
||||
# Connection con1
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
HANDLER t1 CLOSE;
|
||||
# Connection default
|
||||
# Reaping: DROP DATABASE db1
|
||||
#
|
||||
# Tests for increased CREATE/ALTER/DROP DATABASE concurrency with
|
||||
# database name locks.
|
||||
#
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
# Connection default
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (id INT);
|
||||
START TRANSACTION;
|
||||
INSERT INTO db1.t1 VALUES (1);
|
||||
# Connection 2
|
||||
# DROP DATABASE should block due to the active transaction
|
||||
# Sending:
|
||||
DROP DATABASE db1;
|
||||
# Connection 3
|
||||
# But it should still be possible to CREATE/ALTER/DROP other databases.
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
# Connection default
|
||||
# End the transaction so DROP DATABASE db1 can continue
|
||||
COMMIT;
|
||||
# Connection 2
|
||||
# Reaping: DROP DATABASE db1
|
||||
# Connection default;
|
||||
|
||||
@@ -1466,3 +1466,51 @@ t1 CREATE TABLE `t1` (
|
||||
# Switching to connection 'default'.
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#54905 Connection with WRITE lock cannot ALTER table due to
|
||||
# concurrent SHOW CREATE
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1(a INT);
|
||||
# Connection con1
|
||||
LOCK TABLE t1 WRITE;
|
||||
# Connection default
|
||||
START TRANSACTION;
|
||||
SHOW CREATE TABLE t1;
|
||||
Table Create Table
|
||||
t1 CREATE TABLE `t1` (
|
||||
`a` int(11) DEFAULT NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=latin1
|
||||
# Connection con1
|
||||
ALTER TABLE t1 CHARACTER SET = utf8;
|
||||
UNLOCK TABLES;
|
||||
# Connection default
|
||||
COMMIT;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#55498 SHOW CREATE TRIGGER takes wrong type of metadata lock.
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET new.a = 1;
|
||||
# Test 1: SHOW CREATE TRIGGER with WRITE locked table.
|
||||
# Connection con1
|
||||
LOCK TABLE t1 WRITE;
|
||||
# Connection default
|
||||
SHOW CREATE TRIGGER t1_bi;
|
||||
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
|
||||
t1_bi CREATE DEFINER=`root`@`localhost` TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET new.a = 1 utf8 utf8_general_ci latin1_swedish_ci
|
||||
# Connection con1
|
||||
UNLOCK TABLES;
|
||||
# Test 2: ALTER TABLE with SHOW CREATE TRIGGER in transaction
|
||||
# Connection default
|
||||
START TRANSACTION;
|
||||
SHOW CREATE TRIGGER t1_bi;
|
||||
Trigger sql_mode SQL Original Statement character_set_client collation_connection Database Collation
|
||||
t1_bi CREATE DEFINER=`root`@`localhost` TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET new.a = 1 utf8 utf8_general_ci latin1_swedish_ci
|
||||
# Connection con1
|
||||
ALTER TABLE t1 CHARACTER SET = utf8;
|
||||
# Connection default
|
||||
COMMIT;
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -1189,6 +1189,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by SQLSTATE
|
||||
Caught by SQLSTATE
|
||||
Warnings:
|
||||
Warning 1012 Raising a warning
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1204,6 +1206,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by number
|
||||
Caught by number
|
||||
Warnings:
|
||||
Warning 1012 Raising a warning
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1219,6 +1223,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by SQLWARNING
|
||||
Caught by SQLWARNING
|
||||
Warnings:
|
||||
Warning 1012 Raising a warning
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1234,6 +1240,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by SQLSTATE
|
||||
Caught by SQLSTATE
|
||||
Warnings:
|
||||
Error 1012 Raising a not found
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1249,6 +1257,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by number
|
||||
Caught by number
|
||||
Warnings:
|
||||
Error 1012 Raising a not found
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1264,6 +1274,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by NOT FOUND
|
||||
Caught by NOT FOUND
|
||||
Warnings:
|
||||
Error 1012 Raising a not found
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1279,6 +1291,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by SQLSTATE
|
||||
Caught by SQLSTATE
|
||||
Warnings:
|
||||
Error 1012 Raising an error
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1294,6 +1308,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by number
|
||||
Caught by number
|
||||
Warnings:
|
||||
Error 1012 Raising an error
|
||||
drop procedure test_signal $$
|
||||
create procedure test_signal()
|
||||
begin
|
||||
@@ -1309,6 +1325,8 @@ end $$
|
||||
call test_signal() $$
|
||||
Caught by SQLEXCEPTION
|
||||
Caught by SQLEXCEPTION
|
||||
Warnings:
|
||||
Error 1012 Raising an error
|
||||
drop procedure test_signal $$
|
||||
#
|
||||
# Test where SIGNAL can be used
|
||||
@@ -1455,6 +1473,7 @@ after RESIGNAL
|
||||
after RESIGNAL
|
||||
Warnings:
|
||||
Warning 1012 Raising a warning
|
||||
Warning 1012 Raising a warning
|
||||
drop procedure test_resignal $$
|
||||
create procedure test_resignal()
|
||||
begin
|
||||
@@ -1509,6 +1528,7 @@ after RESIGNAL
|
||||
after RESIGNAL
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
drop procedure test_resignal $$
|
||||
create procedure test_resignal()
|
||||
begin
|
||||
@@ -1565,6 +1585,7 @@ before RESIGNAL
|
||||
after RESIGNAL
|
||||
after RESIGNAL
|
||||
Warnings:
|
||||
Warning 1012 Raising a warning
|
||||
Warning 5555 RESIGNAL of a warning
|
||||
drop procedure test_resignal $$
|
||||
create procedure test_resignal()
|
||||
@@ -1625,6 +1646,7 @@ before RESIGNAL
|
||||
after RESIGNAL
|
||||
after RESIGNAL
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
Warning 5555 RESIGNAL of a warning
|
||||
drop procedure test_resignal $$
|
||||
create procedure test_resignal()
|
||||
@@ -2126,6 +2148,9 @@ CALL peter_p2() $$
|
||||
ERROR 42000: Hi, I am a useless error message
|
||||
show warnings $$
|
||||
Level Code Message
|
||||
Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 9999 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 9999 Hi, I am a useless error message
|
||||
drop procedure peter_p1 $$
|
||||
drop procedure peter_p2 $$
|
||||
@@ -2135,15 +2160,17 @@ DECLARE x CONDITION FOR SQLSTATE '42000';
|
||||
DECLARE EXIT HANDLER FOR x
|
||||
BEGIN
|
||||
SELECT '2';
|
||||
SHOW WARNINGS;
|
||||
RESIGNAL x SET MYSQL_ERRNO = 9999;
|
||||
END;
|
||||
BEGIN
|
||||
DECLARE EXIT HANDLER FOR x
|
||||
BEGIN
|
||||
SELECT '1';
|
||||
SHOW WARNINGS;
|
||||
RESIGNAL x SET
|
||||
SCHEMA_NAME = 'test',
|
||||
MYSQL_ERRNO= 1231;
|
||||
MYSQL_ERRNO= 1232;
|
||||
END;
|
||||
/* Raises ER_WRONG_VALUE_FOR_VAR : 1231, SQLSTATE 42000 */
|
||||
SET @@sql_mode=NULL;
|
||||
@@ -2156,6 +2183,7 @@ DECLARE x CONDITION for SQLSTATE '42000';
|
||||
DECLARE EXIT HANDLER FOR x
|
||||
BEGIN
|
||||
SELECT '3';
|
||||
SHOW WARNINGS;
|
||||
RESIGNAL x SET
|
||||
MESSAGE_TEXT = 'Hi, I am a useless error message',
|
||||
MYSQL_ERRNO = 9999;
|
||||
@@ -2166,15 +2194,24 @@ $$
|
||||
CALL peter_p2() $$
|
||||
1
|
||||
1
|
||||
Level Code Message
|
||||
Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
2
|
||||
2
|
||||
Level Code Message
|
||||
Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 1232 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
3
|
||||
3
|
||||
Level Code Message
|
||||
Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 1232 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 9999 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
ERROR 42000: Hi, I am a useless error message
|
||||
show warnings $$
|
||||
Level Code Message
|
||||
Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 1231 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 1232 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 9999 Variable 'sql_mode' can't be set to the value of 'NULL'
|
||||
Error 9999 Hi, I am a useless error message
|
||||
drop procedure peter_p1 $$
|
||||
|
||||
@@ -95,11 +95,11 @@ call proc_1();
|
||||
ERROR 45000: Oops in proc_1
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1644 Oops in proc_5
|
||||
Error 1644 Oops in proc_4
|
||||
Error 1644 Oops in proc_3
|
||||
Error 1644 Oops in proc_2
|
||||
Error 1644 Oops in proc_1
|
||||
Error 1051 Unknown table 'oops_it_is_not_here'
|
||||
Error 1644 Oops in proc_9
|
||||
Error 1644 Oops in proc_8
|
||||
Error 1644 Oops in proc_7
|
||||
Error 1644 Oops in proc_6
|
||||
SET @@session.max_error_count = 7;
|
||||
SELECT @@session.max_error_count;
|
||||
@@session.max_error_count
|
||||
@@ -108,13 +108,13 @@ call proc_1();
|
||||
ERROR 45000: Oops in proc_1
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1051 Unknown table 'oops_it_is_not_here'
|
||||
Error 1644 Oops in proc_9
|
||||
Error 1644 Oops in proc_8
|
||||
Error 1644 Oops in proc_7
|
||||
Error 1644 Oops in proc_6
|
||||
Error 1644 Oops in proc_5
|
||||
Error 1644 Oops in proc_4
|
||||
Error 1644 Oops in proc_3
|
||||
Error 1644 Oops in proc_2
|
||||
Error 1644 Oops in proc_1
|
||||
SET @@session.max_error_count = 9;
|
||||
SELECT @@session.max_error_count;
|
||||
@@session.max_error_count
|
||||
@@ -123,6 +123,7 @@ call proc_1();
|
||||
ERROR 45000: Oops in proc_1
|
||||
show warnings;
|
||||
Level Code Message
|
||||
Error 1051 Unknown table 'oops_it_is_not_here'
|
||||
Error 1644 Oops in proc_9
|
||||
Error 1644 Oops in proc_8
|
||||
Error 1644 Oops in proc_7
|
||||
@@ -131,7 +132,6 @@ Error 1644 Oops in proc_5
|
||||
Error 1644 Oops in proc_4
|
||||
Error 1644 Oops in proc_3
|
||||
Error 1644 Oops in proc_2
|
||||
Error 1644 Oops in proc_1
|
||||
drop database demo;
|
||||
SET @@global.max_error_count = @start_global_value;
|
||||
SELECT @@global.max_error_count;
|
||||
|
||||
@@ -46,6 +46,8 @@ end while;
|
||||
close cur1;
|
||||
end|
|
||||
call p1();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select count(*) from t1;
|
||||
count(*)
|
||||
256
|
||||
|
||||
@@ -43,6 +43,8 @@ END|
|
||||
SELECT f2 ();
|
||||
f2 ()
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1305 FUNCTION testdb.f_not_exists does not exist
|
||||
DROP SCHEMA testdb;
|
||||
USE test;
|
||||
#
|
||||
|
||||
@@ -711,6 +711,8 @@ looping i
|
||||
looping 1
|
||||
looping i
|
||||
looping 0
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'a'
|
||||
call proc_26977_works(2);
|
||||
do something
|
||||
do something
|
||||
@@ -730,6 +732,8 @@ looping i
|
||||
looping 0
|
||||
optimizer: keep hreturn
|
||||
optimizer: keep hreturn
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '2' for key 'a'
|
||||
drop table t1;
|
||||
drop procedure proc_26977_broken;
|
||||
drop procedure proc_26977_works;
|
||||
@@ -888,3 +892,56 @@ Pos Instruction
|
||||
4 jump 6
|
||||
5 error 1339
|
||||
DROP PROCEDURE p1;
|
||||
#
|
||||
# Bug#23032: Handlers declared in a SP do not handle warnings generated in sub-SP
|
||||
#
|
||||
|
||||
# - Case 4: check that "No Data trumps Warning".
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE c CURSOR FOR SELECT a FROM t1;
|
||||
OPEN c;
|
||||
BEGIN
|
||||
DECLARE v INT;
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING
|
||||
BEGIN
|
||||
SELECT "Warning found!";
|
||||
SHOW WARNINGS;
|
||||
END;
|
||||
DECLARE EXIT HANDLER FOR NOT FOUND
|
||||
BEGIN
|
||||
SELECT "End of Result Set found!";
|
||||
SHOW WARNINGS;
|
||||
END;
|
||||
WHILE TRUE DO
|
||||
FETCH c INTO v;
|
||||
END WHILE;
|
||||
END;
|
||||
CLOSE c;
|
||||
SELECT a INTO @foo FROM t1 LIMIT 1; # Clear warning stack
|
||||
END|
|
||||
SET SESSION debug="+d,bug23032_emit_warning";
|
||||
CALL p1();
|
||||
Warning found!
|
||||
Warning found!
|
||||
Level Code Message
|
||||
Warning 1105 Unknown error
|
||||
Warning found!
|
||||
Warning found!
|
||||
Level Code Message
|
||||
Warning 1105 Unknown error
|
||||
Warning found!
|
||||
Warning found!
|
||||
Level Code Message
|
||||
Warning 1105 Unknown error
|
||||
End of Result Set found!
|
||||
End of Result Set found!
|
||||
Level Code Message
|
||||
Warning 1105 Unknown error
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SET SESSION debug="-d,bug23032_emit_warning";
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -1344,6 +1344,8 @@ set @in_func := 0;
|
||||
select func_20713_a();
|
||||
func_20713_a()
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1146 Table 'test.bogus_table_20713' doesn't exist
|
||||
select @in_func;
|
||||
@in_func
|
||||
2
|
||||
@@ -1351,6 +1353,8 @@ set @in_func := 0;
|
||||
select func_20713_b();
|
||||
func_20713_b()
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1146 Table 'test.bogus_table_20713' doesn't exist
|
||||
select @in_func;
|
||||
@in_func
|
||||
2
|
||||
@@ -1714,3 +1718,246 @@ DROP PROCEDURE p1;
|
||||
DROP VIEW v1;
|
||||
DROP TABLE t1;
|
||||
End of 5.1 tests
|
||||
#
|
||||
# Bug#23032: Handlers declared in a SP do not handle warnings generated in sub-SP
|
||||
#
|
||||
|
||||
# - Case 1
|
||||
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
||||
DROP PROCEDURE IF EXISTS p5;
|
||||
DROP PROCEDURE IF EXISTS p6;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
SELECT 1;
|
||||
CALL p2();
|
||||
END|
|
||||
CREATE PROCEDURE p2()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
END|
|
||||
CALL p1();
|
||||
CAST('10 ' as unsigned integer)
|
||||
10
|
||||
1
|
||||
1
|
||||
CAST('10 ' as unsigned integer)
|
||||
10
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect INTEGER value: '10 '
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
|
||||
# - Case 2
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE c INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING SET c = c + 1;
|
||||
CALL p2();
|
||||
CALL p3();
|
||||
CALL p4();
|
||||
SELECT c;
|
||||
SELECT @@warning_count;
|
||||
SHOW WARNINGS;
|
||||
END|
|
||||
CREATE PROCEDURE p2()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
END|
|
||||
CREATE PROCEDURE p3()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
SELECT 1;
|
||||
END|
|
||||
CREATE PROCEDURE p4()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
CALL p2();
|
||||
END|
|
||||
CREATE PROCEDURE p5()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
SHOW WARNINGS;
|
||||
END|
|
||||
CREATE PROCEDURE P6()
|
||||
BEGIN
|
||||
DECLARE c INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING SET c = c + 1;
|
||||
CALL p5();
|
||||
SELECT c;
|
||||
END|
|
||||
CALL p1();
|
||||
CAST('10 ' as unsigned integer)
|
||||
10
|
||||
CAST('10 ' as unsigned integer)
|
||||
10
|
||||
1
|
||||
1
|
||||
CAST('10 ' as unsigned integer)
|
||||
10
|
||||
CAST('10 ' as unsigned integer)
|
||||
10
|
||||
c
|
||||
3
|
||||
@@warning_count
|
||||
1
|
||||
Level Code Message
|
||||
Warning 1292 Truncated incorrect INTEGER value: '10 '
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect INTEGER value: '10 '
|
||||
CALL p6();
|
||||
CAST('10 ' as unsigned integer)
|
||||
10
|
||||
Level Code Message
|
||||
Warning 1292 Truncated incorrect INTEGER value: '10 '
|
||||
c
|
||||
1
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect INTEGER value: '10 '
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
DROP PROCEDURE p3;
|
||||
DROP PROCEDURE p4;
|
||||
DROP PROCEDURE p5;
|
||||
DROP PROCEDURE p6;
|
||||
|
||||
# - Case 3: check that "Exception trumps No Data".
|
||||
|
||||
DROP TABLE IF EXISTS t1;
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE c CURSOR FOR SELECT a FROM t1;
|
||||
OPEN c;
|
||||
BEGIN
|
||||
DECLARE v1 INT;
|
||||
DECLARE v2 INT;
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
SELECT "Error caught (expected)";
|
||||
DECLARE EXIT HANDLER FOR NOT FOUND
|
||||
SELECT "End of Result Set found!";
|
||||
WHILE TRUE DO
|
||||
FETCH c INTO v1, v2;
|
||||
END WHILE;
|
||||
END;
|
||||
CLOSE c;
|
||||
SELECT a INTO @foo FROM t1 LIMIT 1; # Clear warning stack
|
||||
END|
|
||||
CALL p1();
|
||||
Error caught (expected)
|
||||
Error caught (expected)
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1;
|
||||
#
|
||||
# Bug#36185: Incorrect precedence for warning and exception handlers
|
||||
#
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
CREATE TABLE t1 (a INT, b INT NOT NULL);
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING SELECT 'warning';
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SELECT 'exception';
|
||||
INSERT INTO t1 VALUES (CAST('10 ' AS SIGNED), NULL);
|
||||
END|
|
||||
CALL p1();
|
||||
exception
|
||||
exception
|
||||
Warnings:
|
||||
Warning 1292 Truncated incorrect INTEGER value: '10 '
|
||||
Error 1048 Column 'b' cannot be null
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
#
|
||||
# Bug#5889: Exit handler for a warning doesn't hide the warning in trigger
|
||||
#
|
||||
|
||||
# - Case 1
|
||||
|
||||
CREATE TABLE t1(a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1, 2);
|
||||
CREATE TRIGGER t1_bu BEFORE UPDATE ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE EXIT HANDLER FOR SQLWARNING
|
||||
SET NEW.a = 10;
|
||||
SET NEW.a = 99999999999;
|
||||
END|
|
||||
UPDATE t1 SET b = 20;
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1264 Out of range value for column 'a' at row 1
|
||||
SELECT * FROM t1;
|
||||
a b
|
||||
10 20
|
||||
DROP TRIGGER t1_bu;
|
||||
DROP TABLE t1;
|
||||
|
||||
# - Case 2
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(b CHAR(1));
|
||||
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 VALUES('ab'); # Produces a warning.
|
||||
INSERT INTO t2 VALUES('b'); # Does not produce a warning,
|
||||
# previous warning should be cleared.
|
||||
END|
|
||||
INSERT INTO t1 VALUES(0);
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
SELECT * FROM t1;
|
||||
a
|
||||
0
|
||||
SELECT * FROM t2;
|
||||
b
|
||||
a
|
||||
b
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
#
|
||||
# Bug#9857: Stored procedures: handler for sqlwarning ignored
|
||||
#
|
||||
SET @sql_mode_saved = @@sql_mode;
|
||||
SET sql_mode = traditional;
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING
|
||||
SELECT 'warning caught (expected)';
|
||||
SELECT 5 / 0;
|
||||
END|
|
||||
CREATE PROCEDURE p2()
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
|
||||
SELECT 'error caught (unexpected)';
|
||||
SELECT 5 / 0;
|
||||
END|
|
||||
CALL p1();
|
||||
5 / 0
|
||||
NULL
|
||||
warning caught (expected)
|
||||
warning caught (expected)
|
||||
Warnings:
|
||||
Warning 1365 Division by 0
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1365 Division by 0
|
||||
CALL p2();
|
||||
5 / 0
|
||||
NULL
|
||||
Warnings:
|
||||
Warning 1365 Division by 0
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1365 Division by 0
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
SET sql_mode = @sql_mode_saved;
|
||||
|
||||
@@ -737,6 +737,8 @@ close c;
|
||||
end|
|
||||
insert into t2 values ("foo", 42, -1.9), ("bar", 3, 12.1), ("zap", 666, -3.14)|
|
||||
call cur1()|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select * from t1|
|
||||
id data
|
||||
foo 40
|
||||
@@ -772,6 +774,8 @@ close c1;
|
||||
close c2;
|
||||
end|
|
||||
call cur2()|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select * from t3 order by i,s|
|
||||
s i
|
||||
bar 3
|
||||
@@ -861,6 +865,8 @@ end$
|
||||
set @@sql_mode = ''|
|
||||
set sql_select_limit = 1|
|
||||
call modes(@c1, @c2)|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
set sql_select_limit = default|
|
||||
select @c1, @c2|
|
||||
@c1 @c2
|
||||
@@ -1682,42 +1688,64 @@ end|
|
||||
call h_ee()|
|
||||
h_ee
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_es()|
|
||||
h_es
|
||||
Outer (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_en()|
|
||||
h_en
|
||||
Outer (good)
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call h_ew()|
|
||||
h_ew
|
||||
Outer (good)
|
||||
call h_ex()|
|
||||
h_ex
|
||||
Outer (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_se()|
|
||||
h_se
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_ss()|
|
||||
h_ss
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_sn()|
|
||||
h_sn
|
||||
Outer (good)
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call h_sw()|
|
||||
h_sw
|
||||
Outer (good)
|
||||
call h_sx()|
|
||||
h_sx
|
||||
Outer (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_ne()|
|
||||
h_ne
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call h_ns()|
|
||||
h_ns
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call h_nn()|
|
||||
h_nn
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call h_we()|
|
||||
h_we
|
||||
Inner (good)
|
||||
@@ -1730,12 +1758,18 @@ Inner (good)
|
||||
call h_xe()|
|
||||
h_xe
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_xs()|
|
||||
h_xs
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
call h_xx()|
|
||||
h_xx
|
||||
Inner (good)
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
drop table t3|
|
||||
drop procedure h_ee|
|
||||
drop procedure h_es|
|
||||
@@ -1884,6 +1918,8 @@ set @x2 = 2;
|
||||
close c1;
|
||||
end|
|
||||
call bug2260()|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select @x2|
|
||||
@x2
|
||||
2
|
||||
@@ -2027,6 +2063,8 @@ insert into t3 values (123456789012);
|
||||
insert into t3 values (0);
|
||||
end|
|
||||
call bug2780()|
|
||||
Warnings:
|
||||
Warning 1264 Out of range value for column 's1' at row 1
|
||||
select @x|
|
||||
@x
|
||||
1
|
||||
@@ -2449,6 +2487,8 @@ declare continue handler for sqlstate 'HY000' begin end;
|
||||
select s1 from t3 union select s2 from t3;
|
||||
end|
|
||||
call bug4904()|
|
||||
Warnings:
|
||||
Error 1267 Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin2_general_ci,IMPLICIT) for operation 'UNION'
|
||||
drop procedure bug4904|
|
||||
drop table t3|
|
||||
drop procedure if exists bug336|
|
||||
@@ -2588,13 +2628,17 @@ select row_count()|
|
||||
row_count()
|
||||
1
|
||||
call bug4905()|
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
select row_count()|
|
||||
row_count()
|
||||
0
|
||||
-1
|
||||
call bug4905()|
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
select row_count()|
|
||||
row_count()
|
||||
0
|
||||
-1
|
||||
select * from t3|
|
||||
s1
|
||||
1
|
||||
@@ -2615,10 +2659,14 @@ insert into t3 values (1)|
|
||||
call bug6029()|
|
||||
sqlstate 23000
|
||||
sqlstate 23000
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
delete from t3|
|
||||
call bug6029()|
|
||||
1136
|
||||
1136
|
||||
Warnings:
|
||||
Error 1136 Column count doesn't match value count at row 1
|
||||
drop procedure bug6029|
|
||||
drop table t3|
|
||||
drop procedure if exists bug8540|
|
||||
@@ -2910,15 +2958,23 @@ end|
|
||||
call bug6900()|
|
||||
2
|
||||
2
|
||||
Warnings:
|
||||
Error 1136 Column count doesn't match value count at row 1
|
||||
call bug9074()|
|
||||
x1 x2 x3 x4 x5 x6
|
||||
1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
call bug6900_9074(0)|
|
||||
sqlexception
|
||||
sqlexception
|
||||
Warnings:
|
||||
Error 1136 Column count doesn't match value count at row 1
|
||||
call bug6900_9074(1)|
|
||||
23000
|
||||
23000
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
drop procedure bug6900|
|
||||
drop procedure bug9074|
|
||||
drop procedure bug6900_9074|
|
||||
@@ -2961,9 +3017,13 @@ delete from t1|
|
||||
call bug9856()|
|
||||
16
|
||||
16
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
call bug9856()|
|
||||
16
|
||||
16
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
drop procedure bug9856|
|
||||
drop procedure if exists bug9674_1|
|
||||
drop procedure if exists bug9674_2|
|
||||
@@ -3194,6 +3254,8 @@ x
|
||||
2
|
||||
x
|
||||
3
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
call bug10961()|
|
||||
x
|
||||
1
|
||||
@@ -3201,6 +3263,8 @@ x
|
||||
2
|
||||
x
|
||||
3
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
drop procedure bug10961|
|
||||
DROP PROCEDURE IF EXISTS bug6866|
|
||||
DROP VIEW IF EXISTS tv|
|
||||
@@ -3316,7 +3380,11 @@ insert into t1 values
|
||||
('Name4', 13),
|
||||
('Name5', 14)|
|
||||
call bug11529()|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
call bug11529()|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
delete from t1|
|
||||
drop procedure bug11529|
|
||||
set character set utf8|
|
||||
@@ -3490,24 +3558,32 @@ end;
|
||||
end if;
|
||||
end|
|
||||
call bug12168('a')|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select * from t4|
|
||||
a
|
||||
1
|
||||
3
|
||||
truncate t4|
|
||||
call bug12168('b')|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select * from t4|
|
||||
a
|
||||
2
|
||||
4
|
||||
truncate t4|
|
||||
call bug12168('a')|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select * from t4|
|
||||
a
|
||||
1
|
||||
3
|
||||
truncate t4|
|
||||
call bug12168('b')|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select * from t4|
|
||||
a
|
||||
2
|
||||
@@ -3807,6 +3883,8 @@ end|
|
||||
call bug7049_2()|
|
||||
Result
|
||||
Caught it
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '42' for key 'x'
|
||||
select * from t3|
|
||||
x
|
||||
42
|
||||
@@ -3814,12 +3892,16 @@ delete from t3|
|
||||
call bug7049_4()|
|
||||
Result
|
||||
Caught it
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '42' for key 'x'
|
||||
select * from t3|
|
||||
x
|
||||
42
|
||||
select bug7049_2()|
|
||||
bug7049_2()
|
||||
1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '42' for key 'x'
|
||||
drop table t3|
|
||||
drop procedure bug7049_1|
|
||||
drop procedure bug7049_2|
|
||||
@@ -3947,6 +4029,8 @@ end|
|
||||
call bug14845()|
|
||||
a
|
||||
0
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
drop procedure bug14845|
|
||||
drop procedure if exists bug13549_1|
|
||||
drop procedure if exists bug13549_2|
|
||||
@@ -4150,6 +4234,8 @@ end|
|
||||
call bug13729()|
|
||||
55
|
||||
55
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
select * from t3|
|
||||
s1
|
||||
1
|
||||
@@ -4186,11 +4272,15 @@ Handler
|
||||
boo
|
||||
v isnull(v)
|
||||
NULL 1
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'undefined_var' in 'field list'
|
||||
call bug14643_2()|
|
||||
Handler
|
||||
boo
|
||||
Handler
|
||||
boo
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'undefined_var' in 'field list'
|
||||
drop procedure bug14643_1|
|
||||
drop procedure bug14643_2|
|
||||
drop procedure if exists bug14304|
|
||||
@@ -4514,11 +4604,15 @@ Handler
|
||||
error
|
||||
End
|
||||
done
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'v' in 'field list'
|
||||
call bug14498_2()|
|
||||
Handler
|
||||
error
|
||||
End
|
||||
done
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'v' in 'field list'
|
||||
call bug14498_3()|
|
||||
v
|
||||
maybe
|
||||
@@ -4526,16 +4620,22 @@ Handler
|
||||
error
|
||||
End
|
||||
done
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'v' in 'field list'
|
||||
call bug14498_4()|
|
||||
Handler
|
||||
error
|
||||
End
|
||||
done
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'v' in 'field list'
|
||||
call bug14498_5()|
|
||||
Handler
|
||||
error
|
||||
End
|
||||
done
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'v' in 'field list'
|
||||
drop procedure bug14498_1|
|
||||
drop procedure bug14498_2|
|
||||
drop procedure bug14498_3|
|
||||
@@ -4546,6 +4646,8 @@ drop procedure if exists bug15231_1|
|
||||
drop procedure if exists bug15231_2|
|
||||
drop procedure if exists bug15231_3|
|
||||
drop procedure if exists bug15231_4|
|
||||
drop procedure if exists bug15231_5|
|
||||
drop procedure if exists bug15231_6|
|
||||
create table t3 (id int not null)|
|
||||
create procedure bug15231_1()
|
||||
begin
|
||||
@@ -4568,7 +4670,7 @@ end|
|
||||
create procedure bug15231_3()
|
||||
begin
|
||||
declare exit handler for sqlwarning
|
||||
select 'Caught it (wrong)' as 'Result';
|
||||
select 'Caught it (correct)' as 'Result';
|
||||
call bug15231_4();
|
||||
end|
|
||||
create procedure bug15231_4()
|
||||
@@ -4576,6 +4678,20 @@ begin
|
||||
declare x decimal(2,1);
|
||||
set x = 'zap';
|
||||
select 'Missed it (correct)' as 'Result';
|
||||
show warnings;
|
||||
end|
|
||||
create procedure bug15231_5()
|
||||
begin
|
||||
declare exit handler for sqlwarning
|
||||
select 'Caught it (wrong)' as 'Result';
|
||||
call bug15231_6();
|
||||
end|
|
||||
create procedure bug15231_6()
|
||||
begin
|
||||
declare x decimal(2,1);
|
||||
set x = 'zap';
|
||||
select 'Missed it (correct)' as 'Result';
|
||||
select id from t3;
|
||||
end|
|
||||
call bug15231_1()|
|
||||
1
|
||||
@@ -4583,19 +4699,29 @@ Before NOT FOUND condition is triggered
|
||||
2
|
||||
After NOT FOUND condtition is triggered
|
||||
xid xdone
|
||||
1 0
|
||||
1 1
|
||||
Warnings:
|
||||
Warning 1329 No data - zero rows fetched, selected, or processed
|
||||
call bug15231_3()|
|
||||
Result
|
||||
Missed it (correct)
|
||||
Level Code Message
|
||||
Warning 1366 Incorrect decimal value: 'zap' for column 'x' at row 1
|
||||
Result
|
||||
Caught it (correct)
|
||||
Warnings:
|
||||
Warning 1366 Incorrect decimal value: 'zap' for column 'x' at row 1
|
||||
drop table if exists t3|
|
||||
drop procedure if exists bug15231_1|
|
||||
drop procedure if exists bug15231_2|
|
||||
drop procedure if exists bug15231_3|
|
||||
drop procedure if exists bug15231_4|
|
||||
call bug15231_5()|
|
||||
Result
|
||||
Missed it (correct)
|
||||
id
|
||||
drop table t3|
|
||||
drop procedure bug15231_1|
|
||||
drop procedure bug15231_2|
|
||||
drop procedure bug15231_3|
|
||||
drop procedure bug15231_4|
|
||||
drop procedure bug15231_5|
|
||||
drop procedure bug15231_6|
|
||||
drop procedure if exists bug15011|
|
||||
create table t3 (c1 int primary key)|
|
||||
insert into t3 values (1)|
|
||||
@@ -4613,6 +4739,8 @@ end|
|
||||
call bug15011()|
|
||||
Handler
|
||||
Inner
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
drop procedure bug15011|
|
||||
drop table t3|
|
||||
drop procedure if exists bug17476|
|
||||
@@ -4688,6 +4816,8 @@ i
|
||||
1
|
||||
i
|
||||
0
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
drop table t3|
|
||||
drop procedure bug16887|
|
||||
drop procedure if exists bug16474_1|
|
||||
@@ -4760,6 +4890,8 @@ declare continue handler for sqlexception begin end;
|
||||
select no_such_function();
|
||||
end|
|
||||
call bug18787()|
|
||||
Warnings:
|
||||
Error 1305 FUNCTION test.no_such_function does not exist
|
||||
drop procedure bug18787|
|
||||
create database bug18344_012345678901|
|
||||
use bug18344_012345678901|
|
||||
@@ -5133,6 +5265,8 @@ statement failed
|
||||
statement failed
|
||||
statement after update
|
||||
statement after update
|
||||
Warnings:
|
||||
Error 1242 Subquery returns more than 1 row
|
||||
select * from t3|
|
||||
a
|
||||
1
|
||||
@@ -5144,6 +5278,8 @@ statement failed
|
||||
statement failed
|
||||
statement after update
|
||||
statement after update
|
||||
Warnings:
|
||||
Error 1242 Subquery returns more than 1 row
|
||||
select * from t3|
|
||||
a
|
||||
1
|
||||
@@ -5176,6 +5312,8 @@ in continue handler
|
||||
in continue handler
|
||||
reachable code a2
|
||||
reachable code a2
|
||||
Warnings:
|
||||
Error 1242 Subquery returns more than 1 row
|
||||
select * from t3|
|
||||
a
|
||||
1
|
||||
@@ -5191,6 +5329,8 @@ in continue handler
|
||||
in continue handler
|
||||
reachable code a2
|
||||
reachable code a2
|
||||
Warnings:
|
||||
Error 1242 Subquery returns more than 1 row
|
||||
select * from t3|
|
||||
a
|
||||
1
|
||||
@@ -5224,6 +5364,8 @@ in continue handler
|
||||
in continue handler
|
||||
reachable code a2
|
||||
reachable code a2
|
||||
Warnings:
|
||||
Error 1305 FUNCTION test.no_such_function does not exist
|
||||
drop procedure bug8153_proc_a|
|
||||
drop procedure bug8153_proc_b|
|
||||
drop table t3|
|
||||
@@ -5792,9 +5934,13 @@ end|
|
||||
select func_8407_a()|
|
||||
func_8407_a()
|
||||
NULL
|
||||
Warnings:
|
||||
Error 1146 Table 'test.no_such_view' doesn't exist
|
||||
select func_8407_b()|
|
||||
func_8407_b()
|
||||
1500
|
||||
Warnings:
|
||||
Error 1146 Table 'test.no_such_view' doesn't exist
|
||||
drop function func_8407_a|
|
||||
drop function func_8407_b|
|
||||
drop table if exists table_26503|
|
||||
@@ -5916,6 +6062,8 @@ looping i
|
||||
looping 0
|
||||
leaving handler
|
||||
leaving handler
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'a'
|
||||
call proc_26503_ok_2(2)|
|
||||
do something
|
||||
do something
|
||||
@@ -5927,6 +6075,8 @@ looping i
|
||||
looping 4
|
||||
leaving handler
|
||||
leaving handler
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '2' for key 'a'
|
||||
call proc_26503_ok_3(3)|
|
||||
do something
|
||||
do something
|
||||
@@ -5946,6 +6096,8 @@ looping i
|
||||
looping 0
|
||||
leaving handler
|
||||
leaving handler
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '3' for key 'a'
|
||||
call proc_26503_ok_4(4)|
|
||||
do something
|
||||
do something
|
||||
@@ -5957,6 +6109,8 @@ looping i
|
||||
looping 4
|
||||
leaving handler
|
||||
leaving handler
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '4' for key 'a'
|
||||
drop table table_26503|
|
||||
drop procedure proc_26503_ok_1|
|
||||
drop procedure proc_26503_ok_2|
|
||||
@@ -6670,6 +6824,8 @@ DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SET @exception:= 'run';
|
||||
SELECT x FROM t1;
|
||||
END|
|
||||
CALL bug29770();
|
||||
Warnings:
|
||||
Error 1054 Unknown column 'x' in 'field list'
|
||||
SELECT @state, @exception;
|
||||
@state @exception
|
||||
run NULL
|
||||
@@ -6708,6 +6864,8 @@ end;
|
||||
end while;
|
||||
end//
|
||||
call proc_33618(20);
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
drop table t_33618;
|
||||
drop procedure proc_33618;
|
||||
#
|
||||
|
||||
@@ -99,6 +99,8 @@ return i;
|
||||
end|
|
||||
set @error_in_func:= 0|
|
||||
insert into t1 values (bug10015_6(5)), (bug10015_6(6))|
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry '1' for key 'PRIMARY'
|
||||
select @error_in_func|
|
||||
@error_in_func
|
||||
1
|
||||
@@ -524,6 +526,8 @@ until done end repeat;
|
||||
close c;
|
||||
end|
|
||||
call bug14210()|
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
select count(*) from t4|
|
||||
count(*)
|
||||
256
|
||||
|
||||
@@ -1190,6 +1190,8 @@ select'a'; insert into t1 values (200); end;|
|
||||
call t1();
|
||||
a
|
||||
a
|
||||
Warnings:
|
||||
Error 1264 Out of range value for column 'col1' at row 1
|
||||
select * from t1;
|
||||
col1
|
||||
drop procedure t1;
|
||||
|
||||
@@ -210,4 +210,16 @@ UPDATE t1,t2 SET t1.a = t2.a;
|
||||
INSERT INTO t2 SELECT f1();
|
||||
DROP TABLE t1,t2,t3;
|
||||
DROP FUNCTION f1;
|
||||
#
|
||||
# Bug #48067: A temp table with the same name as an existing table,
|
||||
# makes drop database fail.
|
||||
#
|
||||
DROP TEMPORARY TABLE IF EXISTS bug48067.t1;
|
||||
DROP DATABASE IF EXISTS bug48067;
|
||||
CREATE DATABASE bug48067;
|
||||
CREATE TABLE bug48067.t1 (c1 int);
|
||||
INSERT INTO bug48067.t1 values (1);
|
||||
CREATE TEMPORARY TABLE bug48067.t1 (c1 int);
|
||||
DROP DATABASE bug48067;
|
||||
DROP TEMPORARY table bug48067.t1;
|
||||
End of 5.1 tests
|
||||
|
||||
@@ -1677,3 +1677,25 @@ SET @@sql_quote_show_create = @sql_quote_show_create_saved;
|
||||
|
||||
# End of Bug#34828.
|
||||
|
||||
# Make sure we can manipulate with autocommit in the
|
||||
# along with other variables.
|
||||
drop table if exists t1;
|
||||
drop function if exists t1_max;
|
||||
drop function if exists t1_min;
|
||||
create table t1 (a int) engine=innodb;
|
||||
insert into t1(a) values (0), (1);
|
||||
create function t1_max() returns int return (select max(a) from t1);
|
||||
create function t1_min() returns int return (select min(a) from t1);
|
||||
select t1_min();
|
||||
t1_min()
|
||||
0
|
||||
select t1_max();
|
||||
t1_max()
|
||||
1
|
||||
set @@session.autocommit=t1_min(), @@session.autocommit=t1_max(),
|
||||
@@session.autocommit=t1_min(), @@session.autocommit=t1_max(),
|
||||
@@session.autocommit=t1_min(), @@session.autocommit=t1_max();
|
||||
# Cleanup.
|
||||
drop table t1;
|
||||
drop function t1_min;
|
||||
drop function t1_max;
|
||||
|
||||
@@ -1955,15 +1955,15 @@ CHECK TABLE v1, v2, v3, v4, v5, v6;
|
||||
Table Op Msg_type Msg_text
|
||||
test.v1 check Error FUNCTION test.f1 does not exist
|
||||
test.v1 check Error View 'test.v1' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
test.v1 check status Operation failed
|
||||
test.v1 check error Corrupt
|
||||
test.v2 check status OK
|
||||
test.v3 check Error FUNCTION test.f1 does not exist
|
||||
test.v3 check Error View 'test.v3' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
test.v3 check status Operation failed
|
||||
test.v3 check error Corrupt
|
||||
test.v4 check status OK
|
||||
test.v5 check Error FUNCTION test.f1 does not exist
|
||||
test.v5 check Error View 'test.v5' references invalid table(s) or column(s) or function(s) or definer/invoker of view lack rights to use them
|
||||
test.v5 check status Operation failed
|
||||
test.v5 check error Corrupt
|
||||
test.v6 check status OK
|
||||
create function f1 () returns int return (select max(col1) from t1);
|
||||
DROP TABLE t1;
|
||||
@@ -3946,6 +3946,8 @@ create view a as select 1;
|
||||
end|
|
||||
call p();
|
||||
call p();
|
||||
Warnings:
|
||||
Error 1050 Table 'a' already exists
|
||||
drop view a;
|
||||
drop procedure p;
|
||||
#
|
||||
|
||||
@@ -54,7 +54,7 @@ PASSWORD '',
|
||||
PORT SLAVE_PORT,
|
||||
SOCKET '',
|
||||
OWNER 'root');
|
||||
select * from mysql.servers;
|
||||
select * from mysql.servers order by Server_name;
|
||||
Server_name Host Db Username Password Port Socket Wrapper Owner
|
||||
server_one 127.0.0.1 first_db root SLAVE_PORT mysql root
|
||||
server_two 127.0.0.1 second_db root SLAVE_PORT mysql root
|
||||
@@ -154,7 +154,7 @@ id name
|
||||
drop table federated.t1;
|
||||
drop server 'server_one';
|
||||
drop server 'server_two';
|
||||
select * from mysql.servers;
|
||||
select * from mysql.servers order by Server_name;
|
||||
Server_name Host Db Username Password Port Socket Wrapper Owner
|
||||
drop table first_db.t1;
|
||||
drop table second_db.t1;
|
||||
@@ -254,6 +254,8 @@ password '', socket '', owner '', port 3306);
|
||||
drop server 's1';
|
||||
# End of 5.1 tests
|
||||
use test;
|
||||
create table t1(a int);
|
||||
insert into t1 values (1);
|
||||
create procedure p1 ()
|
||||
begin
|
||||
DECLARE v INT DEFAULT 0;
|
||||
@@ -268,11 +270,13 @@ ALTER SERVER s OPTIONS (USER 'Remote');
|
||||
DROP SERVER s;
|
||||
SET v = v + 1;
|
||||
END WHILE;
|
||||
select a into @a from t1; # Just reset warnings
|
||||
END//
|
||||
use test;
|
||||
call p1();
|
||||
call p1();
|
||||
drop procedure p1;
|
||||
drop table t1;
|
||||
drop server if exists s;
|
||||
DROP TABLE IF EXISTS federated.t1;
|
||||
DROP DATABASE federated;
|
||||
|
||||
@@ -62,7 +62,7 @@ eval create server 'server_two' foreign data wrapper 'mysql' options
|
||||
OWNER 'root');
|
||||
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
eval select * from mysql.servers;
|
||||
eval select * from mysql.servers order by Server_name;
|
||||
|
||||
DROP TABLE IF EXISTS federated.old;
|
||||
--replace_result $SLAVE_MYPORT SLAVE_PORT
|
||||
@@ -147,7 +147,7 @@ drop table federated.t1;
|
||||
|
||||
drop server 'server_one';
|
||||
drop server 'server_two';
|
||||
select * from mysql.servers;
|
||||
select * from mysql.servers order by Server_name;
|
||||
|
||||
connection slave;
|
||||
drop table first_db.t1;
|
||||
@@ -301,6 +301,8 @@ drop server 's1';
|
||||
connect (other,localhost,root,,);
|
||||
connection master;
|
||||
use test;
|
||||
create table t1(a int);
|
||||
insert into t1 values (1);
|
||||
delimiter //;
|
||||
create procedure p1 ()
|
||||
begin
|
||||
@@ -316,6 +318,7 @@ begin
|
||||
DROP SERVER s;
|
||||
SET v = v + 1;
|
||||
END WHILE;
|
||||
select a into @a from t1; # Just reset warnings
|
||||
END//
|
||||
delimiter ;//
|
||||
connection other;
|
||||
@@ -326,6 +329,7 @@ call p1();
|
||||
connection other;
|
||||
reap;
|
||||
drop procedure p1;
|
||||
drop table t1;
|
||||
drop server if exists s;
|
||||
|
||||
|
||||
|
||||
@@ -347,6 +347,8 @@ CALL h1();
|
||||
-7- 1 1 1 1 1 1
|
||||
END x1 x2 x3 x4 x5 x6
|
||||
END 1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
DROP TABLE IF EXISTS tnull;
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
CREATE TABLE tnull(f1 int);
|
||||
@@ -445,6 +447,8 @@ END//
|
||||
CALL h2();
|
||||
x1 x2 x3 x4 x5 x6
|
||||
1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
SELECT * FROM res_t1;
|
||||
w x
|
||||
a b
|
||||
@@ -550,6 +554,8 @@ exit handler 2
|
||||
exit handler 2
|
||||
exit handler 1
|
||||
exit handler 1
|
||||
Warnings:
|
||||
Error 1146 Table 'db_storedproc.tqq' doesn't exist
|
||||
create table res_t1(w char unique, x char);
|
||||
insert into res_t1 values ('a', 'b');
|
||||
CREATE PROCEDURE h1 ()
|
||||
@@ -580,6 +586,8 @@ END//
|
||||
CALL h1();
|
||||
x1 x2 x3 x4 x5 x6
|
||||
1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
This will fail, SQLSTATE 00000 is not allowed
|
||||
CREATE PROCEDURE sp1()
|
||||
begin1_label:BEGIN
|
||||
@@ -623,6 +631,8 @@ CALL sp2();
|
||||
NULL
|
||||
@x2 @x
|
||||
1 2
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
@@ -654,6 +664,8 @@ ERROR 42000: Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expe
|
||||
CALL sp2();
|
||||
-1- @x2 @x
|
||||
-1- 0 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
SELECT '-3-', @x2, @x;
|
||||
-3- @x2 @x
|
||||
-3- 1 1
|
||||
@@ -696,6 +708,8 @@ CALL sp2();
|
||||
-2- 1 20
|
||||
-4- @x2 @x
|
||||
-4- 11 22
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
@@ -762,21 +776,33 @@ SELECT @done, @x;
|
||||
0 1
|
||||
INSERT INTO temp VALUES('1', NULL);
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
INSERT INTO temp VALUES('2', NULL);
|
||||
CALL sp2();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
INSERT INTO temp VALUES('3', NULL);
|
||||
CALL sp3();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 0
|
||||
INSERT INTO temp VALUES('4', NULL);
|
||||
CALL sp4();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 0
|
||||
@@ -885,18 +911,26 @@ SELECT @done, @x;
|
||||
@done @x
|
||||
0 1
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 2
|
||||
CALL sp2();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 2
|
||||
CALL sp3();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
CALL sp4();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
@@ -1031,6 +1065,8 @@ SQLSTATE
|
||||
21000
|
||||
SQLSTATE
|
||||
24000
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
SELECT '-1-', @x;
|
||||
-1- @x
|
||||
-1- 6
|
||||
@@ -1041,18 +1077,24 @@ SQLSTATE
|
||||
SQLEXCEPTION
|
||||
SQLSTATE
|
||||
24000
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
SELECT '-2-', @x;
|
||||
-2- @x
|
||||
-2- 6
|
||||
CALL sp3();
|
||||
SQLSTATE
|
||||
20000
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
SELECT '-3-', @x;
|
||||
-3- @x
|
||||
-3- 1
|
||||
CALL sp4();
|
||||
SQLSTATE
|
||||
SQLEXCEPTION
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
SELECT '-4-', @x;
|
||||
-4- @x
|
||||
-4- 1
|
||||
@@ -1335,6 +1377,8 @@ CLOSE cur1;
|
||||
CLOSE cur2;
|
||||
END//
|
||||
CALL sp_outer();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT * FROM temp1;
|
||||
f0 cnt f1 f2 f3 f4
|
||||
_sp_out_ 1 a` a` 1000-01-01 -5000
|
||||
|
||||
@@ -348,6 +348,8 @@ CALL h1();
|
||||
-7- 1 1 1 1 1 1
|
||||
END x1 x2 x3 x4 x5 x6
|
||||
END 1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
DROP TABLE IF EXISTS tnull;
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
CREATE TABLE tnull(f1 int);
|
||||
@@ -446,6 +448,8 @@ END//
|
||||
CALL h2();
|
||||
x1 x2 x3 x4 x5 x6
|
||||
1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
SELECT * FROM res_t1;
|
||||
w x
|
||||
a b
|
||||
@@ -551,6 +555,8 @@ exit handler 2
|
||||
exit handler 2
|
||||
exit handler 1
|
||||
exit handler 1
|
||||
Warnings:
|
||||
Error 1146 Table 'db_storedproc.tqq' doesn't exist
|
||||
create table res_t1(w char unique, x char);
|
||||
insert into res_t1 values ('a', 'b');
|
||||
CREATE PROCEDURE h1 ()
|
||||
@@ -581,6 +587,8 @@ END//
|
||||
CALL h1();
|
||||
x1 x2 x3 x4 x5 x6
|
||||
1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
This will fail, SQLSTATE 00000 is not allowed
|
||||
CREATE PROCEDURE sp1()
|
||||
begin1_label:BEGIN
|
||||
@@ -624,6 +632,8 @@ CALL sp2();
|
||||
NULL
|
||||
@x2 @x
|
||||
1 2
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
@@ -655,6 +665,8 @@ ERROR 42000: Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expe
|
||||
CALL sp2();
|
||||
-1- @x2 @x
|
||||
-1- 0 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
SELECT '-3-', @x2, @x;
|
||||
-3- @x2 @x
|
||||
-3- 1 1
|
||||
@@ -697,6 +709,8 @@ CALL sp2();
|
||||
-2- 1 20
|
||||
-4- @x2 @x
|
||||
-4- 11 22
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
@@ -763,21 +777,33 @@ SELECT @done, @x;
|
||||
0 1
|
||||
INSERT INTO temp VALUES('1', NULL);
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
INSERT INTO temp VALUES('2', NULL);
|
||||
CALL sp2();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
INSERT INTO temp VALUES('3', NULL);
|
||||
CALL sp3();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 0
|
||||
INSERT INTO temp VALUES('4', NULL);
|
||||
CALL sp4();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 0
|
||||
@@ -886,18 +912,26 @@ SELECT @done, @x;
|
||||
@done @x
|
||||
0 1
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 2
|
||||
CALL sp2();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 2
|
||||
CALL sp3();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
CALL sp4();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
@@ -1032,6 +1066,8 @@ SQLSTATE
|
||||
21000
|
||||
SQLSTATE
|
||||
24000
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
SELECT '-1-', @x;
|
||||
-1- @x
|
||||
-1- 6
|
||||
@@ -1042,18 +1078,24 @@ SQLSTATE
|
||||
SQLEXCEPTION
|
||||
SQLSTATE
|
||||
24000
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
SELECT '-2-', @x;
|
||||
-2- @x
|
||||
-2- 6
|
||||
CALL sp3();
|
||||
SQLSTATE
|
||||
20000
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
SELECT '-3-', @x;
|
||||
-3- @x
|
||||
-3- 1
|
||||
CALL sp4();
|
||||
SQLSTATE
|
||||
SQLEXCEPTION
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
SELECT '-4-', @x;
|
||||
-4- @x
|
||||
-4- 1
|
||||
@@ -1336,6 +1378,8 @@ CLOSE cur1;
|
||||
CLOSE cur2;
|
||||
END//
|
||||
CALL sp_outer();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT * FROM temp1;
|
||||
f0 cnt f1 f2 f3 f4
|
||||
_sp_out_ 1 a` a` 1000-01-01 -5000
|
||||
|
||||
@@ -348,6 +348,8 @@ CALL h1();
|
||||
-7- 1 1 1 1 1 1
|
||||
END x1 x2 x3 x4 x5 x6
|
||||
END 1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
DROP TABLE IF EXISTS tnull;
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
CREATE TABLE tnull(f1 int);
|
||||
@@ -446,6 +448,8 @@ END//
|
||||
CALL h2();
|
||||
x1 x2 x3 x4 x5 x6
|
||||
1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
SELECT * FROM res_t1;
|
||||
w x
|
||||
a b
|
||||
@@ -551,6 +555,8 @@ exit handler 2
|
||||
exit handler 2
|
||||
exit handler 1
|
||||
exit handler 1
|
||||
Warnings:
|
||||
Error 1146 Table 'db_storedproc.tqq' doesn't exist
|
||||
create table res_t1(w char unique, x char);
|
||||
insert into res_t1 values ('a', 'b');
|
||||
CREATE PROCEDURE h1 ()
|
||||
@@ -581,6 +587,8 @@ END//
|
||||
CALL h1();
|
||||
x1 x2 x3 x4 x5 x6
|
||||
1 1 1 1 1 1
|
||||
Warnings:
|
||||
Error 1062 Duplicate entry 'a' for key 'w'
|
||||
This will fail, SQLSTATE 00000 is not allowed
|
||||
CREATE PROCEDURE sp1()
|
||||
begin1_label:BEGIN
|
||||
@@ -624,6 +632,8 @@ CALL sp2();
|
||||
NULL
|
||||
@x2 @x
|
||||
1 2
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
@@ -655,6 +665,8 @@ ERROR 42000: Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expe
|
||||
CALL sp2();
|
||||
-1- @x2 @x
|
||||
-1- 0 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
SELECT '-3-', @x2, @x;
|
||||
-3- @x2 @x
|
||||
-3- 1 1
|
||||
@@ -697,6 +709,8 @@ CALL sp2();
|
||||
-2- 1 20
|
||||
-4- @x2 @x
|
||||
-4- 11 22
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE sp2;
|
||||
|
||||
@@ -763,21 +777,33 @@ SELECT @done, @x;
|
||||
0 1
|
||||
INSERT INTO temp VALUES('1', NULL);
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
INSERT INTO temp VALUES('2', NULL);
|
||||
CALL sp2();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
INSERT INTO temp VALUES('3', NULL);
|
||||
CALL sp3();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 0
|
||||
INSERT INTO temp VALUES('4', NULL);
|
||||
CALL sp4();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'f1' at row 1
|
||||
Warning 1265 Data truncated for column 'f2' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 0
|
||||
@@ -886,18 +912,26 @@ SELECT @done, @x;
|
||||
@done @x
|
||||
0 1
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 2
|
||||
CALL sp2();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 2
|
||||
CALL sp3();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
CALL sp4();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
@@ -1032,6 +1066,8 @@ SQLSTATE
|
||||
21000
|
||||
SQLSTATE
|
||||
24000
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
SELECT '-1-', @x;
|
||||
-1- @x
|
||||
-1- 6
|
||||
@@ -1042,18 +1078,24 @@ SQLSTATE
|
||||
SQLEXCEPTION
|
||||
SQLSTATE
|
||||
24000
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
SELECT '-2-', @x;
|
||||
-2- @x
|
||||
-2- 6
|
||||
CALL sp3();
|
||||
SQLSTATE
|
||||
20000
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
SELECT '-3-', @x;
|
||||
-3- @x
|
||||
-3- 1
|
||||
CALL sp4();
|
||||
SQLSTATE
|
||||
SQLEXCEPTION
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
SELECT '-4-', @x;
|
||||
-4- @x
|
||||
-4- 1
|
||||
@@ -1336,6 +1378,8 @@ CLOSE cur1;
|
||||
CLOSE cur2;
|
||||
END//
|
||||
CALL sp_outer();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT * FROM temp1;
|
||||
f0 cnt f1 f2 f3 f4
|
||||
_sp_out_ 1 a` a` 1000-01-01 -5000
|
||||
|
||||
@@ -9325,6 +9325,8 @@ insert into t2 values (1);
|
||||
set @x = 3;
|
||||
END//
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Error 1136 Column count doesn't match value count at row 1
|
||||
DROP PROCEDURE sp1;
|
||||
DROP PROCEDURE IF EXISTS sp1;
|
||||
Warnings:
|
||||
@@ -13754,6 +13756,8 @@ END//
|
||||
CALL sp1();
|
||||
x y @x
|
||||
NULL a 3
|
||||
Warnings:
|
||||
Error 1305 PROCEDURE db_storedproc.nonsexist does not exist
|
||||
SELECT @v1, @v2;
|
||||
@v1 @v2
|
||||
4 a
|
||||
@@ -14938,6 +14942,8 @@ NULL NULL
|
||||
NULL NULL
|
||||
@x @y
|
||||
NULL NULL
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
Testcase 4.2.63:
|
||||
@@ -15097,6 +15103,8 @@ END;
|
||||
fetch cur1 into newf1, newf2, newf4, newf3;
|
||||
END//
|
||||
CALL sp1();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
Testcase 4.2.70:
|
||||
@@ -22447,6 +22455,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE h1;
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
@@ -22464,6 +22474,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1305 PROCEDURE db_storedproc.sp1 does not exist
|
||||
DROP PROCEDURE h1;
|
||||
|
||||
Testcase 4.11.3:
|
||||
@@ -22483,6 +22495,8 @@ CALL sp1 (1);
|
||||
set @x=0;
|
||||
END//
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
SELECT @x, @x2;
|
||||
@x @x2
|
||||
1 1
|
||||
@@ -22501,6 +22515,8 @@ CALL sp1 (1);
|
||||
set @x=0;
|
||||
END//
|
||||
CALL h1 ();
|
||||
Warnings:
|
||||
Error 1305 PROCEDURE db_storedproc.sp1 does not exist
|
||||
SELECT @x, @x2;
|
||||
@x @x2
|
||||
1 1
|
||||
@@ -22525,6 +22541,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE h1;
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
@@ -22547,6 +22565,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE h1;
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
@@ -22569,6 +22589,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE h1;
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
@@ -22586,6 +22608,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1305 PROCEDURE db_storedproc.sp1 does not exist
|
||||
DROP PROCEDURE h1;
|
||||
|
||||
Testcase 4.11.9:
|
||||
@@ -22605,6 +22629,8 @@ CALL sp1 (1);
|
||||
set @x=0;
|
||||
END//
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
SELECT @x, @x2;
|
||||
@x @x2
|
||||
1 1
|
||||
@@ -22623,6 +22649,8 @@ CALL sp1 (1);
|
||||
set @x=0;
|
||||
END//
|
||||
CALL h1 ();
|
||||
Warnings:
|
||||
Error 1305 PROCEDURE db_storedproc.sp1 does not exist
|
||||
SELECT @x, @x2;
|
||||
@x @x2
|
||||
1 1
|
||||
@@ -22647,6 +22675,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE h1;
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
@@ -22669,6 +22699,8 @@ END//
|
||||
CALL h1 ();
|
||||
@x @x2
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1318 Incorrect number of arguments for PROCEDURE db_storedproc.sp1; expected 2, got 1
|
||||
DROP PROCEDURE h1;
|
||||
DROP PROCEDURE sp1;
|
||||
|
||||
@@ -22704,6 +22736,8 @@ done
|
||||
1
|
||||
done
|
||||
1
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22777,6 +22811,8 @@ done
|
||||
0
|
||||
done
|
||||
1
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22814,6 +22850,8 @@ done
|
||||
0
|
||||
done
|
||||
1
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22844,6 +22882,8 @@ done
|
||||
0
|
||||
done
|
||||
1
|
||||
Warnings:
|
||||
Error 1328 Incorrect number of FETCH variables
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22874,6 +22914,8 @@ done
|
||||
0
|
||||
done
|
||||
1
|
||||
Warnings:
|
||||
Error 1328 Incorrect number of FETCH variables
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22904,6 +22946,8 @@ END//
|
||||
CALL h1();
|
||||
done
|
||||
0
|
||||
Warnings:
|
||||
Error 1328 Incorrect number of FETCH variables
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22934,6 +22978,8 @@ END//
|
||||
CALL h1();
|
||||
done
|
||||
0
|
||||
Warnings:
|
||||
Error 1328 Incorrect number of FETCH variables
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22964,6 +23010,8 @@ done
|
||||
0
|
||||
done
|
||||
1
|
||||
Warnings:
|
||||
Error 1325 Cursor is already open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -22995,6 +23043,8 @@ done
|
||||
0
|
||||
done @x
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1325 Cursor is already open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -23025,6 +23075,8 @@ END//
|
||||
CALL h1();
|
||||
done
|
||||
0
|
||||
Warnings:
|
||||
Error 1325 Cursor is already open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -23055,6 +23107,8 @@ END//
|
||||
CALL h1();
|
||||
done
|
||||
0
|
||||
Warnings:
|
||||
Error 1325 Cursor is already open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -23082,6 +23136,8 @@ END//
|
||||
CALL h1();
|
||||
done @x
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -23109,6 +23165,8 @@ END//
|
||||
CALL h1();
|
||||
done @x
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -23134,6 +23192,8 @@ set @x=1;
|
||||
SELECT done, @x;
|
||||
END//
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -23159,6 +23219,8 @@ set @x=1;
|
||||
SELECT done, @x;
|
||||
END//
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Error 1326 Cursor is not open
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
drop table IF EXISTS res_t1;
|
||||
drop table IF EXISTS res_t2;
|
||||
@@ -23189,6 +23251,8 @@ END//
|
||||
CALL h1();
|
||||
done @x
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
drop table IF EXISTS res_t1;
|
||||
drop table IF EXISTS res_t2;
|
||||
@@ -23219,6 +23283,8 @@ END//
|
||||
CALL h1();
|
||||
done @x
|
||||
1 1
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
drop table IF EXISTS res_t1;
|
||||
drop table IF EXISTS res_t2;
|
||||
@@ -23247,6 +23313,8 @@ set @x=1;
|
||||
SELECT done, @x;
|
||||
END//
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
drop table IF EXISTS res_t1;
|
||||
drop table IF EXISTS res_t2;
|
||||
@@ -23275,6 +23343,8 @@ set @x=1;
|
||||
SELECT done, @x;
|
||||
END//
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Error 1339 Case not found for CASE statement
|
||||
DROP PROCEDURE IF EXISTS h1;
|
||||
DROP TABLE IF EXISTS res_t1;
|
||||
DROP TABLE IF EXISTS res_t2;
|
||||
@@ -23423,6 +23493,9 @@ CREATE TABLE res_t1(w CHAR, x CHAR);
|
||||
INSERT INTO res_t1 VALUES('a', 'b');
|
||||
INSERT INTO res_t1 VALUES('c', 'd');
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'w' at row 1
|
||||
Warning 1265 Data truncated for column 'x' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
@@ -23445,6 +23518,9 @@ CREATE TABLE res_t1(w CHAR, x CHAR);
|
||||
INSERT INTO res_t1 VALUES('a', 'b');
|
||||
INSERT INTO res_t1 VALUES('c', 'd');
|
||||
CALL h1();
|
||||
Warnings:
|
||||
Warning 1265 Data truncated for column 'w' at row 1
|
||||
Warning 1265 Data truncated for column 'x' at row 1
|
||||
SELECT @done, @x;
|
||||
@done @x
|
||||
1 1
|
||||
|
||||
5
mysql-test/suite/innodb/r/innodb_bug52199.result
Normal file
5
mysql-test/suite/innodb/r/innodb_bug52199.result
Normal file
@@ -0,0 +1,5 @@
|
||||
CREATE TABLE bug52199 (a INT NOT NULL,
|
||||
b CHAR(125) CHARACTER SET utf32 COLLATE utf32_bin NOT NULL
|
||||
)ENGINE=InnoDB;
|
||||
CREATE UNIQUE INDEX idx ON bug52199(a);
|
||||
DROP TABLE bug52199;
|
||||
88
mysql-test/suite/innodb/r/innodb_bug54679.result
Normal file
88
mysql-test/suite/innodb/r/innodb_bug54679.result
Normal file
@@ -0,0 +1,88 @@
|
||||
SET GLOBAL innodb_file_format='Barracuda';
|
||||
SET GLOBAL innodb_file_per_table=ON;
|
||||
SET innodb_strict_mode=ON;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||
bug54679 Compressed row_format=COMPRESSED
|
||||
ALTER TABLE bug54679 ADD COLUMN b INT;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||
bug54679 Compressed row_format=COMPRESSED
|
||||
DROP TABLE bug54679;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||
bug54679 Compact
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||
bug54679 Compressed KEY_BLOCK_SIZE=1
|
||||
ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
|
||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = REDUNDANT with KEY_BLOCK_SIZE.
|
||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||
DROP TABLE bug54679;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||
bug54679 Redundant row_format=REDUNDANT
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
TABLE_NAME ROW_FORMAT CREATE_OPTIONS
|
||||
bug54679 Compressed row_format=REDUNDANT KEY_BLOCK_SIZE=2
|
||||
SET GLOBAL innodb_file_format=Antelope;
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_format > Antelope.
|
||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||
Warning 1478 InnoDB: cannot specify ROW_FORMAT = DYNAMIC with KEY_BLOCK_SIZE.
|
||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||
DROP TABLE bug54679;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_format > Antelope.
|
||||
Error 1005 Can't create table 'test.bug54679' (errno: 1478)
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
SET GLOBAL innodb_file_per_table=OFF;
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: KEY_BLOCK_SIZE requires innodb_file_per_table.
|
||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
||||
ERROR HY000: Can't create table '#sql-temporary' (errno: 1478)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
||||
Error 1005 Can't create table '#sql-temporary' (errno: 1478)
|
||||
DROP TABLE bug54679;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
ERROR HY000: Can't create table 'test.bug54679' (errno: 1478)
|
||||
SHOW WARNINGS;
|
||||
Level Code Message
|
||||
Warning 1478 InnoDB: ROW_FORMAT=DYNAMIC requires innodb_file_per_table.
|
||||
Error 1005 Can't create table 'test.bug54679' (errno: 1478)
|
||||
SET GLOBAL innodb_file_per_table=ON;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
DROP TABLE bug54679;
|
||||
@@ -42,21 +42,7 @@ trx_isolation_level varchar(16) NO
|
||||
trx_unique_checks int(1) NO 0
|
||||
trx_foreign_key_checks int(1) NO 0
|
||||
trx_last_foreign_key_error varchar(256) YES NULL
|
||||
trx_apative_hash_latched int(1) NO 0
|
||||
trx_adaptive_hash_timeout bigint(21) unsigned NO 0
|
||||
trx_operation_state varchar(64) YES NULL
|
||||
trx_tables_in_use bigint(21) unsigned NO 0
|
||||
trx_tables_locked bigint(21) unsigned NO 0
|
||||
trx_lock_structs bigint(21) unsigned NO 0
|
||||
trx_lock_memory_bytes bigint(21) unsigned NO 0
|
||||
trx_rows_locked bigint(21) unsigned NO 0
|
||||
trx_rows_modified bigint(21) unsigned NO 0
|
||||
trx_concurrency_tickets bigint(21) unsigned NO 0
|
||||
trx_isolation_level varchar(16) NO
|
||||
trx_unique_checks int(1) NO 0
|
||||
trx_foreign_key_checks int(1) NO 0
|
||||
trx_last_foreign_key_error varchar(256) YES NULL
|
||||
trx_apative_hash_latched int(1) NO 0
|
||||
trx_adaptive_hash_latched int(1) NO 0
|
||||
trx_adaptive_hash_timeout bigint(21) unsigned NO 0
|
||||
trx_state trx_weight trx_tables_in_use trx_tables_locked trx_rows_locked trx_rows_modified trx_concurrency_tickets trx_isolation_level trx_unique_checks trx_foreign_key_checks
|
||||
RUNNING 4 0 0 7 1 0 REPEATABLE READ 1 1
|
||||
|
||||
7
mysql-test/suite/innodb/t/innodb_bug52199.test
Normal file
7
mysql-test/suite/innodb/t/innodb_bug52199.test
Normal file
@@ -0,0 +1,7 @@
|
||||
-- source include/have_innodb.inc
|
||||
|
||||
CREATE TABLE bug52199 (a INT NOT NULL,
|
||||
b CHAR(125) CHARACTER SET utf32 COLLATE utf32_bin NOT NULL
|
||||
)ENGINE=InnoDB;
|
||||
CREATE UNIQUE INDEX idx ON bug52199(a);
|
||||
DROP TABLE bug52199;
|
||||
101
mysql-test/suite/innodb/t/innodb_bug54679.test
Normal file
101
mysql-test/suite/innodb/t/innodb_bug54679.test
Normal file
@@ -0,0 +1,101 @@
|
||||
# Test Bug #54679 alter table causes compressed row_format to revert to compact
|
||||
|
||||
--source include/have_innodb.inc
|
||||
|
||||
let $file_format=`select @@innodb_file_format`;
|
||||
let $file_format_max=`select @@innodb_file_format_max`;
|
||||
let $file_per_table=`select @@innodb_file_per_table`;
|
||||
SET GLOBAL innodb_file_format='Barracuda';
|
||||
SET GLOBAL innodb_file_per_table=ON;
|
||||
SET innodb_strict_mode=ON;
|
||||
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=COMPRESSED;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
|
||||
# The ROW_FORMAT of the table should be preserved when it is not specified
|
||||
# in ALTER TABLE.
|
||||
ALTER TABLE bug54679 ADD COLUMN b INT;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
|
||||
DROP TABLE bug54679;
|
||||
|
||||
# Check that the ROW_FORMAT conversion to/from COMPRESSED works.
|
||||
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
|
||||
# KEY_BLOCK_SIZE implies COMPRESSED.
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=1;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
ALTER TABLE bug54679 ROW_FORMAT=REDUNDANT;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
SHOW WARNINGS;
|
||||
DROP TABLE bug54679;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=REDUNDANT;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=2;
|
||||
SELECT TABLE_NAME,ROW_FORMAT,CREATE_OPTIONS FROM information_schema.tables
|
||||
WHERE TABLE_NAME='bug54679';
|
||||
|
||||
# This prevents other than REDUNDANT or COMPACT ROW_FORMAT for new tables.
|
||||
SET GLOBAL innodb_file_format=Antelope;
|
||||
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
SHOW WARNINGS;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
SHOW WARNINGS;
|
||||
DROP TABLE bug54679;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
SHOW WARNINGS;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB;
|
||||
|
||||
SET GLOBAL innodb_file_format=Barracuda;
|
||||
# This will prevent ROW_FORMAT=COMPRESSED, because the system tablespace
|
||||
# cannot be compressed.
|
||||
SET GLOBAL innodb_file_per_table=OFF;
|
||||
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
ALTER TABLE bug54679 KEY_BLOCK_SIZE=4;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
SHOW WARNINGS;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
ALTER TABLE bug54679 ROW_FORMAT=DYNAMIC;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
SHOW WARNINGS;
|
||||
DROP TABLE bug54679;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
--error ER_CANT_CREATE_TABLE
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
--replace_regex /'[^']*test\.#sql-[0-9a-f_]*'/'#sql-temporary'/
|
||||
SHOW WARNINGS;
|
||||
SET GLOBAL innodb_file_per_table=ON;
|
||||
CREATE TABLE bug54679 (a INT) ENGINE=InnoDB ROW_FORMAT=DYNAMIC;
|
||||
DROP TABLE bug54679;
|
||||
|
||||
# restore original values, quietly so the test does not fail if those
|
||||
# defaults are changed
|
||||
-- disable_query_log
|
||||
EVAL SET GLOBAL innodb_file_format=$file_format;
|
||||
EVAL SET GLOBAL innodb_file_format_max=$file_format_max;
|
||||
EVAL SET GLOBAL innodb_file_per_table=$file_per_table;
|
||||
-- enable_query_log
|
||||
29
mysql-test/suite/perfschema/include/upgrade_check.inc
Normal file
29
mysql-test/suite/perfschema/include/upgrade_check.inc
Normal file
@@ -0,0 +1,29 @@
|
||||
# Copyright (C) 2010 Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; version 2 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
# Routine to be called by pfs_upgrade.test
|
||||
# $out_file and $err_file must be set within pfs_upgrade.test.
|
||||
#
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL_UPGRADE --skip-verbose > $out_file 2> $err_file
|
||||
|
||||
# Verify that mysql_upgrade complained about the performance_schema
|
||||
--cat_file $err_file
|
||||
--error 0,1
|
||||
--remove_file $out_file
|
||||
--error 0,1
|
||||
--remove_file $err_file
|
||||
|
||||
@@ -65,3 +65,4 @@ Variable_name Value
|
||||
Qcache_hits 1
|
||||
SET GLOBAL query_cache_size= default;
|
||||
drop table t1;
|
||||
flush status;
|
||||
|
||||
@@ -55,14 +55,21 @@ THREAD_ID EVENT_ID
|
||||
[THREAD_ID] [EVENT_ID]
|
||||
[THREAD_ID] [EVENT_ID]
|
||||
[THREAD_ID] [EVENT_ID]
|
||||
DROP TABLE IF EXISTS t_event;
|
||||
DROP EVENT IF EXISTS t_ps_event;
|
||||
CREATE TABLE t_event AS
|
||||
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||
WHERE 1 = 2;
|
||||
CREATE EVENT t_ps_event
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 SECOND
|
||||
DO SELECT DISTINCT EVENT_ID
|
||||
DO INSERT INTO t_event
|
||||
SELECT DISTINCT EVENT_ID
|
||||
FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||
JOIN performance_schema.EVENTS_WAITS_HISTORY USING (EVENT_ID)
|
||||
ORDER BY EVENT_ID
|
||||
LIMIT 1;
|
||||
ALTER TABLE t1 ADD COLUMN c INT;
|
||||
DROP TRIGGER IF EXISTS t_ps_trigger;
|
||||
CREATE TRIGGER t_ps_trigger BEFORE INSERT ON t1
|
||||
FOR EACH ROW BEGIN
|
||||
SET NEW.c = (SELECT MAX(EVENT_ID)
|
||||
@@ -76,6 +83,7 @@ id c
|
||||
12 [EVENT_ID]
|
||||
13 [EVENT_ID]
|
||||
DROP TRIGGER t_ps_trigger;
|
||||
DROP PROCEDURE IF EXISTS t_ps_proc;
|
||||
CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
|
||||
BEGIN
|
||||
SELECT id FROM performance_schema.PROCESSLIST
|
||||
@@ -83,6 +91,7 @@ WHERE THREAD_ID = tid INTO pid;
|
||||
END;
|
||||
|
|
||||
CALL t_ps_proc(0, @p_id);
|
||||
DROP FUNCTION IF EXISTS t_ps_proc;
|
||||
CREATE FUNCTION t_ps_func(tid INT) RETURNS int
|
||||
BEGIN
|
||||
return (SELECT id FROM performance_schema.PROCESSLIST
|
||||
@@ -92,6 +101,10 @@ END;
|
||||
SELECT t_ps_func(0) = @p_id;
|
||||
t_ps_func(0) = @p_id
|
||||
1
|
||||
SELECT * FROM t_event;
|
||||
EVENT_ID
|
||||
[EVENT_ID]
|
||||
DROP PROCEDURE t_ps_proc;
|
||||
DROP FUNCTION t_ps_func;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t_event;
|
||||
|
||||
@@ -40,26 +40,14 @@ where name like "wait/synch/cond/mysys/THR_COND_threads";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_mysql_create_db";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_open";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_lock_db";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_thread_count";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_mapped_file";
|
||||
count(name)
|
||||
1
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_status";
|
||||
count(name)
|
||||
1
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -10,8 +10,8 @@
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||
|
||||
# Tests for PERFORMANCE_SCHEMA
|
||||
# Check error handling for invalid server start options
|
||||
@@ -19,8 +19,11 @@
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_perfschema.inc
|
||||
|
||||
let $outfile= $MYSQLTEST_VARDIR/tmp/bad_option_1.txt;
|
||||
--error 0,1
|
||||
--remove_file $outfile
|
||||
--error 7
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --loose-console --performance-schema-enabled=maybe > $MYSQLTEST_VARDIR/tmp/bad_option_1.txt 2>&1
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --loose-console --performance-schema-enabled=maybe > $outfile 2>&1
|
||||
|
||||
perl;
|
||||
use strict;
|
||||
@@ -42,4 +45,5 @@ perl;
|
||||
}
|
||||
close FILE;
|
||||
EOF
|
||||
--remove_file $outfile
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -10,8 +10,8 @@
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||
|
||||
# Tests for PERFORMANCE_SCHEMA
|
||||
# Check error handling for ambiguous server start options
|
||||
@@ -19,8 +19,11 @@
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_perfschema.inc
|
||||
|
||||
let $outfile= $MYSQLTEST_VARDIR/tmp/bad_option_2.txt;
|
||||
--error 0,1
|
||||
--remove_file $outfile
|
||||
--error 3
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --loose-console --performance-schema-max_=12 > $MYSQLTEST_VARDIR/tmp/bad_option_2.txt 2>&1
|
||||
--exec $MYSQLD_BOOTSTRAP_CMD --loose-console --performance-schema-max_=12 > $outfile 2>&1
|
||||
|
||||
perl;
|
||||
use strict;
|
||||
@@ -41,4 +44,5 @@ perl;
|
||||
}
|
||||
close FILE;
|
||||
EOF
|
||||
--remove_file $outfile
|
||||
|
||||
|
||||
@@ -81,6 +81,7 @@ update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
|
||||
unlock tables;
|
||||
|
||||
disconnect con1;
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--echo connection default;
|
||||
connection default;
|
||||
|
||||
@@ -22,6 +22,15 @@
|
||||
--source include/have_perfschema.inc
|
||||
--source include/have_lowercase0.inc
|
||||
|
||||
# Some initial settings + Preemptive cleanup
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
let $err_file= $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err;
|
||||
let $out_file= $MYSQLTEST_VARDIR/tmp/pfs_upgrade.out;
|
||||
--error 0,1
|
||||
--remove_file $out_file
|
||||
--error 0,1
|
||||
--remove_file $err_file
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists test.user_table;
|
||||
drop procedure if exists test.user_proc;
|
||||
@@ -29,22 +38,20 @@ drop function if exists test.user_func;
|
||||
drop event if exists test.user_event;
|
||||
--enable_warnings
|
||||
|
||||
|
||||
--echo "Testing mysql_upgrade with TABLE performance_schema.user_table"
|
||||
|
||||
create table test.user_table(a int);
|
||||
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
--error 0,1
|
||||
--remove_file $MYSQLD_DATADIR/performance_schema/user_table.frm
|
||||
--copy_file $MYSQLD_DATADIR/test/user_table.frm $MYSQLD_DATADIR/performance_schema/user_table.frm
|
||||
|
||||
# Make sure the table is visible
|
||||
use performance_schema;
|
||||
show tables like "user_table";
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL_UPGRADE --skip-verbose > $MYSQLTEST_VARDIR/tmp/pfs_upgrade.out 2> $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
|
||||
# Verify that mysql_upgrade complained about the performance_schema
|
||||
--cat_file $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
--source suite/perfschema/include/upgrade_check.inc
|
||||
|
||||
# Make sure the table is still visible
|
||||
show tables like "user_table";
|
||||
@@ -54,22 +61,20 @@ use test;
|
||||
--remove_file $MYSQLD_DATADIR/performance_schema/user_table.frm
|
||||
drop table test.user_table;
|
||||
|
||||
|
||||
--echo "Testing mysql_upgrade with VIEW performance_schema.user_view"
|
||||
|
||||
create view test.user_view as select "Not supposed to be here";
|
||||
|
||||
let $MYSQLD_DATADIR= `SELECT @@datadir`;
|
||||
--error 0,1
|
||||
--remove_file $MYSQLD_DATADIR/performance_schema/user_view.frm
|
||||
--copy_file $MYSQLD_DATADIR/test/user_view.frm $MYSQLD_DATADIR/performance_schema/user_view.frm
|
||||
|
||||
# Make sure the view is visible
|
||||
use performance_schema;
|
||||
show tables like "user_view";
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL_UPGRADE --skip-verbose > $MYSQLTEST_VARDIR/tmp/pfs_upgrade.out 2> $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
|
||||
# Verify that mysql_upgrade complained about the performance_schema
|
||||
--cat_file $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
--source suite/perfschema/include/upgrade_check.inc
|
||||
|
||||
# Make sure the view is still visible
|
||||
show tables like "user_view";
|
||||
@@ -79,6 +84,7 @@ use test;
|
||||
--remove_file $MYSQLD_DATADIR/performance_schema/user_view.frm
|
||||
drop view test.user_view;
|
||||
|
||||
|
||||
--echo "Testing mysql_upgrade with PROCEDURE performance_schema.user_proc"
|
||||
|
||||
create procedure test.user_proc()
|
||||
@@ -86,17 +92,14 @@ create procedure test.user_proc()
|
||||
|
||||
update mysql.proc set db='performance_schema' where name='user_proc';
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL_UPGRADE --skip-verbose > $MYSQLTEST_VARDIR/tmp/pfs_upgrade.out 2> $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
|
||||
# Verify that mysql_upgrade complained about the performance_schema
|
||||
--cat_file $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
--source suite/perfschema/include/upgrade_check.inc
|
||||
|
||||
select name from mysql.proc where db='performance_schema';
|
||||
|
||||
update mysql.proc set db='test' where name='user_proc';
|
||||
drop procedure test.user_proc;
|
||||
|
||||
|
||||
--echo "Testing mysql_upgrade with FUNCTION performance_schema.user_func"
|
||||
|
||||
create function test.user_func() returns integer
|
||||
@@ -104,17 +107,14 @@ create function test.user_func() returns integer
|
||||
|
||||
update mysql.proc set db='performance_schema' where name='user_func';
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL_UPGRADE --skip-verbose > $MYSQLTEST_VARDIR/tmp/pfs_upgrade.out 2> $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
|
||||
# Verify that mysql_upgrade complained about the performance_schema
|
||||
--cat_file $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
--source suite/perfschema/include/upgrade_check.inc
|
||||
|
||||
select name from mysql.proc where db='performance_schema';
|
||||
|
||||
update mysql.proc set db='test' where name='user_func';
|
||||
drop function test.user_func;
|
||||
|
||||
|
||||
--echo "Testing mysql_upgrade with EVENT performance_schema.user_event"
|
||||
|
||||
create event test.user_event on schedule every 1 day do
|
||||
@@ -122,17 +122,10 @@ create event test.user_event on schedule every 1 day do
|
||||
|
||||
update mysql.event set db='performance_schema' where name='user_event';
|
||||
|
||||
--error 1
|
||||
--exec $MYSQL_UPGRADE --skip-verbose > $MYSQLTEST_VARDIR/tmp/pfs_upgrade.out 2> $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
|
||||
# Verify that mysql_upgrade complained about the performance_schema
|
||||
--cat_file $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
--source suite/perfschema/include/upgrade_check.inc
|
||||
|
||||
select name from mysql.event where db='performance_schema';
|
||||
|
||||
update mysql.event set db='test' where name='user_event';
|
||||
drop event test.user_event;
|
||||
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/pfs_upgrade.out
|
||||
--remove_file $MYSQLTEST_VARDIR/tmp/pfs_upgrade.err
|
||||
|
||||
|
||||
@@ -350,9 +350,9 @@ TRUNCATE TABLE performance_schema.EVENTS_WAITS_HISTORY;
|
||||
TRUNCATE TABLE performance_schema.EVENTS_WAITS_CURRENT;
|
||||
|
||||
--echo # Clean up
|
||||
|
||||
--connection default
|
||||
--disconnect pfs_user_4
|
||||
--source include/wait_until_disconnected.inc
|
||||
--connection default
|
||||
REVOKE ALL PRIVILEGES, GRANT OPTION FROM pfs_user_4;
|
||||
DROP USER pfs_user_4;
|
||||
flush privileges;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (C) 2009 Sun Microsystems, Inc
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -10,8 +10,8 @@
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
# Tests for PERFORMANCE_SCHEMA
|
||||
|
||||
@@ -33,7 +33,6 @@ SET GLOBAL query_cache_size=1355776;
|
||||
|
||||
flush query cache;
|
||||
reset query cache;
|
||||
# Reset Qcache_* to a known state
|
||||
flush status;
|
||||
|
||||
select * from t1;
|
||||
@@ -67,4 +66,5 @@ show status like "Qcache_hits";
|
||||
SET GLOBAL query_cache_size= default;
|
||||
|
||||
drop table t1;
|
||||
flush status;
|
||||
|
||||
|
||||
@@ -85,6 +85,7 @@ update performance_schema.SETUP_INSTRUMENTS set enabled='YES';
|
||||
--enable_result_log
|
||||
|
||||
disconnect con1;
|
||||
--source include/wait_until_disconnected.inc
|
||||
|
||||
--echo connection default;
|
||||
connection default;
|
||||
|
||||
1
mysql-test/suite/perfschema/t/selects-master.opt
Normal file
1
mysql-test/suite/perfschema/t/selects-master.opt
Normal file
@@ -0,0 +1 @@
|
||||
--event-scheduler
|
||||
@@ -1,4 +1,4 @@
|
||||
# Copyright (C) 2008-2009 Sun Microsystems, Inc
|
||||
# Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@@ -10,8 +10,8 @@
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# 51 Franklin Street, Suite 500, Boston, MA 02110-1335 USA
|
||||
|
||||
--source include/not_embedded.inc
|
||||
--source include/have_perfschema.inc
|
||||
@@ -85,20 +85,32 @@ LIMIT 5;
|
||||
|
||||
# EVENT
|
||||
|
||||
# Check that the event_scheduler is really running
|
||||
--source include/running_event_scheduler.inc
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t_event;
|
||||
DROP EVENT IF EXISTS t_ps_event;
|
||||
--enable_warnings
|
||||
CREATE TABLE t_event AS
|
||||
SELECT EVENT_ID FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||
WHERE 1 = 2;
|
||||
CREATE EVENT t_ps_event
|
||||
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 SECOND
|
||||
DO SELECT DISTINCT EVENT_ID
|
||||
DO INSERT INTO t_event
|
||||
SELECT DISTINCT EVENT_ID
|
||||
FROM performance_schema.EVENTS_WAITS_CURRENT
|
||||
JOIN performance_schema.EVENTS_WAITS_HISTORY USING (EVENT_ID)
|
||||
ORDER BY EVENT_ID
|
||||
LIMIT 1;
|
||||
|
||||
--sleep 2
|
||||
|
||||
# TRIGGER
|
||||
|
||||
ALTER TABLE t1 ADD COLUMN c INT;
|
||||
|
||||
--disable_warnings
|
||||
DROP TRIGGER IF EXISTS t_ps_trigger;
|
||||
--enable_warnings
|
||||
delimiter |;
|
||||
|
||||
CREATE TRIGGER t_ps_trigger BEFORE INSERT ON t1
|
||||
@@ -119,6 +131,9 @@ DROP TRIGGER t_ps_trigger;
|
||||
|
||||
# PROCEDURE
|
||||
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS t_ps_proc;
|
||||
--enable_warnings
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE t_ps_proc(IN tid INT, OUT pid INT)
|
||||
@@ -135,6 +150,9 @@ CALL t_ps_proc(0, @p_id);
|
||||
|
||||
# FUNCTION
|
||||
|
||||
--disable_warnings
|
||||
DROP FUNCTION IF EXISTS t_ps_proc;
|
||||
--enable_warnings
|
||||
delimiter |;
|
||||
|
||||
CREATE FUNCTION t_ps_func(tid INT) RETURNS int
|
||||
@@ -149,8 +167,17 @@ delimiter ;|
|
||||
|
||||
SELECT t_ps_func(0) = @p_id;
|
||||
|
||||
DROP PROCEDURE t_ps_proc;
|
||||
DROP FUNCTION t_ps_func;
|
||||
# We might reach this point too early which means the event scheduler has not
|
||||
# execute our "t_ps_event". Therefore we poll till the record was inserted
|
||||
# and run our test statement afterwards.
|
||||
let $wait_timeout= 20;
|
||||
let $wait_condition= SELECT COUNT(*) = 1 FROM t_event;
|
||||
--source include/wait_condition.inc
|
||||
--replace_column 1 [EVENT_ID]
|
||||
SELECT * FROM t_event;
|
||||
|
||||
# Clean up
|
||||
DROP PROCEDURE t_ps_proc;
|
||||
DROP FUNCTION t_ps_func;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t_event;
|
||||
|
||||
@@ -68,21 +68,12 @@ select count(name) from COND_INSTANCES
|
||||
|
||||
# Verify that these global mutexes have been properly initilized in sql
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_mysql_create_db";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_open";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_lock_db";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_thread_count";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_mapped_file";
|
||||
|
||||
select count(name) from MUTEX_INSTANCES
|
||||
where name like "wait/synch/mutex/sql/LOCK_status";
|
||||
|
||||
|
||||
@@ -165,10 +165,6 @@ master-bin.000001 # Table_map # # table_id: # (test.tt_1)
|
||||
master-bin.000001 # Write_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Xid # # COMMIT /* XID */
|
||||
master-bin.000001 # Query # # use `test`; SET PASSWORD FOR 'user'@'localhost'='*D8DECEC305209EEFEC43008E1D420E1AA06B19E0'
|
||||
master-bin.000001 # Query # # BEGIN
|
||||
master-bin.000001 # Table_map # # table_id: # (mysql.user)
|
||||
master-bin.000001 # Update_rows # # table_id: # flags: STMT_END_F
|
||||
master-bin.000001 # Query # # COMMIT
|
||||
-e-e-e-e-e-e-e-e-e-e-e- >> << -e-e-e-e-e-e-e-e-e-e-e-
|
||||
|
||||
-b-b-b-b-b-b-b-b-b-b-b- >> << -b-b-b-b-b-b-b-b-b-b-b-
|
||||
|
||||
@@ -77,6 +77,8 @@ id2
|
||||
< ---- Master selects-- >
|
||||
-------------------------
|
||||
CALL test.p1();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
SELECT * FROM test.t3 ORDER BY id3;
|
||||
id3 c
|
||||
1 MySQL
|
||||
|
||||
@@ -38,6 +38,8 @@ INSERT INTO t1 VALUES ('MySQL','1993-02-04'),('ROCKS', '1990-08-27'),('Texas', '
|
||||
END|
|
||||
CALL p2();
|
||||
CALL p1();
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
@@ -69,9 +69,15 @@ INSERT INTO test.t2 VALUES(NULL,0,'Testing MySQL databases is a cool ', 'MySQL C
|
||||
UPDATE test.t1 SET b1 = 0 WHERE b1 = 1;
|
||||
INSERT INTO test.t2 VALUES(NULL,1,'This is an after update test.', 'If this works, total will not be zero on the master or slave',1.4321,5.221,0,YEAR(NOW()),NOW());
|
||||
UPDATE test.t2 SET b1 = 0 WHERE b1 = 1;
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
INSERT INTO test.t1 VALUES(NULL,1,'add some more test data test.', 'and hope for the best', 3.321,5.221,0,YEAR(NOW()),NOW());
|
||||
DELETE FROM test.t1 WHERE id = 1;
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DELETE FROM test.t2 WHERE id = 1;
|
||||
Warnings:
|
||||
Error 1329 No data - zero rows fetched, selected, or processed
|
||||
DROP TRIGGER test.t1_bi;
|
||||
DROP TRIGGER test.t2_ai;
|
||||
DROP TRIGGER test.t1_bu;
|
||||
|
||||
@@ -1 +1 @@
|
||||
--sync-relay-log-info=1 --relay-log-recovery=1 --innodb_file_format_check='ON' --default-storage-engine=MyISAM --innodb-file-per-table=0
|
||||
--sync-relay-log-info=1 --relay-log-recovery=1 --innodb_file_format_check=1 --default-storage-engine=MyISAM --innodb-file-per-table=0
|
||||
|
||||
@@ -1128,3 +1128,19 @@ INSERT INTO t1 VALUES (1), (2);
|
||||
ALTER TABLE t1 ADD COLUMN (f1 INT), ADD COLUMN (f2 INT), ADD KEY f2k(f2);
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Test for bug #53820 "ALTER a MEDIUMINT column table causes full
|
||||
--echo # table copy".
|
||||
--echo #
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
CREATE TABLE t1 (a INT, b MEDIUMINT);
|
||||
INSERT INTO t1 VALUES (1, 1), (2, 2);
|
||||
--echo # The below ALTER should not copy table and so no rows should
|
||||
--echo # be shown as affected.
|
||||
--enable_info
|
||||
ALTER TABLE t1 CHANGE a id INT;
|
||||
--disable_info
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -1701,3 +1701,24 @@ SELECT * FROM t1;
|
||||
REPAIR TABLE t1 EXTENDED;
|
||||
SELECT * FROM t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#45377: ARCHIVE tables aren't discoverable after OPTIMIZE
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (a int) ENGINE=ARCHIVE;
|
||||
SHOW CREATE TABLE t1;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
OPTIMIZE TABLE t1;
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
remove_file $MYSQLD_DATADIR/test/t1.frm;
|
||||
FLUSH TABLES;
|
||||
INSERT INTO t1 VALUES (2);
|
||||
SELECT * FROM t1 ORDER BY a;
|
||||
SHOW CREATE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -284,3 +284,20 @@ INSERT INTO t1 VALUES('A ', 'A ');
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.0 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug #55472: Assertion failed in heap_rfirst function of hp_rfirst.c
|
||||
--echo # on DELETE statement
|
||||
--echo #
|
||||
|
||||
CREATE TABLE t1 (col_int_nokey INT,
|
||||
col_int_key INT,
|
||||
INDEX(col_int_key) USING HASH) ENGINE = HEAP;
|
||||
INSERT INTO t1 (col_int_nokey, col_int_key) VALUES (3, 0), (4, 0), (3, 1);
|
||||
|
||||
DELETE FROM t1 WHERE col_int_nokey = 5 ORDER BY col_int_key LIMIT 2;
|
||||
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo End of 5.5 tests
|
||||
|
||||
|
||||
@@ -209,6 +209,74 @@ disconnect con1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#49891 View DDL breaks REPEATABLE READ
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
DROP VIEW IF EXISTS v2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 ( f1 INTEGER ) ENGINE = innodb;
|
||||
CREATE TABLE t2 ( f1 INTEGER );
|
||||
CREATE VIEW v1 AS SELECT 1 FROM t1;
|
||||
|
||||
connect (con2, localhost, root);
|
||||
connect (con3, localhost, root);
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
LOCK TABLE t1 WRITE;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
START TRANSACTION;
|
||||
# This should block due to t1 being locked.
|
||||
--echo # Sending:
|
||||
--send SELECT * FROM v1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Waiting for 'SELECT * FROM v1' to sync in.
|
||||
let $wait_condition=
|
||||
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
||||
WHERE state = "Waiting for table" AND info = "SELECT * FROM v1";
|
||||
--source include/wait_condition.inc
|
||||
# This should block due to v1 being locked.
|
||||
--echo # Sending:
|
||||
--send ALTER VIEW v1 AS SELECT 2 FROM t2
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
--echo # Waiting for 'ALTER VIEW v1 AS SELECT 2 FROM t2' to sync in.
|
||||
let $wait_condition=
|
||||
SELECT COUNT(*) = 1 FROM information_schema.processlist
|
||||
WHERE state = "Waiting for table" AND info = "ALTER VIEW v1 AS SELECT 2 FROM t2";
|
||||
--source include/wait_condition.inc
|
||||
# Unlock t1 allowing SELECT * FROM v1 to proceed.
|
||||
UNLOCK TABLES;
|
||||
|
||||
--echo # Connection default;
|
||||
connection default;
|
||||
--echo # Reaping: SELECT * FROM v1
|
||||
--reap
|
||||
SELECT * FROM v1;
|
||||
COMMIT;
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: ALTER VIEW v1 AS SELECT 2 FROM t2
|
||||
--reap
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
DROP TABLE t1, t2;
|
||||
DROP VIEW v1;
|
||||
disconnect con2;
|
||||
disconnect con3;
|
||||
|
||||
|
||||
# Check that all connections opened by test cases in this file are really
|
||||
# gone so execution of other tests won't be affected by their presence.
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
@@ -80,6 +80,32 @@ disconnect con1;
|
||||
SET DEBUG_SYNC= "RESET";
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#53757 assert in mysql_truncate_by_delete
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(a INT) Engine=InnoDB;
|
||||
CREATE TABLE t2(id INT);
|
||||
INSERT INTO t1 VALUES (1), (2);
|
||||
|
||||
connect (con1, localhost, root);
|
||||
INSERT INTO t2 VALUES(connection_id());
|
||||
SET DEBUG_SYNC= "open_and_process_table SIGNAL opening WAIT_FOR killed";
|
||||
--echo # Sending: (not reaped since connection is killed later)
|
||||
--send TRUNCATE t1
|
||||
|
||||
connection default;
|
||||
SET DEBUG_SYNC= "now WAIT_FOR opening";
|
||||
SELECT ((@id := id) - id) FROM t2;
|
||||
KILL @id;
|
||||
SET DEBUG_SYNC= "now SIGNAL killed";
|
||||
DROP TABLE t1, t2;
|
||||
|
||||
|
||||
# Check that all connections opened by test cases in this file are really
|
||||
# gone so execution of other tests won't be affected by their presence.
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
@@ -3705,6 +3705,481 @@ DROP TABLE t1;
|
||||
disconnect con1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Tests for schema-scope locks
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
--enable_warnings
|
||||
|
||||
connect (con2, localhost, root);
|
||||
connect (con3, localhost, root);
|
||||
|
||||
--echo # Test 1:
|
||||
--echo # CREATE DATABASE blocks database DDL on the same database, but
|
||||
--echo # not database DDL on different databases. Tests X vs X lock.
|
||||
--echo #
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send CREATE DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send CREATE DATABASE db1
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='CREATE DATABASE db1';
|
||||
--source include/wait_condition.inc
|
||||
# This should not block.
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: CREATE DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: CREATE DATABASE db1
|
||||
--error ER_DB_CREATE_EXISTS
|
||||
--reap
|
||||
|
||||
--echo # Test 2:
|
||||
--echo # ALTER DATABASE blocks database DDL on the same database, but
|
||||
--echo # not database DDL on different databases. Tests X vs X lock.
|
||||
--echo #
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table'
|
||||
AND info='ALTER DATABASE db1 DEFAULT CHARACTER SET utf8';
|
||||
--source include/wait_condition.inc
|
||||
# This should not block.
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
--reap
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should also block.
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='DROP DATABASE db1';
|
||||
--source include/wait_condition.inc
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
# Recreate the database
|
||||
CREATE DATABASE db1;
|
||||
|
||||
--echo # Test 3:
|
||||
--echo # Two ALTER..UPGRADE of the same database are mutually exclusive, but
|
||||
--echo # two ALTER..UPGRADE of different databases are not. Tests X vs X lock.
|
||||
--echo #
|
||||
|
||||
let $MYSQLD_DATADIR= `select @@datadir`;
|
||||
# Manually make a 5.0 database from the template
|
||||
--mkdir $MYSQLD_DATADIR/a-b-c
|
||||
--copy_file $MYSQLD_DATADIR/db1/db.opt $MYSQLD_DATADIR/a-b-c/db.opt
|
||||
--mkdir $MYSQLD_DATADIR/a-b-c-d
|
||||
--copy_file $MYSQLD_DATADIR/db1/db.opt $MYSQLD_DATADIR/a-b-c-d/db.opt
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table'
|
||||
AND info='ALTER DATABASE `#mysql50#a-b-c` UPGRADE DATA DIRECTORY NAME';
|
||||
--source include/wait_condition.inc
|
||||
# This should not block.
|
||||
ALTER DATABASE `#mysql50#a-b-c-d` UPGRADE DATA DIRECTORY NAME;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: ALTER DATABASE '#mysql50#a-b-c' UPGRADE DATA DIRECTORY NAME
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: ALTER DATABASE '#mysql50#a-b-c' UPGRADE DATA DIRECTORY NAME
|
||||
--error ER_BAD_DB_ERROR
|
||||
--reap
|
||||
DROP DATABASE `a-b-c`;
|
||||
DROP DATABASE `a-b-c-d`;
|
||||
|
||||
--echo # Test 4:
|
||||
--echo # DROP DATABASE blocks database DDL on the same database, but
|
||||
--echo # not database DDL on different databases. Tests X vs X lock.
|
||||
--echo #
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='DROP DATABASE db1';
|
||||
--source include/wait_condition.inc
|
||||
# This should not block.
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--error ER_DB_DROP_EXISTS
|
||||
--reap
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
CREATE DATABASE db1;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should also block.
|
||||
--send ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table'
|
||||
AND info='ALTER DATABASE db1 DEFAULT CHARACTER SET utf8';
|
||||
--source include/wait_condition.inc
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
--error 1,1 # Wrong error pending followup patch for bug#54360
|
||||
--reap
|
||||
|
||||
|
||||
--echo # Test 5:
|
||||
--echo # Locked database name prevents CREATE of tables in that database.
|
||||
--echo # Tests X vs IX lock.
|
||||
--echo #
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
CREATE DATABASE db1;
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send CREATE TABLE db1.t1 (a INT)
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='CREATE TABLE db1.t1 (a INT)';
|
||||
--source include/wait_condition.inc
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: CREATE TABLE db1.t1 (a INT)
|
||||
--error ER_BAD_DB_ERROR
|
||||
--reap
|
||||
|
||||
--echo # Test 6:
|
||||
--echo # Locked database name prevents RENAME of tables to/from that database.
|
||||
--echo # Tests X vs IX lock.
|
||||
--echo #
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (a INT);
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send RENAME TABLE db1.t1 TO test.t1
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='RENAME TABLE db1.t1 TO test.t1';
|
||||
--source include/wait_condition.inc
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: RENAME TABLE db1.t1 TO test.t1
|
||||
--error ER_FILE_NOT_FOUND, ER_FILE_NOT_FOUND
|
||||
--reap
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE test.t2 (a INT);
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send RENAME TABLE test.t2 TO db1.t2
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='RENAME TABLE test.t2 TO db1.t2';
|
||||
--source include/wait_condition.inc
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: RENAME TABLE test.t2 TO db1.t2
|
||||
--error 7, 7 # Wrong error pending followup patch for bug#54360
|
||||
--reap
|
||||
DROP TABLE test.t2;
|
||||
|
||||
|
||||
--echo # Test 7:
|
||||
--echo # Locked database name prevents DROP of tables in that database.
|
||||
--echo # Tests X vs IX lock.
|
||||
--echo #
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (a INT);
|
||||
SET DEBUG_SYNC= 'after_wait_locked_schema_name SIGNAL locked WAIT_FOR blocked';
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
SET DEBUG_SYNC= 'now WAIT_FOR locked';
|
||||
--echo # Sending:
|
||||
# This should block.
|
||||
--send DROP TABLE db1.t1
|
||||
|
||||
--echo # Connection con3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='DROP TABLE db1.t1';
|
||||
--source include/wait_condition.inc
|
||||
SET DEBUG_SYNC= 'now SIGNAL blocked';
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping: DROP TABLE db1.t1
|
||||
--error ER_BAD_TABLE_ERROR
|
||||
--reap
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
disconnect con2;
|
||||
disconnect con3;
|
||||
SET DEBUG_SYNC= 'RESET';
|
||||
|
||||
--echo #
|
||||
--echo # End of tests for schema-scope locks
|
||||
--echo #
|
||||
|
||||
--echo #
|
||||
--echo # Tests of granted global S lock (FLUSH TABLE WITH READ LOCK)
|
||||
--echo #
|
||||
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1(a INT);
|
||||
connect(con2, localhost, root);
|
||||
connect(con3, localhost, root);
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
# IX global lock should block
|
||||
--send CREATE TABLE db1.t2(a INT)
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for release of readlock'
|
||||
AND info='CREATE TABLE db1.t2(a INT)';
|
||||
--source include/wait_condition.inc
|
||||
UNLOCK TABLES;
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping CREATE TABLE db1.t2(a INT)
|
||||
--reap
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
# X global lock should block
|
||||
--send ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for release of readlock'
|
||||
AND info='ALTER DATABASE db1 DEFAULT CHARACTER SET utf8';
|
||||
--source include/wait_condition.inc
|
||||
UNLOCK TABLES;
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
--echo # Reaping ALTER DATABASE db1 DEFAULT CHARACTER SET utf8
|
||||
--reap
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
|
||||
--echo # Connection con2
|
||||
connection con2;
|
||||
# S global lock should not block
|
||||
FLUSH TABLE WITH READ LOCK;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
UNLOCK TABLES;
|
||||
DROP DATABASE db1;
|
||||
disconnect con2;
|
||||
disconnect con3;
|
||||
|
||||
|
||||
# Check that all connections opened by test cases in this file are really
|
||||
# gone so execution of other tests won't be affected by their presence.
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
@@ -51,7 +51,7 @@ connection default;
|
||||
#--sleep 8
|
||||
#SELECT ID,STATE,INFO FROM INFORMATION_SCHEMA.PROCESSLIST;
|
||||
let $wait_condition= SELECT 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE ID = $con1_id AND STATE = 'Table lock';
|
||||
WHERE ID = $con1_id AND STATE = 'Waiting for table';
|
||||
--source include/wait_condition.inc
|
||||
#SELECT NOW();
|
||||
--echo # Kick INSERT out of thr_multi_lock().
|
||||
@@ -61,7 +61,7 @@ FLUSH TABLES;
|
||||
#--sleep 8
|
||||
#SELECT ID,STATE,INFO FROM INFORMATION_SCHEMA.PROCESSLIST;
|
||||
let $wait_condition= SELECT 1 FROM INFORMATION_SCHEMA.PROCESSLIST
|
||||
WHERE ID = $con1_id AND STATE = 'Table lock';
|
||||
WHERE ID = $con1_id AND STATE = 'Waiting for table';
|
||||
--source include/wait_condition.inc
|
||||
#SELECT NOW();
|
||||
--echo # Unlock and close table and wait for con1 to close too.
|
||||
|
||||
@@ -2,6 +2,12 @@
|
||||
# Test of MERGE TABLES
|
||||
#
|
||||
|
||||
# MERGE tables require MyISAM tables
|
||||
let $default=`select @@global.storage_engine`;
|
||||
set global storage_engine=myisam;
|
||||
set session storage_engine=myisam;
|
||||
|
||||
# Clean up resources used in this test case.
|
||||
--disable_warnings
|
||||
drop table if exists t1,t2,t3,t4,t5,t6;
|
||||
drop database if exists mysqltest;
|
||||
@@ -222,7 +228,6 @@ 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 (c1 INT NOT NULL);
|
||||
CREATE TEMPORARY TABLE t5 (c1 INT NOT NULL);
|
||||
@@ -254,7 +259,6 @@ create table t3 (a int not null) ENGINE=MERGE UNION=(t1,t2);
|
||||
select * from t3;
|
||||
drop table t3;
|
||||
create temporary table t3 (a int not null) ENGINE=MERGE UNION=(t1,t2);
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
select * from t3;
|
||||
drop table t3, t2, t1;
|
||||
--echo # CREATE...SELECT is not implemented for MERGE tables.
|
||||
@@ -891,12 +895,9 @@ INSERT INTO t4 VALUES (4);
|
||||
--echo # If the temporary MERGE table uses the locked children only,
|
||||
--echo # it can even be used.
|
||||
CREATE TEMPORARY TABLE t4 LIKE t3;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SHOW CREATE TABLE t4;
|
||||
--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;
|
||||
#
|
||||
@@ -2116,6 +2117,325 @@ ALTER TABLE t1 ENGINE=MERGE UNION(t_not_exists,t1);
|
||||
OPTIMIZE TABLE t1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#36171 - CREATE TEMPORARY TABLE and MERGE engine
|
||||
--echo # More tests with TEMPORARY MERGE table and permanent children.
|
||||
--echo # First without locked tables.
|
||||
--echo #
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2, t3, t4, m1, m2;
|
||||
--enable_warnings
|
||||
#
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SHOW CREATE TABLE t1;
|
||||
SHOW CREATE TABLE m1;
|
||||
SELECT * FROM m1;
|
||||
INSERT INTO t1 VALUES (111, 121);
|
||||
INSERT INTO m1 VALUES (211, 221);
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 RENAME m2;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
--error ER_TABLE_EXISTS_ERROR
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
DROP TABLE m1;
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
SHOW CREATE TABLE m1;
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 ADD COLUMN c3 INT;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SELECT * FROM m1;
|
||||
ALTER TABLE t1 ADD COLUMN c3 INT;
|
||||
ALTER TABLE t2 ADD COLUMN c3 INT;
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 DROP COLUMN c3;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SELECT * FROM m1;
|
||||
ALTER TABLE t1 DROP COLUMN c3;
|
||||
ALTER TABLE t2 DROP COLUMN c3;
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
CREATE TABLE t3 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3);
|
||||
INSERT INTO m1 VALUES (311, 321);
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE t4 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3,t4);
|
||||
INSERT INTO m1 VALUES (411, 421);
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
SELECT * FROM t4;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE m1;
|
||||
INSERT INTO m1 VALUES (511, 521);
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (611, 621);
|
||||
SELECT * FROM m1;
|
||||
DROP TABLE t1;
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
#
|
||||
--echo #
|
||||
--echo #
|
||||
SHOW CREATE TABLE m1;
|
||||
#
|
||||
--echo #
|
||||
CREATE TABLE m2 SELECT * FROM m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m2 SELECT * FROM m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2;
|
||||
#
|
||||
--echo #
|
||||
--error ER_WRONG_OBJECT
|
||||
CREATE TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
--error ER_WRONG_OBJECT
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
CREATE TABLE m2 LIKE m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m2 LIKE m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
#
|
||||
#
|
||||
--echo #
|
||||
--echo #
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
SELECT * FROM m1,m2 WHERE m1.c1=m2.c1;
|
||||
UNLOCK TABLES;
|
||||
#
|
||||
DROP TABLE t1, t2, t3, t4, m1, m2;
|
||||
#
|
||||
#
|
||||
#
|
||||
--echo #
|
||||
--echo # Bug#36171 - CREATE TEMPORARY TABLE and MERGE engine
|
||||
--echo # More tests with TEMPORARY MERGE table and permanent children.
|
||||
--echo # (continued) Now the same with locked table.
|
||||
--echo #
|
||||
CREATE TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TABLE t2 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SHOW CREATE TABLE t1;
|
||||
SHOW CREATE TABLE m1;
|
||||
SELECT * FROM m1;
|
||||
INSERT INTO t1 VALUES (111, 121);
|
||||
INSERT INTO m1 VALUES (211, 221);
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
#
|
||||
--echo #
|
||||
LOCK TABLE m1 WRITE, t1 WRITE, t2 WRITE;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 RENAME m2;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
--error ER_TABLE_EXISTS_ERROR
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
DROP TABLE m1;
|
||||
ALTER TABLE m2 RENAME m1;
|
||||
SHOW CREATE TABLE m1;
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 ADD COLUMN c3 INT;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SELECT * FROM m1;
|
||||
ALTER TABLE t1 ADD COLUMN c3 INT;
|
||||
ALTER TABLE t2 ADD COLUMN c3 INT;
|
||||
INSERT INTO m1 VALUES (212, 222, 232);
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 DROP COLUMN c3;
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
--error ER_WRONG_MRG_TABLE
|
||||
SELECT * FROM m1;
|
||||
ALTER TABLE t1 DROP COLUMN c3;
|
||||
ALTER TABLE t2 DROP COLUMN c3;
|
||||
INSERT INTO m1 VALUES (213, 223);
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
UNLOCK TABLES;
|
||||
CREATE TABLE t3 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3);
|
||||
LOCK TABLE m1 WRITE;
|
||||
INSERT INTO m1 VALUES (311, 321);
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE t4 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
ALTER TABLE m1 UNION=(t1,t2,t3,t4);
|
||||
INSERT INTO m1 VALUES (411, 421);
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
SELECT * FROM t3;
|
||||
SELECT * FROM t4;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 ENGINE=MyISAM;
|
||||
SHOW CREATE TABLE m1;
|
||||
INSERT INTO m1 VALUES (511, 521);
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
ALTER TABLE m1 ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT * FROM m1;
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE t1 (c1 INT, c2 INT) ENGINE=MyISAM;
|
||||
INSERT INTO t1 VALUES (611, 621);
|
||||
SELECT * FROM m1;
|
||||
DROP TABLE t1;
|
||||
SELECT * FROM m1;
|
||||
#
|
||||
#
|
||||
--echo #
|
||||
--echo #
|
||||
SHOW CREATE TABLE m1;
|
||||
--error ER_TABLE_NOT_LOCKED
|
||||
CREATE TABLE m2 SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m2 SELECT * FROM m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
SELECT * FROM m2;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2;
|
||||
LOCK TABLE m1 WRITE;
|
||||
#
|
||||
--echo #
|
||||
--echo # ER_TABLE_NOT_LOCKED is returned in ps-protocol
|
||||
--error ER_WRONG_OBJECT, ER_TABLE_NOT_LOCKED
|
||||
CREATE TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
--error ER_WRONG_OBJECT
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST SELECT * FROM m1;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m2 LIKE m1;
|
||||
SHOW CREATE TABLE m2;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
SHOW CREATE TABLE m2;
|
||||
SELECT * FROM m2;
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2;
|
||||
#
|
||||
--echo #
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT, c2 INT) ENGINE=MRG_MyISAM UNION=(t3,t4)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
#
|
||||
--echo #
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE t1, t2, t3, t4, m1, m2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug47098 assert in MDL_context::destroy on HANDLER
|
||||
--echo # <damaged merge table> OPEN
|
||||
@@ -2225,6 +2545,130 @@ show create table m1;
|
||||
show create table m2;
|
||||
drop tables m1, m2, t1;
|
||||
|
||||
--echo #
|
||||
--echo # Test case for Bug#54811 "Assert in mysql_lock_have_duplicate()"
|
||||
--echo # Check that unique_table() works correctly for merge tables.
|
||||
--echo #
|
||||
--disable_warnings
|
||||
drop table if exists t1, t2, t3, m1, m2;
|
||||
--enable_warnings
|
||||
create table t1 (a int);
|
||||
create table t2 (a int);
|
||||
create table t3 (b int);
|
||||
create view v1 as select * from t3,t1;
|
||||
create table m1 (a int) engine=merge union (t1, t2) insert_method=last;
|
||||
create table m2 (a int) engine=merge union (t1, t2) insert_method=first;
|
||||
create temporary table tmp (b int);
|
||||
insert into tmp (b) values (1);
|
||||
|
||||
insert into t1 (a) values (1);
|
||||
insert into t3 (b) values (1);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from m1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from m2));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from t1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from t2));
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from t3, m1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from t3, m2));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from t3, t1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from t3, t2));
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from tmp, m1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from tmp, m2));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from tmp, t1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
insert into m1 (a) values ((select max(a) from tmp, t2));
|
||||
|
||||
--error ER_VIEW_PREVENT_UPDATE
|
||||
insert into m1 (a) values ((select max(a) from v1));
|
||||
--error ER_VIEW_PREVENT_UPDATE
|
||||
insert into m1 (a) values ((select max(a) from tmp, v1));
|
||||
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from m1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from m2));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from t1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from t2));
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from t3, m1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from t3, m2));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from t3, t1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from t3, t2));
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from tmp, m1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from tmp, m2));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from tmp, t1));
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
update m1 set a = ((select max(a) from tmp, t2));
|
||||
|
||||
--error ER_VIEW_PREVENT_UPDATE
|
||||
update m1 set a = ((select max(a) from v1));
|
||||
--error ER_VIEW_PREVENT_UPDATE
|
||||
update m1 set a = ((select max(a) from tmp, v1));
|
||||
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from m1);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from m2);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from t1);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from t2);
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from t3, m1);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from t3, m2);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from t3, t1);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from t3, t2);
|
||||
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from tmp, m1);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from tmp, m2);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from tmp, t1);
|
||||
--error ER_UPDATE_TABLE_USED
|
||||
delete from m1 where a = (select max(a) from tmp, t2);
|
||||
|
||||
--error ER_VIEW_PREVENT_UPDATE
|
||||
delete from m1 where a = (select max(a) from v1);
|
||||
--error ER_VIEW_PREVENT_UPDATE
|
||||
delete from m1 where a = (select max(a) from tmp, v1);
|
||||
|
||||
drop view v1;
|
||||
drop temporary table tmp;
|
||||
drop table t1, t2, t3, m1, m2;
|
||||
|
||||
--echo End of 6.0 tests
|
||||
|
||||
--disable_result_log
|
||||
--disable_query_log
|
||||
eval set global storage_engine=$default;
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
|
||||
1
mysql-test/t/merge_mmap-master.opt
Normal file
1
mysql-test/t/merge_mmap-master.opt
Normal file
@@ -0,0 +1 @@
|
||||
--myisam-use-mmap
|
||||
151
mysql-test/t/merge_mmap.test
Normal file
151
mysql-test/t/merge_mmap.test
Normal file
@@ -0,0 +1,151 @@
|
||||
#
|
||||
# Test of MERGE TABLES with MyISAM memory mapping enabled (--myisam-use-mmap)
|
||||
#
|
||||
|
||||
# MERGE tables require MyISAM tables
|
||||
--let $default=`SELECT @@global.storage_engine`
|
||||
SET GLOBAL storage_engine = MyISAM;
|
||||
SET SESSION storage_engine = MyISAM;
|
||||
|
||||
# Clean up resources used in this test case.
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1, t2, m1, m2;
|
||||
--enable_warnings
|
||||
|
||||
####################
|
||||
## No locked tables.
|
||||
####################
|
||||
#
|
||||
# INSERT-SELECT with no TEMPORARY table.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
SELECT * FROM t2;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
#
|
||||
# INSERT-SELECT with TEMPORARY select table.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
#
|
||||
# INSERT-SELECT with TEMPORARY insert table.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
#
|
||||
# INSERT-SELECT with TEMPORARY both tables.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
|
||||
####################
|
||||
## With LOCK TABLES.
|
||||
####################
|
||||
#
|
||||
# INSERT-SELECT with no TEMPORARY table.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
SELECT * FROM t2;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
#
|
||||
# INSERT-SELECT with TEMPORARY select table.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
#
|
||||
# INSERT-SELECT with TEMPORARY insert table.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
#
|
||||
# INSERT-SELECT with TEMPORARY both tables.
|
||||
#
|
||||
CREATE TABLE t1 (c1 INT);
|
||||
CREATE TABLE t2 (c1 INT);
|
||||
CREATE TEMPORARY TABLE m1 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
CREATE TEMPORARY TABLE m2 (c1 INT) ENGINE=MRG_MyISAM UNION=(t1,t2)
|
||||
INSERT_METHOD=LAST;
|
||||
LOCK TABLE m1 WRITE, m2 WRITE;
|
||||
INSERT INTO t1 VALUES (1);
|
||||
INSERT INTO t2 VALUES (2), (3), (4);
|
||||
INSERT INTO m2 SELECT * FROM m1;
|
||||
SELECT * FROM m2;
|
||||
UNLOCK TABLES;
|
||||
DROP TABLE m2, m1, t2, t1;
|
||||
|
||||
--echo End of 6.0 tests
|
||||
|
||||
--disable_result_log
|
||||
--disable_query_log
|
||||
eval SET GLOBAL storage_engine = $default;
|
||||
--enable_result_log
|
||||
--enable_query_log
|
||||
@@ -65,7 +65,7 @@ ENGINE = MYISAM
|
||||
PARTITION p1 VALUES LESS THAN (20),
|
||||
PARTITION p2 VALUES LESS THAN (100),
|
||||
PARTITION p3 VALUES LESS THAN MAXVALUE ) */;
|
||||
SET DEBUG_SYNC= 'open_tables_acquire_upgradable_mdl SIGNAL removing_partitions WAIT_FOR waiting_for_alter';
|
||||
SET DEBUG_SYNC= 'alter_table_before_open_tables SIGNAL removing_partitions WAIT_FOR waiting_for_alter';
|
||||
SET DEBUG_SYNC= 'alter_table_before_rename_result_table WAIT_FOR delete_done';
|
||||
--send ALTER TABLE t2 REMOVE PARTITIONING
|
||||
connection default;
|
||||
|
||||
@@ -23,6 +23,7 @@ drop schema foo;
|
||||
|
||||
--disable_warnings
|
||||
DROP SCHEMA IF EXISTS schema1;
|
||||
DROP SCHEMA IF EXISTS schema2;
|
||||
--enable_warnings
|
||||
|
||||
connect(con2, localhost, root);
|
||||
@@ -31,6 +32,7 @@ connect(con2, localhost, root);
|
||||
connection default;
|
||||
|
||||
CREATE SCHEMA schema1;
|
||||
CREATE SCHEMA schema2;
|
||||
CREATE TABLE schema1.t1 (a INT);
|
||||
|
||||
SET autocommit= FALSE;
|
||||
@@ -46,9 +48,7 @@ let $wait_condition= SELECT COUNT(*)= 1 FROM information_schema.processlist
|
||||
WHERE state= 'Waiting for table'
|
||||
AND info='DROP SCHEMA schema1';
|
||||
--source include/wait_condition.inc
|
||||
# Listing the error twice to prevent result diffences based on filename
|
||||
--error 1,1
|
||||
ALTER SCHEMA schema1 DEFAULT CHARACTER SET utf8;
|
||||
ALTER SCHEMA schema2 DEFAULT CHARACTER SET utf8;
|
||||
SET autocommit= TRUE;
|
||||
|
||||
--echo # Connection 2
|
||||
@@ -57,6 +57,7 @@ connection con2;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
DROP SCHEMA schema2;
|
||||
disconnect con2;
|
||||
|
||||
|
||||
@@ -102,6 +103,98 @@ connection con2;
|
||||
connection default;
|
||||
disconnect con2;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#54360 Deadlock DROP/ALTER/CREATE DATABASE with open HANDLER
|
||||
--echo #
|
||||
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (a INT);
|
||||
INSERT INTO db1.t1 VALUES (1), (2);
|
||||
|
||||
--echo # Connection con1
|
||||
connect (con1, localhost, root);
|
||||
HANDLER db1.t1 OPEN;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection con2
|
||||
connect (con2, localhost, root);
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' AND info='DROP DATABASE db1';
|
||||
--source include/wait_condition.inc
|
||||
|
||||
--echo # Connection con1
|
||||
connection con1;
|
||||
# All these statements before resulted in deadlock.
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
HANDLER t1 CLOSE;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
disconnect con1;
|
||||
disconnect con2;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Tests for increased CREATE/ALTER/DROP DATABASE concurrency with
|
||||
--echo # database name locks.
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP DATABASE IF EXISTS db1;
|
||||
DROP DATABASE IF EXISTS db2;
|
||||
--enable_warnings
|
||||
|
||||
connect (con2, localhost, root);
|
||||
connect (con3, localhost, root);
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
CREATE DATABASE db1;
|
||||
CREATE TABLE db1.t1 (id INT);
|
||||
START TRANSACTION;
|
||||
INSERT INTO db1.t1 VALUES (1);
|
||||
|
||||
--echo # Connection 2
|
||||
connection con2;
|
||||
--echo # DROP DATABASE should block due to the active transaction
|
||||
--echo # Sending:
|
||||
--send DROP DATABASE db1
|
||||
|
||||
--echo # Connection 3
|
||||
connection con3;
|
||||
let $wait_condition=SELECT COUNT(*)=1 FROM information_schema.processlist
|
||||
WHERE state='Waiting for table' and info='DROP DATABASE db1';
|
||||
--source include/wait_condition.inc
|
||||
--echo # But it should still be possible to CREATE/ALTER/DROP other databases.
|
||||
CREATE DATABASE db2;
|
||||
ALTER DATABASE db2 DEFAULT CHARACTER SET utf8;
|
||||
DROP DATABASE db2;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
--echo # End the transaction so DROP DATABASE db1 can continue
|
||||
COMMIT;
|
||||
|
||||
--echo # Connection 2
|
||||
connection con2;
|
||||
--echo # Reaping: DROP DATABASE db1
|
||||
--reap
|
||||
|
||||
--echo # Connection default;
|
||||
connection default;
|
||||
disconnect con2;
|
||||
disconnect con3;
|
||||
|
||||
|
||||
# Check that all connections opened by test cases in this file are really
|
||||
# gone so execution of other tests won't be affected by their presence.
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
@@ -173,7 +173,7 @@ type_long_blob longblob,
|
||||
index(type_short)
|
||||
) AVG_ROW_LENGTH=10 CHECKSUM=1 COMMENT="test" ENGINE=MYISAM MIN_ROWS=10 MAX_ROWS=100 PACK_KEYS=1 DELAY_KEY_WRITE=1 ROW_FORMAT=fixed CHARSET=latin1;
|
||||
|
||||
# Not tested above: RAID_# UNION INSERT_METHOD DATA DIRECTORY INDEX DIRECTORY
|
||||
# Not tested above: UNION INSERT_METHOD DATA DIRECTORY INDEX DIRECTORY
|
||||
show create table t1;
|
||||
insert into t1 (type_timestamp) values ("2003-02-07 10:00:01");
|
||||
select * from t1;
|
||||
@@ -1246,6 +1246,85 @@ UNLOCK TABLES;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#54905 Connection with WRITE lock cannot ALTER table due to
|
||||
--echo # concurrent SHOW CREATE
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
|
||||
--echo # Connection con1
|
||||
connect (con1,localhost,root);
|
||||
LOCK TABLE t1 WRITE;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
START TRANSACTION;
|
||||
SHOW CREATE TABLE t1;
|
||||
|
||||
--echo # Connection con1
|
||||
connection con1;
|
||||
# Used to block
|
||||
ALTER TABLE t1 CHARACTER SET = utf8;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
COMMIT;
|
||||
disconnect con1;
|
||||
DROP TABLE t1;
|
||||
|
||||
|
||||
--echo #
|
||||
--echo # Bug#55498 SHOW CREATE TRIGGER takes wrong type of metadata lock.
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (a INT);
|
||||
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW SET new.a = 1;
|
||||
|
||||
--echo # Test 1: SHOW CREATE TRIGGER with WRITE locked table.
|
||||
|
||||
--echo # Connection con1
|
||||
connect (con1, localhost, root);
|
||||
LOCK TABLE t1 WRITE;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
# Should not block.
|
||||
SHOW CREATE TRIGGER t1_bi;
|
||||
|
||||
--echo # Connection con1
|
||||
connection con1;
|
||||
UNLOCK TABLES;
|
||||
|
||||
--echo # Test 2: ALTER TABLE with SHOW CREATE TRIGGER in transaction
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
START TRANSACTION;
|
||||
SHOW CREATE TRIGGER t1_bi;
|
||||
|
||||
--echo # Connection con1
|
||||
connection con1;
|
||||
# Should not block.
|
||||
ALTER TABLE t1 CHARACTER SET = utf8;
|
||||
|
||||
--echo # Connection default
|
||||
connection default;
|
||||
COMMIT;
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
disconnect con1;
|
||||
|
||||
|
||||
# Wait till all disconnects are completed
|
||||
--source include/wait_until_count_sessions.inc
|
||||
|
||||
|
||||
@@ -2408,6 +2408,7 @@ BEGIN
|
||||
DECLARE EXIT HANDLER FOR x
|
||||
BEGIN
|
||||
SELECT '2';
|
||||
SHOW WARNINGS;
|
||||
RESIGNAL x SET MYSQL_ERRNO = 9999;
|
||||
END;
|
||||
|
||||
@@ -2415,9 +2416,10 @@ BEGIN
|
||||
DECLARE EXIT HANDLER FOR x
|
||||
BEGIN
|
||||
SELECT '1';
|
||||
SHOW WARNINGS;
|
||||
RESIGNAL x SET
|
||||
SCHEMA_NAME = 'test',
|
||||
MYSQL_ERRNO= 1231;
|
||||
MYSQL_ERRNO= 1232;
|
||||
END;
|
||||
/* Raises ER_WRONG_VALUE_FOR_VAR : 1231, SQLSTATE 42000 */
|
||||
SET @@sql_mode=NULL;
|
||||
@@ -2431,6 +2433,7 @@ BEGIN
|
||||
DECLARE EXIT HANDLER FOR x
|
||||
BEGIN
|
||||
SELECT '3';
|
||||
SHOW WARNINGS;
|
||||
RESIGNAL x SET
|
||||
MESSAGE_TEXT = 'Hi, I am a useless error message',
|
||||
MYSQL_ERRNO = 9999;
|
||||
|
||||
@@ -649,3 +649,56 @@ END//
|
||||
DELIMITER ;//
|
||||
SHOW PROCEDURE CODE p1;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#23032: Handlers declared in a SP do not handle warnings generated in sub-SP
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
--echo # - Case 4: check that "No Data trumps Warning".
|
||||
--echo
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE c CURSOR FOR SELECT a FROM t1;
|
||||
|
||||
OPEN c;
|
||||
|
||||
BEGIN
|
||||
DECLARE v INT;
|
||||
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING
|
||||
BEGIN
|
||||
SELECT "Warning found!";
|
||||
SHOW WARNINGS;
|
||||
END;
|
||||
|
||||
DECLARE EXIT HANDLER FOR NOT FOUND
|
||||
BEGIN
|
||||
SELECT "End of Result Set found!";
|
||||
SHOW WARNINGS;
|
||||
END;
|
||||
|
||||
WHILE TRUE DO
|
||||
FETCH c INTO v;
|
||||
END WHILE;
|
||||
END;
|
||||
|
||||
CLOSE c;
|
||||
|
||||
SELECT a INTO @foo FROM t1 LIMIT 1; # Clear warning stack
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
SET SESSION debug="+d,bug23032_emit_warning";
|
||||
CALL p1();
|
||||
SET SESSION debug="-d,bug23032_emit_warning";
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1;
|
||||
|
||||
@@ -2543,3 +2543,273 @@ DROP TABLE t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
--echo #
|
||||
--echo # Bug#23032: Handlers declared in a SP do not handle warnings generated in sub-SP
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
--echo # - Case 1
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
DROP PROCEDURE IF EXISTS p2;
|
||||
DROP PROCEDURE IF EXISTS p3;
|
||||
DROP PROCEDURE IF EXISTS p4;
|
||||
DROP PROCEDURE IF EXISTS p5;
|
||||
DROP PROCEDURE IF EXISTS p6;
|
||||
--enable_warnings
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
SELECT 1;
|
||||
CALL p2();
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE p2()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
CALL p1();
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
|
||||
--echo
|
||||
--echo # - Case 2
|
||||
--echo
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE c INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING SET c = c + 1;
|
||||
CALL p2();
|
||||
CALL p3();
|
||||
CALL p4();
|
||||
SELECT c;
|
||||
SELECT @@warning_count;
|
||||
SHOW WARNINGS;
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE p2()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE p3()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
SELECT 1;
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE p4()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
CALL p2();
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE p5()
|
||||
BEGIN
|
||||
SELECT CAST('10 ' as unsigned integer);
|
||||
SHOW WARNINGS;
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE P6()
|
||||
BEGIN
|
||||
DECLARE c INT DEFAULT 0;
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING SET c = c + 1;
|
||||
CALL p5();
|
||||
SELECT c;
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
CALL p1();
|
||||
CALL p6();
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
DROP PROCEDURE p3;
|
||||
DROP PROCEDURE p4;
|
||||
DROP PROCEDURE p5;
|
||||
DROP PROCEDURE p6;
|
||||
|
||||
--echo
|
||||
--echo # - Case 3: check that "Exception trumps No Data".
|
||||
--echo
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
INSERT INTO t1 VALUES (1), (2), (3);
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE c CURSOR FOR SELECT a FROM t1;
|
||||
|
||||
OPEN c;
|
||||
|
||||
BEGIN
|
||||
DECLARE v1 INT;
|
||||
DECLARE v2 INT;
|
||||
|
||||
DECLARE EXIT HANDLER FOR SQLEXCEPTION
|
||||
SELECT "Error caught (expected)";
|
||||
|
||||
DECLARE EXIT HANDLER FOR NOT FOUND
|
||||
SELECT "End of Result Set found!";
|
||||
|
||||
WHILE TRUE DO
|
||||
FETCH c INTO v1, v2;
|
||||
END WHILE;
|
||||
END;
|
||||
|
||||
CLOSE c;
|
||||
|
||||
SELECT a INTO @foo FROM t1 LIMIT 1; # Clear warning stack
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
CALL p1();
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#36185: Incorrect precedence for warning and exception handlers
|
||||
--echo #
|
||||
|
||||
--disable_warnings
|
||||
DROP TABLE IF EXISTS t1;
|
||||
DROP PROCEDURE IF EXISTS p1;
|
||||
--enable_warnings
|
||||
|
||||
CREATE TABLE t1 (a INT, b INT NOT NULL);
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING SELECT 'warning';
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION SELECT 'exception';
|
||||
INSERT INTO t1 VALUES (CAST('10 ' AS SIGNED), NULL);
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
CALL p1();
|
||||
|
||||
DROP TABLE t1;
|
||||
DROP PROCEDURE p1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#5889: Exit handler for a warning doesn't hide the warning in trigger
|
||||
--echo #
|
||||
|
||||
--echo
|
||||
--echo # - Case 1
|
||||
--echo
|
||||
|
||||
CREATE TABLE t1(a INT, b INT);
|
||||
INSERT INTO t1 VALUES (1, 2);
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE TRIGGER t1_bu BEFORE UPDATE ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
DECLARE EXIT HANDLER FOR SQLWARNING
|
||||
SET NEW.a = 10;
|
||||
|
||||
SET NEW.a = 99999999999;
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
UPDATE t1 SET b = 20;
|
||||
|
||||
SHOW WARNINGS;
|
||||
|
||||
SELECT * FROM t1;
|
||||
|
||||
DROP TRIGGER t1_bu;
|
||||
DROP TABLE t1;
|
||||
|
||||
--echo
|
||||
--echo # - Case 2
|
||||
--echo
|
||||
|
||||
CREATE TABLE t1(a INT);
|
||||
CREATE TABLE t2(b CHAR(1));
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE TRIGGER t1_bi BEFORE INSERT ON t1 FOR EACH ROW
|
||||
BEGIN
|
||||
INSERT INTO t2 VALUES('ab'); # Produces a warning.
|
||||
|
||||
INSERT INTO t2 VALUES('b'); # Does not produce a warning,
|
||||
# previous warning should be cleared.
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
INSERT INTO t1 VALUES(0);
|
||||
|
||||
SHOW WARNINGS;
|
||||
|
||||
SELECT * FROM t1;
|
||||
SELECT * FROM t2;
|
||||
|
||||
DROP TRIGGER t1_bi;
|
||||
DROP TABLE t1;
|
||||
DROP TABLE t2;
|
||||
|
||||
--echo #
|
||||
--echo # Bug#9857: Stored procedures: handler for sqlwarning ignored
|
||||
--echo #
|
||||
|
||||
SET @sql_mode_saved = @@sql_mode;
|
||||
SET sql_mode = traditional;
|
||||
|
||||
delimiter |;
|
||||
|
||||
CREATE PROCEDURE p1()
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLWARNING
|
||||
SELECT 'warning caught (expected)';
|
||||
|
||||
SELECT 5 / 0;
|
||||
END|
|
||||
|
||||
CREATE PROCEDURE p2()
|
||||
BEGIN
|
||||
DECLARE CONTINUE HANDLER FOR SQLEXCEPTION
|
||||
SELECT 'error caught (unexpected)';
|
||||
|
||||
SELECT 5 / 0;
|
||||
END|
|
||||
|
||||
delimiter ;|
|
||||
|
||||
CALL p1();
|
||||
SHOW WARNINGS;
|
||||
|
||||
CALL p2();
|
||||
SHOW WARNINGS;
|
||||
|
||||
DROP PROCEDURE p1;
|
||||
DROP PROCEDURE p2;
|
||||
SET sql_mode = @sql_mode_saved;
|
||||
|
||||
@@ -5432,6 +5432,8 @@ drop procedure if exists bug15231_1|
|
||||
drop procedure if exists bug15231_2|
|
||||
drop procedure if exists bug15231_3|
|
||||
drop procedure if exists bug15231_4|
|
||||
drop procedure if exists bug15231_5|
|
||||
drop procedure if exists bug15231_6|
|
||||
--enable_warnings
|
||||
|
||||
create table t3 (id int not null)|
|
||||
@@ -5461,7 +5463,7 @@ end|
|
||||
create procedure bug15231_3()
|
||||
begin
|
||||
declare exit handler for sqlwarning
|
||||
select 'Caught it (wrong)' as 'Result';
|
||||
select 'Caught it (correct)' as 'Result';
|
||||
|
||||
call bug15231_4();
|
||||
end|
|
||||
@@ -5472,16 +5474,37 @@ begin
|
||||
|
||||
set x = 'zap';
|
||||
select 'Missed it (correct)' as 'Result';
|
||||
show warnings;
|
||||
end|
|
||||
|
||||
create procedure bug15231_5()
|
||||
begin
|
||||
declare exit handler for sqlwarning
|
||||
select 'Caught it (wrong)' as 'Result';
|
||||
|
||||
call bug15231_6();
|
||||
end|
|
||||
|
||||
create procedure bug15231_6()
|
||||
begin
|
||||
declare x decimal(2,1);
|
||||
|
||||
set x = 'zap';
|
||||
select 'Missed it (correct)' as 'Result';
|
||||
select id from t3;
|
||||
end|
|
||||
|
||||
call bug15231_1()|
|
||||
call bug15231_3()|
|
||||
call bug15231_5()|
|
||||
|
||||
drop table if exists t3|
|
||||
drop procedure if exists bug15231_1|
|
||||
drop procedure if exists bug15231_2|
|
||||
drop procedure if exists bug15231_3|
|
||||
drop procedure if exists bug15231_4|
|
||||
drop table t3|
|
||||
drop procedure bug15231_1|
|
||||
drop procedure bug15231_2|
|
||||
drop procedure bug15231_3|
|
||||
drop procedure bug15231_4|
|
||||
drop procedure bug15231_5|
|
||||
drop procedure bug15231_6|
|
||||
|
||||
|
||||
#
|
||||
|
||||
@@ -235,4 +235,19 @@ INSERT INTO t2 SELECT f1();
|
||||
DROP TABLE t1,t2,t3;
|
||||
DROP FUNCTION f1;
|
||||
|
||||
--echo #
|
||||
--echo # Bug #48067: A temp table with the same name as an existing table,
|
||||
--echo # makes drop database fail.
|
||||
--echo #
|
||||
--disable_warnings
|
||||
DROP TEMPORARY TABLE IF EXISTS bug48067.t1;
|
||||
DROP DATABASE IF EXISTS bug48067;
|
||||
--enable_warnings
|
||||
CREATE DATABASE bug48067;
|
||||
CREATE TABLE bug48067.t1 (c1 int);
|
||||
INSERT INTO bug48067.t1 values (1);
|
||||
CREATE TEMPORARY TABLE bug48067.t1 (c1 int);
|
||||
DROP DATABASE bug48067;
|
||||
DROP TEMPORARY table bug48067.t1;
|
||||
|
||||
--echo End of 5.1 tests
|
||||
|
||||
@@ -1405,4 +1405,30 @@ SET @@sql_quote_show_create = @sql_quote_show_create_saved;
|
||||
--echo # End of Bug#34828.
|
||||
--echo
|
||||
|
||||
--echo # Make sure we can manipulate with autocommit in the
|
||||
--echo # along with other variables.
|
||||
|
||||
|
||||
--disable_warnings
|
||||
drop table if exists t1;
|
||||
drop function if exists t1_max;
|
||||
drop function if exists t1_min;
|
||||
--enable_warnings
|
||||
|
||||
create table t1 (a int) engine=innodb;
|
||||
insert into t1(a) values (0), (1);
|
||||
create function t1_max() returns int return (select max(a) from t1);
|
||||
create function t1_min() returns int return (select min(a) from t1);
|
||||
select t1_min();
|
||||
select t1_max();
|
||||
set @@session.autocommit=t1_min(), @@session.autocommit=t1_max(),
|
||||
@@session.autocommit=t1_min(), @@session.autocommit=t1_max(),
|
||||
@@session.autocommit=t1_min(), @@session.autocommit=t1_max();
|
||||
|
||||
--echo # Cleanup.
|
||||
drop table t1;
|
||||
drop function t1_min;
|
||||
drop function t1_max;
|
||||
|
||||
|
||||
###########################################################################
|
||||
|
||||
Reference in New Issue
Block a user