diff --git a/be/src/format/table/table_format_reader.h b/be/src/format/table/table_format_reader.h index 8ed4ad70c11b26..45c4991962f4e8 100644 --- a/be/src/format/table/table_format_reader.h +++ b/be/src/format/table/table_format_reader.h @@ -211,8 +211,8 @@ class TableSchemaChangeHelper { } bool children_column_exists(std::string table_column_name) const override { - DCHECK(children.contains(table_column_name)); - return children.at(table_column_name).exists; + auto child = children.find(table_column_name); + return child != children.end() && child->second.exists; } void add_not_exist_children(std::string table_column_name) override { diff --git a/be/test/format/table/table_schema_change_helper_test.cpp b/be/test/format/table/table_schema_change_helper_test.cpp index ba1d96e4d6d3c9..9611568d8a3500 100644 --- a/be/test/format/table/table_schema_change_helper_test.cpp +++ b/be/test/format/table/table_schema_change_helper_test.cpp @@ -30,6 +30,17 @@ namespace doris { class MockTableSchemaChangeHelper : public TableSchemaChangeHelper {}; +TEST(MockTableSchemaChangeHelper, UnknownStructChildDoesNotExist) { + TableSchemaChangeHelper::StructNode root; + root.add_children("file_column", "file_column", + std::make_shared()); + root.add_not_exist_children("missing_file_column"); + + EXPECT_TRUE(root.children_column_exists("file_column")); + EXPECT_FALSE(root.children_column_exists("missing_file_column")); + EXPECT_FALSE(root.children_column_exists("partition_column")); +} + TEST(MockTableSchemaChangeHelper, OrcNameNoSchemaChange) { std::vector data_types; std::vector column_names;