\brief Returns the mapping from Arrow type to SqlDataType \param field the field to return the SqlDataType for \return the concise SqlDataType for the field. \note use GetNonConciseDataType on the output to get the verbose type \note the concise and verbose types are the same for all but types relating to times and intervals
| 76 | /// \note the concise and verbose types are the same for all but types relating to times |
| 77 | /// and intervals |
| 78 | SqlDataType GetDataTypeFromArrowFieldV3(const std::shared_ptr<Field>& field, |
| 79 | bool use_wide_char) { |
| 80 | const std::shared_ptr<DataType>& type = field->type(); |
| 81 | |
| 82 | switch (type->id()) { |
| 83 | case Type::BOOL: |
| 84 | return SqlDataType_BIT; |
| 85 | case Type::UINT8: |
| 86 | case Type::INT8: |
| 87 | return SqlDataType_TINYINT; |
| 88 | case Type::UINT16: |
| 89 | case Type::INT16: |
| 90 | return SqlDataType_SMALLINT; |
| 91 | case Type::UINT32: |
| 92 | case Type::INT32: |
| 93 | return SqlDataType_INTEGER; |
| 94 | case Type::UINT64: |
| 95 | case Type::INT64: |
| 96 | return SqlDataType_BIGINT; |
| 97 | case Type::HALF_FLOAT: |
| 98 | case Type::FLOAT: |
| 99 | return SqlDataType_FLOAT; |
| 100 | case Type::DOUBLE: |
| 101 | return SqlDataType_DOUBLE; |
| 102 | case Type::BINARY: |
| 103 | case Type::FIXED_SIZE_BINARY: |
| 104 | case Type::LARGE_BINARY: |
| 105 | return SqlDataType_BINARY; |
| 106 | case Type::STRING: |
| 107 | case Type::LARGE_STRING: |
| 108 | return GetDefaultSqlVarcharType(use_wide_char); |
| 109 | case Type::DATE32: |
| 110 | case Type::DATE64: |
| 111 | return SqlDataType_TYPE_DATE; |
| 112 | case Type::TIMESTAMP: |
| 113 | return SqlDataType_TYPE_TIMESTAMP; |
| 114 | case Type::DECIMAL128: |
| 115 | return SqlDataType_DECIMAL; |
| 116 | case Type::TIME32: |
| 117 | case Type::TIME64: |
| 118 | return SqlDataType_TYPE_TIME; |
| 119 | case Type::INTERVAL_MONTHS: |
| 120 | return SqlDataType_INTERVAL_MONTH; // TODO: maybe |
| 121 | // SqlDataType_INTERVAL_YEAR_TO_MONTH |
| 122 | case Type::INTERVAL_DAY_TIME: |
| 123 | return SqlDataType_INTERVAL_DAY; |
| 124 | |
| 125 | // TODO: Handle remaining types. |
| 126 | case Type::INTERVAL_MONTH_DAY_NANO: |
| 127 | case Type::LIST: |
| 128 | case Type::STRUCT: |
| 129 | case Type::SPARSE_UNION: |
| 130 | case Type::DENSE_UNION: |
| 131 | case Type::DICTIONARY: |
| 132 | case Type::MAP: |
| 133 | case Type::EXTENSION: |
| 134 | case Type::FIXED_SIZE_LIST: |
| 135 | case Type::DURATION: |
no test coverage detected