1
0
mirror of https://github.com/mariadb-corporation/mariadb-columnstore-engine.git synced 2025-07-30 19:23:07 +03:00

MCOL-4674 Fix ColumnStore to run MTR tests in a build directory

This commit is contained in:
Alexander Barkov
2021-04-13 11:25:25 +04:00
parent d8b473329f
commit 75e3bbc31e
1874 changed files with 1 additions and 0 deletions

View File

@ -0,0 +1 @@
This suite contains tests to validate newer bug fixes (post 4th dec 2020).

View File

@ -0,0 +1,21 @@
DROP DATABASE IF EXISTS `mcol 3785`;
DROP DATABASE IF EXISTS `mcol 3785 2`;
CREATE DATABASE `mcol 3785`;
CREATE DATABASE `mcol 3785 2`;
USE `mcol 3785`;
CREATE TABLE src (c0 INT, c1 INT);
INSERT INTO src VALUES (1,1),(1,1),(1,1),(2,2),(2,2),(2,2),(3,3),(3,3),(3,3);
CREATE TABLE `target table` ENGINE=ColumnStore AS SELECT c0, COUNT(c0) FROM `mcol 3785`.src GROUP BY c0;
SELECT * FROM `target table`;
c0 COUNT(c0)
1 3
2 3
3 3
CREATE TABLE `mcol 3785 2`.`target table` ENGINE=ColumnStore AS SELECT c0, COUNT(c0) FROM `mcol 3785`.src GROUP BY c0;
SELECT * FROM `mcol 3785 2`.`target table`;
c0 COUNT(c0)
1 3
2 3
3 3
DROP DATABASE `mcol 3785`;
DROP DATABASE `mcol 3785 2`;

View File

@ -0,0 +1,19 @@
--source ../include/have_columnstore.inc
--disable_warnings
DROP DATABASE IF EXISTS `mcol 3785`;
DROP DATABASE IF EXISTS `mcol 3785 2`;
--enable_warnings
CREATE DATABASE `mcol 3785`;
CREATE DATABASE `mcol 3785 2`;
USE `mcol 3785`;
CREATE TABLE src (c0 INT, c1 INT);
INSERT INTO src VALUES (1,1),(1,1),(1,1),(2,2),(2,2),(2,2),(3,3),(3,3),(3,3);
CREATE TABLE `target table` ENGINE=ColumnStore AS SELECT c0, COUNT(c0) FROM `mcol 3785`.src GROUP BY c0;
SELECT * FROM `target table`;
CREATE TABLE `mcol 3785 2`.`target table` ENGINE=ColumnStore AS SELECT c0, COUNT(c0) FROM `mcol 3785`.src GROUP BY c0;
SELECT * FROM `mcol 3785 2`.`target table`;
# cleanup
DROP DATABASE `mcol 3785`;
DROP DATABASE `mcol 3785 2`;

View File

