2020-09-16 04:26:10 +00:00
import pytest
from helpers . client import QueryRuntimeException
from helpers . cluster import ClickHouseCluster
2020-08-27 14:19:18 +00:00
2020-08-28 11:12:51 +00:00
cluster = ClickHouseCluster ( __file__ )
2022-03-22 16:39:58 +00:00
node = cluster . add_instance (
" node " , main_configs = [ " configs/zookeeper_config.xml " ] , with_zookeeper = True
)
2020-08-28 11:12:51 +00:00
2020-08-27 14:19:18 +00:00
2020-08-28 11:12:51 +00:00
@pytest.fixture ( scope = " module " )
def start_cluster ( ) :
2020-08-27 14:19:18 +00:00
try :
cluster . start ( )
2020-08-28 11:12:51 +00:00
yield cluster
finally :
cluster . shutdown ( )
2020-08-27 14:19:18 +00:00
2020-08-28 11:12:51 +00:00
2021-04-14 10:40:15 +00:00
@pytest.mark.parametrize (
2022-03-22 16:39:58 +00:00
( " part " , " date " , " part_name " ) ,
2021-04-14 10:40:15 +00:00
[
2022-03-22 16:39:58 +00:00
( " PARTITION " , " 2020-08-27 " , " 2020-08-27 " ) ,
( " PART " , " 2020-08-28 " , " 20200828_0_0_0 " ) ,
] ,
2021-04-14 10:40:15 +00:00
)
2021-04-14 12:04:59 +00:00
def test_fetch_part_from_allowed_zookeeper ( start_cluster , part , date , part_name ) :
2020-08-28 11:12:51 +00:00
node . query (
2021-04-14 12:04:59 +00:00
" CREATE TABLE IF NOT EXISTS simple (date Date, id UInt32) ENGINE = ReplicatedMergeTree( ' /clickhouse/tables/0/simple ' , ' node ' ) ORDER BY tuple() PARTITION BY date; "
2020-08-28 11:12:51 +00:00
)
2021-04-14 12:04:59 +00:00
node . query ( """ INSERT INTO simple VALUES ( ' {date} ' , 1) """ . format ( date = date ) )
2020-08-28 11:12:51 +00:00
node . query (
2021-04-14 12:04:59 +00:00
" CREATE TABLE IF NOT EXISTS simple2 (date Date, id UInt32) ENGINE = ReplicatedMergeTree( ' /clickhouse/tables/1/simple ' , ' node ' ) ORDER BY tuple() PARTITION BY date; "
2020-08-28 11:12:51 +00:00
)
2021-04-14 10:40:15 +00:00
2020-08-28 11:12:51 +00:00
node . query (
2021-04-14 10:40:15 +00:00
""" ALTER TABLE simple2 FETCH {part} ' {part_name} ' FROM ' zookeeper2:/clickhouse/tables/0/simple ' ; """ . format (
2022-03-22 16:39:58 +00:00
part = part , part_name = part_name
)
)
2021-04-14 10:40:15 +00:00
2022-03-22 16:39:58 +00:00
node . query (
""" ALTER TABLE simple2 ATTACH {part} ' {part_name} ' ; """ . format (
part = part , part_name = part_name
)
)
2020-08-28 11:12:51 +00:00
with pytest . raises ( QueryRuntimeException ) :
2020-08-27 14:19:18 +00:00
node . query (
2021-04-14 10:40:15 +00:00
""" ALTER TABLE simple2 FETCH {part} ' {part_name} ' FROM ' zookeeper:/clickhouse/tables/0/simple ' ; """ . format (
2022-03-22 16:39:58 +00:00
part = part , part_name = part_name
)
)
2020-08-27 14:19:18 +00:00
2022-03-22 16:39:58 +00:00
assert (
node . query (
""" SELECT id FROM simple2 where date = ' {date} ' """ . format ( date = date )
) . strip ( )
== " 1 "
)