mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-09-23 10:10:50 +00:00
Update functional tests. Add materialization in UNION ALL queries. [#METR-14099]
This commit is contained in:
parent
fced798a98
commit
5111c759d9
@ -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]
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
1
|
||||
2
|
||||
1000
|
||||
2000
|
||||
|
@ -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;
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
1
|
||||
2
|
||||
1000
|
||||
2000
|
||||
|
@ -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;
|
||||
|
||||
|
@ -1,2 +1,2 @@
|
||||
1
|
||||
2
|
||||
1000
|
||||
2000
|
||||
|
@ -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;
|
||||
|
||||
|
@ -1,3 +1,3 @@
|
||||
1 2
|
||||
3 4
|
||||
5 6
|
||||
1000
|
||||
2000
|
||||
35000
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user