| #!/bin/env python |
| # -*- coding: utf-8 -*- |
| # Licensed to the Apache Software Foundation (ASF) under one |
| # or more contributor license agreements. See the NOTICE file |
| # distributed with this work for additional information |
| # regarding copyright ownership. The ASF licenses this file |
| # to you under the Apache License, Version 2.0 (the |
| # "License"); you may not use this file except in compliance |
| # with the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, |
| # software distributed under the License is distributed on an |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| # KIND, either express or implied. See the License for the |
| # specific language governing permissions and limitations |
| # under the License. |
| |
| ############################################################################ |
| # |
| # @file test_sys_modify_partition_property.py |
| # @date 2020-07-29 15:07:59 |
| # @brief This file is a test file for modify partitions property |
| # |
| ############################################################################# |
| |
| """ |
| 测试修改分区表多分区属性 |
| """ |
| |
| import pytest |
| |
| from data import partition as DATA |
| from lib import palo_config |
| from lib import palo_client |
| from lib import util |
| from lib import common |
| from lib.palo_job import PartitionInfo |
| from lib.palo_job import DescInfo |
| |
| client = None |
| |
| config = palo_config.config |
| broker_info = palo_config.broker_info |
| |
| |
| def setup_module(): |
| """ |
| setUp |
| """ |
| pass |
| |
| |
| def test_modify_table_replication(): |
| """ |
| { |
| "title": "test_modify_table_replication", |
| "describe": "修改表属性,set replication_num错误,使用default.replication_num", |
| "tag": "p1,system" |
| } |
| """ |
| """增加表的副本数量""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', 'MAXVALUE', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| assert client.get_partition_storage_medium(table_name, 'partition_a') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_b') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_c') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_d') == 'SSD' |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_tablet(table_name) |
| flag = True |
| try: |
| ret = client.modify_partition(table_name, replication_num=2) |
| flag = False |
| except Exception as e: |
| # This is a range partitioned table, you should specify partitions with MODIFY PARTITION clause. |
| # If you want to set default replication number, please use 'default.replication_num' instead of 'replication_num' to escape misleading. |
| print(str(e)) |
| assert flag, 'expect modfiy partition failed' |
| client.clean(database_name) |
| |
| |
| def test_modify_tb_reduce_replication(): |
| """ |
| { |
| "title": "test_modify_tb_reduce_replication", |
| "describe": "修改表属性,将replication_num由3变为2,show partition查看RelicationNum为不变仍为3,增加新的分区副本数为2", |
| "tag": "p1,system" |
| } |
| """ |
| """减少表的副本数量,原有分区的副本数不变,新加分区的副本数使用修改后的副本数""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '5000', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_partitions(table_name) |
| ret = client.modify_partition(table_name, None, None, None, None, None, **{"default.replication_num": "2"}) |
| assert ret |
| ret = client.show_partitions(table_name) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| print(part_replication_list) |
| assert part_replication_list == [u'3'] * len(part_replication_list) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_a', PartitionInfo.ReplicationNum) |
| ret = client.add_partition(table_name, 'partition_e', '10000') |
| assert ret |
| ret = client.show_partitions(table_name) |
| assert '2' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_e', PartitionInfo.ReplicationNum) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| print(part_replication_list) |
| print([u'3'] * len(part_replication_list) + [u'2']) |
| assert part_replication_list == [u'3'] * (len(part_replication_list) - 1) + [u'2'] |
| client.clean(database_name) |
| |
| |
| def test_modify_tb_add_replication(): |
| """ |
| { |
| "title": "test_modify_tb_add_replication", |
| "describe": "修改表属性replication_num,将由3变为4,show partition查看RelicationNum为不变仍为3,增加新的分区副本数为4", |
| "tag": "p1,system" |
| } |
| """ |
| """增加表的副本数量,原有分区的副本数不变,新加分区的副本数使用修改后的副本数""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '5000', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_partitions(table_name) |
| ret = client.modify_partition(table_name, None, None, None, None, None, **{"default.replication_num": "4"}) |
| assert ret |
| ret = client.show_partitions(table_name) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| print(part_replication_list) |
| assert part_replication_list == [u'3'] * len(part_replication_list) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_a', PartitionInfo.ReplicationNum) |
| ret = client.add_partition(table_name, 'partition_e', '10000') |
| assert ret |
| ret = client.show_partitions(table_name) |
| assert '4' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_e', PartitionInfo.ReplicationNum) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| print(part_replication_list) |
| print([u'3'] * len(part_replication_list) + [u'4']) |
| assert part_replication_list == [u'3'] * (len(part_replication_list) - 1) + [u'4'] |
| client.clean(database_name) |
| |
| |
| def test_modify_tb_bloom_filter(): |
| """ |
| { |
| "title": "test_modify_tb_bloom_filter", |
| "describe": "修改表属性bloom filter,show alter table查看alter任务状态,finished后desc查看bloom filter列验证", |
| "tag": "p1,system" |
| } |
| """ |
| """修改表的bloom filter""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', 'MAXVALUE', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| assert client.get_partition_storage_medium(table_name, 'partition_a') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_b') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_c') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_d') == 'SSD' |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.desc_table(table_name) |
| print(util.get_attr_condition_list(ret, DescInfo.Extra, 'BLOOM_FILTER', DescInfo.Field)) |
| assert util.get_attr_condition_list(ret, DescInfo.Extra, 'BLOOM_FILTER', DescInfo.Field) is None |
| # todo check show tablet_ |
| bloom_filter_columns_list = ['k2', 'k4'] |
| ret = client.modify_partition(table_name, bloom_filter_columns=','.join(bloom_filter_columns_list)) |
| assert ret |
| assert client.wait_table_schema_change_job(table_name) |
| ret = client.desc_table(table_name) |
| assert bloom_filter_columns_list == util.get_attr_condition_list(ret, DescInfo.Extra, |
| 'BLOOM_FILTER', DescInfo.Field) |
| client.clean(database_name) |
| |
| |
| def test_modify_table_storage_medium(): |
| """ |
| { |
| "title": "test_modify_table_storage_medium", |
| "describe": "修改表的storage_medium,storage_medium和storage_cooldown_time不是表属性,不支持修改", |
| "tag": "p1,system" |
| } |
| """ |
| """表属性不支持storage medium""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', 'MAXVALUE', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| assert client.get_partition_storage_medium(table_name, 'partition_a') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_b') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_c') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_d') == 'SSD' |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_tablet(table_name) |
| flag = True |
| try: |
| ret = client.modify_partition(table_name, storage_medium='ssd') |
| flag = False |
| except Exception as e: |
| print(str(e)) |
| assert flag, 'expect: Unknown table property: [storage_medium]' |
| client.clean(database_name) |
| |
| |
| def test_modify_table_colocate(): |
| """ |
| { |
| "title": "test_modify_table_colocate", |
| "describe": "修改表属性colocate_with,修改成功", |
| "tag": "p1,system" |
| } |
| """ |
| """修改表的colocate_with属性""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', 'MAXVALUE', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| assert client.get_partition_storage_medium(table_name, 'partition_a') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_b') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_c') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_d') == 'SSD' |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.modify_partition(table_name, colocate_with='k2') |
| assert ret |
| client.clean(database_name) |
| |
| |
| @pytest.mark.skip() |
| def test_modify_table_dynamic_parition(): |
| """ |
| { |
| "title": "test_modify_table_dynamic_parition", |
| "describe": "修改表属性dynamic_partition,预期修改成功,目前失败,bug", |
| "tag": "p1,system" |
| } |
| """ |
| """bug:修改表的动态分区属性""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '2010-01-01 00:00:00', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '2030-01-01 00:00:00', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '2050-02-01 00:00:00', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '2100-03-01 00:00:00', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k5', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| assert client.get_partition_storage_medium(table_name, 'partition_a') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_b') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_c') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_d') == 'SSD' |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| # todo: bug,非master代码报错,master代码待确认 |
| #ret = client.modify_partition(table_name, **{'dynamic_partition.enable': 'false'}) |
| #assert ret |
| dynamic_prition_property = {'dynamic_partition.enable': 'true', 'dynamic_partition.time_unit': 'DAY', |
| 'dynamic_partition.end': '3', 'dynamic_partition.prefix': 'partition_'} |
| ret = client.modify_partition(table_name, **dynamic_prition_property) |
| assert ret |
| |
| |
| def test_modify_s_tb_reduce_replication(): |
| """ |
| { |
| "title": "test_modify_s_tb_reduce_replication", |
| "describe": "修改单分区表分区属性replication_num,由3变为2,修改成功,show partitons,replication num为2", |
| "tag": "p1,system" |
| } |
| """ |
| """修改单分区表的replication_num, storage_medium, storage_cooldown_time, in_memory属性""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| assert client.create_table(table_name, DATA.schema_1, distribution_info=distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.modify_partition(table_name, table_name, replication_num=2) |
| assert ret |
| ret = client.show_partitions(table_name) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| assert part_replication_list == [u'2'] * len(part_replication_list) |
| client.clean(database_name) |
| |
| |
| def test_modify_s_tb_add_replication(): |
| """ |
| { |
| "title": "test_modify_s_tb_add_replication", |
| "describe": "修改单分区表分区属性replication_num,由3变为4,修改成功,show partitons,replication num为4", |
| "tag": "p1,system" |
| } |
| """ |
| """修改单分区表的replication_num, storage_medium, storage_cooldown_time, in_memory属性""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| assert client.create_table(table_name, DATA.schema_1, distribution_info=distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.modify_partition(table_name, table_name, replication_num=4) |
| assert ret |
| ret = client.show_partitions(table_name) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| assert part_replication_list == [u'4'] * len(part_replication_list) |
| client.clean(database_name) |
| |
| |
| def test_modfiy_s_tb_cooldown_time(): |
| """ |
| { |
| "title": "test_modfiy_s_tb_in_memory", |
| "describe": "修改单分区表分区属性storage_cooldown_time,成功", |
| "tag": "p1,system" |
| } |
| """ |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| assert client.create_table(table_name, DATA.schema_1, distribution_info=distribution_info, storage_medium='SSD') |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.modify_partition(table_name, table_name, storage_cooldown_time='9999-01-01 00:00:00') |
| assert True |
| ret = client.show_partitions(table_name) |
| assert util.get_attr(ret, PartitionInfo.CooldownTime) == [u'9999-01-01 00:00:00'] |
| client.clean(database_name) |
| |
| |
| # 单分区表修改storage_medium和storage_cooldown_time在test_sys_storage_medium.py中,此处不再验证 |
| |
| |
| def test_modify_p_tb_reduce_replication(): |
| """ |
| { |
| "title": "test_modify_p_tb_reduce_replication", |
| "describe": "修改分区表多个分区属性replication_num,由3变为2,修改成功,show partition验证被修改分区为2副本,增加分区,新分区的副本数为3", |
| "tag": "p1,system" |
| } |
| """ |
| |
| """减少表的副本数量,原有分区的副本数不变,新加分区的副本数使用修改后的副本数""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '5000', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_partitions(table_name) |
| ret = client.modify_partition(table_name, ['partition_a', 'partition_d'], replication_num=2) |
| assert ret |
| ret = client.show_partitions(table_name) |
| assert '2' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_a', PartitionInfo.ReplicationNum) |
| assert '2' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_d', PartitionInfo.ReplicationNum) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_b', PartitionInfo.ReplicationNum) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_c', PartitionInfo.ReplicationNum) |
| |
| ret = client.add_partition(table_name, 'partition_e', '10000') |
| assert ret |
| ret = client.show_partitions(table_name) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_e', PartitionInfo.ReplicationNum) |
| client.clean(database_name) |
| |
| |
| def test_modify_p_tb_add_replication(): |
| """ |
| { |
| "title": "test_modify_p_tb_add_replication", |
| "describe": "修改分区表多个分区属性replication_num,由3变为4,修改成功,show partition验证被修改分区为4副本,增加分区,新分区的副本数为3", |
| "tag": "p1,system" |
| } |
| """ |
| """减少表的副本数量,原有分区的副本数不变,新加分区的副本数使用修改后的副本数""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '5000', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_partitions(table_name) |
| ret = client.modify_partition(table_name, ['partition_a', 'partition_d'], replication_num=4) |
| assert ret |
| ret = client.show_partitions(table_name) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| assert part_replication_list == [u'4', u'3', u'3', u'4'] |
| |
| ret = client.add_partition(table_name, 'partition_e', '10000') |
| assert ret |
| ret = client.show_partitions(table_name) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, |
| 'partition_e', PartitionInfo.ReplicationNum) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| assert part_replication_list == [u'4', u'3', u'3', u'4', u'3'] |
| client.clean(database_name) |
| |
| |
| def test_modify_p_tb_storage_medium(): |
| """ |
| { |
| "title": "test_modify_p_tb_storage_medium", |
| "describe": "修改分区表分区属性storage_medium,修改多个分区pa, pb的storage medium,验证,修改所有分区 *的storage medium,验证", |
| "tag": "p1,system" |
| } |
| """ |
| """减少表的副本数量,原有分区的副本数不变,新加分区的副本数使用修改后的副本数""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '5000', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| assert client.get_partition_storage_medium(table_name, 'partition_a') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_b') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_c') == 'SSD' |
| assert client.get_partition_storage_medium(table_name, 'partition_d') == 'SSD' |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.modify_partition(table_name, ['partition_c', 'partition_d'], storage_medium='HDD') |
| assert ret |
| assert client.get_partition_storage_medium(table_name, 'partition_c') == 'HDD' |
| assert client.get_partition_storage_medium(table_name, 'partition_d') == 'HDD' |
| ret = client.modify_partition(table_name, ['*'], storage_medium='HDD') |
| assert client.get_partition_storage_medium(table_name, 'partition_a') == 'HDD' |
| assert client.get_partition_storage_medium(table_name, 'partition_b') == 'HDD' |
| client.clean(database_name) |
| |
| |
| def test_modify_p_tb_all_reduce_replication(): |
| """ |
| { |
| "title": "test_modify_p_tb_all_reduce_replication", |
| "describe": "修改分区表所有分区属性replication_num,由3变为2,show partition验证所有分区变为2,增加分区,新增分区副本数为3", |
| "tag": "p1,system" |
| } |
| """ |
| """减少表的副本数量,原有分区的副本数不变,新加分区的副本数使用修改后的副本数""" |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '5000', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_partitions(table_name) |
| ret = client.modify_partition(table_name, ['*'], replication_num=2) |
| assert ret |
| ret = client.show_partitions(table_name) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| assert part_replication_list == [u'2'] * len(part_replication_list) |
| |
| ret = client.add_partition(table_name, 'partition_e', '10000') |
| assert ret |
| ret = client.show_partitions(table_name) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, 'partition_e', |
| PartitionInfo.ReplicationNum) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| print(part_replication_list) |
| assert part_replication_list == [u'2'] * (len(part_replication_list) - 1) + [u'3'] |
| client.clean(database_name) |
| |
| |
| def test_modify_p_tb_all_add_replication(): |
| """ |
| { |
| "title": "test_modify_p_tb_all_add_replication", |
| "describe": "修改分区表所有分区属性replication_num,由3变为4,show partition验证所有分区变为4,增加分区,新增分区副本数为4", |
| "tag": "p1,system" |
| } |
| """ |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_a = palo_client.Partition('partition_a', '100', storage_medium='SSD') |
| partition_b = palo_client.Partition('partition_b', '200', storage_medium='SSD') |
| partition_c = palo_client.Partition('partition_c', '300', storage_medium='SSD') |
| partition_d = palo_client.Partition('partition_d', '5000', storage_medium='SSD') |
| partition_list = [partition_a, partition_b, partition_c, partition_d] |
| partition_info = palo_client.PartitionInfo('k3', partition_list=partition_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 3) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info) |
| assert client.show_tables(table_name) |
| assert client.get_index(table_name) |
| |
| data_desc_list = palo_client.LoadDataInfo(DATA.file_path_1, table_name) |
| assert client.batch_load(util.get_label(), data_desc_list, is_wait=True, broker=broker_info) |
| assert client.verify(DATA.expected_data_file_list_1, table_name) |
| ret = client.show_partitions(table_name) |
| ret = client.modify_partition(table_name, ['*'], replication_num=4) |
| assert ret |
| ret = client.show_partitions(table_name) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| assert part_replication_list == [u'4'] * len(part_replication_list) |
| |
| ret = client.add_partition(table_name, 'partition_e', '10000') |
| assert ret |
| ret = client.show_partitions(table_name) |
| assert '3' == util.get_attr_condition_value(ret, PartitionInfo.PartitionName, 'partition_e', |
| PartitionInfo.ReplicationNum) |
| part_replication_list = util.get_attr(ret, PartitionInfo.ReplicationNum) |
| print(part_replication_list) |
| assert part_replication_list == [u'4'] * (len(part_replication_list) - 1) + [u'3'] |
| client.clean(database_name) |
| |
| |
| def test_modify_table_default_buckets(): |
| """ |
| { |
| "title": "test_modify_table_default_buckets", |
| "describe": "修改表默认分桶数,github issue 6024", |
| "tag": "p1,system" |
| } |
| """ |
| database_name, table_name, rollup_table_name = util.gen_name_list() |
| client = common.create_workspace(database_name) |
| partition_name_list = ['partition_a', 'partition_b'] |
| partition_value_list = ['100', '200'] |
| partition_info = palo_client.PartitionInfo('k3', partition_name_list, partition_value_list) |
| distribution_info = palo_client.DistributionInfo('Hash(k1)', 8) |
| |
| assert client.create_table(table_name, DATA.schema_1, partition_info, distribution_info), "create table failed" |
| assert client.show_tables(table_name), "create table failed" |
| assert client.get_partition_buckets(table_name, partition_name_list[0], database_name) == '8', "buckets num false" |
| assert client.get_partition_buckets(table_name, partition_name_list[1], database_name) == '8', "buckets num false" |
| sql = "alter table %s modify distribution distributed by hash(k1) buckets 12" % table_name |
| ret = client.execute(sql) |
| assert ret == () |
| ret = client.add_partition(table_name, 'partition_c', '300') |
| assert ret, "add partition failed" |
| assert client.get_partition_buckets(table_name, 'partition_a', database_name) == '8', "buckets num false" |
| assert client.get_partition_buckets(table_name, 'partition_b', database_name) == '8', "buckets num false" |
| assert client.get_partition_buckets(table_name, 'partition_c', database_name) == '12', "buckets num false" |
| sql = "alter table %s modify distribution distributed by hash(k1) buckets 10" % table_name |
| ret = client.execute(sql) |
| assert ret == () |
| ret = client.add_partition(table_name, 'partition_d', '500') |
| assert ret, "add partition failed" |
| assert client.get_partition_buckets(table_name, 'partition_a', database_name) == '8', "buckets num false" |
| assert client.get_partition_buckets(table_name, 'partition_b', database_name) == '8', "buckets num false" |
| assert client.get_partition_buckets(table_name, 'partition_c', database_name) == '12', "buckets num false" |
| assert client.get_partition_buckets(table_name, 'partition_d', database_name) == '10', "buckets num false" |
| client.clean(database_name) |
| |
| |
| def teardown_module(): |
| """tear down""" |
| pass |
| |
| |
| if __name__ == '__main__': |
| setup_module() |
| |