[bugfix](concat) be crash caused by function concat(ifnull) (#13693)
This commit is contained in:
@ -62,7 +62,7 @@ public:
|
||||
// ifnull(col_left, col_right) == if(isnull(col_left), col_right, col_left)
|
||||
Status execute_impl(FunctionContext* context, Block& block, const ColumnNumbers& arguments,
|
||||
size_t result, size_t input_rows_count) override {
|
||||
const ColumnWithTypeAndName& col_left = block.get_by_position(arguments[0]);
|
||||
ColumnWithTypeAndName& col_left = block.get_by_position(arguments[0]);
|
||||
if (col_left.column->only_null()) {
|
||||
block.get_by_position(result).column = block.get_by_position(arguments[1]).column;
|
||||
return Status::OK();
|
||||
@ -71,6 +71,8 @@ public:
|
||||
ColumnWithTypeAndName null_column_arg0 {nullptr, std::make_shared<DataTypeUInt8>(), ""};
|
||||
ColumnWithTypeAndName nested_column_arg0 {nullptr, col_left.type, ""};
|
||||
|
||||
col_left.column = col_left.column->convert_to_full_column_if_const();
|
||||
|
||||
/// implement isnull(col_left) logic
|
||||
if (auto* nullable = check_and_get_column<ColumnNullable>(*col_left.column)) {
|
||||
null_column_arg0.column = nullable->get_null_map_column_ptr();
|
||||
|
||||
@ -1,4 +1,10 @@
|
||||
-- This file is automatically generated. You should know what you did if you want to edit this
|
||||
-- !ifnull_const1 --
|
||||
aA
|
||||
|
||||
-- !ifnull_const2 --
|
||||
aA
|
||||
|
||||
-- !select --
|
||||
true
|
||||
\N
|
||||
|
||||
@ -16,6 +16,9 @@
|
||||
// under the License.
|
||||
|
||||
suite("test_nullif") {
|
||||
qt_ifnull_const1 """select CONCAT('a', ifnull(split_part('A.B','.',1), 'x'));"""
|
||||
qt_ifnull_const2 """select CONCAT('a', ifnull(split_part('A.B','.',1), null));"""
|
||||
|
||||
def tableName = "datetype"
|
||||
|
||||
sql """ DROP TABLE IF EXISTS ${tableName} """
|
||||
|
||||
Reference in New Issue
Block a user