@@ -174,4 +174,38 @@ public void testAvroKeyPayloadSchemaPrimitiveKey() {
174174 assertEquals ("field1" , result .getValue ().getFields ().get (0 ).name ());
175175 assertEquals ("string" , result .getValue ().getFields ().get (0 ).schema ().getType ().getName ());
176176 }
177+
178+ @ Test
179+ public void convertsNestedArray () {
180+ // Create a RelDataType with an array of structs
181+ RelDataTypeFactory typeFactory = new SqlTypeFactoryImpl (RelDataTypeSystem .DEFAULT );
182+
183+ // Create a struct type for array elements
184+ RelDataTypeFactory .Builder elementBuilder = new RelDataTypeFactory .Builder (typeFactory );
185+ elementBuilder .add ("field1" , typeFactory .createSqlType (SqlTypeName .VARCHAR ));
186+ elementBuilder .add ("field2" , typeFactory .createSqlType (SqlTypeName .INTEGER ));
187+ RelDataType structType = elementBuilder .build ();
188+
189+ // Create array of structs type
190+ RelDataType arrayOfStructsType = typeFactory .createArrayType (structType , -1 );
191+
192+ // Test with a struct containing an array of structs field
193+ RelDataTypeFactory .Builder containerBuilder = new RelDataTypeFactory .Builder (typeFactory );
194+ containerBuilder .add ("arrayOfStructsField" , arrayOfStructsType );
195+ RelDataType containerType = containerBuilder .build ();
196+
197+ Schema containerSchema = AvroConverter .avro ("test" , "Record" , containerType );
198+ assertNotNull (containerSchema );
199+ assertEquals (1 , containerSchema .getFields ().size ());
200+ assertEquals ("arrayOfStructsField" , containerSchema .getFields ().get (0 ).name ());
201+
202+ Schema arrayFieldSchema = containerSchema .getFields ().get (0 ).schema ();
203+ assertEquals (Schema .Type .ARRAY , arrayFieldSchema .getType ());
204+
205+ Schema structElementSchema = arrayFieldSchema .getElementType ();
206+ assertEquals (Schema .Type .RECORD , structElementSchema .getType ());
207+ assertEquals (2 , structElementSchema .getFields ().size ());
208+ assertEquals ("field1" , structElementSchema .getFields ().get (0 ).name ());
209+ assertEquals ("field2" , structElementSchema .getFields ().get (1 ).name ());
210+ }
177211}
0 commit comments