mirror of
https://github.com/mariadb-corporation/mariadb-columnstore-engine.git
synced 2025-05-28 13:01:26 +03:00
322 lines
11 KiB
Plaintext
322 lines
11 KiB
Plaintext
# MCOL-4525
|
|
# Automatic select_handler
|
|
# columnstore_select_handler=AUTO allows query execution
|
|
# to fallback to the server, in case the execution using
|
|
# select_handler fails.
|
|
SET default_storage_engine=columnstore;
|
|
DROP DATABASE IF EXISTS mcol4525;
|
|
CREATE DATABASE mcol4525;
|
|
USE mcol4525;
|
|
CREATE TABLE t1 (a int, b int);
|
|
INSERT INTO t1 VALUES (1, 1), (5, 0);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT a xor b FROM t1;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT a xor b FROM t1;
|
|
a xor b
|
|
0
|
|
1
|
|
SET columnstore_select_handler=ON;
|
|
SELECT DISTINCT a FROM t1 WHERE a IN (SELECT a FROM t1) OR a IN (SELECT a FROM t1);
|
|
ERROR HY000: Internal error: MCS-3033: Correlated subquery within OR operator is currently not supported.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT DISTINCT a FROM t1 WHERE a IN (SELECT a FROM t1) OR a IN (SELECT a FROM t1);
|
|
a
|
|
1
|
|
5
|
|
DROP TABLE t1;
|
|
CREATE TABLE bug4767 (c1 float, c2 double);
|
|
INSERT INTO bug4767 VALUES (1.234, 3.4556), (2.3345456, 2.3345456);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT * FROM bug4767 a JOIN bug4767 b ON (a.c1=b.c2);
|
|
ERROR HY000: Internal error: MCS-1002: 'a' and 'b' have incompatible column type specified for join condition.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT * FROM bug4767 a JOIN bug4767 b ON (a.c1=b.c2);
|
|
c1 c2 c1 c2
|
|
DROP TABLE bug4767;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 VALUES (1), (2);
|
|
CREATE TABLE t2 (b int);
|
|
INSERT INTO t2 VALUES (2);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT a FROM t1 WHERE a IN (SELECT a FROM t2);
|
|
ERROR HY000: Internal error: MCS-1000: 't1' and 't2' are not joined.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT a FROM t1 WHERE a IN (SELECT a FROM t2);
|
|
a
|
|
1
|
|
2
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
CREATE TABLE l(c1 int, c2 int);
|
|
CREATE TABLE r(c1 int, c2 int);
|
|
CREATE TABLE s(c1 int, c2 int);
|
|
INSERT INTO l VALUES (1, 1);
|
|
INSERT INTO l VALUES (2, 2);
|
|
INSERT INTO r VALUES (1, 1);
|
|
INSERT INTO r VALUES (5, 5);
|
|
INSERT INTO s VALUES (1, 1);
|
|
INSERT INTO s VALUES (9, 9);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT 'q1', l.c1, r.c1 FROM l LEFT JOIN r ON l.c1 = r.c1 AND l.c1 IN (SELECT c1 FROM s) ORDER BY 1, 2, 3;
|
|
ERROR HY000: Internal error: MCS-1015: Subquery on OUTER JOIN ON clause is currently not supported.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT 'q1', l.c1, r.c1 FROM l LEFT JOIN r ON l.c1 = r.c1 AND l.c1 IN (SELECT c1 FROM s) ORDER BY 1, 2, 3;
|
|
q1 c1 c1
|
|
q1 1 1
|
|
q1 2 NULL
|
|
DROP TABLE l;
|
|
DROP TABLE r;
|
|
DROP TABLE s;
|
|
CREATE TABLE t1 (col1 int, col2 varchar(5), col_t1 int);
|
|
INSERT INTO t1 VALUES(10,'hello',10);
|
|
INSERT INTO t1 VALUES(20,'hello',20);
|
|
INSERT INTO t1 VALUES(30,'hello',30);
|
|
INSERT INTO t1 VALUES(10,'bye',10);
|
|
INSERT INTO t1 VALUES(10,'sam',10);
|
|
INSERT INTO t1 VALUES(10,'bob',10);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT SUM(col1) AS col2 FROM t1 GROUP BY col2;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2016: Non supported item 'col2' on the GROUP BY list.
|
|
SELECT col1 c FROM t1 ORDER BY AVG(col1);
|
|
ERROR HY000: Internal error: MCS-2021: 'c' is not in GROUP BY clause. All non-aggregate columns in the SELECT and ORDER BY clause must be included in the GROUP BY clause.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT SUM(col1) AS col2 FROM t1 GROUP BY col2;
|
|
col2
|
|
10
|
|
10
|
|
60
|
|
10
|
|
SELECT col1 c FROM t1 ORDER BY AVG(col1);
|
|
c
|
|
10
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 VALUES (1);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT minute(sleep(a)) FROM t1;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-1001: Function 'minute' isn't supported.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT minute(sleep(a)) FROM t1;
|
|
minute(sleep(a))
|
|
0
|
|
DROP TABLE t1;
|
|
CREATE TABLE t1 (a int);
|
|
CREATE TABLE t2 (a int);
|
|
INSERT INTO t1 VALUES (1), (2);
|
|
INSERT INTO t2 VALUES (2), (3);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT SUM(a) FROM t1 WHERE EXISTS (SELECT MAX(a) FROM t2);
|
|
ERROR HY000: Internal error: MCS-3008: Aggregate function in EXISTS subquery is currently not supported.
|
|
SELECT * FROM t1 WHERE (a,a) < (SELECT a,a FROM t2 WHERE a=2);
|
|
ERROR HY000: Internal error: MCS-3006: This operator cannot be used with lists.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT SUM(a) FROM t1 WHERE EXISTS (SELECT MAX(a) FROM t2);
|
|
SUM(a)
|
|
3
|
|
SELECT * FROM t1 WHERE (a,a) < (SELECT a,a FROM t2 WHERE a=2);
|
|
a
|
|
1
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
CREATE TABLE gen (i int, i2 int);
|
|
INSERT INTO gen VALUES (1,0), (1,1), (1,2), (1,3), (1,4), (1,5), (1,6), (1,7), (1,8), (1,9);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT i2, (SELECT MAX(g2.i2) FROM gen g2 WHERE g2.i = g1.i AND g2.i2 > g1.i2) sub FROM gen g1;
|
|
ERROR HY000: Internal error: MCS-3035: Not equal comparison between a column within a subquery with an aggregate result and a column outside of the subquery is not supported.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT i2, (SELECT MAX(g2.i2) FROM gen g2 WHERE g2.i = g1.i AND g2.i2 > g1.i2) sub FROM gen g1;
|
|
i2 sub
|
|
0 9
|
|
1 9
|
|
2 9
|
|
3 9
|
|
4 9
|
|
5 9
|
|
6 9
|
|
7 9
|
|
8 9
|
|
9 NULL
|
|
DROP TABLE gen;
|
|
CREATE TABLE t1(a int);
|
|
INSERT INTO t1 VALUES (0), (1), (2), (3);
|
|
CREATE TABLE t2 (a int);
|
|
INSERT INTO t2 VALUES (2), (3);
|
|
CREATE VIEW v1 AS SELECT a FROM t1 WHERE a > 1;
|
|
SET columnstore_select_handler=ON;
|
|
SELECT * FROM t1 LEFT JOIN (t2 AS t, v1) ON v1.a=t1.a ORDER BY 1;
|
|
ERROR HY000: Internal error: MCS-1000: 'v1, t1' and 't' are not joined.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT * FROM t1 LEFT JOIN (t2 AS t, v1) ON v1.a=t1.a ORDER BY 1;
|
|
a a a
|
|
0 NULL NULL
|
|
1 NULL NULL
|
|
2 2 2
|
|
2 3 2
|
|
3 2 3
|
|
3 3 3
|
|
DROP TABLE t1;
|
|
DROP TABLE t2;
|
|
DROP VIEW v1;
|
|
CREATE TABLE c1 (a int);
|
|
INSERT INTO c1 VALUES (1), (2), (3);
|
|
CREATE TABLE c2 (a int);
|
|
INSERT INTO c2 VALUES (2);
|
|
CREATE TABLE c3 (a int);
|
|
CREATE TABLE c4 (a int);
|
|
CREATE TABLE c5 (a int);
|
|
SET columnstore_select_handler=ON;
|
|
SELECT c1.a AS col1, c2.a AS col2, c1.a xor c2.a FROM
|
|
c1 LEFT JOIN
|
|
(
|
|
(c2 LEFT JOIN c3 ON c2.a=c3.a) LEFT JOIN
|
|
(c4 JOIN c5 ON c4.a=c5.a)
|
|
ON c2.a=c4.a
|
|
)
|
|
ON c1.a=c2.a WHERE c2.a < 100;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT c1.a AS col1, c2.a AS col2, c1.a xor c2.a FROM
|
|
c1 LEFT JOIN
|
|
(
|
|
(c2 LEFT JOIN c3 ON c2.a=c3.a) LEFT JOIN
|
|
(c4 JOIN c5 ON c4.a=c5.a)
|
|
ON c2.a=c4.a
|
|
)
|
|
ON c1.a=c2.a WHERE c2.a < 100;
|
|
col1 col2 c1.a xor c2.a
|
|
2 2 0
|
|
DROP TABLE c1;
|
|
DROP TABLE c2;
|
|
DROP TABLE c3;
|
|
DROP TABLE c4;
|
|
DROP TABLE c5;
|
|
CREATE TABLE t1 (a int);
|
|
INSERT INTO t1 VALUES (1), (2), (3), (4);
|
|
SET columnstore_select_handler=ON;
|
|
PREPARE stmt FROM "SELECT a, a xor 0 FROM t1 WHERE a > 1 AND a < 4";
|
|
EXECUTE stmt;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
EXECUTE stmt;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
EXECUTE stmt;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
EXECUTE stmt;
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
DROP PREPARE stmt;
|
|
SET columnstore_select_handler=AUTO;
|
|
PREPARE stmt FROM "SELECT a, a xor 0 FROM t1 WHERE a > 1 AND a < 4";
|
|
EXECUTE stmt;
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
EXECUTE stmt;
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
EXECUTE stmt;
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
EXECUTE stmt;
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
EXECUTE stmt;
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
DROP PREPARE stmt;
|
|
SET columnstore_select_handler=ON;
|
|
CREATE PROCEDURE mcol4525_proc()
|
|
BEGIN
|
|
SELECT a, a xor 0 FROM t1 WHERE a > 1 AND a < 4;
|
|
END
|
|
//
|
|
CALL mcol4525_proc();
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
CALL mcol4525_proc();
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
CALL mcol4525_proc();
|
|
ERROR 42000: The storage engine for the table doesn't support MCS-2030: Predicate and Logic operators can not be used where an expression is expected.
|
|
DROP PROCEDURE mcol4525_proc;
|
|
SET columnstore_select_handler=AUTO;
|
|
CREATE PROCEDURE mcol4525_proc()
|
|
BEGIN
|
|
SELECT a, a xor 0 FROM t1 WHERE a > 1 AND a < 4;
|
|
END
|
|
//
|
|
CALL mcol4525_proc();
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
CALL mcol4525_proc();
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
CALL mcol4525_proc();
|
|
a a xor 0
|
|
2 1
|
|
3 1
|
|
DROP PROCEDURE mcol4525_proc;
|
|
DROP TABLE t1;
|
|
CREATE TABLE `giorno` (
|
|
`giorno` date NOT NULL DEFAULT '0000-00-00',
|
|
`giornoa` mediumint(7) DEFAULT NULL,
|
|
`mese` mediumint(6) DEFAULT NULL,
|
|
`settimana` mediumint(6) DEFAULT NULL,
|
|
`quindicina` mediumint(6) DEFAULT NULL,
|
|
`trimestre` smallint(5) DEFAULT NULL,
|
|
`quadrimestre` smallint(5) DEFAULT NULL,
|
|
`semestre` smallint(5) DEFAULT NULL,
|
|
`bimestre` smallint(5) DEFAULT NULL,
|
|
`anno` smallint(4) DEFAULT NULL,
|
|
PRIMARY KEY (`giorno`),
|
|
KEY `mese` (`mese`),
|
|
KEY `quindicina` (`quindicina`),
|
|
KEY `settimana` (`settimana`),
|
|
KEY `trimestre` (`trimestre`),
|
|
KEY `semestre` (`semestre`),
|
|
KEY `bimestre` (`bimestre`),
|
|
KEY `quadrimestre` (`quadrimestre`),
|
|
KEY `giornoa` (`giornoa`)
|
|
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='Giorni';
|
|
CREATE TABLE `campagna_web_codice` (
|
|
`cwc_id` int(11) DEFAULT NULL,
|
|
`cwc_cw_id` int(11) DEFAULT NULL,
|
|
`cwc_cd_id` int(11) DEFAULT NULL,
|
|
`cwc_codice` varchar(30) DEFAULT NULL,
|
|
`cwc_va_id` int(11) DEFAULT NULL,
|
|
`cwc_prezzo` decimal(12,2) DEFAULT NULL,
|
|
`cwc_prezzoListino` decimal(12,2) DEFAULT NULL,
|
|
`cwc_prezzoSpedizione` decimal(8,2) DEFAULT NULL,
|
|
`cwc_in_id` int(11) DEFAULT NULL,
|
|
`cwc_na_id` int(11) DEFAULT NULL,
|
|
`cwc_desc` varchar(100) DEFAULT NULL,
|
|
`cwc_datainizio` date DEFAULT NULL,
|
|
`cwc_datafine` date DEFAULT NULL,
|
|
`cwc_mo_id` int(11) DEFAULT NULL,
|
|
`cwc_ma_id` int(11) DEFAULT NULL,
|
|
`cwc_pd_id` int(11) DEFAULT NULL,
|
|
`cwc_set_id` int(11) DEFAULT NULL,
|
|
`cwc_mr_id` int(11) DEFAULT NULL,
|
|
`cwc_ca_id` int(11) DEFAULT NULL,
|
|
`cwc_fa_id` int(11) DEFAULT NULL,
|
|
`cwc_ti_id` int(11) DEFAULT NULL,
|
|
`cwc_azws` varchar(255) DEFAULT NULL
|
|
) ENGINE=Columnstore DEFAULT CHARSET=utf8;
|
|
SET columnstore_select_handler=ON;
|
|
SELECT COUNT(DISTINCT cwc_id) npres,COUNT(DISTINCT cwc_cw_id) ncw,cwc_in_id insegna
|
|
FROM (giorno,campagna_web_codice)
|
|
WHERE cwc_fa_id IN (23) AND giorno BETWEEN cwc_datainizio AND cwc_datafine AND mese IN (202009)
|
|
GROUP BY insegna;
|
|
ERROR HY000: Internal error: MCS-1000: 'giorno' and 'campagna_web_codice' are not joined.
|
|
SET columnstore_select_handler=AUTO;
|
|
SELECT COUNT(DISTINCT cwc_id) npres,COUNT(DISTINCT cwc_cw_id) ncw,cwc_in_id insegna
|
|
FROM (giorno,campagna_web_codice)
|
|
WHERE cwc_fa_id IN (23) AND giorno BETWEEN cwc_datainizio AND cwc_datafine AND mese IN (202009)
|
|
GROUP BY insegna;
|
|
npres ncw insegna
|
|
DROP DATABASE mcol4525;
|