Added tests

This commit is contained in:
Maksim Kita 2022-01-24 11:44:19 +00:00
parent e27332ce10
commit d9e079da4e
6 changed files with 206 additions and 0 deletions

View File

@ -0,0 +1,3 @@
1 0 18446744073709551615 value0 value1 value2
('value0','value1','value2')
1

View File

@ -0,0 +1,36 @@
DROP TABLE IF EXISTS 02184_range_dictionary_source_table;
CREATE TABLE 02184_range_dictionary_source_table
(
id UInt64,
start UInt64,
end UInt64,
value_0 String,
value_1 String,
value_2 String
)
ENGINE = TinyLog;
INSERT INTO 02184_range_dictionary_source_table VALUES (1, 0, 18446744073709551615, 'value0', 'value1', 'value2');
DROP DICTIONARY IF EXISTS 02184_range_dictionary;
CREATE DICTIONARY 02184_range_dictionary
(
id UInt64,
start UInt64,
end UInt64,
value_0 String,
value_1 String,
value_2 String
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(TABLE '02184_range_dictionary_source_table'))
LAYOUT(RANGE_HASHED())
RANGE(MIN start MAX end)
LIFETIME(0);
SELECT * FROM 02184_range_dictionary;
SELECT dictGet('02184_range_dictionary', ('value_0', 'value_1', 'value_2'), 1, 18446744073709551615);
SELECT dictHas('02184_range_dictionary', 1, 18446744073709551615);
DROP DICTIONARY 02184_range_dictionary;
DROP TABLE 02184_range_dictionary_source_table;

View File

@ -0,0 +1,22 @@
Source table
0 \N 5000 Value0
0 5001 10000 Value1
0 10001 \N Value2
Dictionary convert_null_range_bound_to_open = 1
0 5001 10000 Value1
0 0 5000 Value0
0 10001 18446744073709551615 Value2
Value0
Value1
Value2
1
1
1
Dictionary convert_null_range_bound_to_open = 0
0 5001 10000 Value1
DefaultValue
Value1
DefaultValue
0
1
0

View File

@ -0,0 +1,63 @@
DROP TABLE IF EXISTS 02185_range_dictionary_source_table;
CREATE TABLE 02185_range_dictionary_source_table
(
id UInt64,
start Nullable(UInt64),
end Nullable(UInt64),
value String
)
ENGINE = TinyLog;
INSERT INTO 02185_range_dictionary_source_table VALUES (0, NULL, 5000, 'Value0'), (0, 5001, 10000, 'Value1'), (0, 10001, NULL, 'Value2');
SELECT 'Source table';
SELECT * FROM 02185_range_dictionary_source_table;
DROP DICTIONARY IF EXISTS 02185_range_dictionary;
CREATE DICTIONARY 02185_range_dictionary
(
id UInt64,
start UInt64,
end UInt64,
value String DEFAULT 'DefaultValue'
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(TABLE '02185_range_dictionary_source_table'))
LAYOUT(RANGE_HASHED(convert_null_range_bound_to_open 1))
RANGE(MIN start MAX end)
LIFETIME(0);
SELECT 'Dictionary convert_null_range_bound_to_open = 1';
SELECT * FROM 02185_range_dictionary;
SELECT dictGet('02185_range_dictionary', 'value', 0, 0);
SELECT dictGet('02185_range_dictionary', 'value', 0, 5001);
SELECT dictGet('02185_range_dictionary', 'value', 0, 10001);
SELECT dictHas('02185_range_dictionary', 0, 0);
SELECT dictHas('02185_range_dictionary', 0, 5001);
SELECT dictHas('02185_range_dictionary', 0, 10001);
DROP DICTIONARY 02185_range_dictionary;
CREATE DICTIONARY 02185_range_dictionary
(
id UInt64,
start UInt64,
end UInt64,
value String DEFAULT 'DefaultValue'
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(TABLE '02185_range_dictionary_source_table'))
LAYOUT(RANGE_HASHED(convert_null_range_bound_to_open 0))
RANGE(MIN start MAX end)
LIFETIME(0);
SELECT 'Dictionary convert_null_range_bound_to_open = 0';
SELECT * FROM 02185_range_dictionary;
SELECT dictGet('02185_range_dictionary', 'value', 0, 0);
SELECT dictGet('02185_range_dictionary', 'value', 0, 5001);
SELECT dictGet('02185_range_dictionary', 'value', 0, 10001);
SELECT dictHas('02185_range_dictionary', 0, 0);
SELECT dictHas('02185_range_dictionary', 0, 5001);
SELECT dictHas('02185_range_dictionary', 0, 10001);
DROP TABLE 02185_range_dictionary_source_table;

