Returns a builder with capacity for `capacity` elements of datatype `DataType`. This function is useful to construct arrays from an arbitrary vectors with known/expected schema. See comments on [StructBuilder] for retrieving collection builders built by make_builder.
(datatype: &DataType, capacity: usize)
| 446 | /// See comments on [StructBuilder] for retrieving collection builders built by |
| 447 | /// make_builder. |
| 448 | pub fn make_builder(datatype: &DataType, capacity: usize) -> Box<dyn ArrayBuilder> { |
| 449 | use crate::builder::*; |
| 450 | match datatype { |
| 451 | DataType::Null => Box::new(NullBuilder::new()), |
| 452 | DataType::Boolean => Box::new(BooleanBuilder::with_capacity(capacity)), |
| 453 | DataType::Int8 => Box::new(Int8Builder::with_capacity(capacity)), |
| 454 | DataType::Int16 => Box::new(Int16Builder::with_capacity(capacity)), |
| 455 | DataType::Int32 => Box::new(Int32Builder::with_capacity(capacity)), |
| 456 | DataType::Int64 => Box::new(Int64Builder::with_capacity(capacity)), |
| 457 | DataType::UInt8 => Box::new(UInt8Builder::with_capacity(capacity)), |
| 458 | DataType::UInt16 => Box::new(UInt16Builder::with_capacity(capacity)), |
| 459 | DataType::UInt32 => Box::new(UInt32Builder::with_capacity(capacity)), |
| 460 | DataType::UInt64 => Box::new(UInt64Builder::with_capacity(capacity)), |
| 461 | DataType::Float16 => Box::new(Float16Builder::with_capacity(capacity)), |
| 462 | DataType::Float32 => Box::new(Float32Builder::with_capacity(capacity)), |
| 463 | DataType::Float64 => Box::new(Float64Builder::with_capacity(capacity)), |
| 464 | DataType::Binary => Box::new(BinaryBuilder::with_capacity(capacity, 1024)), |
| 465 | DataType::LargeBinary => Box::new(LargeBinaryBuilder::with_capacity(capacity, 1024)), |
| 466 | DataType::BinaryView => Box::new(BinaryViewBuilder::with_capacity(capacity)), |
| 467 | DataType::FixedSizeBinary(len) => { |
| 468 | Box::new(FixedSizeBinaryBuilder::with_capacity(capacity, *len)) |
| 469 | } |
| 470 | DataType::Decimal32(p, s) => Box::new( |
| 471 | Decimal32Builder::with_capacity(capacity).with_data_type(DataType::Decimal32(*p, *s)), |
| 472 | ), |
| 473 | DataType::Decimal64(p, s) => Box::new( |
| 474 | Decimal64Builder::with_capacity(capacity).with_data_type(DataType::Decimal64(*p, *s)), |
| 475 | ), |
| 476 | DataType::Decimal128(p, s) => Box::new( |
| 477 | Decimal128Builder::with_capacity(capacity).with_data_type(DataType::Decimal128(*p, *s)), |
| 478 | ), |
| 479 | DataType::Decimal256(p, s) => Box::new( |
| 480 | Decimal256Builder::with_capacity(capacity).with_data_type(DataType::Decimal256(*p, *s)), |
| 481 | ), |
| 482 | DataType::Utf8 => Box::new(StringBuilder::with_capacity(capacity, 1024)), |
| 483 | DataType::LargeUtf8 => Box::new(LargeStringBuilder::with_capacity(capacity, 1024)), |
| 484 | DataType::Utf8View => Box::new(StringViewBuilder::with_capacity(capacity)), |
| 485 | DataType::Date32 => Box::new(Date32Builder::with_capacity(capacity)), |
| 486 | DataType::Date64 => Box::new(Date64Builder::with_capacity(capacity)), |
| 487 | DataType::Time32(TimeUnit::Second) => { |
| 488 | Box::new(Time32SecondBuilder::with_capacity(capacity)) |
| 489 | } |
| 490 | DataType::Time32(TimeUnit::Millisecond) => { |
| 491 | Box::new(Time32MillisecondBuilder::with_capacity(capacity)) |
| 492 | } |
| 493 | DataType::Time64(TimeUnit::Microsecond) => { |
| 494 | Box::new(Time64MicrosecondBuilder::with_capacity(capacity)) |
| 495 | } |
| 496 | DataType::Time64(TimeUnit::Nanosecond) => { |
| 497 | Box::new(Time64NanosecondBuilder::with_capacity(capacity)) |
| 498 | } |
| 499 | DataType::Timestamp(TimeUnit::Second, tz) => Box::new( |
| 500 | TimestampSecondBuilder::with_capacity(capacity) |
| 501 | .with_data_type(DataType::Timestamp(TimeUnit::Second, tz.clone())), |
| 502 | ), |
| 503 | DataType::Timestamp(TimeUnit::Millisecond, tz) => Box::new( |
| 504 | TimestampMillisecondBuilder::with_capacity(capacity) |
| 505 | .with_data_type(DataType::Timestamp(TimeUnit::Millisecond, tz.clone())), |