@ -0,0 +1,119 @@
DROP DATABASE IF EXISTS mcol_4412;
CREATE DATABASE mcol_4412;
USE mcol_4412;
create table dtypes (
ti tinyint,
si smallint,
id int,
bi bigint,
uti tinyint,
usi smallint,
uid int,
ubi bigint,
f float,
db double,
dt date,
dtm datetime,
c2 char(2),
vc1 varchar(1),
d8 decimal(18, 0),
d16 decimal(38, 0)
)engine=columnstore;
INSERT INTO dtypes (ti) VALUES (42);
INSERT INTO dtypes (ti) VALUES (43);
INSERT INTO dtypes (si) VALUES (42);
INSERT INTO dtypes (si) VALUES (43);
INSERT INTO dtypes (id) VALUES (42);
INSERT INTO dtypes (id) VALUES (43);
INSERT INTO dtypes (bi) VALUES (42);
INSERT INTO dtypes (bi) VALUES (43);
INSERT INTO dtypes (uti) VALUES (42);
INSERT INTO dtypes (uti) VALUES (43);
INSERT INTO dtypes (usi) VALUES (42);
INSERT INTO dtypes (usi) VALUES (43);
INSERT INTO dtypes (uid) VALUES (42);
INSERT INTO dtypes (uid) VALUES (43);
INSERT INTO dtypes (ubi) VALUES (42);
INSERT INTO dtypes (ubi) VALUES (43);
INSERT INTO dtypes (d8) VALUES (42);
INSERT INTO dtypes (d8) VALUES (43);
INSERT INTO dtypes (d16) VALUES (42);
INSERT INTO dtypes (d16) VALUES (43);
INSERT INTO dtypes (f) VALUES (42);
INSERT INTO dtypes (f) VALUES (43);
INSERT INTO dtypes (db) VALUES (42);
INSERT INTO dtypes (db) VALUES (43);
INSERT INTO dtypes (dt) VALUES ('2020-11-15');
INSERT INTO dtypes (dt) VALUES ('2021-11-15');
INSERT INTO dtypes (dtm) VALUES ('2020-11-15 08:20:22');
INSERT INTO dtypes (dtm) VALUES ('2021-11-15 08:20:22');
INSERT INTO dtypes (c2) VALUES ('so');
INSERT INTO dtypes (c2) VALUES ('ot');
INSERT INTO dtypes (vc1) VALUES ('s');
INSERT INTO dtypes (vc1) VALUES ('o');
DELETE FROM dtypes WHERE ti = 42;
SELECT count(ti) FROM dtypes WHERE ti IS NOT NULL;
count(ti)
1
DELETE FROM dtypes WHERE si = 42;
SELECT count(si) FROM dtypes WHERE si IS NOT NULL;
count(si)
1
DELETE FROM dtypes WHERE id = 42;
SELECT count(id) FROM dtypes WHERE id IS NOT NULL;
count(id)
1
DELETE FROM dtypes WHERE bi = 42;
SELECT count(bi) FROM dtypes WHERE bi IS NOT NULL;
count(bi)
1
DELETE FROM dtypes WHERE uti = 42;
SELECT count(uti) FROM dtypes WHERE uti IS NOT NULL;
count(uti)
1
DELETE FROM dtypes WHERE usi = 42;
SELECT count(usi) FROM dtypes WHERE usi IS NOT NULL;
count(usi)
1
DELETE FROM dtypes WHERE uid = 42;
SELECT count(uid) FROM dtypes WHERE uid IS NOT NULL;
count(uid)
1
DELETE FROM dtypes WHERE ubi = 42;
SELECT count(ubi) FROM dtypes WHERE ubi IS NOT NULL;
count(ubi)
1
DELETE FROM dtypes WHERE d8 = 42;
SELECT count(d8) FROM dtypes WHERE d8 IS NOT NULL;
count(d8)
1
DELETE FROM dtypes WHERE d16 = 42;
SELECT count(d16) FROM dtypes WHERE d16 IS NOT NULL;
count(d16)
1
DELETE FROM dtypes WHERE f = 42;
SELECT count(f) FROM dtypes WHERE f IS NOT NULL;
count(f)
1
DELETE FROM dtypes WHERE db = 42;
SELECT count(db) FROM dtypes WHERE db IS NOT NULL;
count(db)
1
DELETE FROM dtypes WHERE dt = '2020-11-15';
SELECT count(dt) FROM dtypes WHERE dt IS NOT NULL;
count(dt)
1
DELETE FROM dtypes WHERE dtm = '2020-11-15 08:20:22';
SELECT count(dtm) FROM dtypes WHERE dtm IS NOT NULL;
count(dtm)
1
DELETE FROM dtypes WHERE c2 = 'so';
SELECT count(c2) FROM dtypes WHERE c2 IS NOT NULL;
count(c2)
1
DELETE FROM dtypes WHERE vc1 = 's';
SELECT count(vc1) FROM dtypes WHERE vc1 IS NOT NULL;
count(vc1)
1
create table udtypes_ddl_test ( f float unsigned, db double unsigned )engine=columnstore;
DROP DATABASE mcol_4412;

