Files
doris/pytest/sys/test_sys_boolean.py

701 lines
31 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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()