@@ -1026,7 +1026,8 @@ func TransposeTable(table [][]interface{}) [][]interface{} {
10261026// If a single record is not valid by the arrow definitions we assign it
10271027// default value which we chose.
10281028func ArrowColToParquetCol (field arrow.Field , col array.Interface , len int ,
1029- el * parquet.SchemaElement ) []interface {} {
1029+ el * parquet.SchemaElement ) ([]interface {}, error ) {
1030+ var err error
10301031 recs := make ([]interface {}, len )
10311032 switch field .Type .(type ) {
10321033 case * arrow.Int8Type :
@@ -1038,11 +1039,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
10381039 } else {
10391040 rec = 0
10401041 }
1041- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1042+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
10421043 el .Type ,
10431044 el .ConvertedType ,
10441045 int (el .GetTypeLength ()),
10451046 int (el .GetScale ()))
1047+ if err != nil {
1048+ return nil , err
1049+ }
10461050 }
10471051 case * arrow.Int16Type :
10481052 arr := col .(* array.Int16 )
@@ -1053,11 +1057,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
10531057 } else {
10541058 rec = 0
10551059 }
1056- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1060+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
10571061 el .Type ,
10581062 el .ConvertedType ,
10591063 int (el .GetTypeLength ()),
10601064 int (el .GetScale ()))
1065+ if err != nil {
1066+ return nil , err
1067+ }
10611068 }
10621069 case * arrow.Int32Type :
10631070 arr := col .(* array.Int32 )
@@ -1068,11 +1075,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
10681075 } else {
10691076 rec = 0
10701077 }
1071- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1078+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
10721079 el .Type ,
10731080 el .ConvertedType ,
10741081 int (el .GetTypeLength ()),
10751082 int (el .GetScale ()))
1083+ if err != nil {
1084+ return nil , err
1085+ }
10761086 }
10771087 case * arrow.Int64Type :
10781088 arr := col .(* array.Int64 )
@@ -1083,11 +1093,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
10831093 } else {
10841094 rec = 0
10851095 }
1086- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1096+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
10871097 el .Type ,
10881098 el .ConvertedType ,
10891099 int (el .GetTypeLength ()),
10901100 int (el .GetScale ()))
1101+
1102+ if err != nil {
1103+ return nil , err
1104+ }
10911105 }
10921106 case * arrow.Uint8Type :
10931107 arr := col .(* array.Uint8 )
@@ -1098,11 +1112,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
10981112 } else {
10991113 rec = 0
11001114 }
1101- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1115+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
11021116 el .Type ,
11031117 el .ConvertedType ,
11041118 int (el .GetTypeLength ()),
11051119 int (el .GetScale ()))
1120+ if err != nil {
1121+ return nil , err
1122+ }
11061123 }
11071124 case * arrow.Uint16Type :
11081125 arr := col .(* array.Uint16 )
@@ -1113,11 +1130,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
11131130 } else {
11141131 rec = 0
11151132 }
1116- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1133+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
11171134 el .Type ,
11181135 el .ConvertedType ,
11191136 int (el .GetTypeLength ()),
11201137 int (el .GetScale ()))
1138+
1139+ if err != nil {
1140+ return nil , err
1141+ }
11211142 }
11221143 case * arrow.Uint32Type :
11231144 arr := col .(* array.Uint32 )
@@ -1128,11 +1149,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
11281149 } else {
11291150 rec = 0
11301151 }
1131- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1152+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
11321153 el .Type ,
11331154 el .ConvertedType ,
11341155 int (el .GetTypeLength ()),
11351156 int (el .GetScale ()))
1157+
1158+ if err != nil {
1159+ return nil , err
1160+ }
11361161 }
11371162 case * arrow.Uint64Type :
11381163 arr := col .(* array.Uint64 )
@@ -1143,11 +1168,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
11431168 } else {
11441169 rec = 0
11451170 }
1146- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1171+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
11471172 el .Type ,
11481173 el .ConvertedType ,
11491174 int (el .GetTypeLength ()),
11501175 int (el .GetScale ()))
1176+
1177+ if err != nil {
1178+ return nil , err
1179+ }
11511180 }
11521181 case * arrow.Float32Type :
11531182 arr := col .(* array.Float32 )
@@ -1158,11 +1187,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
11581187 } else {
11591188 rec = 0
11601189 }
1161- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1190+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
11621191 el .Type ,
11631192 el .ConvertedType ,
11641193 int (el .GetTypeLength ()),
11651194 int (el .GetScale ()))
1195+ if err != nil {
1196+ return nil , err
1197+ }
11661198 }
11671199 case * arrow.Float64Type :
11681200 arr := col .(* array.Float64 )
@@ -1173,11 +1205,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
11731205 } else {
11741206 rec = 0
11751207 }
1176- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1208+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
11771209 el .Type ,
11781210 el .ConvertedType ,
11791211 int (el .GetTypeLength ()),
11801212 int (el .GetScale ()))
1213+ if err != nil {
1214+ return nil , err
1215+ }
11811216 }
11821217 case * arrow.Date32Type :
11831218 arr := col .(* array.Date32 )
@@ -1188,11 +1223,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
11881223 } else {
11891224 rec = 0
11901225 }
1191- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1226+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
11921227 el .Type ,
11931228 el .ConvertedType ,
11941229 int (el .GetTypeLength ()),
11951230 int (el .GetScale ()))
1231+
1232+ if err != nil {
1233+ return nil , err
1234+ }
11961235 }
11971236 case * arrow.Date64Type :
11981237 arr := col .(* array.Date64 )
@@ -1203,11 +1242,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
12031242 } else {
12041243 rec = 0
12051244 }
1206- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1245+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
12071246 el .Type ,
12081247 el .ConvertedType ,
12091248 int (el .GetTypeLength ()),
12101249 int (el .GetScale ()))
1250+
1251+ if err != nil {
1252+ return nil , err
1253+ }
12111254 }
12121255 case * arrow.BinaryType :
12131256 arr := col .(* array.Binary )
@@ -1218,11 +1261,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
12181261 } else {
12191262 rec = []byte ("" )
12201263 }
1221- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1264+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
12221265 el .Type ,
12231266 el .ConvertedType ,
12241267 int (el .GetTypeLength ()),
12251268 int (el .GetScale ()))
1269+ if err != nil {
1270+ return nil , err
1271+ }
12261272 }
12271273 case * arrow.StringType :
12281274 arr := col .(* array.String )
@@ -1233,11 +1279,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
12331279 } else {
12341280 rec = ""
12351281 }
1236- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1282+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
12371283 el .Type ,
12381284 el .ConvertedType ,
12391285 int (el .GetTypeLength ()),
12401286 int (el .GetScale ()))
1287+
1288+ if err != nil {
1289+ return nil , err
1290+ }
12411291 }
12421292 case * arrow.BooleanType :
12431293 arr := col .(* array.Boolean )
@@ -1248,11 +1298,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
12481298 } else {
12491299 rec = false
12501300 }
1251- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1301+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
12521302 el .Type ,
12531303 el .ConvertedType ,
12541304 int (el .GetTypeLength ()),
12551305 int (el .GetScale ()))
1306+ if err != nil {
1307+ return nil , err
1308+ }
12561309 }
12571310 case * arrow.Time32Type :
12581311 arr := col .(* array.Time32 )
@@ -1263,11 +1316,14 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
12631316 } else {
12641317 rec = 0
12651318 }
1266- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1319+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
12671320 el .Type ,
12681321 el .ConvertedType ,
12691322 int (el .GetTypeLength ()),
12701323 int (el .GetScale ()))
1324+ if err != nil {
1325+ return nil , err
1326+ }
12711327 }
12721328 case * arrow.TimestampType :
12731329 arr := col .(* array.Timestamp )
@@ -1278,12 +1334,15 @@ func ArrowColToParquetCol(field arrow.Field, col array.Interface, len int,
12781334 } else {
12791335 rec = 0
12801336 }
1281- recs [i ] = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
1337+ recs [i ], err = types .StrToParquetType (fmt .Sprintf ("%v" , rec ),
12821338 el .Type ,
12831339 el .ConvertedType ,
12841340 int (el .GetTypeLength ()),
12851341 int (el .GetScale ()))
1342+ if err != nil {
1343+ return nil , err
1344+ }
12861345 }
12871346 }
1288- return recs
1347+ return recs , nil
12891348}
0 commit comments