import pytest from helpers.cluster import ClickHouseCluster from helpers.test_tools import TSV cluster = ClickHouseCluster(__file__) node = cluster.add_instance("node") @pytest.fixture(scope="module") def started_cluster(): try: cluster.start() yield cluster finally: cluster.shutdown() def test_freeze_table(started_cluster): node.query(''' CREATE TABLE table_for_freeze ( key UInt64, value String ) ENGINE = MergeTree() ORDER BY key PARTITION BY key % 10; ''') node.query(''' INSERT INTO table_for_freeze SELECT number, toString(number) from numbers(10); ''') freeze_result = TSV.toMat(node.query(''' ALTER TABLE table_for_freeze FREEZE WITH NAME 'test_01417' FORMAT TSVWithNames SETTINGS alter_partition_verbose_result = 1; ''')) assert 11 == len(freeze_result) path_col_ix = freeze_result[0].index('part_backup_path') for row in freeze_result[1:]: # skip header part_backup_path = row[path_col_ix] node.exec_in_container( ["bash", "-c", "test -d {}".format(part_backup_path)] ) freeze_result = TSV.toMat(node.query(''' ALTER TABLE table_for_freeze FREEZE PARTITION '3' WITH NAME 'test_01417_single_part' FORMAT TSVWithNames SETTINGS alter_partition_verbose_result = 1; ''')) assert 2 == len(freeze_result) path_col_ix = freeze_result[0].index('part_backup_path') for row in freeze_result[1:]: # skip header part_backup_path = row[path_col_ix] assert 'test_01417_single_part' in part_backup_path node.exec_in_container( ["bash", "-c", "test -d {}".format(part_backup_path)] )