Update functional tests. Add materialization in UNION ALL queries. [#METR-14099]

This commit is contained in:
Alexey Arno 2014-12-17 00:44:03 +03:00
parent fced798a98
commit 5111c759d9
10 changed files with 97 additions and 27 deletions

View File

@ -215,6 +215,7 @@ static inline BlockInputStreamPtr maybeAsynchronous(BlockInputStreamPtr in, bool
BlockInputStreamPtr InterpreterSelectQuery::execute()
<<<<<<< HEAD
{
if (isFirstSelectInsideUnionAll())
{
@ -262,6 +263,55 @@ BlockInputStreamPtr InterpreterSelectQuery::execute()
}
return streams[0];
=======
{
if (is_union_all_head && !query.next_union_all.isNull())
{
executeSingleQuery(true);
for (auto p = next_select_in_union_all.get(); p != nullptr; p = p->query.next_select_in_union_all.get())
{
p->query.executeSingleQuery(true);
const auto & others = p->query.streams;
streams.insert(streams.end(), others.begin(), others.end());
}
if (streams.empty())
return new NullBlockInputStream;
for (auto & stream : streams)
stream = new MaterializingBlockInputStream(stream);
executeUnion(streams);
}
else
{
executeSingleQuery();
if (streams.empty())
return new NullBlockInputStream;
}
/// Ограничения на результат, квота на результат, а также колбек для прогресса.
if (IProfilingBlockInputStream * stream = dynamic_cast<IProfilingBlockInputStream *>(&*streams[0]))
{
stream->setProgressCallback(context.getProgressCallback());
stream->setProcessListElement(context.getProcessListElement());
/// Ограничения действуют только на конечный результат.
if (to_stage == QueryProcessingStage::Complete)
{
IProfilingBlockInputStream::LocalLimits limits;
limits.mode = IProfilingBlockInputStream::LIMITS_CURRENT;
limits.max_rows_to_read = settings.limits.max_result_rows;
limits.max_bytes_to_read = settings.limits.max_result_bytes;
limits.read_overflow_mode = settings.limits.result_overflow_mode;
stream->setLimits(limits);
stream->setQuota(context.getQuota());
}
}
return streams[0];
>>>>>>> Update functional tests. Add materialization in UNION ALL queries. [#METR-14099]
}

View File

@ -1,2 +1,2 @@
1
2
1000
2000

View File

@ -1 +1,20 @@
SELECT 1 UNION ALL SELECT 2;
DROP TABLE IF EXISTS data2013;
DROP TABLE IF EXISTS data2014;
CREATE TABLE data2013 (name String, value UInt32) ENGINE = TinyLog;
CREATE TABLE data2014 (name String, value UInt32) ENGINE = TinyLog;
INSERT INTO data2013(name,value) VALUES('Alice', 1000);
INSERT INTO data2013(name,value) VALUES('Bob', 2000);
INSERT INTO data2013(name,value) VALUES('Carol', 5000);
INSERT INTO data2014(name,value) VALUES('Alice', 2000);
INSERT INTO data2014(name,value) VALUES('Bob', 2000);
INSERT INTO data2014(name,value) VALUES('Dennis', 35000);
SELECT val FROM
(SELECT value AS val FROM data2013 WHERE name = 'Alice'
UNION ALL
SELECT value AS val FROM data2014 WHERE name = 'Alice')
ORDER BY val ASC;

View File

@ -1,2 +1,2 @@
1
2
1000
2000

View File

@ -1 +1,6 @@
SELECT 1 UNION ALL SELECT 2;
SELECT val FROM
(SELECT value AS val FROM data2013 WHERE name = 'Alice'
UNION ALL
SELECT value AS val FROM data2014 WHERE name = 'Alice')
ORDER BY val ASC;

View File

@ -1,2 +1,2 @@
1
2
1000
2000

View File

@ -1,2 +1,6 @@
SELECT 1 UNION /*comment*/ ALL SELECT 2;
SELECT val FROM
(SELECT value AS val FROM data2013 WHERE name = 'Alice'
UNION /*comment*/ ALL
SELECT value AS val FROM data2014 WHERE name = 'Alice')
ORDER BY val ASC;

View File

@ -1,3 +1,3 @@
1 2
3 4
5 6
1000
2000
35000

View File

@ -1 +1,7 @@
SELECT 1,2 UNION ALL SELECT 3,4 UNION ALL SELECT 5,6;
SELECT val FROM
(SELECT value AS val FROM data2013 WHERE name = 'Alice'
UNION ALL
SELECT value AS val FROM data2014 WHERE name = 'Alice'
UNION ALL
SELECT value AS val FROM data2014 WHERE name = 'Dennis')
ORDER BY val ASC;

View File

@ -1,15 +1 @@
DROP TABLE IF EXISTS data2013;
DROP TABLE IF EXISTS data2014;
CREATE TABLE data2013 (name String, value UInt32) ENGINE = Memory;
CREATE TABLE data2014 (name String, value UInt32) ENGINE = Memory;
INSERT INTO data2013(name,value) VALUES('Alice', 1000);
INSERT INTO data2013(name,value) VALUES('Bob', 2000);
INSERT INTO data2013(name,value) VALUES('Carol', 5000);
INSERT INTO data2014(name,value) VALUES('Alice', 2000);
INSERT INTO data2014(name,value) VALUES('Bob', 2000);
INSERT INTO data2014(name,value) VALUES('Dennis', 35000);
SELECT nn,vv FROM (SELECT name AS nn, value AS vv FROM data2013 UNION ALL SELECT name AS nn, value AS vv FROM data2014) ORDER BY nn ASC;