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

Fixed review notices, added the loop over selects, to collect error on more tnan two selects

This commit is contained in:
Leonid Fedorov
2024-04-16 14:57:53 +00:00
committed by Leonid Fedorov
parent 8efdee6eca
commit 71185efe54
3 changed files with 39 additions and 10 deletions

View File

@ -6744,16 +6744,21 @@ int processFrom(bool& isUnion, SELECT_LEX& select_lex, gp_walk_info& gwi, SCSEP&
// is_unit_op() give a segv for derived_handler's SELECT_LEX // is_unit_op() give a segv for derived_handler's SELECT_LEX
// check INTERSECT or EXCEPT, that are not implemented // check INTERSECT or EXCEPT, that are not implemented
auto* nextSelect = select_lex.master_unit()->first_select()->next_select(); if (select_lex.master_unit() && select_lex.master_unit()->first_select())
if (nextSelect)
{ {
if (nextSelect->get_linkage() == INTERSECT_TYPE) for (auto nextSelect = select_lex.master_unit()->first_select()->next_select(); nextSelect;
nextSelect = nextSelect->next_select())
{ {
setError(gwi.thd, ER_INTERNAL_ERROR, "INTERSECT is not supported by Columnstore engine", gwi); if (nextSelect->get_linkage() == INTERSECT_TYPE)
} {
else if (nextSelect->get_linkage() == EXCEPT_TYPE) setError(gwi.thd, ER_INTERNAL_ERROR, "INTERSECT is not supported by Columnstore engine", gwi);
{ return ER_INTERNAL_ERROR;
setError(gwi.thd, ER_INTERNAL_ERROR, "EXCEPT is not supported by Columnstore engine", gwi); }
else if (nextSelect->get_linkage() == EXCEPT_TYPE)
{
setError(gwi.thd, ER_INTERNAL_ERROR, "EXCEPT is not supported by Columnstore engine", gwi);
return ER_INTERNAL_ERROR;
}
} }
} }

View File

@ -4,7 +4,9 @@ USE mcol_5699 ;
CREATE TABLE cs1(a text) ENGINE=columnstore; CREATE TABLE cs1(a text) ENGINE=columnstore;
INSERT INTO cs1 VALUES('a'),('b'),('c'),('x'); INSERT INTO cs1 VALUES('a'),('b'),('c'),('x');
CREATE TABLE cs2(a text) ENGINE=columnstore; CREATE TABLE cs2(a text) ENGINE=columnstore;
INSERT INTO cs1 VALUES('y'),('z'),('x'); INSERT INTO cs2 VALUES('y'),('z'),('x');
CREATE TABLE cs3(a text) ENGINE=columnstore;
INSERT INTO cs3 VALUES('r'),('t'),('z');
SELECT a from cs1 UNION ALL select a from cs2; SELECT a from cs1 UNION ALL select a from cs2;
a a
a a
@ -30,4 +32,12 @@ SELECT a from cs1 EXCEPT ALL select a from cs2;
ERROR HY000: Internal error: EXCEPT is not supported by Columnstore engine ERROR HY000: Internal error: EXCEPT is not supported by Columnstore engine
SELECT a from cs1 EXCEPT DISTINCT select a from cs2; SELECT a from cs1 EXCEPT DISTINCT select a from cs2;
ERROR HY000: Internal error: EXCEPT is not supported by Columnstore engine ERROR HY000: Internal error: EXCEPT is not supported by Columnstore engine
SELECT a from cs1 UNION select a from cs2 INTERSECT ALL select a from cs3;
ERROR HY000: Internal error: INTERSECT is not supported by Columnstore engine
SELECT a from cs1 UNION select a from cs2 INTERSECT DISTINCT select a from cs3;
ERROR HY000: Internal error: INTERSECT is not supported by Columnstore engine
SELECT a from cs1 UNION select a from cs2 EXCEPT ALL select a from cs3;
ERROR HY000: Internal error: EXCEPT is not supported by Columnstore engine
SELECT a from cs1 UNION select a from cs2 EXCEPT DISTINCT select a from cs3;
ERROR HY000: Internal error: EXCEPT is not supported by Columnstore engine
DROP DATABASE mcol_5699 ; DROP DATABASE mcol_5699 ;

View File

@ -8,7 +8,11 @@ CREATE TABLE cs1(a text) ENGINE=columnstore;
INSERT INTO cs1 VALUES('a'),('b'),('c'),('x'); INSERT INTO cs1 VALUES('a'),('b'),('c'),('x');
CREATE TABLE cs2(a text) ENGINE=columnstore; CREATE TABLE cs2(a text) ENGINE=columnstore;
INSERT INTO cs1 VALUES('y'),('z'),('x'); INSERT INTO cs2 VALUES('y'),('z'),('x');
CREATE TABLE cs3(a text) ENGINE=columnstore;
INSERT INTO cs3 VALUES('r'),('t'),('z');
SELECT a from cs1 UNION ALL select a from cs2; SELECT a from cs1 UNION ALL select a from cs2;
SELECT a from cs1 UNION DISTINCT select a from cs2; SELECT a from cs1 UNION DISTINCT select a from cs2;
@ -22,4 +26,14 @@ SELECT a from cs1 EXCEPT ALL select a from cs2;
--ERROR 1815 --ERROR 1815
SELECT a from cs1 EXCEPT DISTINCT select a from cs2; SELECT a from cs1 EXCEPT DISTINCT select a from cs2;
--ERROR 1815
SELECT a from cs1 UNION select a from cs2 INTERSECT ALL select a from cs3;
--ERROR 1815
SELECT a from cs1 UNION select a from cs2 INTERSECT DISTINCT select a from cs3;
--ERROR 1815
SELECT a from cs1 UNION select a from cs2 EXCEPT ALL select a from cs3;
--ERROR 1815
SELECT a from cs1 UNION select a from cs2 EXCEPT DISTINCT select a from cs3;
DROP DATABASE mcol_5699 ; DROP DATABASE mcol_5699 ;