# # Test INSERT..SELECT statement # Author: Bharath, bharath.bokka@mariadb.com # -- source ../include/have_columnstore.inc --disable_warnings DROP DATABASE IF EXISTS mcs24_db; --enable_warnings CREATE DATABASE mcs24_db; USE mcs24_db; CREATE TABLE t1(t1_bool BOOLEAN, t1_int INT, t1_decimal DECIMAL(5,2), t1_varchar VARCHAR(10), t1_dt DATETIME )ENGINE=Columnstore; CREATE TABLE t2(t2_char CHAR(5) NOT NULL DEFAULT 'xyz', t2_int INT, t2_varchar VARCHAR(10), t2_dt DATETIME )ENGINE=Columnstore; 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; # Cross engine CREATE TABLE t1(t1_int INT NOT NULL PRIMARY KEY, t1_char CHAR(10))ENGINE=InnoDB; CREATE TABLE t2(t2_int INT, t2_char CHAR(10))ENGINE=Columnstore; 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 mcs24_db;