View File

@ -0,0 +1,67 @@
-- source ../include/have_columnstore.inc
-- disable_warnings
DROP DATABASE IF EXISTS mcol_4412;
-- enable_warnings
CREATE DATABASE mcol_4412;
USE mcol_4412;
create table dtypes (
ti tinyint,
si smallint,
id int,
bi bigint,
uti tinyint,
usi smallint,
uid int,
ubi bigint,
f float,
db double,
dt date,
dtm datetime,
c2 char(2),
vc1 varchar(1),
d8 decimal(18, 0),
d16 decimal(38, 0)
)engine=columnstore;
INSERT INTO dtypes (ti) VALUES (42); INSERT INTO dtypes (ti) VALUES (43);
INSERT INTO dtypes (si) VALUES (42); INSERT INTO dtypes (si) VALUES (43);
INSERT INTO dtypes (id) VALUES (42); INSERT INTO dtypes (id) VALUES (43);
INSERT INTO dtypes (bi) VALUES (42); INSERT INTO dtypes (bi) VALUES (43);
INSERT INTO dtypes (uti) VALUES (42); INSERT INTO dtypes (uti) VALUES (43);
INSERT INTO dtypes (usi) VALUES (42); INSERT INTO dtypes (usi) VALUES (43);
INSERT INTO dtypes (uid) VALUES (42); INSERT INTO dtypes (uid) VALUES (43);
INSERT INTO dtypes (ubi) VALUES (42); INSERT INTO dtypes (ubi) VALUES (43);
INSERT INTO dtypes (d8) VALUES (42); INSERT INTO dtypes (d8) VALUES (43);
INSERT INTO dtypes (d16) VALUES (42); INSERT INTO dtypes (d16) VALUES (43);
INSERT INTO dtypes (f) VALUES (42); INSERT INTO dtypes (f) VALUES (43);
INSERT INTO dtypes (db) VALUES (42); INSERT INTO dtypes (db) VALUES (43);
INSERT INTO dtypes (dt) VALUES ('2020-11-15'); INSERT INTO dtypes (dt) VALUES ('2021-11-15');
INSERT INTO dtypes (dtm) VALUES ('2020-11-15 08:20:22'); INSERT INTO dtypes (dtm) VALUES ('2021-11-15 08:20:22');
INSERT INTO dtypes (c2) VALUES ('so'); INSERT INTO dtypes (c2) VALUES ('ot');
INSERT INTO dtypes (vc1) VALUES ('s'); INSERT INTO dtypes (vc1) VALUES ('o');
DELETE FROM dtypes WHERE ti = 42; SELECT count(ti) FROM dtypes WHERE ti IS NOT NULL;
DELETE FROM dtypes WHERE si = 42; SELECT count(si) FROM dtypes WHERE si IS NOT NULL;
DELETE FROM dtypes WHERE id = 42; SELECT count(id) FROM dtypes WHERE id IS NOT NULL;
DELETE FROM dtypes WHERE bi = 42; SELECT count(bi) FROM dtypes WHERE bi IS NOT NULL;
DELETE FROM dtypes WHERE uti = 42; SELECT count(uti) FROM dtypes WHERE uti IS NOT NULL;
DELETE FROM dtypes WHERE usi = 42; SELECT count(usi) FROM dtypes WHERE usi IS NOT NULL;
DELETE FROM dtypes WHERE uid = 42; SELECT count(uid) FROM dtypes WHERE uid IS NOT NULL;
DELETE FROM dtypes WHERE ubi = 42; SELECT count(ubi) FROM dtypes WHERE ubi IS NOT NULL;
DELETE FROM dtypes WHERE d8 = 42; SELECT count(d8) FROM dtypes WHERE d8 IS NOT NULL;
DELETE FROM dtypes WHERE d16 = 42; SELECT count(d16) FROM dtypes WHERE d16 IS NOT NULL;
DELETE FROM dtypes WHERE f = 42; SELECT count(f) FROM dtypes WHERE f IS NOT NULL;
DELETE FROM dtypes WHERE db = 42; SELECT count(db) FROM dtypes WHERE db IS NOT NULL;
DELETE FROM dtypes WHERE dt = '2020-11-15'; SELECT count(dt) FROM dtypes WHERE dt IS NOT NULL;
DELETE FROM dtypes WHERE dtm = '2020-11-15 08:20:22'; SELECT count(dtm) FROM dtypes WHERE dtm IS NOT NULL;
DELETE FROM dtypes WHERE c2 = 'so'; SELECT count(c2) FROM dtypes WHERE c2 IS NOT NULL;
DELETE FROM dtypes WHERE vc1 = 's'; SELECT count(vc1) FROM dtypes WHERE vc1 IS NOT NULL;
create table udtypes_ddl_test ( f float unsigned, db double unsigned )engine=columnstore;
# cleanup
DROP DATABASE mcol_4412;

