@@ -52,6 +52,8 @@ public static RecordBatch CreateSampleRecordBatch(int length, int columnSetCount
52
52
//builder.Field(CreateField(StringType.Default));
53
53
//builder.Field(CreateField(Time32Type.Default));
54
54
//builder.Field(CreateField(Time64Type.Default));
55
+
56
+ builder . Field ( CreateField ( new ListType ( Int64Type . Default ) , i ) ) ;
55
57
}
56
58
57
59
Schema schema = builder . Build ( ) ;
@@ -102,7 +104,8 @@ private class ArrayCreator :
102
104
IArrowTypeVisitor < FloatType > ,
103
105
IArrowTypeVisitor < DoubleType > ,
104
106
IArrowTypeVisitor < TimestampType > ,
105
- IArrowTypeVisitor < StringType >
107
+ IArrowTypeVisitor < StringType > ,
108
+ IArrowTypeVisitor < ListType >
106
109
{
107
110
private int Length { get ; }
108
111
public IArrowArray Array { get ; private set ; }
@@ -176,6 +179,21 @@ public void Visit(StringType type)
176
179
Array = builder . Build ( ) ;
177
180
}
178
181
182
+ public void Visit ( ListType type )
183
+ {
184
+ //Todo : Use ListArray.Builder
185
+ var children = new [ ] { CreateArray ( type . ValueField , Length ) . Data } ;
186
+ ArrowBuffer . Builder < int > builder = new ArrowBuffer . Builder < int > ( Length ) ;
187
+ for ( int i = 0 ; i < Length ; i ++ )
188
+ {
189
+ builder . Append ( i ) ;
190
+ }
191
+
192
+ var valueOffsetsBuffer = builder . Build ( ) ;
193
+ Array = new ListArray ( new ArrayData ( type , Length , 0 , 0 ,
194
+ new [ ] { ArrowBuffer . Empty , valueOffsetsBuffer } , children ) ) ;
195
+ }
196
+
179
197
private void GenerateArray < T , TArray , TArrayBuilder > ( IArrowArrayBuilder < T , TArray , TArrayBuilder > builder , Func < int , T > generator )
180
198
where TArrayBuilder : IArrowArrayBuilder < T , TArray , TArrayBuilder >
181
199
where TArray : IArrowArray
0 commit comments