[Bug](function) fix function define of Retention inconsist and change some static_cast to assert cast (#19455)

1. fix function define of `Retention` inconsist, this function return tinyint on `FE` and return uint8 on `BE`
2. make assert_cast support cast to derived
3. change some static cast to assert cast
4. support sum(bool)/avg(bool)
This commit is contained in:
Pxl
2023-05-15 11:50:02 +08:00
committed by GitHub
parent 5df5c77d39
commit 4eb2604789
31 changed files with 151 additions and 133 deletions

View File

@ -76,14 +76,14 @@ void VExplodeBitmapTableFunction::get_value(MutableColumnPtr& column) {
column->insert_default();
} else {
if (_is_nullable) {
static_cast<ColumnInt64*>(
static_cast<ColumnNullable*>(column.get())->get_nested_column_ptr().get())
assert_cast<ColumnInt64*>(
assert_cast<ColumnNullable*>(column.get())->get_nested_column_ptr().get())
->insert_value(**_cur_iter);
static_cast<ColumnUInt8*>(
static_cast<ColumnNullable*>(column.get())->get_null_map_column_ptr().get())
assert_cast<ColumnUInt8*>(
assert_cast<ColumnNullable*>(column.get())->get_null_map_column_ptr().get())
->insert_default();
} else {
static_cast<ColumnInt64*>(column.get())->insert_value(**_cur_iter);
assert_cast<ColumnInt64*>(column.get())->insert_value(**_cur_iter);
}
}
}

View File

@ -54,7 +54,7 @@ Status VExplodeNumbersTableFunction::process_init(Block* block) {
auto& column_nested = assert_cast<const ColumnConst&>(*_value_column).get_data_column_ptr();
if (column_nested->is_nullable()) {
if (!column_nested->is_null_at(0)) {
_cur_size = static_cast<const ColumnNullable*>(column_nested.get())
_cur_size = assert_cast<const ColumnNullable*>(column_nested.get())
->get_nested_column()
.get_int(0);
}
@ -95,14 +95,14 @@ void VExplodeNumbersTableFunction::get_value(MutableColumnPtr& column) {
column->insert_default();
} else {
if (_is_nullable) {
static_cast<ColumnInt32*>(
static_cast<ColumnNullable*>(column.get())->get_nested_column_ptr().get())
assert_cast<ColumnInt32*>(
assert_cast<ColumnNullable*>(column.get())->get_nested_column_ptr().get())
->insert_value(_cur_offset);
static_cast<ColumnUInt8*>(
static_cast<ColumnNullable*>(column.get())->get_null_map_column_ptr().get())
assert_cast<ColumnUInt8*>(
assert_cast<ColumnNullable*>(column.get())->get_null_map_column_ptr().get())
->insert_default();
} else {
static_cast<ColumnInt32*>(column.get())->insert_value(_cur_offset);
assert_cast<ColumnInt32*>(column.get())->insert_value(_cur_offset);
}
}
}