View File

@ -0,0 +1,47 @@
DROP DATABASE IF EXISTS mcol_4453_4455;
CREATE DATABASE mcol_4453_4455;
USE mcol_4453_4455;
CREATE TABLE `t1` (
a INT
) ENGINE=ColumnStore;
INSERT INTO t1 (a) VALUES (3), (3), (2), (1), (2);
SELECT a FROM t1 LIMIT 0;
a
SELECT a FROM t1 LIMIT 1,0;
a
SELECT DISTINCT a FROM t1 LIMIT 0;
a
SELECT DISTINCT a FROM t1 LIMIT 1,0;
a
SELECT a FROM t1 ORDER BY 1 LIMIT 0;
a
SELECT a FROM t1 ORDER BY 1 LIMIT 1,0;
a
SELECT DISTINCT a FROM t1;
a
3
2
1
SELECT DISTINCT a FROM t1 LIMIT 0,2;
a
3
2
SELECT DISTINCT a FROM t1 LIMIT 1,2;
a
2
1
SELECT DISTINCT a FROM t1 LIMIT 2,2;
a
1
SELECT DISTINCT a FROM t1 LIMIT 3,2;
a
SELECT DISTINCT a FROM t1 LIMIT 1,1;
a
2
SELECT DISTINCT a FROM t1 LIMIT 2,1;
a
1
SELECT DISTINCT a FROM t1 LIMIT 3,1;
a
DROP TABLE t1;
DROP DATABASE mcol_4453_4455;

View File

@ -0,0 +1,36 @@
-- source ../include/have_columnstore.inc
-- disable_warnings
DROP DATABASE IF EXISTS mcol_4453_4455;
-- enable_warnings
CREATE DATABASE mcol_4453_4455;
USE mcol_4453_4455;
CREATE TABLE `t1` (
a INT
) ENGINE=ColumnStore;
INSERT INTO t1 (a) VALUES (3), (3), (2), (1), (2);
# MCOL-4453 test case, `LIMIT 0` should return empty set
SELECT a FROM t1 LIMIT 0;
SELECT a FROM t1 LIMIT 1,0;
SELECT DISTINCT a FROM t1 LIMIT 0;
SELECT DISTINCT a FROM t1 LIMIT 1,0;
SELECT a FROM t1 ORDER BY 1 LIMIT 0;
SELECT a FROM t1 ORDER BY 1 LIMIT 1,0;
# MCOL-4455 test case, `SELECT DISTINCT ... LIMIT O,N` should skip first O rows
SELECT DISTINCT a FROM t1;
SELECT DISTINCT a FROM t1 LIMIT 0,2;
SELECT DISTINCT a FROM t1 LIMIT 1,2;
SELECT DISTINCT a FROM t1 LIMIT 2,2;
SELECT DISTINCT a FROM t1 LIMIT 3,2;
SELECT DISTINCT a FROM t1 LIMIT 1,1;
SELECT DISTINCT a FROM t1 LIMIT 2,1;
SELECT DISTINCT a FROM t1 LIMIT 3,1;
# cleanup
DROP TABLE t1;
DROP DATABASE mcol_4453_4455;

