Skip to content

[C++][FlightRPC][ODBC] Add Limitation Section in ReadMe #49393

@alinaliBQ

Description

@alinaliBQ

Describe the enhancement requested

Add Limitation Section in ODBC ReadMe. This GitHub issue adds slightly more context to the ReadMe section.

  1. 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.
  2. 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.cc set this limit:
    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++

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions