-
Notifications
You must be signed in to change notification settings - Fork 4k
Closed
Milestone
Description
Describe the enhancement requested
Add Limitation Section in ODBC ReadMe. This GitHub issue adds slightly more context to the ReadMe section.
- Conversion from timestamp data type with specified time zone value to strings is not supported, as timezone database needs to be installed on users' machines. This doesn't impact usage of ODBC with Power BI on Windows, and Excel on macOS and Windows because these apps doesn't attempt to convert timestamp data to strings. See [C++] Cannot locate UTC timezone error on Windows machine #47504 for more context.
- Conversion from strings to big int data type has a limit range of -9007199254740992 to 9007199254740992. Users can run into this on macOS Excel, because macOS Excel gets ODBC to retrieve the data as strings and then ask ODBC to convert the data to big int. Implementation at
scalar_cast_numeric.ccset this limit:
arrow/cpp/src/arrow/compute/kernels/scalar_cast_numeric.cc
Lines 213 to 227 in 2fcc3ec
template <> struct FloatingIntegerBound<double> { static const int64_t value = 1LL << 53; }; template <typename InType, typename OutType, typename InT = typename InType::c_type, typename OutT = typename OutType::c_type, bool IsSigned = is_signed_integer_type<InType>::value> Status CheckIntegerFloatTruncateImpl(const ExecValue& input) { using InScalarType = typename TypeTraits<InType>::ScalarType; const int64_t limit = FloatingIntegerBound<OutT>::value; InScalarType bound_lower(IsSigned ? -limit : 0); InScalarType bound_upper(limit); return CheckIntegersInRange(input.array, bound_lower, bound_upper); }
Component(s)
Documentation, FlightRPC, C++
Reactions are currently unavailable