View File

@ -0,0 +1,132 @@
DROP DATABASE IF EXISTS mcol_4493;
CREATE DATABASE mcol_4493;
USE mcol_4493;
CREATE TABLE t1 (a CHAR(10), b INT) ENGINE=columnstore;
INSERT INTO t1 VALUES ('a', 1), ('b', 2), ('c', 3);
CREATE TABLE t2 (a INT) ENGINE=columnstore;
INSERT INTO t2 values (2), (3);
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=1) _h
ON t1.b=_h.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 NULL
c 3 NULL
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=2) _h
ON t1.b=_h.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 2
c 3 NULL
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=3) _h
ON t1.b=_h.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 NULL
c 3 3
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h
ON t1.b=_h.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 2
c 3 3
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=1) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 NULL
c 3 NULL
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=2) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 2
c 3 NULL
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=3) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 NULL
c 3 3
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
a b a
a 1 NULL
b 2 2
c 3 3
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h
ON _g.b=_h.a ORDER BY _g.a;
a b a
b 2 2
c 3 3
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a AND table1.b=2) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND (table1.a=1 OR table1.a=2)) _h
ON _g.b=_h.a ORDER BY _g.a;
a b a
b 2 2
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a AND (table1.b=2 OR table1.b=1)) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND (table1.a=1 OR table1.a=3)) _h
ON _g.b=_h.a ORDER BY _g.a;
a b a
b 2 NULL
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a AND table1.b=1) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h
ON _g.b=_h.a ORDER BY _g.a;
a b a
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=1) _h
ON _g.b=_h.a ORDER BY _g.a;
a b a
b 2 NULL
c 3 NULL
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND (table1.a=1 OR table1.a=2)) _h
ON _g.b=_h.a ORDER BY _g.a;
a b a
b 2 2
c 3 NULL
DROP DATABASE mcol_4493;

View File

@ -0,0 +1,132 @@
# Test case for MCOL-4493
# This test case demonstrates that the WHERE condition
# used in the ON expression of an INNER JOIN used in a
# subquery as the LEFT side of an outer join is getting
# processed correctly.
-- source ../include/have_columnstore.inc
-- disable_warnings
DROP DATABASE IF EXISTS mcol_4493;
-- enable_warnings
CREATE DATABASE mcol_4493;
USE mcol_4493;
CREATE TABLE t1 (a CHAR(10), b INT) ENGINE=columnstore;
INSERT INTO t1 VALUES ('a', 1), ('b', 2), ('c', 3);
CREATE TABLE t2 (a INT) ENGINE=columnstore;
INSERT INTO t2 values (2), (3);
# Test single INNER JOIN
## Test impossible WHERE condition in the ON expression
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=1) _h
ON t1.b=_h.a ORDER BY t1.a;
## Test possible WHERE condition in the ON expression
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=2) _h
ON t1.b=_h.a ORDER BY t1.a;
## Test possible WHERE condition in the ON expression
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=3) _h
ON t1.b=_h.a ORDER BY t1.a;
## Test the INNER JOIN without a WHERE condition
SELECT * FROM t1 LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h
ON t1.b=_h.a ORDER BY t1.a;
# Test nested INNER JOIN
## Test impossible WHERE condition in the ON expression
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=1) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
## Test possible WHERE condition in the ON expression
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=2) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
## Test possible WHERE condition in the ON expression
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=3) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
## Test the INNER JOIN without a WHERE condition
SELECT * FROM t1 LEFT JOIN
(SELECT table3.a FROM t2 table3 INNER JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h ON table3.a=_h.a) _g
ON t1.b=_g.a ORDER BY t1.a;
# Test INNER JOIN as both LEFT and RIGHT side of outer LEFT JOIN
## Without a WHERE condition
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h
ON _g.b=_h.a ORDER BY _g.a;
## With a possible WHERE condition case 1
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a AND table1.b=2) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND (table1.a=1 OR table1.a=2)) _h
ON _g.b=_h.a ORDER BY _g.a;
## With a possible WHERE condition case 2
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a AND (table1.b=2 OR table1.b=1)) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND (table1.a=1 OR table1.a=3)) _h
ON _g.b=_h.a ORDER BY _g.a;
## With an impossible WHERE condition case 1
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a AND table1.b=1) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a) _h
ON _g.b=_h.a ORDER BY _g.a;
## With an impossible WHERE condition case 2
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND table1.a=1) _h
ON _g.b=_h.a ORDER BY _g.a;
## With an impossible WHERE condition case 3
SELECT * FROM
(SELECT table1.a, table1.b FROM t1 table1 INNER JOIN t2 table2
ON table1.b=table2.a) _g
LEFT JOIN
(SELECT table1.a FROM t2 table1 INNER JOIN t2 table2
ON table1.a=table2.a AND (table1.a=1 OR table1.a=2)) _h
ON _g.b=_h.a ORDER BY _g.a;
# cleanup
DROP DATABASE mcol_4493;

