tests for nullable_aggregate_states

This commit is contained in:
Denis Zhuravlev 2020-10-18 21:10:50 -03:00
parent 12bb7a05ba
commit 1dea2fd1dd
4 changed files with 2454 additions and 0 deletions

View File

@ -0,0 +1,5 @@
1 0 \N \N \N \N \N
1 0 \N \N \N \N \N
--- empty resultset ---
0 0 \N \N \N \N \N
0 0 \N \N \N \N \N

View File

@ -0,0 +1,17 @@
select count(), count(a), max(a), min(a), avg(a), sum(a), any(a)
from (select cast(Null,'Nullable(Float64)') a);
select countMerge(cnts), countMerge(cntsa), maxMerge(maxs), minMerge(mins), avgMerge(avgs), sumMerge(sums), anyMerge(anys) from (
select countState() cnts, countState(a) cntsa, maxState(a) maxs, minState(a) mins, avgState(a) avgs, sumState(a) sums, anyState(a) anys
from (select cast(Null,'Nullable(Float64)') a));
select '--- empty resultset ---';
select count(), count(a), max(a), min(a), avg(a), sum(a), any(a)
from (select cast(1,'Nullable(Float64)') a) where a =0;
select countMerge(cnts), countMerge(cntsa), maxMerge(maxs), minMerge(mins), avgMerge(avgs), sumMerge(sums), anyMerge(anys) from (
select countState() cnts, countState(a) cntsa, maxState(a) maxs, minState(a) mins, avgState(a) avgs, sumState(a) sums, anyState(a) anys
from (select cast(1,'Nullable(Float64)') a) where a =0 );

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,412 @@
DROP TABLE IF EXISTS testNullableStates;
DROP TABLE IF EXISTS testNullableStatesAgg;
CREATE TABLE testNullableStates (
ts DateTime,
id String,
string Nullable(String),
float64 Nullable(Float64),
float32 Nullable(Float32),
decimal325 Nullable(Decimal32(5)),
date Nullable(Date),
datetime Nullable(DateTime),
datetime64 Nullable(DateTime64),
int64 Nullable(Int64),
int32 Nullable(Int32),
int16 Nullable(Int16),
int8 Nullable(Int8))
ENGINE=MergeTree PARTITION BY toStartOfDay(ts) ORDER BY id;
INSERT INTO testNullableStates SELECT
toDateTime('2020-01-01 00:00:00') + number AS ts,
toString(number % 999) AS id,
toString(number) AS string,
number / 333 AS float64,
number / 333 AS float32,
number / 333 AS decimal325,
toDate(ts),
ts,
ts,
number,
toInt32(number),
toInt16(number),
toInt8(number)
FROM numbers(100000);
INSERT INTO testNullableStates SELECT
toDateTime('2020-01-01 00:00:00') + number AS ts,
toString(number % 999 - 5) AS id,
NULL AS string,
NULL AS float64,
NULL AS float32,
NULL AS decimal325,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL
FROM numbers(500);
CREATE TABLE testNullableStatesAgg
(
`ts` DateTime,
`id` String,
`stringMin` AggregateFunction(min, Nullable(String)),
`stringMax` AggregateFunction(max, Nullable(String)),
`float64Min` AggregateFunction(min, Nullable(Float64)),
`float64Max` AggregateFunction(max, Nullable(Float64)),
`float64Avg` AggregateFunction(avg, Nullable(Float64)),
`float64Sum` AggregateFunction(sum, Nullable(Float64)),
`float32Min` AggregateFunction(min, Nullable(Float32)),
`float32Max` AggregateFunction(max, Nullable(Float32)),
`float32Avg` AggregateFunction(avg, Nullable(Float32)),
`float32Sum` AggregateFunction(sum, Nullable(Float32)),
`decimal325Min` AggregateFunction(min, Nullable(Decimal32(5))),
`decimal325Max` AggregateFunction(max, Nullable(Decimal32(5))),
`decimal325Avg` AggregateFunction(avg, Nullable(Decimal32(5))),
`decimal325Sum` AggregateFunction(sum, Nullable(Decimal32(5))),
`dateMin` AggregateFunction(min, Nullable(Date)),
`dateMax` AggregateFunction(max, Nullable(Date)),
`datetimeMin` AggregateFunction(min, Nullable(DateTime)),
`datetimeMax` AggregateFunction(max, Nullable(DateTime)),
`datetime64Min` AggregateFunction(min, Nullable(datetime64)),
`datetime64Max` AggregateFunction(max, Nullable(datetime64)),
`int64Min` AggregateFunction(min, Nullable(Int64)),
`int64Max` AggregateFunction(max, Nullable(Int64)),
`int64Avg` AggregateFunction(avg, Nullable(Int64)),
`int64Sum` AggregateFunction(sum, Nullable(Int64)),
`int32Min` AggregateFunction(min, Nullable(Int32)),
`int32Max` AggregateFunction(max, Nullable(Int32)),
`int32Avg` AggregateFunction(avg, Nullable(Int32)),
`int32Sum` AggregateFunction(sum, Nullable(Int32)),
`int16Min` AggregateFunction(min, Nullable(Int16)),
`int16Max` AggregateFunction(max, Nullable(Int16)),
`int16Avg` AggregateFunction(avg, Nullable(Int16)),
`int16Sum` AggregateFunction(sum, Nullable(Int16)),
`int8Min` AggregateFunction(min, Nullable(Int8)),
`int8Max` AggregateFunction(max, Nullable(Int8)),
`int8Avg` AggregateFunction(avg, Nullable(Int8)),
`int8Sum` AggregateFunction(sum, Nullable(Int8))
)
ENGINE = AggregatingMergeTree()
PARTITION BY toStartOfDay(ts)
ORDER BY id;
insert into testNullableStatesAgg
select
ts DateTime,
id String,
minState(string) stringMin,
maxState(string) stringMax,
minState(float64) float64Min,
maxState(float64) float64Max,
avgState(float64) float64Avg,
sumState(float64) float64Sum,
minState(float32) float32Min,
maxState(float32) float32Max,
avgState(float32) float32Avg,
sumState(float32) float32Sum,
minState(decimal325) decimal325Min,
maxState(decimal325) decimal325Max,
avgState(decimal325) decimal325Avg,
sumState(decimal325) decimal325Sum,
minState(date) dateMin,
maxState(date) dateMax,
minState(datetime) datetimeMin,
maxState(datetime) datetimeMax,
minState(datetime64) datetime64Min,
maxState(datetime64) datetime64Max,
minState(int64) int64Min,
maxState(int64) int64Max,
avgState(int64) int64Avg,
sumState(int64) int64Sum,
minState(int32) int32Min,
maxState(int32) int32Max,
avgState(int32) int32Avg,
sumState(int32) int32Sum,
minState(int16) int16Min,
maxState(int16) int16Max,
avgState(int16) int16Avg,
sumState(int16) int16Sum,
minState(int8) int8Min,
maxState(int8) int8Max,
avgState(int8) int8Avg,
sumState(int8) int8Sum
from testNullableStates
group by ts, id;
OPTIMIZE TABLE testNullableStatesAgg FINAL;
select count() from testNullableStates;
select count() from testNullableStatesAgg;
select ' ---- select without states ---- ';
SELECT id, count(),
min(string),
max(string),
min(float64),
max(float64),
avg(float64),
sum(float64),
min(float32),
max(float32),
avg(float32),
sum(float32),
min(decimal325),
max(decimal325),
avg(decimal325),
sum(decimal325),
min(date),
max(date),
min(datetime),
max(datetime),
min(datetime64),
max(datetime64),
min(int64),
max(int64),
avg(int64),
sum(int64),
min(int32),
max(int32),
avg(int32),
sum(int32),
min(int16),
max(int16),
avg(int16),
sum(int16),
min(int8),
max(int8),
avg(int8),
sum(int8)
FROM testNullableStates
GROUP BY id
ORDER BY id ASC;
select ' ---- select with states ---- ';
SELECT id, count(),
minMerge(stringMin),
maxMerge(stringMax),
minMerge(float64Min),
maxMerge(float64Max),
avgMerge(float64Avg),
sumMerge(float64Sum),
minMerge(float32Min),
maxMerge(float32Max),
avgMerge(float32Avg),
sumMerge(float32Sum),
minMerge(decimal325Min),
maxMerge(decimal325Max),
avgMerge(decimal325Avg),
sumMerge(decimal325Sum),
minMerge(dateMin),
maxMerge(dateMax),
minMerge(datetimeMin),
maxMerge(datetimeMax),
minMerge(datetime64Min),
maxMerge(datetime64Max),
minMerge(int64Min),
maxMerge(int64Max),
avgMerge(int64Avg),
sumMerge(int64Sum),
minMerge(int32Min),
maxMerge(int32Max),
avgMerge(int32Avg),
sumMerge(int32Sum),
minMerge(int16Min),
maxMerge(int16Max),
avgMerge(int16Avg),
sumMerge(int16Sum),
minMerge(int8Min),
maxMerge(int8Max),
avgMerge(int8Avg),
sumMerge(int8Sum)
FROM testNullableStatesAgg
GROUP BY id
ORDER BY id ASC;
select ' ---- select row with nulls without states ---- ';
SELECT id, count(),
min(string),
max(string),
min(float64),
max(float64),
avg(float64),
sum(float64),
min(float32),
max(float32),
avg(float32),
sum(float32),
min(decimal325),
max(decimal325),
avg(decimal325),
sum(decimal325),
min(date),
max(date),
min(datetime),
max(datetime),
min(datetime64),
max(datetime64),
min(int64),
max(int64),
avg(int64),
sum(int64),
min(int32),
max(int32),
avg(int32),
sum(int32),
min(int16),
max(int16),
avg(int16),
sum(int16),
min(int8),
max(int8),
avg(int8),
sum(int8)
FROM testNullableStates
WHERE id = '-2'
GROUP BY id
ORDER BY id ASC;
select ' ---- select row with nulls with states ---- ';
SELECT id, count(),
minMerge(stringMin),
maxMerge(stringMax),
minMerge(float64Min),
maxMerge(float64Max),
avgMerge(float64Avg),
sumMerge(float64Sum),
minMerge(float32Min),
maxMerge(float32Max),
avgMerge(float32Avg),
sumMerge(float32Sum),
minMerge(decimal325Min),
maxMerge(decimal325Max),
avgMerge(decimal325Avg),
sumMerge(decimal325Sum),
minMerge(dateMin),
maxMerge(dateMax),
minMerge(datetimeMin),
maxMerge(datetimeMax),
minMerge(datetime64Min),
maxMerge(datetime64Max),
minMerge(int64Min),
maxMerge(int64Max),
avgMerge(int64Avg),
sumMerge(int64Sum),
minMerge(int32Min),
maxMerge(int32Max),
avgMerge(int32Avg),
sumMerge(int32Sum),
minMerge(int16Min),
maxMerge(int16Max),
avgMerge(int16Avg),
sumMerge(int16Sum),
minMerge(int8Min),
maxMerge(int8Max),
avgMerge(int8Avg),
sumMerge(int8Sum)
FROM testNullableStatesAgg
WHERE id = '-2'
GROUP BY id
ORDER BY id ASC;
select ' ---- select no rows without states ---- ';
SELECT count(),
min(string),
max(string),
min(float64),
max(float64),
avg(float64),
sum(float64),
min(float32),
max(float32),
avg(float32),
sum(float32),
min(decimal325),
max(decimal325),
avg(decimal325),
sum(decimal325),
min(date),
max(date),
min(datetime),
max(datetime),
min(datetime64),
max(datetime64),
min(int64),
max(int64),
avg(int64),
sum(int64),
min(int32),
max(int32),
avg(int32),
sum(int32),
min(int16),
max(int16),
avg(int16),
sum(int16),
min(int8),
max(int8),
avg(int8),
sum(int8)
FROM testNullableStates
WHERE id = '-22';
select ' ---- select no rows with states ---- ';
SELECT count(),
minMerge(stringMin),
maxMerge(stringMax),
minMerge(float64Min),
maxMerge(float64Max),
avgMerge(float64Avg),
sumMerge(float64Sum),
minMerge(float32Min),
maxMerge(float32Max),
avgMerge(float32Avg),
sumMerge(float32Sum),
minMerge(decimal325Min),
maxMerge(decimal325Max),
avgMerge(decimal325Avg),
sumMerge(decimal325Sum),
minMerge(dateMin),
maxMerge(dateMax),
minMerge(datetimeMin),
maxMerge(datetimeMax),
minMerge(datetime64Min),
maxMerge(datetime64Max),
minMerge(int64Min),
maxMerge(int64Max),
avgMerge(int64Avg),
sumMerge(int64Sum),
minMerge(int32Min),
maxMerge(int32Max),
avgMerge(int32Avg),
sumMerge(int32Sum),
minMerge(int16Min),
maxMerge(int16Max),
avgMerge(int16Avg),
sumMerge(int16Sum),
minMerge(int8Min),
maxMerge(int8Max),
avgMerge(int8Avg),
sumMerge(int8Sum)
FROM testNullableStatesAgg
WHERE id = '-22';
DROP TABLE testNullableStates;
DROP TABLE testNullableStatesAgg;