提交 e4313390 编写于 作者: S shizhao 提交者: mergify[bot]

test(mtr): Add alter_table_negative.test and union.test(#497)

上级 e585b0e8
#
# Test ALTER TABLE in various negative scenarios.
#
DROP DATABASE IF EXISTS alter_table_negative;
DROP DATABASE IF EXISTS alter_table_negative1;
CREATE DATABASE alter_table_negative;
CREATE DATABASE alter_table_negative1;
USE alter_table_negative;
CREATE TABLE t1 (a INTEGER, c1 CHAR(10));
INSERT INTO t1 VALUES (1, 'a'),(2, 'b');
ALTER TABLE t1 ENGINE=;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
ALTER TABLE t1 ENGINE=Invalid;
ERROR 42000: Unknown storage engine 'Invalid'
ALTER TABLE t1 ENGINE='#!~@$%^&*()_+-,.*`~';
ERROR 42000: Unknown storage engine '#!~@$%^&*()_+-,.*`~'
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` int(11) DEFAULT NULL,
`c1` char(10) DEFAULT NULL
) ENGINE=TIANMU DEFAULT CHARSET=latin1
DROP TABLE IF EXISTS nonexisting;
ALTER TABLE nonexisting RENAME t2;
ERROR 42S02: Table 'alter_table_negative.nonexisting' doesn't exist
ALTER TABLE t1 ADD COLUMN (c2 INVALIDDATATYPE);
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INVALIDDATATYPE)' at line 1
ALTER TABLE t1 DROP COLUMN c2;
ERROR 42000: Can't DROP 'c2'; check that column/key exists
ALTER TABLE t1 CHANGE c2 c2 INTEGER;
ERROR 42S22: Unknown column 'c2' in 't1'
ALTER TABLE t1 CHANGE c1 c2 INVALIDDATATYPE;
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INVALIDDATATYPE' at line 1
DROP DATABASE alter_table_negative;
#
# Test cases for UNION
#
DROP DATABASE IF EXISTS union_test;
CREATE DATABASE union_test;
USE union_test;
#
# UNION for INT and INT SIGNED
#
CREATE TABLE t1 (a INT, b INT SIGNED);
INSERT INTO t1 VALUES (-1, 1), (-1, 1), (-2, 2);
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tttt ORDER BY b;
a b
-1 1
-2 2
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tttt ORDER BY a;
a
-2
-1
1
2
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tttt ORDER BY b;
b
-2
-1
1
2
DROP TABLE t1;
#
# Multiple Columns Union
#
CREATE TABLE t1 (a INT, b INT, c INT);
INSERT INTO t1 VALUES (-1, 1, 0), (-2, 2, 0), (-3, 3, 0), (-4, 4, 0), (-5, 5, 0), (-1, 1, 0), (-2, 2, 0), (-3, 3, 0), (-4, 4, 0), (-5, 5, 0);
SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t1) tttt ORDER BY b;
a b c
-1 1 0
-1 1 0
-1 1 0
-1 1 0
-2 2 0
-2 2 0
-2 2 0
-2 2 0
-3 3 0
-3 3 0
-3 3 0
-3 3 0
-4 4 0
-4 4 0
-4 4 0
-4 4 0
-5 5 0
-5 5 0
-5 5 0
-5 5 0
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT b FROM t1) tttt ORDER BY a;
a
-5
-5
-4
-4
-3
-3
-2
-2
-1
-1
1
1
2
2
3
3
4
4
5
5
SELECT * FROM (SELECT b FROM t1 UNION ALL SELECT a FROM t1) tttt ORDER BY b;
b
-5
-5
-4
-4
-3
-3
-2
-2
-1
-1
1
1
2
2
3
3
4
4
5
5
DROP TABLE t1;
#
# Same Int Type Union
#
CREATE TABLE t1 (a INT SIGNED, b INT SIGNED);
INSERT INTO t1 VALUES (1, 1), (1, 1), (2, 1), (2, 1), (3, 2), (4, 2), (5, 2);
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tttt ORDER BY a;
a
1
2
3
4
5
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tttt ORDER BY b;
b
1
2
3
4
5
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tttt ORDER BY a;
a b
1 1
2 1
3 2
4 2
5 2
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (-1, -1), (-1, -1), (2, 1), (2, 1), (3, 2), (4, 2), (5, 2);
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tttt ORDER BY a;
a
-1
1
2
3
4
5
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tttt ORDER BY b;
b
-1
1
2
3
4
5
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tttt ORDER BY a;
a b
-1 -1
2 1
3 2
4 2
5 2
DROP TABLE t1;
#
# Signed Int Union
#
CREATE TABLE t1 (a TINYINT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFFFF80 AS SIGNED)+2),(-1),(0),(1),(0x7F);
CREATE TABLE t2 (a SMALLINT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-32766
-126
-1
-1
0
0
1
1
127
32767
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-32766
-126
-1
-1
0
0
1
1
127
32767
DROP TABLE t2;
CREATE TABLE t2 (a MEDIUMINT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-8388606
-126
-1
-1
0
0
1
1
127
8388607
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-8388606
-126
-1
-1
0
0
1
1
127
8388607
DROP TABLE t2;
CREATE TABLE t2 (a INT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-2147483646
-126
-1
-1
0
0
1
1
127
2147483647
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-2147483646
-126
-1
-1
0
0
1
1
127
2147483647
DROP TABLE t2;
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-9223372036854775806
-126
-1
-1
0
0
1
1
127
9223372036854775807
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-9223372036854775806
-126
-1
-1
0
0
1
1
127
9223372036854775807
DROP TABLE t1,t2;
CREATE TABLE t1 (a SMALLINT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
CREATE TABLE t2 (a MEDIUMINT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-8388606
-32766
-1
-1
0
0
1
1
32767
8388607
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-8388606
-32766
-1
-1
0
0
1
1
32767
8388607
DROP TABLE t2;
CREATE TABLE t2 (a INT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-2147483646
-32766
-1
-1
0
0
1
1
32767
2147483647
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-2147483646
-32766
-1
-1
0
0
1
1
32767
2147483647
DROP TABLE t2;
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-9223372036854775806
-32766
-1
-1
0
0
1
1
32767
9223372036854775807
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-9223372036854775806
-32766
-1
-1
0
0
1
1
32767
9223372036854775807
DROP TABLE t1,t2;
CREATE TABLE t1 (a MEDIUMINT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
CREATE TABLE t2 (a INT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-2147483646
-8388606
-1
-1
0
0
1
1
8388607
2147483647
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-2147483646
-8388606
-1
-1
0
0
1
1
8388607
2147483647
DROP TABLE t2;
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-9223372036854775806
-8388606
-1
-1
0
0
1
1
8388607
9223372036854775807
DROP TABLE t1,t2;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
a
-9223372036854775806
-2147483646
-1
-1
0
0
1
1
2147483647
9223372036854775807
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
a
-9223372036854775806
-2147483646
-1
-1
0
0
1
1
2147483647
9223372036854775807
DROP TABLE t1,t2;
DROP DATABASE union_test;
--source include/have_tianmu.inc
--echo #
--echo # Test ALTER TABLE in various negative scenarios.
--echo #
--disable_warnings
DROP DATABASE IF EXISTS alter_table_negative;
DROP DATABASE IF EXISTS alter_table_negative1;
--enable_warnings
CREATE DATABASE alter_table_negative;
CREATE DATABASE alter_table_negative1;
USE alter_table_negative;
# Change ENGINE
CREATE TABLE t1 (a INTEGER, c1 CHAR(10));
INSERT INTO t1 VALUES (1, 'a'),(2, 'b');
--error 1064
ALTER TABLE t1 ENGINE=;
--error 1286
ALTER TABLE t1 ENGINE=Invalid;
--error 1286
ALTER TABLE t1 ENGINE='#!~@$%^&*()_+-,.*`~';
SHOW CREATE TABLE t1;
# Rename
--disable_warnings
DROP TABLE IF EXISTS nonexisting;
--enable_warnings
--error 1146
ALTER TABLE nonexisting RENAME t2;
# Add column
--error 1064
ALTER TABLE t1 ADD COLUMN (c2 INVALIDDATATYPE);
# Drop column
--error 1091
ALTER TABLE t1 DROP COLUMN c2;
# Modify column
--error 1054
ALTER TABLE t1 CHANGE c2 c2 INTEGER;
--error 1064
ALTER TABLE t1 CHANGE c1 c2 INVALIDDATATYPE;
DROP DATABASE alter_table_negative;
--source include/have_tianmu.inc
--echo #
--echo # Test cases for UNION
--echo #
--disable_warnings
DROP DATABASE IF EXISTS union_test;
--enable_warnings
CREATE DATABASE union_test;
USE union_test;
--echo #
--echo # UNION for INT and INT SIGNED
--echo #
CREATE TABLE t1 (a INT, b INT SIGNED);
INSERT INTO t1 VALUES (-1, 1), (-1, 1), (-2, 2);
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tttt ORDER BY b;
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tttt ORDER BY a;
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tttt ORDER BY b;
DROP TABLE t1;
--echo #
--echo # Multiple Columns Union
--echo #
CREATE TABLE t1 (a INT, b INT, c INT);
INSERT INTO t1 VALUES (-1, 1, 0), (-2, 2, 0), (-3, 3, 0), (-4, 4, 0), (-5, 5, 0), (-1, 1, 0), (-2, 2, 0), (-3, 3, 0), (-4, 4, 0), (-5, 5, 0);
SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t1) tttt ORDER BY b;
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT b FROM t1) tttt ORDER BY a;
SELECT * FROM (SELECT b FROM t1 UNION ALL SELECT a FROM t1) tttt ORDER BY b;
DROP TABLE t1;
--echo #
--echo # Same Int Type Union
--echo #
CREATE TABLE t1 (a INT SIGNED, b INT SIGNED);
INSERT INTO t1 VALUES (1, 1), (1, 1), (2, 1), (2, 1), (3, 2), (4, 2), (5, 2);
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tttt ORDER BY a;
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tttt ORDER BY b;
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tttt ORDER BY a;
DROP TABLE t1;
CREATE TABLE t1 (a INT, b INT);
INSERT INTO t1 VALUES (-1, -1), (-1, -1), (2, 1), (2, 1), (3, 2), (4, 2), (5, 2);
SELECT * FROM (SELECT a FROM t1 UNION SELECT b FROM t1) tttt ORDER BY a;
SELECT * FROM (SELECT b FROM t1 UNION SELECT a FROM t1) tttt ORDER BY b;
SELECT * FROM (SELECT * FROM t1 UNION SELECT * FROM t1) tttt ORDER BY a;
DROP TABLE t1;
--echo #
--echo # Signed Int Union
--echo #
CREATE TABLE t1 (a TINYINT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFFFF80 AS SIGNED)+2),(-1),(0),(1),(0x7F);
CREATE TABLE t2 (a SMALLINT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t2;
CREATE TABLE t2 (a MEDIUMINT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t2;
CREATE TABLE t2 (a INT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t2;
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t1,t2;
CREATE TABLE t1 (a SMALLINT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFFFF8000 AS SIGNED)+2),(-1),(0),(1),(0x7FFF);
CREATE TABLE t2 (a MEDIUMINT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t2;
CREATE TABLE t2 (a INT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t2;
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t1,t2;
CREATE TABLE t1 (a MEDIUMINT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFFFF800000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFF);
CREATE TABLE t2 (a INT);
INSERT INTO t2 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t2;
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
#SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t1,t2;
CREATE TABLE t1 (a INT);
INSERT INTO t1 VALUES (CAST(0xFFFFFFFF80000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFF);
CREATE TABLE t2 (a BIGINT);
INSERT INTO t2 VALUES (CAST(0x8000000000000000 AS SIGNED)+2),(-1),(0),(1),(0x7FFFFFFFFFFFFFFF);
SELECT * FROM (SELECT a FROM t1 UNION ALL SELECT a FROM t2) tttt ORDER BY a;
SELECT * FROM (SELECT a FROM t2 UNION ALL SELECT a FROM t1) tttt ORDER BY a;
DROP TABLE t1,t2;
DROP DATABASE union_test;
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册