@@ -293,6 +293,11 @@ TEST_P(FromArrowSchemaTest, PrimitiveType) {
293293 ASSERT_EQ (field.field_id (), kFieldId );
294294 ASSERT_EQ (field.optional (), param.optional );
295295 ASSERT_EQ (*field.type (), *param.iceberg_type );
296+
297+ // Release the exported schema to avoid memory leak
298+ if (exported_schema.release != nullptr ) {
299+ exported_schema.release (&exported_schema);
300+ }
296301}
297302
298303INSTANTIATE_TEST_SUITE_P (
@@ -384,6 +389,11 @@ TEST(FromArrowSchemaTest, StructType) {
384389 ASSERT_EQ (str_iceberg_field.field_id (), kStrFieldId );
385390 ASSERT_TRUE (str_iceberg_field.optional ());
386391 ASSERT_EQ (str_iceberg_field.type ()->type_id (), TypeId::kString );
392+
393+ // Release the exported schema to avoid memory leak
394+ if (exported_schema.release != nullptr ) {
395+ exported_schema.release (&exported_schema);
396+ }
387397}
388398
389399TEST (FromArrowSchemaTest, ListType) {
@@ -427,6 +437,11 @@ TEST(FromArrowSchemaTest, ListType) {
427437 ASSERT_EQ (element.field_id (), kElemFieldId );
428438 ASSERT_TRUE (element.optional ());
429439 ASSERT_EQ (element.type ()->type_id (), TypeId::kLong );
440+
441+ // Release the exported schema to avoid memory leak
442+ if (exported_schema.release != nullptr ) {
443+ exported_schema.release (&exported_schema);
444+ }
430445}
431446
432447TEST (FromArrowSchemaTest, MapType) {
@@ -483,6 +498,11 @@ TEST(FromArrowSchemaTest, MapType) {
483498 ASSERT_EQ (value.field_id (), kValueFieldId );
484499 ASSERT_TRUE (value.optional ());
485500 ASSERT_EQ (value.type ()->type_id (), TypeId::kInt );
501+
502+ // Release the exported schema to avoid memory leak
503+ if (exported_schema.release != nullptr ) {
504+ exported_schema.release (&exported_schema);
505+ }
486506}
487507
488508} // namespace iceberg
0 commit comments