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

test(mtr): add insert_select_from.test and show_db_table.test(#497)

上级 79ffc673
#
# Test INSERT..SELECT statement
# Author: shiz
#
DROP DATABASE IF EXISTS insert_select_test;
CREATE DATABASE insert_select_test;
USE insert_select_test;
CREATE TABLE t1(t1_bool BOOLEAN,
t1_int INT,
t1_decimal DECIMAL(5,2),
t1_varchar VARCHAR(10),
t1_dt DATETIME
);
CREATE TABLE t2(t2_char CHAR(5) NOT NULL DEFAULT 'xyz',
t2_int INT,
t2_varchar VARCHAR(10),
t2_dt DATETIME
);
INSERT INTO t1 VALUES(1,1111,11.11,'aaaaa','2020-02-01 17:8:19'),
(1,2222,22.22,'bbbb','1234-11-21 9:18:16');
SELECT * FROM t1;
t1_bool t1_int t1_decimal t1_varchar t1_dt
1 1111 11.11 aaaaa 2020-02-01 17:08:19
1 2222 22.22 bbbb 1234-11-21 09:18:16
INSERT INTO t2 (t2_int,t2_varchar,t2_dt) SELECT t1_int,t1_varchar,t1_dt FROM t1;
INSERT INTO t2 (t2_int,t2_varchar,t2_dt) SELECT t1_int,t1_varchar,t1_dt FROM t1 WHERE t1.t1_int=1111;
INSERT INTO t2 SELECT * FROM t2;
INSERT INTO t2 (t2_char) SELECT (SELECT SUM(LENGTH(t1_varchar)) FROM t1) FROM t1 LIMIT 1;
INSERT INTO t2 (t2_char) SELECT (SELECT MAX(LENGTH(t1_varchar)) AS 'var' FROM t1) FROM t1 LIMIT 1;
INSERT INTO t2 SELECT * FROM t2 WHERE t2.t2_char='xyz' LIMIT 1;
SELECT * FROM t2;
t2_char t2_int t2_varchar t2_dt
xyz 1111 aaaaa 2020-02-01 17:08:19
xyz 2222 bbbb 1234-11-21 09:18:16
xyz 1111 aaaaa 2020-02-01 17:08:19
xyz 1111 aaaaa 2020-02-01 17:08:19
xyz 2222 bbbb 1234-11-21 09:18:16
xyz 1111 aaaaa 2020-02-01 17:08:19
9 NULL NULL NULL
5 NULL NULL NULL
xyz 1111 aaaaa 2020-02-01 17:08:19
INSERT INTO t2 SELECT * FROM t1;
ERROR 21S01: Column count doesn't match value count at row 1
INSERT INTO t2 SELECT t1_int,t1_varchar,t1_dt FROM t1;
ERROR 21S01: Column count doesn't match value count at row 1
INSERT INTO t2 SELECT (SELECT SUM(LENGTH(t2_varchar)) AS 'var' FROM t2 WHERE t2.t2_char='xyz' LIMIT 1) FROM t2;
ERROR 21S01: Column count doesn't match value count at row 1
INSERT INTO t2 SELECT * FROM t2,t2;
ERROR 42000: Not unique table/alias: 't2'
DROP TABLE t1;
DROP TABLE t2;
CREATE TABLE t1(t1_int INT NOT NULL PRIMARY KEY, t1_char CHAR(10));
CREATE TABLE t2(t2_int INT, t2_char CHAR(10));
INSERT INTO t1 VALUES(1,'a'),(2,'bb'),(3,'ccc');
INSERT INTO t2 SELECT * FROM t1;
INSERT INTO t2 SELECT * FROM t2;
SELECT * FROM t2;
t2_int t2_char
1 a
2 bb
3 ccc
1 a
2 bb
3 ccc
DROP DATABASE insert_select_test;
#
# Test show databases and tables
# Author: shiz
#
DROP DATABASE IF EXISTS show_test1;
DROP DATABASE IF EXISTS show_test2;
CREATE DATABASE show_test1;
CREATE SCHEMA show_test2;
SHOW DATABASES LIKE 'show%';
Database (show%)
show_test1
show_test2
SHOW SCHEMAS LIKE 'show%';
Database (show%)
show_test1
show_test2
SHOW TABLES IN show_test1;
Tables_in_show_test1
USE show_test2;
SHOW TABLES;
Tables_in_show_test2
CREATE TABLE show_test1.t1 (id INT);
CREATE TABLE show_test1.t2 (id INT);
SHOW TABLES IN show_test1;
Tables_in_show_test1
t1
t2
USE show_test1;
SHOW TABLES;
Tables_in_show_test1
t1
t2
USE show_test2;
CREATE TABLE t1 (id INT);
CREATE TABLE t2 (id INT);
CREATE TEMPORARY TABLE tmp1 (id INT);
CREATE TEMPORARY TABLE tmp1 (id INT);
ERROR 42S01: Table 'tmp1' already exists
SHOW TABLES;
Tables_in_show_test2
t1
t2
SHOW TABLES IN show_test2;
Tables_in_show_test2
t1
t2
DROP DATABASE show_test1;
DROP DATABASE show_test2;
--source include/have_tianmu.inc
--echo #
--echo # Test INSERT..SELECT statement
--echo # Author: shiz
--echo #
--disable_warnings
DROP DATABASE IF EXISTS insert_select_test;
--enable_warnings
CREATE DATABASE insert_select_test;
USE insert_select_test;
CREATE TABLE t1(t1_bool BOOLEAN,
t1_int INT,
t1_decimal DECIMAL(5,2),
t1_varchar VARCHAR(10),
t1_dt DATETIME
);
CREATE TABLE t2(t2_char CHAR(5) NOT NULL DEFAULT 'xyz',
t2_int INT,
t2_varchar VARCHAR(10),
t2_dt DATETIME
);
INSERT INTO t1 VALUES(1,1111,11.11,'aaaaa','2020-02-01 17:8:19'),
(1,2222,22.22,'bbbb','1234-11-21 9:18:16');
SELECT * FROM t1;
INSERT INTO t2 (t2_int,t2_varchar,t2_dt) SELECT t1_int,t1_varchar,t1_dt FROM t1;
INSERT INTO t2 (t2_int,t2_varchar,t2_dt) SELECT t1_int,t1_varchar,t1_dt FROM t1 WHERE t1.t1_int=1111;
INSERT INTO t2 SELECT * FROM t2;
INSERT INTO t2 (t2_char) SELECT (SELECT SUM(LENGTH(t1_varchar)) FROM t1) FROM t1 LIMIT 1;
INSERT INTO t2 (t2_char) SELECT (SELECT MAX(LENGTH(t1_varchar)) AS 'var' FROM t1) FROM t1 LIMIT 1;
INSERT INTO t2 SELECT * FROM t2 WHERE t2.t2_char='xyz' LIMIT 1;
SELECT * FROM t2;
# Negative scenarios
--error ER_WRONG_VALUE_COUNT_ON_ROW
INSERT INTO t2 SELECT * FROM t1;
--error ER_WRONG_VALUE_COUNT_ON_ROW
INSERT INTO t2 SELECT t1_int,t1_varchar,t1_dt FROM t1;
--error ER_WRONG_VALUE_COUNT_ON_ROW
INSERT INTO t2 SELECT (SELECT SUM(LENGTH(t2_varchar)) AS 'var' FROM t2 WHERE t2.t2_char='xyz' LIMIT 1) FROM t2;
--error ER_NONUNIQ_TABLE
INSERT INTO t2 SELECT * FROM t2,t2;
DROP TABLE t1;
DROP TABLE t2;
CREATE TABLE t1(t1_int INT NOT NULL PRIMARY KEY, t1_char CHAR(10));
CREATE TABLE t2(t2_int INT, t2_char CHAR(10));
INSERT INTO t1 VALUES(1,'a'),(2,'bb'),(3,'ccc');
INSERT INTO t2 SELECT * FROM t1;
INSERT INTO t2 SELECT * FROM t2;
SELECT * FROM t2;
# Clean up
DROP DATABASE insert_select_test;
--source include/have_tianmu.inc
--echo #
--echo # Test show databases and tables
--echo # Author: shiz
--echo #
--disable_warnings
DROP DATABASE IF EXISTS show_test1;
DROP DATABASE IF EXISTS show_test2;
--enable_warnings
CREATE DATABASE show_test1;
CREATE SCHEMA show_test2;
--sorted_result
SHOW DATABASES LIKE 'show%';
--sorted_result
SHOW SCHEMAS LIKE 'show%';
SHOW TABLES IN show_test1;
USE show_test2;
--sorted_result
SHOW TABLES;
CREATE TABLE show_test1.t1 (id INT);
CREATE TABLE show_test1.t2 (id INT);
--sorted_result
SHOW TABLES IN show_test1;
USE show_test1;
--sorted_result
SHOW TABLES;
USE show_test2;
CREATE TABLE t1 (id INT);
CREATE TABLE t2 (id INT);
CREATE TEMPORARY TABLE tmp1 (id INT);
--error 1050
CREATE TEMPORARY TABLE tmp1 (id INT);
--sorted_result
SHOW TABLES;
--sorted_result
SHOW TABLES IN show_test2;
# Clean up
DROP DATABASE show_test1;
DROP DATABASE show_test2;
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册