diff --git a/docs/source/index.rst b/docs/source/index.rst index 2ca63c5ebdbc4..57143b1196552 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -109,6 +109,7 @@ Implementations JavaScript Julia MATLAB + nanoarrow Python R Ruby diff --git a/docs/source/status.rst b/docs/source/status.rst index dc60b311a1489..f4672d6b4bc55 100644 --- a/docs/source/status.rst +++ b/docs/source/status.rst @@ -28,88 +28,88 @@ stated, the Python, R, Ruby and C/GLib libraries follow the C++ Arrow library. Data Types ========== -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Data type | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -| (primitive) | | | | | | | | | -+===================+=======+=======+=======+============+=======+=======+=======+=======+ -| Null | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Boolean | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Int8/16/32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| UInt8/16/32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Float16 | ✓ | ✓ (1) | ✓ | ✓ | ✓ (2)| ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Float32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Decimal128 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Decimal256 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Date32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Time32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Timestamp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Duration | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Interval | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Fixed Size Binary | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Binary | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Large Binary | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Utf8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Large Utf8 | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Binary View | ✓ | | ✓ | | ✓ | | | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Large Binary View | ✓ | | ✓ | | | | | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Utf8 View | ✓ | | ✓ | | ✓ | | | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Large Utf8 View | ✓ | | ✓ | | | | | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ - -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Data type | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -| (nested) | | | | | | | | | -+===================+=======+=======+=======+============+=======+=======+=======+=======+ -| Fixed Size List | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| List | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Large List | ✓ | ✓ | ✓ | | | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| List View | ✓ | | ✓ | | ✓ | | | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Large List View | ✓ | | ✓ | | | | | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Struct | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Map | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Dense Union | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Sparse Union | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ - -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Data type | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -| (special) | | | | | | | | | -+===================+=======+=======+=======+============+=======+=======+=======+=======+ -| Dictionary | ✓ | ✓ (3) | ✓ | ✓ | ✓ | ✓ (3) | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Extension | ✓ | ✓ | ✓ | | | ✓ | ✓ | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Run-End Encoded | ✓ | | ✓ | | | | | | -+-------------------+-------+-------+-------+------------+-------+-------+-------+-------+ ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Data type | C++ | Java | Go | JS | C# | Rust | Julia | Swift | nanoarrow | +| (primitive) | | | | | | | | | | ++===================+=======+=======+=======+====+=======+=======+=======+=======+===========+ +| Null | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Boolean | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Int8/16/32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| UInt8/16/32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Float16 | ✓ | ✓ (1) | ✓ | ✓ | ✓ (2)| ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Float32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Decimal128 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Decimal256 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Date32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Time32/64 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Timestamp | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Duration | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Interval | ✓ | ✓ | ✓ | | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Fixed Size Binary | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Binary | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Large Binary | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Utf8 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Large Utf8 | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Binary View | ✓ | | ✓ | | ✓ | | | | | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Large Binary View | ✓ | | ✓ | | | | | | | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Utf8 View | ✓ | | ✓ | | ✓ | | | | | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Large Utf8 View | ✓ | | ✓ | | | | | | | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ + ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Data type | C++ | Java | Go | JS | C# | Rust | Julia | Swift | nanoarrow | +| (nested) | | | | | | | | | | ++===================+=======+=======+=======+====+=======+=======+=======+=======+===========+ +| Fixed Size List | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| List | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Large List | ✓ | ✓ | ✓ | | | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| List View | ✓ | | ✓ | | ✓ | | | | | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Large List View | ✓ | | ✓ | | | | | | | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Struct | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Map | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Dense Union | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Sparse Union | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ + ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Data type | C++ | Java | Go | JS | C# | Rust | Julia | Swift | nanoarrow | +| (special) | | | | | | | | | | ++===================+=======+=======+=======+====+=======+=======+=======+=======+===========+ +| Dictionary | ✓ | ✓ (3) | ✓ | ✓ | ✓ | ✓ (3) | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Extension | ✓ | ✓ | ✓ | | | ✓ | ✓ | | ✓ | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Run-End Encoded | ✓ | | ✓ | | | | | | | ++-------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +-----------------------+-------+-------+-------+------------+-------+-------+-------+-------+ | Canonical | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | @@ -134,32 +134,32 @@ Notes: IPC Format ========== -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| IPC Feature | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -| | | | | | | | | | -+=============================+=======+=======+=======+============+=======+=======+=======+=======+ -| Arrow stream format | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Arrow file format | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Record batches | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Dictionaries | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Replacement dictionaries | ✓ | ✓ | ✓ | | | | ✓ | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Delta dictionaries | ✓ (1) | | ✓ (1) | ✓ | ✓ | | ✓ | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Tensors | ✓ | | | | | | | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Sparse tensors | ✓ | | | | | | | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Buffer compression | ✓ | ✓ (3) | ✓ | | ✓ | ✓ | ✓ | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Endianness conversion | ✓ (2) | | ✓ (2) | | | | | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Custom schema metadata | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | -+-----------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| IPC Feature | C++ | Java | Go | JS | C# | Rust | Julia | Swift | nanoarrow | +| | | | | | | | | | | ++=============================+=======+=======+=======+====+=======+=======+=======+=======+===========+ +| Arrow stream format | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ (4) | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Arrow file format | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Record batches | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Dictionaries | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Replacement dictionaries | ✓ | ✓ | ✓ | | | | ✓ | | | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Delta dictionaries | ✓ (1) | | ✓ (1) | ✓ | ✓ | | ✓ | | | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Tensors | ✓ | | | | | | | | | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Sparse tensors | ✓ | | | | | | | | | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Buffer compression | ✓ | ✓ (3) | ✓ | | ✓ | ✓ | ✓ | | | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Endianness conversion | ✓ (2) | | ✓ (2) | | | | | | ✓ (2) | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ +| Custom schema metadata | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ++-----------------------------+-------+-------+-------+----+-------+-------+-------+-------+-----------+ Notes: @@ -169,6 +169,8 @@ Notes: * \(3) LZ4 Codec currently is quite inefficient. ARROW-11901 tracks improving performance. +* \(4) The nanoarrow IPC implementation is only implemented for reading IPC streams. + .. seealso:: The :ref:`format-ipc` specification. @@ -177,57 +179,57 @@ Notes: Flight RPC ========== -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Flight RPC Transport | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -+============================================+=======+=======+=======+============+=======+=======+=======+=======+ -| gRPC_ transport (grpc:, grpc+tcp:) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| gRPC domain socket transport (grpc+unix:) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| gRPC + TLS transport (grpc+tls:) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| UCX_ transport (ucx:) | ✓ | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Flight RPC Transport | C++ | Java | Go | JS | C# | Rust | Julia | Swift | ++============================================+=======+=======+=======+====+=======+=======+=======+=======+ +| gRPC_ transport (grpc:, grpc+tcp:) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| gRPC domain socket transport (grpc+unix:) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| gRPC + TLS transport (grpc+tls:) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| UCX_ transport (ucx:) | ✓ | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ Supported features in the gRPC transport: -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Flight RPC Feature | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -+============================================+=======+=======+=======+============+=======+=======+=======+=======+ -| All RPC methods | ✓ | ✓ | ✓ | | × (1) | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Authentication handlers | ✓ | ✓ | ✓ | | ✓ (2) | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Call timeouts | ✓ | ✓ | ✓ | | | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Call cancellation | ✓ | ✓ | ✓ | | | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Concurrent client calls (3) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Custom middleware | ✓ | ✓ | ✓ | | | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| RPC error codes | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Flight RPC Feature | C++ | Java | Go | JS | C# | Rust | Julia | Swift | ++============================================+=======+=======+=======+====+=======+=======+=======+=======+ +| All RPC methods | ✓ | ✓ | ✓ | | ✓ (1) | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Authentication handlers | ✓ | ✓ | ✓ | | ✓ (2) | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Call timeouts | ✓ | ✓ | ✓ | | | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Call cancellation | ✓ | ✓ | ✓ | | | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Concurrent client calls (3) | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Custom middleware | ✓ | ✓ | ✓ | | | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| RPC error codes | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ Supported features in the UCX transport: -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Flight RPC Feature | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -+============================================+=======+=======+=======+============+=======+=======+=======+=======+ -| All RPC methods | × (4) | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Authentication handlers | | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Call timeouts | | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Call cancellation | | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Concurrent client calls | ✓ (5) | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Custom middleware | | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| RPC error codes | ✓ | | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Flight RPC Feature | C++ | Java | Go | JS | C# | Rust | Julia | Swift | ++============================================+=======+=======+=======+====+=======+=======+=======+=======+ +| All RPC methods | ✓ (4) | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Authentication handlers | | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Call timeouts | | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Call cancellation | | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Concurrent client calls | ✓ (5) | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Custom middleware | | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| RPC error codes | ✓ | | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ Notes: @@ -255,55 +257,55 @@ The feature support refers to the client/server libraries only; databases which implement the Flight SQL protocol in turn will support/not support individual features. -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| Feature | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -+============================================+=======+=======+=======+============+=======+=======+=======+=======+ -| BeginSavepoint | ✓ | ✓ | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| BeginTransaction | ✓ | ✓ | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| CancelQuery | ✓ | ✓ | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| ClosePreparedStatement | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| CreatePreparedStatement | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| CreatePreparedSubstraitPlan | ✓ | ✓ | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| EndSavepoint | ✓ | ✓ | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| EndTransaction | ✓ | ✓ | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetCatalogs | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetCrossReference | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetDbSchemas | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetExportedKeys | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetImportedKeys | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetPrimaryKeys | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetSqlInfo | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetTables | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetTableTypes | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| GetXdbcTypeInfo | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| PreparedStatementQuery | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| PreparedStatementUpdate | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| StatementSubstraitPlan | ✓ | ✓ | | | | | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| StatementQuery | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ -| StatementUpdate | ✓ | ✓ | ✓ | | ✓ | ✓ | | | -+--------------------------------------------+-------+-------+-------+------------+-------+-------+-------+-------+ ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| Feature | C++ | Java | Go | JS | C# | Rust | Julia | Swift | ++============================================+=======+=======+=======+====+=======+=======+=======+=======+ +| BeginSavepoint | ✓ | ✓ | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| BeginTransaction | ✓ | ✓ | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| CancelQuery | ✓ | ✓ | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| ClosePreparedStatement | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| CreatePreparedStatement | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| CreatePreparedSubstraitPlan | ✓ | ✓ | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| EndSavepoint | ✓ | ✓ | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| EndTransaction | ✓ | ✓ | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetCatalogs | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetCrossReference | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetDbSchemas | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetExportedKeys | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetImportedKeys | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetPrimaryKeys | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetSqlInfo | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetTables | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetTableTypes | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| GetXdbcTypeInfo | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| PreparedStatementQuery | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| PreparedStatementUpdate | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| StatementSubstraitPlan | ✓ | ✓ | | | | | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| StatementQuery | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ +| StatementUpdate | ✓ | ✓ | ✓ | | ✓ | ✓ | | | ++--------------------------------------------+-------+-------+-------+----+-------+-------+-------+-------+ .. seealso:: The :doc:`./format/FlightSql` specification. @@ -311,18 +313,18 @@ support/not support individual features. C Data Interface ================ -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ -| Feature | C++ | Python | R | Rust | Go | Java | C/GLib | Ruby | Julia | C# | Swift | -| | | | | | | | | | | | | -+=============================+=====+========+===+======+====+======+========+======+=======+=====+=======+ -| Schema export | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ -| Array export | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ -| Schema import | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ -| Array import | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ +| Feature | C++ | Python | R | Rust | Go | Java | C/GLib | Ruby | Julia | C# | Swift | nanoarrow | +| | | | | | | | | | | | | | ++=============================+=====+========+===+======+====+======+========+======+=======+=====+=======+===========+ +| Schema export | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | ✓ | ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ +| Array export | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | ✓ | ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ +| Schema import | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | ✓ | ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ +| Array import | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | | ✓ | ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ .. seealso:: The :ref:`C Data Interface ` specification. @@ -331,14 +333,14 @@ C Data Interface C Stream Interface ================== -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ -| Feature | C++ | Python | R | Rust | Go | Java | C/GLib | Ruby | Julia | C# | Swift | -| | | | | | | | | | | | | -+=============================+=====+========+===+======+====+======+========+======+=======+=====+=======+ -| Stream export | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | ✓ | | -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ -| Stream import | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | ✓ | | -+-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+ ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ +| Feature | C++ | Python | R | Rust | Go | Java | C/GLib | Ruby | Julia | C# | Swift | nanoarrow | +| | | | | | | | | | | | | | ++=============================+=====+========+===+======+====+======+========+======+=======+=====+=======+===========+ +| Stream export | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | ✓ | | ✓ | ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ +| Stream import | ✓ | ✓ | ✓ | ✓ | ✓ | | ✓ | ✓ | | ✓ | | ✓ | ++-----------------------------+-----+--------+---+------+----+------+--------+------+-------+-----+-------+-----------+ .. seealso:: The :ref:`C Stream Interface ` specification. @@ -347,18 +349,18 @@ C Stream Interface Third-Party Data Formats ======================== -+-----------------------------+---------+---------+-------+------------+-------+-------+-------+-------+ -| Format | C++ | Java | Go | JavaScript | C# | Rust | Julia | Swift | -| | | | | | | | | | -+=============================+=========+=========+=======+============+=======+=======+=======+=======+ -| Avro | | R | | | | | | | -+-----------------------------+---------+---------+-------+------------+-------+-------+-------+-------+ -| CSV | R/W | R (2) | R/W | | | R/W | R/W | | -+-----------------------------+---------+---------+-------+------------+-------+-------+-------+-------+ -| ORC | R/W | R (1) | | | | | | | -+-----------------------------+---------+---------+-------+------------+-------+-------+-------+-------+ -| Parquet | R/W | R (2) | R/W | | | R/W | | | -+-----------------------------+---------+---------+-------+------------+-------+-------+-------+-------+ ++-----------------------------+---------+---------+-------+----+-------+-------+-------+-------+ +| Format | C++ | Java | Go | JS | C# | Rust | Julia | Swift | +| | | | | | | | | | ++=============================+=========+=========+=======+====+=======+=======+=======+=======+ +| Avro | | R | | | | | | | ++-----------------------------+---------+---------+-------+----+-------+-------+-------+-------+ +| CSV | R/W | R (2) | R/W | | | R/W | R/W | | ++-----------------------------+---------+---------+-------+----+-------+-------+-------+-------+ +| ORC | R/W | R (1) | | | | | | | ++-----------------------------+---------+---------+-------+----+-------+-------+-------+-------+ +| Parquet | R/W | R (2) | R/W | | | R/W | | | ++-----------------------------+---------+---------+-------+----+-------+-------+-------+-------+ Notes: