| 872 | } break; |
| 873 | |
| 874 | Status TransferColumnData(RecordReader* reader, |
| 875 | std::unique_ptr<::parquet::ColumnChunkMetaData> metadata, |
| 876 | const std::shared_ptr<Field>& value_field, |
| 877 | const ColumnDescriptor* descr, const ReaderContext* ctx, |
| 878 | std::shared_ptr<ChunkedArray>* out) { |
| 879 | auto pool = ctx->pool; |
| 880 | Datum result; |
| 881 | std::shared_ptr<ChunkedArray> chunked_result; |
| 882 | switch (value_field->type()->id()) { |
| 883 | case ::arrow::Type::DICTIONARY: { |
| 884 | RETURN_NOT_OK(TransferDictionary(reader, pool, value_field->type(), |
| 885 | value_field->nullable(), &chunked_result)); |
| 886 | result = chunked_result; |
| 887 | } break; |
| 888 | case ::arrow::Type::NA: { |
| 889 | result = std::make_shared<::arrow::NullArray>(reader->values_written()); |
| 890 | break; |
| 891 | } |
| 892 | case ::arrow::Type::INT32: |
| 893 | result = TransferZeroCopy<::arrow::Int32Type, Int32Type>( |
| 894 | reader, std::move(metadata), ctx, value_field); |
| 895 | break; |
| 896 | case ::arrow::Type::INT64: |
| 897 | result = TransferZeroCopy<::arrow::Int64Type, Int64Type>( |
| 898 | reader, std::move(metadata), ctx, value_field); |
| 899 | break; |
| 900 | case ::arrow::Type::FLOAT: |
| 901 | result = TransferZeroCopy<::arrow::FloatType, FloatType>( |
| 902 | reader, std::move(metadata), ctx, value_field); |
| 903 | break; |
| 904 | case ::arrow::Type::DOUBLE: |
| 905 | result = TransferZeroCopy<::arrow::DoubleType, DoubleType>( |
| 906 | reader, std::move(metadata), ctx, value_field); |
| 907 | break; |
| 908 | case ::arrow::Type::BOOL: |
| 909 | RETURN_NOT_OK(TransferBool(reader, std::move(metadata), ctx, |
| 910 | value_field->nullable(), &result)); |
| 911 | break; |
| 912 | TRANSFER_INT32(UINT8, ::arrow::UInt8Type); |
| 913 | TRANSFER_INT32(INT8, ::arrow::Int8Type); |
| 914 | TRANSFER_INT32(UINT16, ::arrow::UInt16Type); |
| 915 | TRANSFER_INT32(INT16, ::arrow::Int16Type); |
| 916 | TRANSFER_INT32(UINT32, ::arrow::UInt32Type); |
| 917 | TRANSFER_INT64(UINT64, ::arrow::UInt64Type); |
| 918 | TRANSFER_INT32(DATE32, ::arrow::Date32Type); |
| 919 | TRANSFER_INT32(TIME32, ::arrow::Time32Type); |
| 920 | TRANSFER_INT64(TIME64, ::arrow::Time64Type); |
| 921 | TRANSFER_INT64(DURATION, ::arrow::DurationType); |
| 922 | case ::arrow::Type::DATE64: |
| 923 | RETURN_NOT_OK(TransferDate64(reader, pool, value_field, &result)); |
| 924 | break; |
| 925 | case ::arrow::Type::FIXED_SIZE_BINARY: |
| 926 | case ::arrow::Type::BINARY: |
| 927 | case ::arrow::Type::STRING: |
| 928 | case ::arrow::Type::BINARY_VIEW: |
| 929 | case ::arrow::Type::STRING_VIEW: |
| 930 | case ::arrow::Type::LARGE_BINARY: |
| 931 | case ::arrow::Type::LARGE_STRING: { |
no test coverage detected