MCPcopy Create free account
hub / github.com/apache/arrow / GetDataTypeFromArrowFieldV3

Function GetDataTypeFromArrowFieldV3

cpp/src/arrow/flight/sql/odbc/odbc_impl/util.cc:78–144  ·  view source on GitHub ↗

\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

Source from the content-addressed store, hash-verified

76/// \note the concise and verbose types are the same for all but types relating to times
77/// and intervals
78SqlDataType 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:

Callers 9

GetPrecisionMethod · 0.85
GetScaleMethod · 0.85
GetDataTypeMethod · 0.85
GetColumnDisplaySizeMethod · 0.85
GetConciseTypeMethod · 0.85
GetLengthMethod · 0.85
GetNumPrecRadixMethod · 0.85
GetOctetLengthMethod · 0.85
TransformInnerFunction · 0.85

Calls 3

GetDefaultSqlVarcharTypeFunction · 0.85
typeMethod · 0.45
idMethod · 0.45

Tested by

no test coverage detected