moved tests for vertical merge into autotests [#CLICKHOUSE-3479]

This commit is contained in:
Nikolai Kochetov 2018-02-02 16:20:28 +03:00 committed by alexey-milovidov
parent 4040e156b5
commit 67db049297
5 changed files with 440 additions and 195 deletions

View File

@ -1,7 +0,0 @@
<yandex>
<merge_tree>
<enable_vertical_merge_algorithm>1</enable_vertical_merge_algorithm>
<vertical_merge_algorithm_min_rows_to_activate>1</vertical_merge_algorithm_min_rows_to_activate>
<vertical_merge_algorithm_min_columns_to_activate>0</vertical_merge_algorithm_min_columns_to_activate>
</merge_tree>
</yandex>

View File

@ -1,125 +0,0 @@
import pytest
from helpers.cluster import ClickHouseCluster
cluster = ClickHouseCluster(__file__)
instance = cluster.add_instance('node', main_configs=['configs/mergetree_settings.xml'])
@pytest.fixture(scope="module")
def started_cluster():
try:
cluster.start()
yield cluster
finally:
cluster.shutdown()
def test(started_cluster):
instance.query('create database if not exists test;')
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
''')
assert instance.query("select count() from test.mult_tab final;") == '0\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '2\n'
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, value, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
''')
assert instance.query("select count() from test.mult_tab final;") == '20\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '20\n'
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, value, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
''')
assert instance.query("select count() from test.mult_tab final;") == '0\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '2\n'
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, value, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 2, -1, 1) from system.numbers limit 10;
''')
assert instance.query("select count() from test.mult_tab final;") == '20\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '20\n'
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, value, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
''')
assert instance.query("select count() from test.mult_tab final;") == '0\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '2\n'
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, value, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 3 = 0, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 3 = 1, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 3 = 2, 1, -1) from system.numbers limit 10;
''')
assert instance.query("select count() from test.mult_tab final;") == '10\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '10\n'
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, value, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 1000000;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 1000000;
''')
assert instance.query("select count() from test.mult_tab final;") == '0\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '2\n'
instance.query('''
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value UInt64, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(date, (date, version), 8192, sign, version);
insert into test.mult_tab select '2018-01-31', number, 0, if(number < 64, 1, -1) from system.numbers limit 128;
insert into test.mult_tab select '2018-01-31', number, 0, if(number < 64, -1, 1) from system.numbers limit 128;
''')
assert instance.query("select count() from test.mult_tab final settings max_block_size=32;") == '128\n'
instance.query('optimize table test.mult_tab;')
assert instance.query("select count() from test.mult_tab;") == '2\n'

View File

@ -160,38 +160,40 @@ table with 2 blocks final
2018-01-31 29 0 1
2018-01-31 30 0 1
2018-01-31 31 0 1
2018-01-31 64 0 -1
2018-01-31 65 0 -1
2018-01-31 66 0 -1
2018-01-31 67 0 -1
2018-01-31 68 0 -1
2018-01-31 69 0 -1
2018-01-31 70 0 -1
2018-01-31 71 0 -1
2018-01-31 72 0 -1
2018-01-31 73 0 -1
2018-01-31 74 0 -1
2018-01-31 75 0 -1
2018-01-31 76 0 -1
2018-01-31 77 0 -1
2018-01-31 78 0 -1
2018-01-31 79 0 -1
2018-01-31 80 0 -1
2018-01-31 81 0 -1
2018-01-31 82 0 -1
2018-01-31 83 0 -1
2018-01-31 84 0 -1
2018-01-31 85 0 -1
2018-01-31 86 0 -1
2018-01-31 87 0 -1
2018-01-31 88 0 -1
2018-01-31 89 0 -1
2018-01-31 90 0 -1
2018-01-31 91 0 -1
2018-01-31 92 0 -1
2018-01-31 93 0 -1
2018-01-31 94 0 -1
2018-01-31 32 0 1
2018-01-31 95 0 -1
2018-01-31 96 0 -1
2018-01-31 97 0 -1
2018-01-31 98 0 -1
2018-01-31 99 0 -1
2018-01-31 100 0 -1
2018-01-31 101 0 -1
2018-01-31 102 0 -1
2018-01-31 103 0 -1
2018-01-31 104 0 -1
2018-01-31 105 0 -1
2018-01-31 106 0 -1
2018-01-31 107 0 -1
2018-01-31 108 0 -1
2018-01-31 109 0 -1
2018-01-31 110 0 -1
2018-01-31 111 0 -1
2018-01-31 112 0 -1
2018-01-31 113 0 -1
2018-01-31 114 0 -1
2018-01-31 115 0 -1
2018-01-31 116 0 -1
2018-01-31 117 0 -1
2018-01-31 118 0 -1
2018-01-31 119 0 -1
2018-01-31 120 0 -1
2018-01-31 121 0 -1
2018-01-31 122 0 -1
2018-01-31 123 0 -1
2018-01-31 124 0 -1
2018-01-31 125 0 -1
2018-01-31 126 0 -1
2018-01-31 127 0 -1
2018-01-31 0 0 -1
2018-01-31 1 0 -1
2018-01-31 2 0 -1
@ -224,38 +226,308 @@ table with 2 blocks final
2018-01-31 29 0 -1
2018-01-31 30 0 -1
2018-01-31 31 0 -1
2018-01-31 64 0 1
2018-01-31 65 0 1
2018-01-31 66 0 1
2018-01-31 67 0 1
2018-01-31 68 0 1
2018-01-31 69 0 1
2018-01-31 70 0 1
2018-01-31 71 0 1
2018-01-31 72 0 1
2018-01-31 73 0 1
2018-01-31 74 0 1
2018-01-31 75 0 1
2018-01-31 76 0 1
2018-01-31 77 0 1
2018-01-31 78 0 1
2018-01-31 79 0 1
2018-01-31 80 0 1
2018-01-31 81 0 1
2018-01-31 82 0 1
2018-01-31 83 0 1
2018-01-31 84 0 1
2018-01-31 85 0 1
2018-01-31 86 0 1
2018-01-31 87 0 1
2018-01-31 88 0 1
2018-01-31 89 0 1
2018-01-31 90 0 1
2018-01-31 91 0 1
2018-01-31 92 0 1
2018-01-31 93 0 1
2018-01-31 94 0 1
2018-01-31 32 0 -1
2018-01-31 95 0 1
2018-01-31 96 0 1
2018-01-31 97 0 1
2018-01-31 98 0 1
2018-01-31 99 0 1
2018-01-31 100 0 1
2018-01-31 101 0 1
2018-01-31 102 0 1
2018-01-31 103 0 1
2018-01-31 104 0 1
2018-01-31 105 0 1
2018-01-31 106 0 1
2018-01-31 107 0 1
2018-01-31 108 0 1
2018-01-31 109 0 1
2018-01-31 110 0 1
2018-01-31 111 0 1
2018-01-31 112 0 1
2018-01-31 113 0 1
2018-01-31 114 0 1
2018-01-31 115 0 1
2018-01-31 116 0 1
2018-01-31 117 0 1
2018-01-31 118 0 1
2018-01-31 119 0 1
2018-01-31 120 0 1
2018-01-31 121 0 1
2018-01-31 122 0 1
2018-01-31 123 0 1
2018-01-31 124 0 1
2018-01-31 125 0 1
2018-01-31 126 0 1
2018-01-31 127 0 1
table with 2 blocks optimized
2018-01-31 0 0 -1
2018-01-31 127 0 1
#########################
Vertival merge
#########################
table with 2 blocks final
table with 2 blocks optimized
2018-01-31 str_8 0 -1
2018-01-31 str_9 0 1
#########################
table with 2 blocks final
2018-01-31 str_0 0 -1
2018-01-31 str_0 0 -1
2018-01-31 str_1 0 1
2018-01-31 str_1 0 1
2018-01-31 str_2 0 -1
2018-01-31 str_2 0 -1
2018-01-31 str_3 0 1
2018-01-31 str_3 0 1
2018-01-31 str_4 0 -1
2018-01-31 str_4 0 -1
2018-01-31 str_5 0 1
2018-01-31 str_5 0 1
2018-01-31 str_6 0 -1
2018-01-31 str_6 0 -1
2018-01-31 str_7 0 1
2018-01-31 str_7 0 1
2018-01-31 str_8 0 -1
2018-01-31 str_8 0 -1
2018-01-31 str_9 0 1
2018-01-31 str_9 0 1
table with 2 blocks optimized
2018-01-31 str_0 0 -1
2018-01-31 str_0 0 -1
2018-01-31 str_1 0 1
2018-01-31 str_1 0 1
2018-01-31 str_2 0 -1
2018-01-31 str_2 0 -1
2018-01-31 str_3 0 1
2018-01-31 str_3 0 1
2018-01-31 str_4 0 -1
2018-01-31 str_4 0 -1
2018-01-31 str_5 0 1
2018-01-31 str_5 0 1
2018-01-31 str_6 0 -1
2018-01-31 str_6 0 -1
2018-01-31 str_7 0 1
2018-01-31 str_7 0 1
2018-01-31 str_8 0 -1
2018-01-31 str_8 0 -1
2018-01-31 str_9 0 1
2018-01-31 str_9 0 1
#########################
table with 2 blocks final
table with 2 blocks optimized
2018-01-31 str_9 0 1
2018-01-31 str_9 0 -1
#########################
table with 2 blocks final
2018-01-31 str_0 0 -1
2018-01-31 str_0 1 1
2018-01-31 str_1 0 1
2018-01-31 str_1 1 -1
2018-01-31 str_2 0 -1
2018-01-31 str_2 1 1
2018-01-31 str_3 0 1
2018-01-31 str_3 1 -1
2018-01-31 str_4 0 -1
2018-01-31 str_4 1 1
2018-01-31 str_5 0 1
2018-01-31 str_5 1 -1
2018-01-31 str_6 0 -1
2018-01-31 str_6 1 1
2018-01-31 str_7 0 1
2018-01-31 str_7 1 -1
2018-01-31 str_8 0 -1
2018-01-31 str_8 1 1
2018-01-31 str_9 0 1
2018-01-31 str_9 1 -1
table with 2 blocks optimized
2018-01-31 str_0 0 -1
2018-01-31 str_0 1 1
2018-01-31 str_1 0 1
2018-01-31 str_1 1 -1
2018-01-31 str_2 0 -1
2018-01-31 str_2 1 1
2018-01-31 str_3 0 1
2018-01-31 str_3 1 -1
2018-01-31 str_4 0 -1
2018-01-31 str_4 1 1
2018-01-31 str_5 0 1
2018-01-31 str_5 1 -1
2018-01-31 str_6 0 -1
2018-01-31 str_6 1 1
2018-01-31 str_7 0 1
2018-01-31 str_7 1 -1
2018-01-31 str_8 0 -1
2018-01-31 str_8 1 1
2018-01-31 str_9 0 1
2018-01-31 str_9 1 -1
#########################
table with 4 blocks final
table with 4 blocks optimized
2018-01-31 str_9 0 1
2018-01-31 str_9 0 -1
#########################
table with 5 blocks final
2018-01-31 str_0 1 -1
2018-01-31 str_1 1 -1
2018-01-31 str_2 1 -1
2018-01-31 str_3 1 -1
2018-01-31 str_4 1 -1
2018-01-31 str_5 1 -1
2018-01-31 str_6 1 -1
2018-01-31 str_7 1 -1
2018-01-31 str_8 1 -1
2018-01-31 str_9 1 -1
table with 5 blocks optimized
2018-01-31 str_0 1 -1
2018-01-31 str_1 1 -1
2018-01-31 str_2 1 -1
2018-01-31 str_3 1 -1
2018-01-31 str_4 1 -1
2018-01-31 str_5 1 -1
2018-01-31 str_6 1 -1
2018-01-31 str_7 1 -1
2018-01-31 str_8 1 -1
2018-01-31 str_9 1 -1
#########################
table with 2 blocks final
table with 2 blocks optimized
2018-01-31 str_999999 0 1
2018-01-31 str_999999 0 -1
#########################
table with 2 blocks final
2018-01-31 0 0 1
2018-01-31 1 0 1
2018-01-31 2 0 1
2018-01-31 3 0 1
2018-01-31 4 0 1
2018-01-31 5 0 1
2018-01-31 6 0 1
2018-01-31 7 0 1
2018-01-31 8 0 1
2018-01-31 9 0 1
2018-01-31 10 0 1
2018-01-31 11 0 1
2018-01-31 12 0 1
2018-01-31 13 0 1
2018-01-31 14 0 1
2018-01-31 15 0 1
2018-01-31 16 0 1
2018-01-31 17 0 1
2018-01-31 18 0 1
2018-01-31 19 0 1
2018-01-31 20 0 1
2018-01-31 21 0 1
2018-01-31 22 0 1
2018-01-31 23 0 1
2018-01-31 24 0 1
2018-01-31 25 0 1
2018-01-31 26 0 1
2018-01-31 27 0 1
2018-01-31 28 0 1
2018-01-31 29 0 1
2018-01-31 30 0 1
2018-01-31 31 0 1
2018-01-31 32 0 1
2018-01-31 95 0 -1
2018-01-31 96 0 -1
2018-01-31 97 0 -1
2018-01-31 98 0 -1
2018-01-31 99 0 -1
2018-01-31 100 0 -1
2018-01-31 101 0 -1
2018-01-31 102 0 -1
2018-01-31 103 0 -1
2018-01-31 104 0 -1
2018-01-31 105 0 -1
2018-01-31 106 0 -1
2018-01-31 107 0 -1
2018-01-31 108 0 -1
2018-01-31 109 0 -1
2018-01-31 110 0 -1
2018-01-31 111 0 -1
2018-01-31 112 0 -1
2018-01-31 113 0 -1
2018-01-31 114 0 -1
2018-01-31 115 0 -1
2018-01-31 116 0 -1
2018-01-31 117 0 -1
2018-01-31 118 0 -1
2018-01-31 119 0 -1
2018-01-31 120 0 -1
2018-01-31 121 0 -1
2018-01-31 122 0 -1
2018-01-31 123 0 -1
2018-01-31 124 0 -1
2018-01-31 125 0 -1
2018-01-31 126 0 -1
2018-01-31 127 0 -1
2018-01-31 0 0 -1
2018-01-31 1 0 -1
2018-01-31 2 0 -1
2018-01-31 3 0 -1
2018-01-31 4 0 -1
2018-01-31 5 0 -1
2018-01-31 6 0 -1
2018-01-31 7 0 -1
2018-01-31 8 0 -1
2018-01-31 9 0 -1
2018-01-31 10 0 -1
2018-01-31 11 0 -1
2018-01-31 12 0 -1
2018-01-31 13 0 -1
2018-01-31 14 0 -1
2018-01-31 15 0 -1
2018-01-31 16 0 -1
2018-01-31 17 0 -1
2018-01-31 18 0 -1
2018-01-31 19 0 -1
2018-01-31 20 0 -1
2018-01-31 21 0 -1
2018-01-31 22 0 -1
2018-01-31 23 0 -1
2018-01-31 24 0 -1
2018-01-31 25 0 -1
2018-01-31 26 0 -1
2018-01-31 27 0 -1
2018-01-31 28 0 -1
2018-01-31 29 0 -1
2018-01-31 30 0 -1
2018-01-31 31 0 -1
2018-01-31 32 0 -1
2018-01-31 95 0 1
2018-01-31 96 0 1
2018-01-31 97 0 1
2018-01-31 98 0 1
2018-01-31 99 0 1
2018-01-31 100 0 1
2018-01-31 101 0 1
2018-01-31 102 0 1
2018-01-31 103 0 1
2018-01-31 104 0 1
2018-01-31 105 0 1
2018-01-31 106 0 1
2018-01-31 107 0 1
2018-01-31 108 0 1
2018-01-31 109 0 1
2018-01-31 110 0 1
2018-01-31 111 0 1
2018-01-31 112 0 1
2018-01-31 113 0 1
2018-01-31 114 0 1
2018-01-31 115 0 1
2018-01-31 116 0 1
2018-01-31 117 0 1
2018-01-31 118 0 1
2018-01-31 119 0 1
2018-01-31 120 0 1
2018-01-31 121 0 1
2018-01-31 122 0 1
2018-01-31 123 0 1
2018-01-31 124 0 1
2018-01-31 125 0 1
2018-01-31 126 0 1
2018-01-31 127 0 1
table with 2 blocks optimized
2018-01-31 0 0 -1
2018-01-31 127 0 1

View File

@ -92,7 +92,112 @@ create table test.mult_tab (date Date, value UInt64, version UInt64, sign Int8)
insert into test.mult_tab select '2018-01-31', number, 0, if(number < 64, 1, -1) from system.numbers limit 128;
insert into test.mult_tab select '2018-01-31', number, 0, if(number < 64, -1, 1) from system.numbers limit 128;
select 'table with 2 blocks final';
select * from test.mult_tab final settings max_block_size=32;
select * from test.mult_tab final settings max_block_size=33;
optimize table test.mult_tab;
select 'table with 2 blocks optimized';
select * from test.mult_tab;
select '#########################';
select 'Vertival merge';
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
select 'table with 2 blocks final';
select * from test.mult_tab final;
optimize table test.mult_tab;
select 'table with 2 blocks optimized';
select * from test.mult_tab;
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, value, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
select 'table with 2 blocks final';
select * from test.mult_tab final;
optimize table test.mult_tab;
select 'table with 2 blocks optimized';
select * from test.mult_tab;
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, value, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
select 'table with 2 blocks final';
select * from test.mult_tab final;
optimize table test.mult_tab;
select 'table with 2 blocks optimized';
select * from test.mult_tab;
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, value, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 2, -1, 1) from system.numbers limit 10;
select 'table with 2 blocks final';
select * from test.mult_tab final;
optimize table test.mult_tab;
select 'table with 2 blocks optimized';
select * from test.mult_tab;
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, value, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
select 'table with 4 blocks final';
select * from test.mult_tab final;
optimize table test.mult_tab;
select 'table with 4 blocks optimized';
select * from test.mult_tab;
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, value, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 3 = 0, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 3 = 1, 1, -1) from system.numbers limit 10;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 1, if(number % 3 = 2, 1, -1) from system.numbers limit 10;
select 'table with 5 blocks final';
select * from test.mult_tab final;
optimize table test.mult_tab;
select 'table with 5 blocks optimized';
select * from test.mult_tab;
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value String, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, value, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, 1, -1) from system.numbers limit 1000000;
insert into test.mult_tab select '2018-01-31', 'str_' || toString(number), 0, if(number % 2, -1, 1) from system.numbers limit 1000000;
select 'table with 2 blocks final';
select * from test.mult_tab final;
optimize table test.mult_tab;
select 'table with 2 blocks optimized';
select * from test.mult_tab;
select '#########################';
drop table if exists test.mult_tab;
create table test.mult_tab (date Date, value UInt64, version UInt64, sign Int8) engine = VersionedCollapsingMergeTree(sign, version) order by (date, version) settings enable_vertical_merge_algorithm = 1, vertical_merge_algorithm_min_rows_to_activate = 1, vertical_merge_algorithm_min_columns_to_activate = 0;
insert into test.mult_tab select '2018-01-31', number, 0, if(number < 64, 1, -1) from system.numbers limit 128;
insert into test.mult_tab select '2018-01-31', number, 0, if(number < 64, -1, 1) from system.numbers limit 128;
select 'table with 2 blocks final';
select * from test.mult_tab final settings max_block_size=33;
optimize table test.mult_tab;
select 'table with 2 blocks optimized';
select * from test.mult_tab;