diff --git a/be/src/core/column/column_variant.cpp b/be/src/core/column/column_variant.cpp index aa910db72195b2..c1ae100bf47db9 100644 --- a/be/src/core/column/column_variant.cpp +++ b/be/src/core/column/column_variant.cpp @@ -142,6 +142,9 @@ size_t get_number_of_dimensions(const IDataType& type) { // which indicates NG-originated array data. bool is_nested_group_type(const DataTypePtr& type) { auto base = get_base_type_of_array(type); + if (get_number_of_dimensions(*type) > 0) { + base = remove_nullable(base); + } return typeid_cast(base.get()) != nullptr; } diff --git a/be/test/core/column/column_variant_test.cpp b/be/test/core/column/column_variant_test.cpp index 24798accf9c3cd..9494212fef530f 100644 --- a/be/test/core/column/column_variant_test.cpp +++ b/be/test/core/column/column_variant_test.cpp @@ -3610,6 +3610,14 @@ TEST_F(ColumnVariantTest, subcolumn_finalize_and_insert) { array_subcolumn.finalize(); } +TEST(ColumnVariantNestedGroupTypeTest, nullable_array_element_is_recognized) { + EXPECT_TRUE(is_nested_group_type(ColumnVariant::NESTED_TYPE)); + + auto variant = std::make_shared(0, false); + EXPECT_TRUE(is_nested_group_type(variant)); + EXPECT_FALSE(is_nested_group_type(make_nullable(variant))); +} + TEST_F(ColumnVariantTest, deserialize_mixed_array_elements) { ColumnVariant::Subcolumn subcolumn(0, true /* is_nullable */, false /* is_root */);