View File

@ -0,0 +1,22 @@
DROP DATABASE IF EXISTS mcol_4505;
CREATE DATABASE mcol_4505;
USE mcol_4505;
CREATE TABLE t1 (lid INT, name CHAR(10)) ENGINE=ColumnStore;
INSERT INTO t1 (lid, name) VALUES (1, 'YES'), (2, 'NO'), (3, 'MAYBE');
CREATE TABLE t2 (id INT, gid INT, lid INT, dt DATE) ENGINE=ColumnStore;
INSERT INTO t2 (id, gid, lid, dt) VALUES
(1, 1, 1, '2007-01-01'),
(2, 1, 2, '2007-01-02'),
(3, 2, 2, '2007-02-01'),
(4, 2, 1, '2007-02-02'),
(5, 1, 3, '2007-01-03'),
(6, 3, 1, '2007-03-01');
SELECT DISTINCT t2.gid,
(SELECT t1.name FROM t1, t2
WHERE t1.lid = t2.lid AND t2.gid = t1.lid AND t1.lid = 1) AS clid
FROM t2;
gid clid
1 YES
2 YES
3 YES
DROP DATABASE mcol_4505;

View File

@ -0,0 +1,31 @@
-- source ../include/have_columnstore.inc
-- disable_warnings
DROP DATABASE IF EXISTS mcol_4505;
-- enable_warnings
CREATE DATABASE mcol_4505;
USE mcol_4505;
CREATE TABLE t1 (lid INT, name CHAR(10)) ENGINE=ColumnStore;
INSERT INTO t1 (lid, name) VALUES (1, 'YES'), (2, 'NO'), (3, 'MAYBE');
CREATE TABLE t2 (id INT, gid INT, lid INT, dt DATE) ENGINE=ColumnStore;
INSERT INTO t2 (id, gid, lid, dt) VALUES
(1, 1, 1, '2007-01-01'),
(2, 1, 2, '2007-01-02'),
(3, 2, 2, '2007-02-01'),
(4, 2, 1, '2007-02-02'),
(5, 1, 3, '2007-01-03'),
(6, 3, 1, '2007-03-01');
-- sorted_result
SELECT DISTINCT t2.gid,
(SELECT t1.name FROM t1, t2
WHERE t1.lid = t2.lid AND t2.gid = t1.lid AND t1.lid = 1) AS clid
FROM t2;
# cleanup
DROP DATABASE mcol_4505;

View File

