(a *v1.KeyValue, p *Attribute)
| 263 | } |
| 264 | |
| 265 | func attrToParquet(a *v1.KeyValue, p *Attribute) { |
| 266 | p.Key = a.Key |
| 267 | p.IsArray = false |
| 268 | p.Value = p.Value[:0] |
| 269 | p.ValueInt = p.ValueInt[:0] |
| 270 | p.ValueDouble = p.ValueDouble[:0] |
| 271 | p.ValueBool = p.ValueBool[:0] |
| 272 | p.ValueUnsupported = nil |
| 273 | |
| 274 | switch v := a.GetValue().Value.(type) { |
| 275 | case *v1.AnyValue_StringValue: |
| 276 | p.Value = append(p.Value, v.StringValue) |
| 277 | case *v1.AnyValue_IntValue: |
| 278 | p.ValueInt = append(p.ValueInt, v.IntValue) |
| 279 | case *v1.AnyValue_DoubleValue: |
| 280 | p.ValueDouble = append(p.ValueDouble, v.DoubleValue) |
| 281 | case *v1.AnyValue_BoolValue: |
| 282 | p.ValueBool = append(p.ValueBool, v.BoolValue) |
| 283 | case *v1.AnyValue_ArrayValue: |
| 284 | p.IsArray = true |
| 285 | if v.ArrayValue == nil || len(v.ArrayValue.Values) == 0 { |
| 286 | return |
| 287 | } |
| 288 | switch v.ArrayValue.Values[0].Value.(type) { |
| 289 | case *v1.AnyValue_StringValue: |
| 290 | for _, e := range v.ArrayValue.Values { |
| 291 | ev, ok := e.Value.(*v1.AnyValue_StringValue) |
| 292 | if !ok { |
| 293 | p.Value = p.Value[:0] |
| 294 | attrToParquetTypeUnsupported(a, p) |
| 295 | return |
| 296 | } |
| 297 | |
| 298 | p.Value = append(p.Value, ev.StringValue) |
| 299 | } |
| 300 | case *v1.AnyValue_IntValue: |
| 301 | for _, e := range v.ArrayValue.Values { |
| 302 | ev, ok := e.Value.(*v1.AnyValue_IntValue) |
| 303 | if !ok { |
| 304 | p.ValueInt = p.ValueInt[:0] |
| 305 | attrToParquetTypeUnsupported(a, p) |
| 306 | return |
| 307 | } |
| 308 | |
| 309 | p.ValueInt = append(p.ValueInt, ev.IntValue) |
| 310 | } |
| 311 | case *v1.AnyValue_DoubleValue: |
| 312 | for _, e := range v.ArrayValue.Values { |
| 313 | ev, ok := e.Value.(*v1.AnyValue_DoubleValue) |
| 314 | if !ok { |
| 315 | p.ValueDouble = p.ValueDouble[:0] |
| 316 | attrToParquetTypeUnsupported(a, p) |
| 317 | return |
| 318 | } |
| 319 | |
| 320 | p.ValueDouble = append(p.ValueDouble, ev.DoubleValue) |
| 321 | } |
| 322 | case *v1.AnyValue_BoolValue: |
no test coverage detected