#!/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_boolean.py # @date 2020-07-08 15:24:04 # @brief This file is a test file for boolean data type # ############################################################################# """ 测试boolean类型 """ import os from data import schema as DATA from lib import palo_config from lib import palo_client from lib import util from lib import common config = palo_config.config fe_http_port = config.fe_http_port broker_info = palo_config.broker_info file_dir = os.path.abspath(os.path.dirname(__file__)) def setup_module(): """ setUp """ pass def test_bool_create_table_wrong_1(): """ { "title": "test_bool_create_table_wrong_1", "describe": "验证boolean类型不支持max, min, sum三种聚合方式", "tag": "fuzz,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) agg_type = ['MAX', 'MIN', 'SUM'] for type in agg_type: flag = True try: column_list = [('k1', 'BOOLEAN'), ('k2', 'INT'), ('v1', 'BOOLEAN', type)] distribution = palo_client.DistributionInfo('Hash(k2)', 1) client.create_table(table_name, column_list, distribution_info=distribution) flag = False except Exception as e: print(str(e)) pass assert flag, 'expect create table faile' client.clean(database_name) def test_bool_create_table_wrong_2(): """ { "title": "test_bool_create_table_wrong_2", "describe": "验证boolean类型不支持作为分区列", "tag": "fuzz,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) partition_name_list = ['p1', 'p2', 'p3'] partition_column = ['k1', 'k2'] partition_value_list = [('0', 'True'), ('10', 'True'), ('100', 'False')] partition_info = palo_client.PartitionInfo(partition_column, partition_name_list, partition_value_list) distribution_info = palo_client.DistributionInfo('HASH(k2)', 10) flag = True try: client.create_table(table_name, DATA.boolean_column_list, partition_info, distribution_info) flag = False except Exception as e: print(str(e)) assert flag client.clean(database_name) def test_bool_create_table_wrong_3(): """ { "title": "test_bool_create_table_wrong_3", "describe": "验证不支持创建boolean类型的bloom filter", "tag": "fuzz,p1" } """ """bug: bool类型作为bloom filter""" database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) distribution_info = palo_client.DistributionInfo('HASH(k2)', 10) flag = True try: client.create_table(table_name, DATA.boolean_column_list, distribution_info=distribution_info, bloom_filter_column_list=['k1', 'k2']) flag = False except Exception as e: print(str(e)) assert flag client.clean(database_name) def test_bool_bucket_key(): """ { "title": "test_bool_create_table_wrong_1", "describe": "验证支持bool类型的hash分桶,导入,验证结果正确", "tag": "system,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.boolean_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, table_name, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, table_name) client.clean(database_name) def test_bool_broker_load(): """ { "title": "test_bool_broker_load", "describe": "验证broker导入bool类型,结果正确", "tag": "system,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) # 建表 agg_tb = table_name + '_agg' duplicate_tb = table_name + "_dup" unique_tb = table_name + "_uniq" ret = client.create_table(agg_tb, DATA.boolean_column_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret ret = client.create_table(duplicate_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_duplicate_key, set_null=True) assert ret ret = client.create_table(unique_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_unique_key, set_null=True) assert ret # 导入 bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, agg_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret load_data_info = palo_client.LoadDataInfo(bool_hdfs, duplicate_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret load_data_info = palo_client.LoadDataInfo(bool_hdfs, unique_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret # 查询&验证结果 assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, agg_tb) assert client.verify('%s/data/LOAD/expe_dup_bool_null_ns.data' % file_dir, duplicate_tb) assert client.verify('%s/data/LOAD/expe_uniq_bool_null_ns.data' % file_dir, unique_tb) client.clean(database_name) def test_bool_stream_load(): """ { "title": "test_bool_stream_load", "describe": "验证stream导入bool类型,结果正确", "tag": "system,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) # 建表 agg_tb = table_name + '_agg' duplicate_tb = table_name + "_dup" unique_tb = table_name + "_uniq" ret = client.create_table(agg_tb, DATA.boolean_column_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret ret = client.create_table(duplicate_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_duplicate_key, set_null=True) assert ret ret = client.create_table(unique_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_unique_key, set_null=True) assert ret # 导入 local_file = '%s/data/LOAD/test_bool.data' % file_dir print(file_dir) ret = client.stream_load(agg_tb, local_file, max_filter_ratio=0.1) assert ret column_name_list = ['k1', 'k2', 'v1', 'v2'] ret = client.stream_load(duplicate_tb, local_file, max_filter_ratio=0.1, column_name_list=column_name_list) assert ret ret = client.stream_load(unique_tb, local_file, max_filter_ratio=0.1, column_name_list=column_name_list) assert ret # 查询 & 验证 assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, agg_tb) assert client.verify('%s/data/LOAD/expe_dup_bool_null_ns.data' % file_dir, duplicate_tb) assert client.verify('%s/data/LOAD/expe_uniq_bool_null_ns.data' % file_dir, unique_tb) client.clean(database_name) def test_bool_insert(): """ { "title": "test_bool_insert", "describe": "验证insert导入bool类型,结果正确", "tag": "system,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) # 建表 agg_tb = table_name + '_agg' duplicate_tb = table_name + "_dup" unique_tb = table_name + "_uniq" sql = "SET enable_insert_strict = false;" client.execute(sql) ret = client.create_table(agg_tb, DATA.boolean_column_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret ret = client.create_table(duplicate_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_duplicate_key, set_null=True) assert ret ret = client.create_table(unique_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_unique_key, set_null=True) assert ret # 导入 sql_list = list() sql_list.append("insert into %s(k1, k2, v1, v2) values (1, 1, 1, 1), (0, 0, 0, 0)") sql_list.append("insert into %s(k1, k2, v1, v2) values ('true', 2, 'true', 'true'), ('false', 3, 'false', 'false')") sql_list.append("insert into %s(k1, k2, v1, v2) values (true, 4, true, true), (false, 5, false, false)") sql_list.append("insert into %s(k1, k2, v1, v2) values ('0', 6, '0', '0'), ('1', 7, '1', '8')") sql_list.append("insert into %s(k1, k2, v1, v2) values ('hello', 8, 'a', 'b'), (null, 9, null, null)") sql_list.append("insert into %s(k1, k2, v1, v2) values ('TRue', 2, 'TRUe', 'FALSE'), ('False', 3, 'TRUE', 'FALSe')") for insert_sql in sql_list: sql = insert_sql % agg_tb ret = client.execute(sql) assert ret == (), 'expect insert ok' sql_list = list() sql_list.append("insert into %s(k1, k2, v1) values (1, 1, 1), (0, 0, 0)") sql_list.append("insert into %s(k1, k2, v1) values ('true', 2, 'true'), ('false', 3, 'false')") sql_list.append("insert into %s(k1, k2, v1) values (true, 4, true), (false, 5, false)") sql_list.append("insert into %s(k1, k2, v1) values ('0', 6, '0'), ('1', 7, '1')") sql_list.append("insert into %s(k1, k2, v1) values ('hello', 8, 'a'), (null, 9, null)") sql_list.append("insert into %s(k1, k2, v1) values ('TRue', 2, 'TRUe'), ('False', 3, 'TRUE')") for insert_sql in sql_list: for tb in [duplicate_tb, unique_tb]: sql = insert_sql % tb ret = client.execute(sql) assert ret == (), 'expect insert ok' # 验证 assert client.verify('%s/data/LOAD/expe_bool_agg_insert_null_ns.data' % file_dir, agg_tb) assert client.verify('%s/data/LOAD/expe_bool_dup_insert_null_ns.data' % file_dir, duplicate_tb) assert client.verify('%s/data/LOAD/expe_bool_agg_insert_null_ns.data' % file_dir, unique_tb) client.clean(database_name) def test_bool_load_strict_null(): """ { "title": "test_bool_load_strict_null", "describe": "验证broker导入bool类型,设置strict为true,列为Null,验证导入结果正确", "tag": "fuzz,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) # 建表 agg_tb = table_name + '_agg' duplicate_tb = table_name + "_dup" unique_tb = table_name + "_uniq" ret = client.create_table(agg_tb, DATA.boolean_column_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret ret = client.create_table(duplicate_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_duplicate_key, set_null=True) assert ret ret = client.create_table(unique_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_unique_key, set_null=True) assert ret # 导入 bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, agg_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True, strict_mode=True) assert ret load_data_info = palo_client.LoadDataInfo(bool_hdfs, duplicate_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True, strict_mode=True) assert ret load_data_info = palo_client.LoadDataInfo(bool_hdfs, unique_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True, strict_mode=True) assert ret # 查询&验证结果 assert client.verify('%s/data/LOAD/expe_agg_bool_null_s.data' % file_dir, agg_tb) assert client.verify('%s/data/LOAD/expe_dup_bool_null_s.data' % file_dir, duplicate_tb) assert client.verify('%s/data/LOAD/expe_uniq_bool_null_s.data' % file_dir, unique_tb) client.clean(database_name) def test_bool_load_strict_not_null(): """ { "title": "test_bool_load_strict_not_null", "describe": "验证broker导入bool类型,设置strict为true,列为Null,验证导入结果正确", "tag": "fuzz,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) # 建表 agg_tb = table_name + '_agg' duplicate_tb = table_name + "_dup" unique_tb = table_name + "_uniq" ret = client.create_table(agg_tb, DATA.boolean_column_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=False) assert ret ret = client.create_table(duplicate_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_duplicate_key, set_null=False) assert ret ret = client.create_table(unique_tb, DATA.boolean_column_no_agg_list, distribution_info=DATA.boolean_distribution_info, keys_desc=DATA.boolean_unique_key, set_null=False) assert ret # 导入 bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, agg_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.5, broker=broker_info, is_wait=True, strict_mode=True) assert ret load_data_info = palo_client.LoadDataInfo(bool_hdfs, duplicate_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.5, broker=broker_info, is_wait=True, strict_mode=True) assert ret load_data_info = palo_client.LoadDataInfo(bool_hdfs, unique_tb, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.5, broker=broker_info, is_wait=True, strict_mode=True) assert ret # 查询&验证结果 assert client.verify('%s/data/LOAD/expe_agg_bool_not_null_s.data' % file_dir, agg_tb) assert client.verify('%s/data/LOAD/expe_dup_bool_not_null_s.data' % file_dir, duplicate_tb) assert client.verify('%s/data/LOAD/expe_uniq_bool_not_null_s.data' % file_dir, unique_tb) client.clean(database_name) def test_add_bool_key_column(): """ { "title": "test_add_bool_key_column", "describe": "验证增加boolean类型的key列成功", "tag": "system,p1" } """ """bug: 增加bool类型的key列""" database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.boolean_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, table_name, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, table_name) sql = 'select k1, k2, 1, v1, v2 from %s order by 1, 2' % table_name ret1 = client.execute(sql) add_column = ['k3 boolean default "1"'] ret = client.schema_change(table_name, add_column_list=add_column, is_wait=True) assert ret sql = "select * from %s order by k1, k2" % table_name ret2 = client.execute(sql) util.check(ret1, ret2) client.clean(database_name) def test_add_bool_value_column(): """ { "title": "test_add_bool_value_column", "describe": "验证增加boolean类型的value列成功", "tag": "system,p1" } """ """增加bool类型的value列""" database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.boolean_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, table_name, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, table_name) sql = 'select k1, k2, v1, v2, null from %s order by 1, 2' % table_name ret1 = client.execute(sql) add_column = ['v3 boolean replace_if_not_null'] ret = client.schema_change(table_name, add_column_list=add_column, is_wait=True) assert ret sql = "select * from %s order by k1, k2" % table_name ret2 = client.execute(sql) util.check(ret1, ret2) client.clean(database_name) def test_drop_bool_column(): """ { "title": "test_drop_bool_column", "describe": "验证删除boolean类型的value列成功,key列失败因为有replace列", "tag": "system,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.boolean_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, table_name, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, table_name) sql = 'select k1, k2, v1 from %s order by 1, 2' % table_name ret1 = client.execute(sql) # 删除bool key列失败,因为有replace聚合 flag = True try: drop_column = ['k1'] client.schema_change(table_name, drop_column_list=drop_column, is_wait=False) flag = False except Exception as e: print(str(e)) assert flag drop_column = ['v2'] ret = client.schema_change(table_name, drop_column_list=drop_column, is_wait=True) assert ret sql = "select * from %s order by k1, k2" % table_name ret2 = client.execute(sql) util.check(ret1, ret2) client.clean(database_name) def test_alter_to_bool(): """ { "title": "test_alter_to_bool", "describe": "验证不支持其他列(tinyint/int/char/varchar/date/float)转为boolean类型列", "tag": "fuzz,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.baseall_column_list, distribution_info=DATA.hash_distribution_info, set_null=True) assert ret flag = True try: modify_column = ['k1 boolean' ] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert tinyint to boolean' flag = True try: modify_column = ['k4 boolean' ] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert bigint to boolean' flag = True try: modify_column = ['k6 boolean' ] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert char to boolean' flag = True try: modify_column = ['k7 boolean' ] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert varchar to boolean' flag = True try: modify_column = ['k10 boolean' ] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert date to boolean' flag = True try: modify_column = ['k9 boolean' ] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert float to boolean' client.clean(database_name) def test_alter_bool_to_other_type(): """ { "title": "test_alter_bool_to_other_type", "describe": "验证不支持boolean类型列转为其他列(tinyint/int/char/varchar/date/float)", "tag": "fuzz,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.boolean_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, table_name, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, table_name) flag = True try: modify_column = ['v1 varchar(2) replace', 'v2 varchar(1) replace_if_not_null'] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert boolean to varchar' try: modify_column = ['v1 char(2) replace', 'v2 char(1) replace_if_not_null'] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert boolean to char' try: modify_column = ['v1 tinyint replace', 'v2 tinyint replace_if_not_null'] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert boolean to tinyint' try: modify_column = ['v1 float replace', 'v2 float replace_if_not_null'] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert boolean to float' try: modify_column = ['v1 date replace', 'v2 date replace_if_not_null'] ret = client.schema_change(table_name, modify_column_list=modify_column, is_wait=True) flag = False except Exception as e: print(str(e)) assert flag, 'expcet alter modify failed, can not convert boolean to date' client.clean(database_name) def test_rollup_bool(): """ { "title": "test_rollup_bool", "describe": "验证试用boolean类型创建rollup", "tag": "system,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.boolean_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, table_name, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, table_name) int_tb_name = 'int_' + table_name int_4_column_list = [('k1', 'BOOLEAN'), ('k2', 'INT'), ('k3', 'BOOLEAN', 'REPLACE'), ('k4', 'INT', 'SUM')] ret = client.create_table(int_tb_name, int_4_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_aggregate_key, set_null=True) assert ret insert_sql = 'insert into %s select * from %s' % (int_tb_name, table_name) ret = client.execute(insert_sql) assert ret == () assert client.verify('%s/data/LOAD/expe_agg_bool_null_ns.data' % file_dir, int_tb_name) sql = 'select k1, sum(k4) from %s group by k1 order by k1' % int_tb_name ret1 = client.execute(sql) rollup_column = ['k1', 'k4'] ret = client.create_rollup_table(int_tb_name, rollup_table_name, rollup_column, is_wait=True) assert ret assert client.get_index(int_tb_name, rollup_table_name) ret2 = client.execute(sql) util.check(ret1, ret2) client.clean(database_name) def test_material_view_bool(): """ { "title": "test_material_view_bool", "describe": "验证支持试用boolean类型创建物化视图", "tag": "system,p1" } """ database_name, table_name, rollup_table_name = util.gen_name_list() client = common.create_workspace(database_name) ret = client.create_table(table_name, DATA.boolean_column_no_agg_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_duplicate_key, set_null=True) assert ret bool_hdfs = palo_config.gen_remote_file_path('sys/load/test_bool.data') column_name_list = ['k1', 'k2', 'v1', 'v2'] load_data_info = palo_client.LoadDataInfo(bool_hdfs, table_name, column_name_list=column_name_list) ret = client.batch_load(util.get_label(), load_data_info, max_filter_ratio=0.01, broker=broker_info, is_wait=True) assert ret assert client.verify('%s/data/LOAD/expe_dup_bool_null_ns.data' % file_dir, table_name) int_tb_name = 'int_' + table_name int_4_column_list = [('k1', 'BOOLEAN'), ('k2', 'INT'), ('k3', 'INT')] ret = client.create_table(int_tb_name, int_4_column_list, distribution_info=DATA.hash_distribution_info, keys_desc=DATA.boolean_duplicate_key, set_null=True) assert ret insert_sql = 'insert into %s select * from %s' % (int_tb_name, table_name) ret = client.execute(insert_sql) assert ret == () assert client.verify('%s/data/LOAD/expe_dup_bool_null_ns.data' % file_dir, int_tb_name) sql = 'select k1, sum(k3) from %s group by k1 order by k1' % int_tb_name ret1 = client.execute(sql) ret = client.create_materialized_view(int_tb_name, rollup_table_name, sql, is_wait=True) assert ret assert client.get_index(int_tb_name, rollup_table_name) ret2 = client.execute(sql) util.check(ret1, ret2) client.clean(database_name) if __name__ == '__main__': setup_module() test_bool_create_table_wrong_3() test_add_bool_key_column() test_add_bool_value_column()