View File

@ -0,0 +1,18 @@
Source table
1 2020-01-01 2100-01-01 Value0
1 2020-01-02 2100-01-01 Value1
1 2020-01-03 2100-01-01 Value2
Dictionary .range_lookup_strategy = min
1 2020-01-01 2100-01-01 Value0
1 2020-01-02 2100-01-01 Value1
1 2020-01-03 2100-01-01 Value2
Value0
Value0
Value0
Dictionary .range_lookup_strategy = max
1 2020-01-01 2100-01-01 Value0
1 2020-01-02 2100-01-01 Value1
1 2020-01-03 2100-01-01 Value2
Value0
Value1
Value2

View File

@ -0,0 +1,64 @@
DROP TABLE IF EXISTS 02186_range_dictionary_source_table;
CREATE TABLE 02186_range_dictionary_source_table
(
id UInt64,
start Date,
end Date,
value String
)
Engine = TinyLog;
INSERT INTO 02186_range_dictionary_source_table VALUES (1, '2020-01-01', '2100-01-01', 'Value0');
INSERT INTO 02186_range_dictionary_source_table VALUES (1, '2020-01-02', '2100-01-01', 'Value1');
INSERT INTO 02186_range_dictionary_source_table VALUES (1, '2020-01-03', '2100-01-01', 'Value2');
SELECT 'Source table';
SELECT * FROM 02186_range_dictionary_source_table;
DROP DICTIONARY IF EXISTS 02186_range_dictionary;
CREATE DICTIONARY 02186_range_dictionary
(
id UInt64,
start Date,
end Date,
value String
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(TABLE '02186_range_dictionary_source_table'))
LAYOUT(RANGE_HASHED(range_lookup_strategy 'min'))
RANGE(MIN start MAX end)
LIFETIME(0);
SELECT 'Dictionary .range_lookup_strategy = min';
SELECT * FROM 02186_range_dictionary;
select dictGet('02186_range_dictionary', 'value', toUInt64(1), toDate('2020-01-01'));
select dictGet('02186_range_dictionary', 'value', toUInt64(1), toDate('2020-01-02'));
select dictGet('02186_range_dictionary', 'value', toUInt64(1), toDate('2020-01-03'));
DROP DICTIONARY 02186_range_dictionary;
CREATE DICTIONARY 02186_range_dictionary
(
id UInt64,
start Date,
end Date,
value String
)
PRIMARY KEY id
SOURCE(CLICKHOUSE(TABLE '02186_range_dictionary_source_table'))
LAYOUT(RANGE_HASHED(range_lookup_strategy 'max'))
RANGE(MIN start MAX end)
LIFETIME(0);
SELECT 'Dictionary .range_lookup_strategy = max';
SELECT * FROM 02186_range_dictionary;
select dictGet('02186_range_dictionary', 'value', toUInt64(1), toDate('2020-01-01'));
select dictGet('02186_range_dictionary', 'value', toUInt64(1), toDate('2020-01-02'));
select dictGet('02186_range_dictionary', 'value', toUInt64(1), toDate('2020-01-03'));
DROP DICTIONARY 02186_range_dictionary;
DROP TABLE 02186_range_dictionary_source_table;