@ -0,0 +1,88 @@
DROP DATABASE IF EXISTS mcol_4222_db;
CREATE DATABASE mcol_4222_db;
USE mcol_4222_db;
CREATE TABLE t1_i (
`C_` varchar(100) DEFAULT NULL
) ENGINE=innodb DEFAULT CHARSET=utf8 ;
CREATE TABLE t1_cs (
`C_` varchar(100) DEFAULT NULL
) ENGINE=columnstore DEFAULT CHARSET=utf8 ;
CREATE PROCEDURE generate_data()
BEGIN NOT ATOMIC
DECLARE i INT DEFAULT 0;
TRUNCATE TABLE t1_i;
TRUNCATE TABLE t1_cs;
START TRANSACTION;
WHILE i < 70000 DO
INSERT INTO t1_i VALUES (i);
SET i = i + 1;
END WHILE;
COMMIT;
END//
CALL generate_data();
INSERT INTO t1_cs SELECT * FROM t1_i;
SELECT COUNT(*), SUM(t1_i.C_ IS NULL) FROM t1_i;
COUNT(*) SUM(t1_i.C_ IS NULL)
70000 0
SELECT COUNT(*), SUM(t1_cs.C_ IS NULL) FROM t1_cs;
COUNT(*) SUM(t1_cs.C_ IS NULL)
70000 0
CREATE TABLE t2 LIKE t1_i;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT COUNT(*), SUM(C_ IS NULL) FROM t2;
COUNT(*) SUM(C_ IS NULL)
70000 0
DROP TABLE t2;
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_i) derived;
SELECT COUNT(*), SUM(C_ IS NULL) FROM t2;
COUNT(*) SUM(C_ IS NULL)
70000 0
DROP TABLE t2;
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT COUNT(*), SUM(C_ IS NULL) FROM t2;
COUNT(*) SUM(C_ IS NULL)
70000 0
DROP TABLE t2;
DROP TABLE IF EXISTS t1_i;
DROP TABLE IF EXISTS t1_cs;
CREATE TABLE t1_i (
`C_` varchar(100) NOT NULL DEFAULT 123
) ENGINE=innodb DEFAULT CHARSET=utf8 ;
CREATE TABLE t1_cs (
`C_` varchar(100) NOT NULL DEFAULT 123
) ENGINE=columnstore DEFAULT CHARSET=utf8 ;
CALL generate_data();
INSERT INTO t1_cs SELECT * FROM t1_i;
SELECT COUNT(*), SUM(t1_i.C_ IS NULL) FROM t1_i;
COUNT(*) SUM(t1_i.C_ IS NULL)
70000 0
SELECT COUNT(*), SUM(t1_cs.C_ IS NULL) FROM t1_cs;
COUNT(*) SUM(t1_cs.C_ IS NULL)
70000 0
CREATE TABLE t2 LIKE t1_i;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT * FROM t2 LIMIT 3;
C_
0
1
2
DROP TABLE t2;
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_i) derived;
SELECT * FROM t2 LIMIT 3;
C_
0
1
2
DROP TABLE t2;
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT * FROM t2 LIMIT 3;
C_
0
1
2
DROP TABLE t2;
DROP DATABASE mcol_4222_db;

View File

