mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-27 18:12:02 +00:00
59 lines
1.9 KiB
Python
59 lines
1.9 KiB
Python
import pytest
|
|
|
|
from helpers.cluster import ClickHouseCluster
|
|
|
|
cluster = ClickHouseCluster(__file__)
|
|
node = cluster.add_instance(
|
|
"node", main_configs=["configs/config.xml"], with_zookeeper=True
|
|
)
|
|
|
|
|
|
@pytest.fixture(scope="module")
|
|
def started_cluster():
|
|
try:
|
|
cluster.start()
|
|
yield cluster
|
|
finally:
|
|
cluster.shutdown()
|
|
|
|
|
|
def test_huge_column(started_cluster):
|
|
if (
|
|
node.is_built_with_thread_sanitizer()
|
|
or node.is_built_with_memory_sanitizer()
|
|
or node.is_built_with_address_sanitizer()
|
|
):
|
|
pytest.skip("sanitizer build has higher memory consumption; also it is slow")
|
|
|
|
# max_server_memory_usage is set to 1GB
|
|
# Added column should be 1e6 * 2000 ~= 2GB
|
|
# ALTER ADD COLUMN + MATRIALIZE COLUMN should not cause big memory consumption
|
|
node.query(
|
|
"""
|
|
create table test_fetch (x UInt64) engine = ReplicatedMergeTree('/clickhouse/tables/test_fetch', 'r1') order by x settings index_granularity=1024;
|
|
insert into test_fetch select number from numbers(1e6);
|
|
|
|
set mutations_sync=1;
|
|
alter table test_fetch add column y String default repeat(' ', 2000) CODEC(NONE);
|
|
alter table test_fetch materialize column y;
|
|
|
|
create table test_fetch2 (x UInt64, y String default repeat(' ', 2000) CODEC(NONE)) engine = ReplicatedMergeTree('/clickhouse/tables/test_fetch', 'r2') order by x settings index_granularity=1024;
|
|
"""
|
|
)
|
|
|
|
# Here we just check that fetch has started.
|
|
node.query(
|
|
"""
|
|
set receive_timeout=1;
|
|
system sync replica test_fetch2;
|
|
""",
|
|
ignore_error=True,
|
|
)
|
|
|
|
# Here we check that fetch did not use too much memory.
|
|
# See https://github.com/ClickHouse/ClickHouse/issues/39915
|
|
maybe_exception = node.query(
|
|
"select last_exception from system.replication_queue where last_exception like '%Memory limit%';"
|
|
)
|
|
assert maybe_exception == ""
|