| 861 | } |
| 862 | |
| 863 | Status WriteBatch(const Array& array, int64_t orc_offset, |
| 864 | liborc::ColumnVectorBatch* column_vector_batch) { |
| 865 | Type::type kind = array.type_id(); |
| 866 | column_vector_batch->numElements = orc_offset; |
| 867 | switch (kind) { |
| 868 | case Type::type::BOOL: |
| 869 | return WriteGenericBatch<BooleanType, liborc::LongVectorBatch>(array, orc_offset, |
| 870 | column_vector_batch); |
| 871 | case Type::type::INT8: |
| 872 | return WriteGenericBatch<Int8Type, liborc::LongVectorBatch>(array, orc_offset, |
| 873 | column_vector_batch); |
| 874 | case Type::type::INT16: |
| 875 | return WriteGenericBatch<Int16Type, liborc::LongVectorBatch>(array, orc_offset, |
| 876 | column_vector_batch); |
| 877 | case Type::type::INT32: |
| 878 | return WriteGenericBatch<Int32Type, liborc::LongVectorBatch>(array, orc_offset, |
| 879 | column_vector_batch); |
| 880 | case Type::type::INT64: |
| 881 | return WriteGenericBatch<Int64Type, liborc::LongVectorBatch>(array, orc_offset, |
| 882 | column_vector_batch); |
| 883 | case Type::type::FLOAT: |
| 884 | return WriteGenericBatch<FloatType, liborc::DoubleVectorBatch>(array, orc_offset, |
| 885 | column_vector_batch); |
| 886 | case Type::type::DOUBLE: |
| 887 | return WriteGenericBatch<DoubleType, liborc::DoubleVectorBatch>( |
| 888 | array, orc_offset, column_vector_batch); |
| 889 | case Type::type::BINARY: |
| 890 | return WriteGenericBatch<BinaryType, liborc::StringVectorBatch>( |
| 891 | array, orc_offset, column_vector_batch); |
| 892 | case Type::type::LARGE_BINARY: |
| 893 | return WriteGenericBatch<LargeBinaryType, liborc::StringVectorBatch>( |
| 894 | array, orc_offset, column_vector_batch); |
| 895 | case Type::type::STRING: |
| 896 | return WriteGenericBatch<StringType, liborc::StringVectorBatch>( |
| 897 | array, orc_offset, column_vector_batch); |
| 898 | case Type::type::LARGE_STRING: |
| 899 | return WriteGenericBatch<LargeStringType, liborc::StringVectorBatch>( |
| 900 | array, orc_offset, column_vector_batch); |
| 901 | case Type::type::FIXED_SIZE_BINARY: |
| 902 | return WriteFixedSizeBinaryBatch(array, orc_offset, column_vector_batch); |
| 903 | case Type::type::DATE32: |
| 904 | return WriteGenericBatch<Date32Type, liborc::LongVectorBatch>(array, orc_offset, |
| 905 | column_vector_batch); |
| 906 | case Type::type::DATE64: |
| 907 | return WriteTimestampBatch<Date64Type>(array, orc_offset, column_vector_batch, |
| 908 | kOneSecondMillis, kOneMilliNanos); |
| 909 | case Type::type::TIMESTAMP: { |
| 910 | switch (internal::checked_pointer_cast<TimestampType>(array.type())->unit()) { |
| 911 | case TimeUnit::type::SECOND: |
| 912 | return WriteTimestampBatch<TimestampType>( |
| 913 | array, orc_offset, column_vector_batch, 1, kOneSecondNanos); |
| 914 | case TimeUnit::type::MILLI: |
| 915 | return WriteTimestampBatch<TimestampType>( |
| 916 | array, orc_offset, column_vector_batch, kOneSecondMillis, kOneMilliNanos); |
| 917 | case TimeUnit::type::MICRO: |
| 918 | return WriteTimestampBatch<TimestampType>( |
| 919 | array, orc_offset, column_vector_batch, kOneSecondMicros, kOneMicroNanos); |
| 920 | case TimeUnit::type::NANO: |