@ -0,0 +1,103 @@
#
# Test based on Jira MCOL-4222
# Author: Bharath, bharath.bokka@mariadb.com
#
-- source ../include/have_columnstore.inc
--disable_warnings
DROP DATABASE IF EXISTS mcol_4222_db;
--enable_warnings
CREATE DATABASE mcol_4222_db;
USE mcol_4222_db;
#
# Scenario-1: Tables with Default NULL
#
CREATE TABLE t1_i (
`C_` varchar(100) DEFAULT NULL
) ENGINE=innodb DEFAULT CHARSET=utf8 ;
CREATE TABLE t1_cs (
`C_` varchar(100) DEFAULT NULL
) ENGINE=columnstore DEFAULT CHARSET=utf8 ;
# Populate tables
DELIMITER //;
CREATE PROCEDURE generate_data()
BEGIN NOT ATOMIC
DECLARE i INT DEFAULT 0;
TRUNCATE TABLE t1_i;
TRUNCATE TABLE t1_cs;
START TRANSACTION;
WHILE i < 70000 DO
INSERT INTO t1_i VALUES (i);
SET i = i + 1;
END WHILE;
COMMIT;
END//
DELIMITER ;//
CALL generate_data();
INSERT INTO t1_cs SELECT * FROM t1_i;
SELECT COUNT(*), SUM(t1_i.C_ IS NULL) FROM t1_i;
SELECT COUNT(*), SUM(t1_cs.C_ IS NULL) FROM t1_cs;
# Copy derived CS table to innodb table
CREATE TABLE t2 LIKE t1_i;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT COUNT(*), SUM(C_ IS NULL) FROM t2;
DROP TABLE t2;
# Copy derived innodb table to CS table
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_i) derived;
SELECT COUNT(*), SUM(C_ IS NULL) FROM t2;
DROP TABLE t2;
# Copy derived CS table to another CS table
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT COUNT(*), SUM(C_ IS NULL) FROM t2;
DROP TABLE t2;
#
# Scenario-2: Tables with NOT NULL constraint and a default value
#
DROP TABLE IF EXISTS t1_i;
DROP TABLE IF EXISTS t1_cs;
CREATE TABLE t1_i (
`C_` varchar(100) NOT NULL DEFAULT 123
) ENGINE=innodb DEFAULT CHARSET=utf8 ;
CREATE TABLE t1_cs (
`C_` varchar(100) NOT NULL DEFAULT 123
) ENGINE=columnstore DEFAULT CHARSET=utf8 ;
# Populate tables
CALL generate_data();
INSERT INTO t1_cs SELECT * FROM t1_i;
SELECT COUNT(*), SUM(t1_i.C_ IS NULL) FROM t1_i;
SELECT COUNT(*), SUM(t1_cs.C_ IS NULL) FROM t1_cs;
# Copy derived CS table to innodb table
CREATE TABLE t2 LIKE t1_i;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT * FROM t2 LIMIT 3;
DROP TABLE t2;
# Copy derived innodb table to CS table
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_i) derived;
SELECT * FROM t2 LIMIT 3;
DROP TABLE t2;
# Copy derived CS table to another CS table
CREATE TABLE t2 LIKE t1_cs;
INSERT INTO t2 SELECT * FROM (SELECT * FROM t1_cs) derived;
SELECT * FROM t2 LIMIT 3;
DROP TABLE t2;
# Clean UP
DROP DATABASE mcol_4222_db;

View File

@ -0,0 +1,14 @@
DROP DATABASE IF EXISTS mcol_4465;
CREATE DATABASE mcol_4465;
USE mcol_4465;
CREATE TABLE cs1(c char(9), d decimal(9,2))ENGINE=columnstore;
INSERT INTO cs1 VALUES('i',0),('i',0),('ii',0);
SELECT c,regr_count(d,length(c)) f FROM cs1 GROUP BY 1 ORDER BY 1;
c f
i 2
ii 1
SELECT * FROM (SELECT c,regr_count(d,length(c)) f FROM cs1 GROUP BY 1 ORDER BY 1)a;
c f
i 2
ii 1
DROP DATABASE mcol_4465;

View File

@ -0,0 +1,11 @@
--source ../include/have_columnstore.inc
--disable_warnings
DROP DATABASE IF EXISTS mcol_4465;
--enable_warnings
CREATE DATABASE mcol_4465;
USE mcol_4465;
CREATE TABLE cs1(c char(9), d decimal(9,2))ENGINE=columnstore;
INSERT INTO cs1 VALUES('i',0),('i',0),('ii',0);
SELECT c,regr_count(d,length(c)) f FROM cs1 GROUP BY 1 ORDER BY 1;
SELECT * FROM (SELECT c,regr_count(d,length(c)) f FROM cs1 GROUP BY 1 ORDER BY 1)a;
DROP DATABASE mcol_4465;