mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-04-21 19:45:56 +03:00
136 lines
7.3 KiB
Plaintext
136 lines
7.3 KiB
Plaintext
#
|
|
# Test Set operators like UNION, UNION ALL, EXCEPT, INTERSECT
|
|
# Author: Bharath, bharath.bokka@mariadb.com
|
|
#
|
|
-- source include/have_innodb.inc
|
|
-- source ../include/have_columnstore.inc
|
|
|
|
if (!$MASTER_MYPORT)
|
|
{
|
|
# Running with --extern
|
|
let $MASTER_MYPORT=`SELECT @@port`;
|
|
}
|
|
|
|
--disable_warnings
|
|
DROP DATABASE IF EXISTS mcs80_db;
|
|
--enable_warnings
|
|
|
|
CREATE DATABASE mcs80_db;
|
|
USE mcs80_db;
|
|
|
|
#
|
|
# Enable cross engine join
|
|
# Configure user and password in Columnstore.xml file
|
|
#
|
|
--exec $MCS_MCSSETCONFIG CrossEngineSupport User 'cejuser'
|
|
--exec $MCS_MCSSETCONFIG CrossEngineSupport Password 'Vagrant1|0000001'
|
|
--exec $MCS_MCSSETCONFIG CrossEngineSupport Port $MASTER_MYPORT
|
|
|
|
#
|
|
# Create corresponding in the server
|
|
#
|
|
--disable_warnings
|
|
CREATE USER IF NOT EXISTS'cejuser'@'localhost' IDENTIFIED BY 'Vagrant1|0000001';
|
|
--enable_warnings
|
|
GRANT ALL PRIVILEGES ON *.* TO 'cejuser'@'localhost';
|
|
FLUSH PRIVILEGES;
|
|
|
|
CREATE TABLE t1 (t1_int INT, t1_char CHAR(5))ENGINE=Columnstore;
|
|
CREATE TABLE t2 (t2_int INT, t2_char CHAR(5))ENGINE=Columnstore;
|
|
CREATE TABLE t3 (t3_int INT, t3_char CHAR(5))ENGINE=Innodb;
|
|
CREATE TABLE t4 (t4_int INT, t4_char CHAR(5))ENGINE=Myisam;
|
|
INSERT INTO t1 VALUES (NULL, ''),(1, 'aaa'),(2, 'aaa'),(3, 'ccc'),(4, 'ddd'),(5, 'aaa'),(6, ''),(7, 'eee');
|
|
INSERT INTO t2 VALUES (NULL, ''),(1, 'eee'),(3, 'ccc'),(5, 'jjj'),(6, ''),(7, 'lll'),(9, 'eee'),(11, 'nnn');
|
|
INSERT INTO t3 SELECT * FROM t2;
|
|
INSERT INTO t4 SELECT * FROM t1;
|
|
|
|
# UNION
|
|
SELECT t1_int FROM t1 UNION SELECT t2_int FROM t2 ORDER BY t1_int;
|
|
SELECT t1_char FROM t1 UNION SELECT t2_char FROM t2 ORDER BY t1_char;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 WHERE t1_int > 1 UNION SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY t1_int;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION SELECT t2_char, 'Character' AS Table2 FROM t2 WHERE t2_int > 1 ORDER by 1,2;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION SELECT t2_char, 'Character' AS Table2 FROM t2 ORDER by 1 DESC;
|
|
SELECT t1_char, 'Character' AS Table1 FROM t1 UNION SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY 2 ASC;
|
|
SELECT t1_char, 'Character' AS Table1 FROM t1 UNION SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY 1, 2;
|
|
SELECT t1_char, t1_int FROM t1 UNION SELECT t2_char, t2_int FROM t2 ORDER BY 1;
|
|
# cross engine
|
|
SELECT t1_int FROM t1 UNION SELECT t3_int FROM t3 ORDER BY t1_int;
|
|
SELECT t2_int FROM t2 UNION SELECT t4_int FROM t4 ORDER BY t2_int;
|
|
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION SELECT t2_int FROM t2 order by t1_int desc;
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION SELECT t3_int FROM t3 order by t1_int desc;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION SELECT t3_int, 'Integer' AS Table2 FROM t3 order by t3_int;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION SELECT t2_int, 'Integer' AS Table2 FROM t2 order by t2_int;
|
|
|
|
# UNION ALL
|
|
SELECT t1_int FROM t1 UNION ALL SELECT t2_int FROM t2 ORDER BY t1_int;
|
|
SELECT t1_char FROM t1 UNION ALL SELECT t2_char FROM t2 ORDER BY t1_char;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 WHERE t1_int > 1 UNION ALL SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY t1_int;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION ALL SELECT t2_char, 'Character' AS Table2 FROM t2 WHERE t2_int > 1 ORDER by 1,2;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION ALL SELECT t2_char, 'Character' AS Table2 FROM t2 ORDER by 1 DESC;
|
|
SELECT t1_char, 'Character' AS Table1 FROM t1 UNION ALL SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY 2 ASC;
|
|
SELECT t1_char, 'Character' AS Table1 FROM t1 UNION ALL SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY 1, 2;
|
|
SELECT t1_char, t1_int FROM t1 UNION ALL SELECT t2_char, t2_int FROM t2 ORDER BY 1;
|
|
# cross engine
|
|
SELECT t1_int FROM t1 UNION ALL SELECT t3_int FROM t3 ORDER BY t1_int;
|
|
SELECT t2_int FROM t2 UNION ALL SELECT t4_int FROM t4 ORDER BY t2_int;
|
|
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION ALL SELECT t2_int FROM t2 order by t1_int desc;
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION ALL SELECT t3_int FROM t3 order by t1_int desc;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION ALL SELECT t3_int, 'Integer' AS Table2 FROM t3 order by t3_int;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 UNION ALL SELECT t2_int, 'Integer' AS Table2 FROM t2 order by t2_int;
|
|
|
|
# INTERSECT
|
|
SELECT t1_int FROM t1 INTERSECT SELECT t2_int FROM t2 ORDER BY t1_int;
|
|
SELECT t1_char FROM t1 INTERSECT SELECT t2_char FROM t2 ORDER BY t1_char;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 WHERE t1_int > 1 INTERSECT SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY t1_int;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 INTERSECT SELECT t2_char, 'Character' AS Table2 FROM t2 WHERE t2_int > 1 ORDER by 1,2;
|
|
SELECT t1_char, 'Character' AS Table1 FROM t1 INTERSECT SELECT t2_int, 'Integer' AS Table2 FROM t2;
|
|
SELECT t1_char, t1_int FROM t1 INTERSECT SELECT t2_char, t2_int FROM t2 ORDER BY 1;
|
|
# cross engine
|
|
SELECT t1_int FROM t1 INTERSECT SELECT t3_int FROM t3 ORDER BY t1_int;
|
|
SELECT t2_int FROM t2 INTERSECT SELECT t4_int FROM t4 ORDER BY t2_int;
|
|
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 INTERSECT SELECT t2_int FROM t2 order by t1_int desc;
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 INTERSECT SELECT t3_int FROM t3 order by t1_int desc;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 INTERSECT SELECT t3_int, 'Integer' AS Table2 FROM t3 order by t3_int;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 INTERSECT SELECT t2_int, 'Integer' AS Table2 FROM t2 order by t2_int;
|
|
|
|
# EXCEPT
|
|
SELECT t1_int FROM t1 EXCEPT SELECT t2_int FROM t2 ORDER BY t1_int;
|
|
SELECT t1_char FROM t1 EXCEPT SELECT t2_char FROM t2 ORDER BY t1_char;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 WHERE t1_int > 1 EXCEPT SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY t1_int;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 EXCEPT SELECT t2_char, 'Character' AS Table2 FROM t2 WHERE t2_int > 1 ORDER by 1,2;
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 EXCEPT SELECT t2_char, 'Character' AS Table2 FROM t2 ORDER by 1 DESC;
|
|
SELECT t1_char, 'Character' AS Table1 FROM t1 EXCEPT SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY 2 ASC;
|
|
SELECT t1_char, 'Character' AS Table1 FROM t1 EXCEPT SELECT t2_int, 'Integer' AS Table2 FROM t2 ORDER BY 1, 2;
|
|
SELECT t1_char, t1_int FROM t1 EXCEPT SELECT t2_char, t2_int FROM t2 ORDER BY 1;
|
|
# cross engine
|
|
SELECT t1_int FROM t1 EXCEPT SELECT t3_int FROM t3 ORDER BY t1_int;
|
|
SELECT t2_int FROM t2 EXCEPT SELECT t4_int FROM t4 ORDER BY t2_int;
|
|
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 EXCEPT SELECT t2_int FROM t2 order by t1_int desc;
|
|
--error ER_WRONG_NUMBER_OF_COLUMNS_IN_SELECT
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 EXCEPT SELECT t3_int FROM t3 order by t1_int desc;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 EXCEPT SELECT t3_int, 'Integer' AS Table2 FROM t3 order by t3_int;
|
|
--error ER_BAD_FIELD_ERROR
|
|
SELECT t1_int, 'Integer' AS Table1 FROM t1 EXCEPT SELECT t2_int, 'Integer' AS Table2 FROM t2 order by t2_int;
|
|
|
|
# Clean UP
|
|
DROP USER 'cejuser'@'localhost';
|
|
DROP DATABASE mcs80_db;
|