diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5b8f3d15..962e2a89 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -101,7 +101,35 @@ jobs: RUST_BACKTRACE: full integration: + name: integration (${{ matrix.suite }}) runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + include: + - suite: rust + needs_docker: true + needs_lumina: false + needs_uv: false + - suite: datafusion + needs_docker: true + needs_lumina: true + needs_uv: false + - suite: lumina + needs_docker: false + needs_lumina: true + needs_uv: false + - suite: python + needs_docker: true + needs_lumina: false + needs_uv: true + - suite: go + needs_docker: true + needs_lumina: false + needs_uv: false + env: + RUST_LOG: DEBUG + RUST_BACKTRACE: full steps: - uses: actions/checkout@v7 @@ -117,65 +145,60 @@ jobs: integration-${{ runner.os }}- - name: Start Docker containers + if: matrix.needs_docker == true run: make docker-up - name: Rust Integration Test + if: matrix.suite == 'rust' run: cargo test -p paimon-integration-tests --all-targets - env: - RUST_LOG: DEBUG - RUST_BACKTRACE: full - name: Install lumina native library + if: matrix.needs_lumina == true run: | pip install lumina-data echo "LUMINA_LIB_PATH=$(python3 -c 'import lumina_data; print(lumina_data.__path__[0])')/lib/liblumina_py.so" >> $GITHUB_ENV - name: Core Lumina Native Build Test + if: matrix.suite == 'lumina' run: > cargo test -p paimon table::lumina_index_build_builder::tests::test_execute_writes_lumina_index_manifest --features fulltext,vortex -- --ignored --exact - env: - RUST_LOG: DEBUG - RUST_BACKTRACE: full - name: DataFusion Lumina Build Query E2E Test + if: matrix.suite == 'lumina' run: > cargo test -p paimon-datafusion --features vortex vector_search_tests::test_lumina_build_then_vector_search_query -- --ignored --exact - env: - RUST_LOG: DEBUG - RUST_BACKTRACE: full - name: DataFusion Integration Test + if: matrix.suite == 'datafusion' run: cargo test -p paimon-datafusion --all-targets - env: - RUST_LOG: DEBUG - RUST_BACKTRACE: full - name: DataFusion Vortex Integration Test + if: matrix.suite == 'datafusion' run: cargo test -p paimon-datafusion --features vortex --test vortex_tables - env: - RUST_LOG: DEBUG - RUST_BACKTRACE: full - name: Install uv + if: matrix.needs_uv == true uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 with: version: "0.9.3" enable-cache: true - name: Python Binding Integration Test + if: matrix.suite == 'python' working-directory: bindings/python run: make install && make test - name: Go Integration Test + if: matrix.suite == 'go' working-directory: bindings/go run: make test - name: Stop Docker containers - if: always() + if: ${{ always() && matrix.needs_docker }} run: make docker-down diff --git a/Cargo.toml b/Cargo.toml index 38591c8b..b8d4edc3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,8 +38,8 @@ arrow-ord = "58.0" arrow-row = "58.0" arrow-select = "58.0" arrow-string = "58.0" -datafusion = "53.0.0" -datafusion-ffi = "53.0.0" +datafusion = "54.0.0" +datafusion-ffi = "54.0.0" paimon = { version = "0.3.0", path = "crates/paimon" } parquet = "58.0" constant_time_eq = ">=0.4.0, <0.5.0" diff --git a/DEPENDENCIES.rust.tsv b/DEPENDENCIES.rust.tsv index 49888178..c95a7fa0 100644 --- a/DEPENDENCIES.rust.tsv +++ b/DEPENDENCIES.rust.tsv @@ -1,525 +1,556 @@ -crate 0BSD Apache-2.0 Apache-2.0 WITH LLVM-exception BSD-2-Clause BSD-3-Clause BSL-1.0 CC0-1.0 CDLA-Permissive-2.0 ISC LGPL-2.1-or-later MIT MIT-0 MPL-2.0 Unicode-3.0 Unlicense Zlib bzip2-1.0.6 zlib-acknowledgement -abi_stable@0.11.3 X X -abi_stable_derive@0.11.3 X X -abi_stable_shared@0.11.0 X X -adler2@2.0.1 X X X -aes@0.8.4 X X -ahash@0.8.12 X X -aho-corasick@1.1.4 X X -alloc-no-stdlib@2.0.4 X -alloc-stdlib@0.2.2 X -allocator-api2@0.2.21 X X -android_system_properties@0.1.5 X X -anyhow@1.0.102 X X -apache-avro@0.21.0 X -ar_archive_writer@0.5.1 X -arc-swap@1.9.1 X X -arrayref@0.3.9 X -arrayvec@0.7.6 X X -arrow@58.3.0 X -arrow-arith@58.3.0 X -arrow-array@58.3.0 X X -arrow-buffer@58.3.0 X -arrow-cast@58.3.0 X -arrow-csv@58.3.0 X -arrow-data@58.3.0 X -arrow-ipc@58.3.0 X -arrow-json@58.3.0 X -arrow-ord@58.3.0 X -arrow-pyarrow@58.3.0 X -arrow-row@58.3.0 X -arrow-schema@58.3.0 X -arrow-select@58.3.0 X -arrow-string@58.3.0 X -as_derive_utils@0.11.0 X X -async-compression@0.4.42 X X -async-ffi@0.5.0 X -async-stream@0.3.6 X -async-stream-impl@0.3.6 X -async-trait@0.1.89 X X -atoi@2.0.0 X -atomic-waker@1.1.2 X X -autocfg@1.5.0 X X -backon@1.6.0 X -base64@0.22.1 X X -bigdecimal@0.4.10 X X -bitflags@2.11.1 X X -bitpacking@0.9.3 X -blake2@0.10.6 X X -blake3@1.8.5 X X X -block-buffer@0.10.4 X X -block-padding@0.3.3 X X -bon@3.9.1 X X -bon-macros@3.9.1 X X -brotli@8.0.2 X X -brotli-decompressor@5.0.0 X X -bumpalo@3.20.2 X X -bytemuck@1.25.0 X X X -byteorder@1.5.0 X X -bytes@1.11.1 X -bzip2@0.6.1 X X -cbc@0.1.2 X X -cc@1.2.62 X X -census@0.4.2 X -cfg-if@1.0.4 X X -chrono@0.4.44 X X -chrono-tz@0.10.4 X X -cipher@0.4.4 X X -comfy-table@7.2.2 X -compression-codecs@0.4.38 X X -compression-core@0.4.32 X X -const-oid@0.9.6 X X -const-random@0.1.18 X X -const-random-macro@0.1.16 X X -const_panic@0.2.15 X -constant_time_eq@0.4.2 X X X -core-foundation@0.10.1 X X -core-foundation@0.9.4 X X -core-foundation-sys@0.8.7 X X -core_extensions@1.5.4 X X -core_extensions_proc_macros@1.5.4 X X -cpufeatures@0.2.17 X X -cpufeatures@0.3.0 X X -crc@3.4.0 X X -crc-catalog@2.5.0 X X -crc32c@0.6.8 X X -crc32fast@1.5.0 X X -crossbeam-channel@0.5.15 X X -crossbeam-deque@0.8.6 X X -crossbeam-epoch@0.9.18 X X -crossbeam-utils@0.8.21 X X -crunchy@0.2.4 X -crypto-common@0.1.7 X X -csv@1.4.0 X X -csv-core@0.1.13 X X -ctr@0.9.2 X X -darling@0.23.0 X -darling_core@0.23.0 X -darling_macro@0.23.0 X -dashmap@6.2.1 X -datafusion@53.1.0 X -datafusion-catalog@53.1.0 X -datafusion-catalog-listing@53.1.0 X -datafusion-common@53.1.0 X -datafusion-common-runtime@53.1.0 X -datafusion-datasource@53.1.0 X -datafusion-datasource-arrow@53.1.0 X -datafusion-datasource-csv@53.1.0 X -datafusion-datasource-json@53.1.0 X -datafusion-datasource-parquet@53.1.0 X -datafusion-doc@53.1.0 X -datafusion-execution@53.1.0 X -datafusion-expr@53.1.0 X -datafusion-expr-common@53.1.0 X -datafusion-ffi@53.1.0 X -datafusion-functions@53.1.0 X -datafusion-functions-aggregate@53.1.0 X -datafusion-functions-aggregate-common@53.1.0 X -datafusion-functions-nested@53.1.0 X -datafusion-functions-table@53.1.0 X -datafusion-functions-window@53.1.0 X -datafusion-functions-window-common@53.1.0 X -datafusion-macros@53.1.0 X -datafusion-optimizer@53.1.0 X -datafusion-physical-expr@53.1.0 X -datafusion-physical-expr-adapter@53.1.0 X -datafusion-physical-expr-common@53.1.0 X -datafusion-physical-optimizer@53.1.0 X -datafusion-physical-plan@53.1.0 X -datafusion-proto@53.1.0 X -datafusion-proto-common@53.1.0 X -datafusion-pruning@53.1.0 X -datafusion-session@53.1.0 X -datafusion-sql@53.1.0 X -deranged@0.5.8 X X -des@0.8.1 X X -diff@0.1.13 X X -digest@0.10.7 X X -displaydoc@0.2.5 X X -dlv-list@0.5.2 X X -dns-lookup@3.0.1 X X -downcast-rs@1.2.1 X X -either@1.15.0 X X -encoding_rs@0.8.35 X X X -equivalent@1.0.2 X X -errno@0.3.14 X X -fallible-streaming-iterator@0.1.9 X X -fastdivide@0.4.2 X X -fastrand@2.4.1 X X -find-msvc-tools@0.1.9 X X -fixedbitset@0.5.7 X X -flatbuffers@25.12.19 X -flate2@1.1.9 X X -fnv@1.0.7 X X -foldhash@0.1.5 X -foldhash@0.2.0 X -foreign-types@0.3.2 X X -foreign-types-shared@0.1.1 X X -form_urlencoded@1.2.2 X X -fs4@0.8.4 X X -futures@0.3.32 X X -futures-channel@0.3.32 X X -futures-core@0.3.32 X X -futures-executor@0.3.32 X X -futures-io@0.3.32 X X -futures-macro@0.3.32 X X -futures-sink@0.3.32 X X -futures-task@0.3.32 X X -futures-util@0.3.32 X X -g2gen@1.2.2 X X -g2p@1.2.2 X X -g2poly@1.2.2 X X -generational-arena@0.2.9 X -generic-array@0.14.7 X -getrandom@0.2.17 X X -getrandom@0.3.4 X X -getrandom@0.4.2 X X -glob@0.3.3 X X -gloo-timers@0.3.0 X X -h2@0.4.14 X -half@2.7.1 X X -hashbrown@0.14.5 X X -hashbrown@0.15.5 X X -hashbrown@0.16.1 X X -hashbrown@0.17.1 X X -hdfs-native@0.13.5 X -heck@0.5.0 X X -hermit-abi@0.5.2 X X -hex@0.4.3 X X -hmac@0.12.1 X X -home@0.5.12 X X -htmlescape@0.3.1 X X X -http@1.4.0 X X -http-body@1.0.1 X -http-body-util@0.1.3 X -httparse@1.10.1 X X -httpdate@1.0.3 X X -humantime@2.3.0 X X -hyper@1.9.0 X -hyper-rustls@0.27.9 X X X -hyper-tls@0.6.0 X X -hyper-util@0.1.20 X -iana-time-zone@0.1.65 X X -iana-time-zone-haiku@0.1.2 X X -icu_collections@2.2.0 X -icu_locale_core@2.2.0 X -icu_normalizer@2.2.0 X -icu_normalizer_data@2.2.0 X -icu_properties@2.2.0 X -icu_properties_data@2.2.0 X -icu_provider@2.2.0 X -ident_case@1.0.1 X X -idna@1.1.0 X X -idna_adapter@1.2.2 X X -indexmap@2.14.0 X X -inout@0.1.4 X X -instant@0.1.13 X -integer-encoding@3.0.4 X -ipnet@2.12.0 X X -itertools@0.12.1 X X -itertools@0.14.0 X X -itoa@1.0.18 X X -jiff@0.2.24 X X -jiff-tzdb@0.1.6 X X -jiff-tzdb-platform@0.1.3 X X -jobserver@0.1.34 X X -js-sys@0.3.98 X X -levenshtein_automata@0.2.1 X -lexical-core@1.0.6 X X -lexical-parse-float@1.0.6 X X -lexical-parse-integer@1.0.6 X X -lexical-util@1.0.7 X X -lexical-write-float@1.0.6 X X -lexical-write-integer@1.0.6 X X -libbz2-rs-sys@0.2.5 X -libc@0.2.186 X X -libloading@0.7.4 X -libloading@0.8.9 X -libloading@0.9.0 X -liblzma@0.4.6 X X -liblzma-sys@0.4.6 X X -libm@0.2.16 X -libredox@0.1.16 X -linux-raw-sys@0.12.1 X X X -linux-raw-sys@0.4.15 X X X -litemap@0.8.2 X -lock_api@0.4.14 X X -log@0.4.29 X X -lru@0.12.5 X -lz4_flex@0.11.6 X -lz4_flex@0.13.1 X -lzokay-native@0.1.0 X -md-5@0.10.6 X X -measure_time@0.8.3 X -memchr@2.8.0 X X -memmap2@0.9.10 X X -mime@0.3.17 X X -minimal-lexical@0.2.1 X X -miniz_oxide@0.8.9 X X X -mio@1.2.0 X -murmurhash32@0.3.1 X -native-tls@0.2.18 X X -nom@7.1.3 X -num@0.4.3 X X -num-bigint@0.4.6 X X -num-complex@0.4.6 X X -num-conv@0.2.2 X X -num-integer@0.1.46 X X -num-iter@0.1.45 X X -num-rational@0.4.2 X X -num-traits@0.2.19 X X -num_cpus@1.17.0 X X -object@0.37.3 X X -object_store@0.13.2 X X -once_cell@1.21.4 X X -oneshot@0.1.13 X X -opendal@0.55.0 X -openssl@0.10.80 X -openssl-macros@0.1.1 X X -openssl-probe@0.2.1 X X -openssl-sys@0.9.116 X -orc-rust@0.8.0 X -ordered-float@2.10.1 X -ordered-multimap@0.7.3 X -ownedbytes@0.7.0 X -paimon@0.2.0 X -paimon-c@0.2.0 X -paimon-datafusion@0.2.0 X -paimon-integration-tests@0.2.0 X -parking_lot@0.12.5 X X -parking_lot_core@0.9.12 X X -parquet@58.3.0 X -paste@1.0.15 X X -percent-encoding@2.3.2 X X -petgraph@0.8.3 X X -phf@0.12.1 X -phf_shared@0.12.1 X -pin-project-lite@0.2.17 X X -pkg-config@0.3.33 X X -plain@0.2.3 X X -portable-atomic@1.13.1 X X -portable-atomic-util@0.2.7 X X -potential_utf@0.1.5 X -powerfmt@0.2.0 X X -ppv-lite86@0.2.21 X X -pretty_assertions@1.4.1 X X -prettyplease@0.2.37 X X -proc-macro2@1.0.106 X X -prost@0.13.5 X -prost@0.14.3 X -prost-derive@0.13.5 X -prost-derive@0.14.3 X -prost-types@0.14.3 X -psm@0.1.31 X X -pyo3@0.28.3 X X -pyo3-build-config@0.28.3 X X -pyo3-ffi@0.28.3 X X -pyo3-macros@0.28.3 X X -pyo3-macros-backend@0.28.3 X X -pypaimon_rust@0.2.0 X -quad-rand@0.2.3 X -quick-xml@0.37.5 X -quick-xml@0.38.4 X -quote@1.0.45 X X -r-efi@5.3.0 X X X -r-efi@6.0.0 X X X -rand@0.8.6 X X -rand@0.9.4 X X -rand_chacha@0.3.1 X X -rand_chacha@0.9.0 X X -rand_core@0.6.4 X X -rand_core@0.9.5 X X -rand_distr@0.4.3 X X -rayon@1.12.0 X X -rayon-core@1.13.0 X X -recursive@0.1.1 X -recursive-proc-macro-impl@0.1.1 X -redox_syscall@0.5.18 X -redox_syscall@0.7.5 X -regex@1.12.3 X X -regex-automata@0.4.14 X X -regex-lite@0.1.9 X X -regex-syntax@0.8.10 X X -repr_offset@0.2.2 X -reqsign@0.16.5 X -reqwest@0.12.28 X X -ring@0.17.14 X X -roaring@0.11.4 X X -roxmltree@0.21.1 X X -rust-ini@0.21.3 X -rust-stemmers@1.2.0 X X -rustc-hash@1.1.0 X X -rustc_version@0.4.1 X X -rustix@0.38.44 X X X -rustix@1.1.4 X X X -rustls@0.23.40 X X X -rustls-pki-types@1.14.1 X X -rustls-webpki@0.103.13 X -rustversion@1.0.22 X X -ryu@1.0.23 X X -same-file@1.0.6 X X -schannel@0.1.29 X -scopeguard@1.2.0 X X -security-framework@3.7.0 X X -security-framework-sys@2.17.0 X X -semver@1.0.28 X X -seq-macro@0.3.6 X X -serde@1.0.228 X X -serde_bytes@0.11.19 X X -serde_core@1.0.228 X X -serde_derive@1.0.228 X X -serde_json@1.0.149 X X -serde_repr@0.1.20 X X -serde_urlencoded@0.7.1 X X -serde_with@3.20.0 X X -serde_with_macros@3.20.0 X X -sha1@0.10.6 X X -sha2@0.10.9 X X -shlex@1.3.0 X X -simd-adler32@0.3.9 X -simdutf8@0.1.5 X X -siphasher@1.0.3 X X -sketches-ddsketch@0.2.2 X -slab@0.4.12 X -smallvec@1.15.1 X X -snafu@0.8.9 X X -snafu@0.9.0 X X -snafu-derive@0.8.9 X X -snafu-derive@0.9.0 X X -snap@1.1.1 X -socket2@0.6.3 X X -sqlparser@0.61.0 X -sqlparser_derive@0.5.0 X -stable_deref_trait@1.2.1 X X -stacker@0.1.24 X X -strsim@0.11.1 X -strum@0.27.2 X -strum_macros@0.27.2 X -subtle@2.6.1 X -syn@1.0.109 X X -syn@2.0.117 X X -sync_wrapper@1.0.2 X -synstructure@0.13.2 X -system-configuration@0.7.0 X X -system-configuration-sys@0.6.0 X X -tantivy@0.22.1 X -tantivy-bitpacker@0.6.0 X -tantivy-columnar@0.3.0 X -tantivy-common@0.7.0 X -tantivy-fst@0.5.0 X X -tantivy-query-grammar@0.22.0 X -tantivy-sstable@0.3.0 X -tantivy-stacker@0.3.0 X -tantivy-tokenizer-api@0.3.0 X -target-lexicon@0.13.5 X -tempfile@3.27.0 X X -thiserror@1.0.69 X X -thiserror@2.0.18 X X -thiserror-impl@1.0.69 X X -thiserror-impl@2.0.18 X X -thrift@0.17.0 X -time@0.3.47 X X -time-core@0.1.8 X X -tiny-keccak@2.0.2 X -tinystr@0.8.3 X -tokio@1.52.3 X -tokio-macros@2.7.0 X -tokio-native-tls@0.3.1 X -tokio-rustls@0.26.4 X X -tokio-stream@0.1.18 X -tokio-util@0.7.18 X -tower@0.5.3 X -tower-http@0.6.11 X -tower-layer@0.3.3 X -tower-service@0.3.3 X -tracing@0.1.44 X -tracing-attributes@0.1.31 X -tracing-core@0.1.36 X -try-lock@0.2.5 X -tstr@0.2.4 X -tstr_proc_macros@0.2.2 X -twox-hash@2.1.2 X -typed-arena@2.0.2 X -typed-builder@0.19.1 X X -typed-builder-macro@0.19.1 X X -typenum@1.20.0 X X -typewit@1.15.2 X -unicode-ident@1.0.24 X X X -unicode-segmentation@1.13.2 X X -unicode-width@0.2.2 X X -untrusted@0.9.0 X -url@2.5.8 X X -urlencoding@2.1.3 X -utf8-ranges@1.0.5 X X -utf8_iter@1.0.4 X X -uuid@1.23.1 X X -vcpkg@0.2.15 X X -version_check@0.9.5 X X -walkdir@2.5.0 X X -want@0.3.1 X -wasi@0.11.1+wasi-snapshot-preview1 X X X -wasip2@1.0.3+wasi-0.2.9 X X X -wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X -wasite@0.1.0 X X X -wasm-bindgen@0.2.121 X X -wasm-bindgen-futures@0.4.71 X X -wasm-bindgen-macro@0.2.121 X X -wasm-bindgen-macro-support@0.2.121 X X -wasm-bindgen-shared@0.2.121 X X -wasm-streams@0.4.2 X X -web-sys@0.3.98 X X -web-time@1.1.0 X X -webpki-roots@1.0.7 X -whoami@1.6.1 X X X -winapi@0.3.9 X X -winapi-i686-pc-windows-gnu@0.4.0 X X -winapi-util@0.1.11 X X -winapi-x86_64-pc-windows-gnu@0.4.0 X X -windows-core@0.62.2 X X -windows-implement@0.60.2 X X -windows-interface@0.59.3 X X -windows-link@0.2.1 X X -windows-registry@0.6.1 X X -windows-result@0.4.1 X X -windows-strings@0.5.1 X X -windows-sys@0.52.0 X X -windows-sys@0.59.0 X X -windows-sys@0.60.2 X X -windows-sys@0.61.2 X X -windows-targets@0.52.6 X X -windows-targets@0.53.5 X X -windows_aarch64_gnullvm@0.52.6 X X -windows_aarch64_gnullvm@0.53.1 X X -windows_aarch64_msvc@0.52.6 X X -windows_aarch64_msvc@0.53.1 X X -windows_i686_gnu@0.52.6 X X -windows_i686_gnu@0.53.1 X X -windows_i686_gnullvm@0.52.6 X X -windows_i686_gnullvm@0.53.1 X X -windows_i686_msvc@0.52.6 X X -windows_i686_msvc@0.53.1 X X -windows_x86_64_gnu@0.52.6 X X -windows_x86_64_gnu@0.53.1 X X -windows_x86_64_gnullvm@0.52.6 X X -windows_x86_64_gnullvm@0.53.1 X X -windows_x86_64_msvc@0.52.6 X X -windows_x86_64_msvc@0.53.1 X X -wit-bindgen@0.51.0 X X X -wit-bindgen@0.57.1 X X X -writeable@0.6.3 X -yansi@1.0.1 X X -yoke@0.8.2 X -yoke-derive@0.8.2 X -zerocopy@0.8.48 X X X -zerocopy-derive@0.8.48 X X X -zerofrom@0.1.8 X -zerofrom-derive@0.1.7 X -zeroize@1.8.2 X X -zerotrie@0.2.4 X -zerovec@0.11.6 X -zerovec-derive@0.11.3 X -zlib-rs@0.6.3 X -zmij@1.0.21 X -zstd@0.13.3 X -zstd-safe@7.2.4 X X -zstd-sys@2.0.16+zstd.1.5.7 X X +crate 0BSD Apache-2.0 Apache-2.0 WITH LLVM-exception BSD-2-Clause BSD-3-Clause BSL-1.0 CC0-1.0 CDLA-Permissive-2.0 EPL-2.0 ISC LGPL-2.1-or-later MIT MIT-0 MPL-2.0 Unicode-3.0 Unlicense Zlib bzip2-1.0.6 zlib-acknowledgement +adler2@2.0.1 X X X +aes@0.8.4 X X +ahash@0.8.12 X X +aho-corasick@1.1.4 X X +alloc-no-stdlib@2.0.4 X +alloc-stdlib@0.2.2 X +allocator-api2@0.2.21 X X +android_system_properties@0.1.5 X X +anyhow@1.0.102 X X +apache-avro@0.21.0 X +approx@0.5.1 X +ar_archive_writer@0.5.1 X +arc-swap@1.9.1 X X +arrayref@0.3.9 X +arrayvec@0.7.6 X X +arrow@58.3.0 X +arrow-arith@58.3.0 X +arrow-array@58.3.0 X X +arrow-buffer@58.3.0 X +arrow-cast@58.3.0 X +arrow-csv@58.3.0 X +arrow-data@58.3.0 X +arrow-ipc@58.3.0 X +arrow-json@58.3.0 X +arrow-ord@58.3.0 X +arrow-pyarrow@58.3.0 X +arrow-row@58.3.0 X +arrow-schema@58.3.0 X +arrow-select@58.3.0 X +arrow-string@58.3.0 X +async-compression@0.4.42 X X +async-ffi@0.5.0 X +async-stream@0.3.6 X +async-stream-impl@0.3.6 X +async-trait@0.1.89 X X +atoi@2.0.0 X +atomic-waker@1.1.2 X X +autocfg@1.5.1 X X +axum@0.7.9 X +axum-core@0.4.5 X +axum-macros@0.4.2 X +backon@1.6.0 X +base64@0.22.1 X X +base64ct@1.8.3 X X +bigdecimal@0.4.10 X X +bitflags@2.11.1 X X +bitpacking@0.9.3 X +blake2@0.10.6 X X +blake3@1.8.5 X X X +block-buffer@0.10.4 X X +block-buffer@0.12.1 X X +block-padding@0.3.3 X X +bon@3.9.1 X X +bon-macros@3.9.1 X X +brotli@8.0.3 X X +brotli-decompressor@5.0.1 X X +bumpalo@3.20.3 X X +bytemuck@1.25.0 X X X +byteorder@1.5.0 X X +bytes@1.11.1 X +bzip2@0.6.1 X X +cbc@0.1.2 X X +cc@1.2.63 X X +census@0.4.2 X +cfg-if@1.0.4 X X +chrono@0.4.44 X X +chrono-tz@0.10.4 X X +cipher@0.4.4 X X +comfy-table@7.2.2 X +compression-codecs@0.4.38 X X +compression-core@0.4.32 X X +const-oid@0.10.2 X X +const-oid@0.9.6 X X +const-random@0.1.18 X X +const-random-macro@0.1.16 X X +constant_time_eq@0.4.2 X X X +core-foundation@0.10.1 X X +core-foundation@0.9.4 X X +core-foundation-sys@0.8.7 X X +cpufeatures@0.2.17 X X +cpufeatures@0.3.0 X X +crc@3.4.0 X X +crc-catalog@2.5.0 X X +crc32c@0.6.8 X X +crc32fast@1.5.0 X X +crossbeam-channel@0.5.15 X X +crossbeam-deque@0.8.6 X X +crossbeam-epoch@0.9.18 X X +crossbeam-utils@0.8.21 X X +crunchy@0.2.4 X +crypto-common@0.1.7 X X +crypto-common@0.2.2 X X +csv@1.4.0 X X +csv-core@0.1.13 X X +ctr@0.9.2 X X +darling@0.23.0 X +darling_core@0.23.0 X +darling_macro@0.23.0 X +dashmap@6.2.1 X +datafusion@54.0.0 X +datafusion-catalog@54.0.0 X +datafusion-catalog-listing@54.0.0 X +datafusion-common@54.0.0 X +datafusion-common-runtime@54.0.0 X +datafusion-datasource@54.0.0 X +datafusion-datasource-arrow@54.0.0 X +datafusion-datasource-csv@54.0.0 X +datafusion-datasource-json@54.0.0 X +datafusion-datasource-parquet@54.0.0 X +datafusion-doc@54.0.0 X +datafusion-execution@54.0.0 X +datafusion-expr@54.0.0 X +datafusion-expr-common@54.0.0 X +datafusion-ffi@54.0.0 X +datafusion-functions@54.0.0 X +datafusion-functions-aggregate@54.0.0 X +datafusion-functions-aggregate-common@54.0.0 X +datafusion-functions-nested@54.0.0 X +datafusion-functions-table@54.0.0 X +datafusion-functions-window@54.0.0 X +datafusion-functions-window-common@54.0.0 X +datafusion-macros@54.0.0 X +datafusion-optimizer@54.0.0 X +datafusion-physical-expr@54.0.0 X +datafusion-physical-expr-adapter@54.0.0 X +datafusion-physical-expr-common@54.0.0 X +datafusion-physical-optimizer@54.0.0 X +datafusion-physical-plan@54.0.0 X +datafusion-proto@54.0.0 X +datafusion-proto-common@54.0.0 X +datafusion-pruning@54.0.0 X +datafusion-session@54.0.0 X +datafusion-sql@54.0.0 X +der@0.7.10 X X +deranged@0.5.8 X X +des@0.8.1 X X +diff@0.1.13 X X +digest@0.10.7 X X +digest@0.11.3 X X +displaydoc@0.2.6 X X +dns-lookup@3.0.1 X X +downcast-rs@1.2.1 X X +either@1.16.0 X X +encoding_rs@0.8.35 X X X +equivalent@1.0.2 X X +errno@0.3.14 X X +fallible-streaming-iterator@0.1.9 X X +fastdivide@0.4.2 X X +fastrand@2.4.1 X X +find-msvc-tools@0.1.9 X X +fixedbitset@0.5.7 X X +flatbuffers@25.12.19 X +flate2@1.1.9 X X +fnv@1.0.7 X X +foldhash@0.1.5 X +foldhash@0.2.0 X +foreign-types@0.3.2 X X +foreign-types-shared@0.1.1 X X +form_urlencoded@1.2.2 X X +fs4@0.8.4 X X +futures@0.3.32 X X +futures-channel@0.3.32 X X +futures-core@0.3.32 X X +futures-executor@0.3.32 X X +futures-io@0.3.32 X X +futures-macro@0.3.32 X X +futures-sink@0.3.32 X X +futures-task@0.3.32 X X +futures-util@0.3.32 X X +g2gen@1.2.2 X X +g2p@1.2.2 X X +g2poly@1.2.2 X X +generic-array@0.14.7 X +getrandom@0.2.17 X X +getrandom@0.3.4 X X +getrandom@0.4.2 X X +glob@0.3.3 X X +gloo-timers@0.3.0 X X +h2@0.4.14 X +half@2.7.1 X X +hashbrown@0.14.5 X X +hashbrown@0.15.5 X X +hashbrown@0.17.1 X X +hdfs-native@0.13.5 X +heck@0.5.0 X X +hermit-abi@0.5.2 X X +hex@0.4.3 X X +hmac@0.12.1 X X +home@0.5.12 X X +htmlescape@0.3.1 X X X +http@1.4.1 X X +http-body@1.0.1 X +http-body-util@0.1.3 X +httparse@1.10.1 X X +httpdate@1.0.3 X X +humantime@2.3.0 X X +hybrid-array@0.4.13 X X +hyper@1.10.1 X +hyper-rustls@0.27.9 X X X +hyper-tls@0.6.0 X X +hyper-util@0.1.20 X +iana-time-zone@0.1.65 X X +iana-time-zone-haiku@0.1.2 X X +icu_collections@2.2.0 X +icu_locale_core@2.2.0 X +icu_normalizer@2.2.0 X +icu_normalizer_data@2.2.0 X +icu_properties@2.2.0 X +icu_properties_data@2.2.0 X +icu_provider@2.2.0 X +ident_case@1.0.1 X X +idna@1.1.0 X X +idna_adapter@1.2.2 X X +indexmap@2.14.0 X X +inout@0.1.4 X X +instant@0.1.13 X +integer-encoding@3.0.4 X +ipnet@2.12.0 X X +itertools@0.12.1 X X +itertools@0.14.0 X X +itoa@1.0.18 X X +jiff@0.2.28 X X +jiff-tzdb@0.1.6 X X +jiff-tzdb-platform@0.1.3 X X +jobserver@0.1.34 X X +js-sys@0.3.99 X X +jsonwebtoken@9.3.1 X +lazy_static@1.5.0 X X +levenshtein_automata@0.2.1 X +lexical-core@1.0.6 X X +lexical-parse-float@1.0.6 X X +lexical-parse-integer@1.0.6 X X +lexical-util@1.0.7 X X +lexical-write-float@1.0.6 X X +lexical-write-integer@1.0.6 X X +libbz2-rs-sys@0.2.5 X +libc@0.2.186 X X +libloading@0.9.0 X +liblzma@0.4.6 X X +liblzma-sys@0.4.6 X X +libm@0.2.16 X +libredox@0.1.17 X +linux-raw-sys@0.12.1 X X X +linux-raw-sys@0.4.15 X X X +litemap@0.8.2 X +lock_api@0.4.14 X X +log@0.4.30 X X +lru@0.12.5 X +lz4_flex@0.11.6 X +lz4_flex@0.13.1 X +lzokay-native@0.1.0 X +matchit@0.7.3 X X +matrixmultiply@0.3.10 X X +md-5@0.10.6 X X +measure_time@0.8.3 X +memchr@2.8.1 X X +memmap2@0.9.10 X X +mime@0.3.17 X X +minimal-lexical@0.2.1 X X +miniz_oxide@0.8.9 X X X +mio@1.2.1 X +murmurhash32@0.3.1 X +nalgebra@0.33.3 X +nalgebra-macros@0.2.2 X +native-tls@0.2.18 X X +nom@7.1.3 X +num@0.4.3 X X +num-bigint@0.4.6 X X +num-bigint-dig@0.8.6 X X +num-complex@0.4.6 X X +num-conv@0.2.2 X X +num-integer@0.1.46 X X +num-iter@0.1.45 X X +num-rational@0.4.2 X X +num-traits@0.2.19 X X +num_cpus@1.17.0 X X +object@0.37.3 X X +object_store@0.13.2 X X +once_cell@1.21.4 X X +oneshot@0.1.13 X X +opendal@0.55.0 X +openssl@0.10.80 X +openssl-macros@0.1.1 X X +openssl-probe@0.2.1 X X +openssl-sys@0.9.116 X +orc-rust@0.8.0 X +ordered-float@2.10.1 X +ownedbytes@0.7.0 X +paimon@0.3.0 X +paimon-c@0.3.0 X +paimon-datafusion@0.3.0 X +paimon-integration-tests@0.3.0 X +paimon-rest-server@0.3.0 X +paimon-vindex-core@0.1.0 X +parking_lot@0.12.5 X X +parking_lot_core@0.9.12 X X +parquet@58.3.0 X +paste@1.0.15 X X +pbkdf2@0.12.2 X X +pem@3.0.6 X +pem-rfc7468@0.7.0 X X +percent-encoding@2.3.2 X X +petgraph@0.8.3 X X +phf@0.12.1 X +phf_shared@0.12.1 X +pin-project@1.1.13 X X +pin-project-internal@1.1.13 X X +pin-project-lite@0.2.17 X X +pkcs1@0.7.5 X X +pkcs5@0.7.1 X X +pkcs8@0.10.2 X X +pkg-config@0.3.33 X X +plain@0.2.3 X X +portable-atomic@1.13.1 X X +portable-atomic-util@0.2.7 X X +potential_utf@0.1.5 X +powerfmt@0.2.0 X X +ppv-lite86@0.2.21 X X +pretty_assertions@1.4.1 X X +prettyplease@0.2.37 X X +proc-macro-crate@3.5.0 X X +proc-macro2@1.0.106 X X +prost@0.13.5 X +prost@0.14.3 X +prost-derive@0.13.5 X +prost-derive@0.14.3 X +prost-types@0.14.3 X +psm@0.1.31 X X +pyo3@0.28.3 X X +pyo3-build-config@0.28.3 X X +pyo3-ffi@0.28.3 X X +pyo3-macros@0.28.3 X X +pyo3-macros-backend@0.28.3 X X +pypaimon_rust@0.3.0 X +quad-rand@0.2.3 X +quick-xml@0.37.5 X +quick-xml@0.38.4 X +quote@1.0.45 X X +r-efi@5.3.0 X X X +r-efi@6.0.0 X X X +rand@0.8.6 X X +rand@0.9.4 X X +rand_chacha@0.3.1 X X +rand_chacha@0.9.0 X X +rand_core@0.6.4 X X +rand_core@0.9.5 X X +rand_distr@0.4.3 X X +rawpointer@0.2.1 X X +rayon@1.12.0 X X +rayon-core@1.13.0 X X +recursive@0.1.1 X +recursive-proc-macro-impl@0.1.1 X +redox_syscall@0.5.18 X +regex@1.12.3 X X +regex-automata@0.4.14 X X +regex-lite@0.1.9 X X +regex-syntax@0.8.10 X X +reqsign@0.16.5 X +reqwest@0.12.28 X X +ring@0.17.14 X X +roaring@0.11.4 X X +roxmltree@0.21.1 X X +rsa@0.9.10 X X +rust-stemmers@1.2.0 X X +rustc-hash@1.1.0 X X +rustc_version@0.4.1 X X +rustix@0.38.44 X X X +rustix@1.1.4 X X X +rustls@0.23.40 X X X +rustls-pki-types@1.14.1 X X +rustls-webpki@0.103.13 X +rustversion@1.0.22 X X +ryu@1.0.23 X X +safe_arch@0.7.4 X X X +salsa20@0.10.2 X X +same-file@1.0.6 X X +schannel@0.1.29 X +scopeguard@1.2.0 X X +scrypt@0.11.0 X X +security-framework@3.7.0 X X +security-framework-sys@2.17.0 X X +semver@1.0.28 X X +seq-macro@0.3.6 X X +serde@1.0.228 X X +serde_bytes@0.11.19 X X +serde_core@1.0.228 X X +serde_derive@1.0.228 X X +serde_json@1.0.150 X X +serde_path_to_error@0.1.20 X X +serde_repr@0.1.20 X X +serde_urlencoded@0.7.1 X X +serde_with@3.20.0 X X +serde_with_macros@3.20.0 X X +sha1@0.10.6 X X +sha2@0.10.9 X X +sha2@0.11.0 X X +sha2-const-stable@0.1.0 X X +shlex@2.0.1 X X +signal-hook-registry@1.4.8 X X +signature@2.2.0 X X +simba@0.9.1 X +simd-adler32@0.3.9 X +simdutf8@0.1.5 X X +simple_asn1@0.6.4 X +siphasher@1.0.3 X X +sketches-ddsketch@0.2.2 X +slab@0.4.12 X +smallvec@1.15.1 X X +snafu@0.8.9 X X +snafu@0.9.1 X X +snafu-derive@0.8.9 X X +snafu-derive@0.9.1 X X +snap@1.1.1 X +socket2@0.6.4 X X +spin@0.9.8 X +spki@0.7.3 X X +sqlparser@0.62.0 X +sqlparser_derive@0.5.0 X +stabby@72.1.8 X X +stabby-abi@72.1.8 X X +stabby-macros@72.1.8 X X +stable_deref_trait@1.2.1 X X +stacker@0.1.24 X X +strsim@0.11.1 X +strum@0.27.2 X +strum_macros@0.27.2 X +subtle@2.6.1 X +syn@2.0.117 X X +sync_wrapper@1.0.2 X +synstructure@0.13.2 X +system-configuration@0.7.0 X X +system-configuration-sys@0.6.0 X X +tantivy@0.22.1 X +tantivy-bitpacker@0.6.0 X +tantivy-columnar@0.3.0 X +tantivy-common@0.7.0 X +tantivy-fst@0.5.0 X X +tantivy-query-grammar@0.22.0 X +tantivy-sstable@0.3.0 X +tantivy-stacker@0.3.0 X +tantivy-tokenizer-api@0.3.0 X +target-lexicon@0.13.5 X +tempfile@3.27.0 X X +thiserror@1.0.69 X X +thiserror@2.0.18 X X +thiserror-impl@1.0.69 X X +thiserror-impl@2.0.18 X X +thrift@0.17.0 X +time@0.3.47 X X +time-core@0.1.8 X X +time-macros@0.2.27 X X +tiny-keccak@2.0.2 X +tinystr@0.8.3 X +tokio@1.52.3 X +tokio-macros@2.7.0 X +tokio-native-tls@0.3.1 X +tokio-rustls@0.26.4 X X +tokio-stream@0.1.18 X +tokio-util@0.7.18 X +toml_datetime@1.1.1+spec-1.1.0 X X +toml_edit@0.25.12+spec-1.1.0 X X +toml_parser@1.1.2+spec-1.1.0 X X +tower@0.5.3 X +tower-http@0.6.11 X +tower-layer@0.3.3 X +tower-service@0.3.3 X +tracing@0.1.44 X +tracing-attributes@0.1.31 X +tracing-core@0.1.36 X +try-lock@0.2.5 X +twox-hash@2.1.2 X +typed-builder@0.19.1 X X +typed-builder-macro@0.19.1 X X +typenum@1.20.1 X X +unicode-ident@1.0.24 X X X +unicode-segmentation@1.13.2 X X +unicode-width@0.2.2 X X +untrusted@0.9.0 X +url@2.5.8 X X +urlencoding@2.1.3 X +utf8-ranges@1.0.5 X X +utf8_iter@1.0.4 X X +uuid@1.23.2 X X +vcpkg@0.2.15 X X +version_check@0.9.5 X X +walkdir@2.5.0 X X +want@0.3.1 X +wasi@0.11.1+wasi-snapshot-preview1 X X X +wasip2@1.0.3+wasi-0.2.9 X X X +wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X +wasite@0.1.0 X X X +wasm-bindgen@0.2.122 X X +wasm-bindgen-futures@0.4.72 X X +wasm-bindgen-macro@0.2.122 X X +wasm-bindgen-macro-support@0.2.122 X X +wasm-bindgen-shared@0.2.122 X X +wasm-streams@0.4.2 X X +web-sys@0.3.99 X X +web-time@1.1.0 X X +webpki-roots@1.0.7 X +whoami@1.6.1 X X X +wide@0.7.33 X X X +winapi@0.3.9 X X +winapi-i686-pc-windows-gnu@0.4.0 X X +winapi-util@0.1.11 X X +winapi-x86_64-pc-windows-gnu@0.4.0 X X +windows-core@0.62.2 X X +windows-implement@0.60.2 X X +windows-interface@0.59.3 X X +windows-link@0.2.1 X X +windows-registry@0.6.1 X X +windows-result@0.4.1 X X +windows-strings@0.5.1 X X +windows-sys@0.52.0 X X +windows-sys@0.59.0 X X +windows-sys@0.60.2 X X +windows-sys@0.61.2 X X +windows-targets@0.52.6 X X +windows-targets@0.53.5 X X +windows_aarch64_gnullvm@0.52.6 X X +windows_aarch64_gnullvm@0.53.1 X X +windows_aarch64_msvc@0.52.6 X X +windows_aarch64_msvc@0.53.1 X X +windows_i686_gnu@0.52.6 X X +windows_i686_gnu@0.53.1 X X +windows_i686_gnullvm@0.52.6 X X +windows_i686_gnullvm@0.53.1 X X +windows_i686_msvc@0.52.6 X X +windows_i686_msvc@0.53.1 X X +windows_x86_64_gnu@0.52.6 X X +windows_x86_64_gnu@0.53.1 X X +windows_x86_64_gnullvm@0.52.6 X X +windows_x86_64_gnullvm@0.53.1 X X +windows_x86_64_msvc@0.52.6 X X +windows_x86_64_msvc@0.53.1 X X +winnow@1.0.3 X +wit-bindgen@0.51.0 X X X +wit-bindgen@0.57.1 X X X +writeable@0.6.3 X +yansi@1.0.1 X X +yoke@0.8.2 X +yoke-derive@0.8.2 X +zerocopy@0.8.50 X X X +zerocopy-derive@0.8.50 X X X +zerofrom@0.1.8 X +zerofrom-derive@0.1.7 X +zeroize@1.8.2 X X +zerotrie@0.2.4 X +zerovec@0.11.6 X +zerovec-derive@0.11.3 X +zlib-rs@0.6.3 X +zmij@1.0.21 X +zstd@0.13.3 X +zstd-safe@7.2.4 X X +zstd-sys@2.0.16+zstd.1.5.7 X X diff --git a/bindings/c/DEPENDENCIES.rust.tsv b/bindings/c/DEPENDENCIES.rust.tsv index 30371660..0d136bc6 100644 --- a/bindings/c/DEPENDENCIES.rust.tsv +++ b/bindings/c/DEPENDENCIES.rust.tsv @@ -7,6 +7,7 @@ alloc-stdlib@0.2.2 X android_system_properties@0.1.5 X X anyhow@1.0.102 X X apache-avro@0.21.0 X +approx@0.5.1 X arrow@58.3.0 X arrow-arith@58.3.0 X arrow-array@58.3.0 X X @@ -26,7 +27,7 @@ async-stream-impl@0.3.6 X async-trait@0.1.89 X X atoi@2.0.0 X atomic-waker@1.1.2 X X -autocfg@1.5.0 X X +autocfg@1.5.1 X X backon@1.6.0 X base64@0.22.1 X X bigdecimal@0.4.10 X X @@ -34,13 +35,13 @@ bitflags@2.11.1 X X block-buffer@0.10.4 X X bon@3.9.1 X X bon-macros@3.9.1 X X -brotli@8.0.2 X X -brotli-decompressor@5.0.0 X X -bumpalo@3.20.2 X X +brotli@8.0.3 X X +brotli-decompressor@5.0.1 X X +bumpalo@3.20.3 X X bytemuck@1.25.0 X X X byteorder@1.5.0 X X bytes@1.11.1 X -cc@1.2.62 X X +cc@1.2.63 X X cfg-if@1.0.4 X X chrono@0.4.44 X X chrono-tz@0.10.4 X X @@ -53,6 +54,9 @@ core-foundation@0.9.4 X X core-foundation-sys@0.8.7 X X cpufeatures@0.2.17 X X crc32fast@1.5.0 X X +crossbeam-deque@0.8.6 X X +crossbeam-epoch@0.9.18 X X +crossbeam-utils@0.8.21 X X crunchy@0.2.4 X crypto-common@0.1.7 X X csv@1.4.0 X X @@ -62,8 +66,8 @@ darling_core@0.23.0 X darling_macro@0.23.0 X diff@0.1.13 X X digest@0.10.7 X X -displaydoc@0.2.5 X X -either@1.15.0 X X +displaydoc@0.2.6 X X +either@1.16.0 X X encoding_rs@0.8.35 X X X equivalent@1.0.2 X X errno@0.3.14 X X @@ -97,12 +101,12 @@ heck@0.5.0 X X hex@0.4.3 X X hmac@0.12.1 X X home@0.5.12 X X -http@1.4.0 X X +http@1.4.1 X X http-body@1.0.1 X http-body-util@0.1.3 X httparse@1.10.1 X X httpdate@1.0.3 X X -hyper@1.9.0 X +hyper@1.10.1 X hyper-rustls@0.27.9 X X X hyper-tls@0.6.0 X X hyper-util@0.1.20 X @@ -123,11 +127,11 @@ integer-encoding@3.0.4 X ipnet@2.12.0 X X itertools@0.14.0 X X itoa@1.0.18 X X -jiff@0.2.24 X X +jiff@0.2.28 X X jiff-tzdb@0.1.6 X X jiff-tzdb-platform@0.1.3 X X jobserver@0.1.34 X X -js-sys@0.3.98 X X +js-sys@0.3.99 X X lexical-core@1.0.6 X X lexical-parse-float@1.0.6 X X lexical-parse-integer@1.0.6 X X @@ -135,19 +139,22 @@ lexical-util@1.0.7 X X lexical-write-float@1.0.6 X X lexical-write-integer@1.0.6 X X libc@0.2.186 X X -libloading@0.8.9 X +libloading@0.9.0 X libm@0.2.16 X linux-raw-sys@0.12.1 X X X litemap@0.8.2 X -log@0.4.29 X X +log@0.4.30 X X lz4_flex@0.11.6 X lz4_flex@0.13.1 X lzokay-native@0.1.0 X +matrixmultiply@0.3.10 X X md-5@0.10.6 X X -memchr@2.8.0 X X +memchr@2.8.1 X X mime@0.3.17 X X miniz_oxide@0.8.9 X X X -mio@1.2.0 X +mio@1.2.1 X +nalgebra@0.33.3 X +nalgebra-macros@0.2.2 X native-tls@0.2.18 X X num@0.4.3 X X num-bigint@0.4.6 X X @@ -164,8 +171,9 @@ openssl-probe@0.2.1 X X openssl-sys@0.9.116 X orc-rust@0.8.0 X ordered-float@2.10.1 X -paimon@0.2.0 X -paimon-c@0.2.0 X +paimon@0.3.0 X +paimon-c@0.3.0 X +paimon-vindex-core@0.1.0 X parquet@58.3.0 X paste@1.0.15 X X percent-encoding@2.3.2 X X @@ -193,6 +201,9 @@ rand_chacha@0.3.1 X X rand_chacha@0.9.0 X X rand_core@0.6.4 X X rand_core@0.9.5 X X +rawpointer@0.2.1 X X +rayon@1.12.0 X X +rayon-core@1.13.0 X X regex@1.12.3 X X regex-automata@0.4.14 X X regex-lite@0.1.9 X X @@ -208,6 +219,7 @@ rustls-pki-types@1.14.1 X X rustls-webpki@0.103.13 X rustversion@1.0.22 X X ryu@1.0.23 X X +safe_arch@0.7.4 X X X schannel@0.1.29 X security-framework@3.7.0 X X security-framework-sys@2.17.0 X X @@ -217,25 +229,26 @@ serde@1.0.228 X X serde_bytes@0.11.19 X X serde_core@1.0.228 X X serde_derive@1.0.228 X X -serde_json@1.0.149 X X +serde_json@1.0.150 X X serde_repr@0.1.20 X X serde_urlencoded@0.7.1 X X serde_with@3.20.0 X X serde_with_macros@3.20.0 X X sha1@0.10.6 X X sha2@0.10.9 X X -shlex@1.3.0 X X +shlex@2.0.1 X X +simba@0.9.1 X simd-adler32@0.3.9 X simdutf8@0.1.5 X X siphasher@1.0.3 X X slab@0.4.12 X smallvec@1.15.1 X X snafu@0.8.9 X X -snafu@0.9.0 X X +snafu@0.9.1 X X snafu-derive@0.8.9 X X -snafu-derive@0.9.0 X X +snafu-derive@0.9.1 X X snap@1.1.1 X -socket2@0.6.3 X X +socket2@0.6.4 X X stable_deref_trait@1.2.1 X X strsim@0.11.1 X strum@0.27.2 X @@ -269,7 +282,7 @@ try-lock@0.2.5 X twox-hash@2.1.2 X typed-builder@0.19.1 X X typed-builder-macro@0.19.1 X X -typenum@1.20.0 X X +typenum@1.20.1 X X unicode-ident@1.0.24 X X X unicode-segmentation@1.13.2 X X unicode-width@0.2.2 X X @@ -277,21 +290,22 @@ untrusted@0.9.0 X url@2.5.8 X X urlencoding@2.1.3 X utf8_iter@1.0.4 X X -uuid@1.23.1 X X +uuid@1.23.2 X X vcpkg@0.2.15 X X version_check@0.9.5 X X want@0.3.1 X wasi@0.11.1+wasi-snapshot-preview1 X X X wasip2@1.0.3+wasi-0.2.9 X X X wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X -wasm-bindgen@0.2.121 X X -wasm-bindgen-futures@0.4.71 X X -wasm-bindgen-macro@0.2.121 X X -wasm-bindgen-macro-support@0.2.121 X X -wasm-bindgen-shared@0.2.121 X X +wasm-bindgen@0.2.122 X X +wasm-bindgen-futures@0.4.72 X X +wasm-bindgen-macro@0.2.122 X X +wasm-bindgen-macro-support@0.2.122 X X +wasm-bindgen-shared@0.2.122 X X wasm-streams@0.4.2 X X -web-sys@0.3.98 X X +web-sys@0.3.99 X X webpki-roots@1.0.7 X +wide@0.7.33 X X X windows-core@0.62.2 X X windows-implement@0.60.2 X X windows-interface@0.59.3 X X @@ -316,8 +330,8 @@ writeable@0.6.3 X yansi@1.0.1 X X yoke@0.8.2 X yoke-derive@0.8.2 X -zerocopy@0.8.48 X X X -zerocopy-derive@0.8.48 X X X +zerocopy@0.8.50 X X X +zerocopy-derive@0.8.50 X X X zerofrom@0.1.8 X zerofrom-derive@0.1.7 X zeroize@1.8.2 X X diff --git a/bindings/python/DEPENDENCIES.rust.tsv b/bindings/python/DEPENDENCIES.rust.tsv index 3cc191fa..91ac6703 100644 --- a/bindings/python/DEPENDENCIES.rust.tsv +++ b/bindings/python/DEPENDENCIES.rust.tsv @@ -1,523 +1,547 @@ -crate 0BSD Apache-2.0 Apache-2.0 WITH LLVM-exception BSD-2-Clause BSD-3-Clause BSL-1.0 CC0-1.0 CDLA-Permissive-2.0 ISC LGPL-2.1-or-later MIT MIT-0 MPL-2.0 Unicode-3.0 Unlicense Zlib bzip2-1.0.6 zlib-acknowledgement -abi_stable@0.11.3 X X -abi_stable_derive@0.11.3 X X -abi_stable_shared@0.11.0 X X -adler2@2.0.1 X X X -aes@0.8.4 X X -ahash@0.8.12 X X -aho-corasick@1.1.4 X X -alloc-no-stdlib@2.0.4 X -alloc-stdlib@0.2.2 X -allocator-api2@0.2.21 X X -android_system_properties@0.1.5 X X -anyhow@1.0.102 X X -apache-avro@0.21.0 X -ar_archive_writer@0.5.1 X -arc-swap@1.9.1 X X -arrayref@0.3.9 X -arrayvec@0.7.6 X X -arrow@58.3.0 X -arrow-arith@58.3.0 X -arrow-array@58.3.0 X X -arrow-buffer@58.3.0 X -arrow-cast@58.3.0 X -arrow-csv@58.3.0 X -arrow-data@58.3.0 X -arrow-ipc@58.3.0 X -arrow-json@58.3.0 X -arrow-ord@58.3.0 X -arrow-pyarrow@58.3.0 X -arrow-row@58.3.0 X -arrow-schema@58.3.0 X -arrow-select@58.3.0 X -arrow-string@58.3.0 X -as_derive_utils@0.11.0 X X -async-compression@0.4.42 X X -async-ffi@0.5.0 X -async-stream@0.3.6 X -async-stream-impl@0.3.6 X -async-trait@0.1.89 X X -atoi@2.0.0 X -atomic-waker@1.1.2 X X -autocfg@1.5.0 X X -backon@1.6.0 X -base64@0.22.1 X X -bigdecimal@0.4.10 X X -bitflags@2.11.1 X X -bitpacking@0.9.3 X -blake2@0.10.6 X X -blake3@1.8.5 X X X -block-buffer@0.10.4 X X -block-padding@0.3.3 X X -bon@3.9.1 X X -bon-macros@3.9.1 X X -brotli@8.0.2 X X -brotli-decompressor@5.0.0 X X -bumpalo@3.20.2 X X -bytemuck@1.25.0 X X X -byteorder@1.5.0 X X -bytes@1.11.1 X -bzip2@0.6.1 X X -cbc@0.1.2 X X -cc@1.2.62 X X -census@0.4.2 X -cfg-if@1.0.4 X X -chrono@0.4.44 X X -chrono-tz@0.10.4 X X -cipher@0.4.4 X X -comfy-table@7.2.2 X -compression-codecs@0.4.38 X X -compression-core@0.4.32 X X -const-oid@0.9.6 X X -const-random@0.1.18 X X -const-random-macro@0.1.16 X X -const_panic@0.2.15 X -constant_time_eq@0.4.2 X X X -core-foundation@0.10.1 X X -core-foundation@0.9.4 X X -core-foundation-sys@0.8.7 X X -core_extensions@1.5.4 X X -core_extensions_proc_macros@1.5.4 X X -cpufeatures@0.2.17 X X -cpufeatures@0.3.0 X X -crc@3.4.0 X X -crc-catalog@2.5.0 X X -crc32c@0.6.8 X X -crc32fast@1.5.0 X X -crossbeam-channel@0.5.15 X X -crossbeam-deque@0.8.6 X X -crossbeam-epoch@0.9.18 X X -crossbeam-utils@0.8.21 X X -crunchy@0.2.4 X -crypto-common@0.1.7 X X -csv@1.4.0 X X -csv-core@0.1.13 X X -ctr@0.9.2 X X -darling@0.23.0 X -darling_core@0.23.0 X -darling_macro@0.23.0 X -dashmap@6.2.1 X -datafusion@53.1.0 X -datafusion-catalog@53.1.0 X -datafusion-catalog-listing@53.1.0 X -datafusion-common@53.1.0 X -datafusion-common-runtime@53.1.0 X -datafusion-datasource@53.1.0 X -datafusion-datasource-arrow@53.1.0 X -datafusion-datasource-csv@53.1.0 X -datafusion-datasource-json@53.1.0 X -datafusion-datasource-parquet@53.1.0 X -datafusion-doc@53.1.0 X -datafusion-execution@53.1.0 X -datafusion-expr@53.1.0 X -datafusion-expr-common@53.1.0 X -datafusion-ffi@53.1.0 X -datafusion-functions@53.1.0 X -datafusion-functions-aggregate@53.1.0 X -datafusion-functions-aggregate-common@53.1.0 X -datafusion-functions-nested@53.1.0 X -datafusion-functions-table@53.1.0 X -datafusion-functions-window@53.1.0 X -datafusion-functions-window-common@53.1.0 X -datafusion-macros@53.1.0 X -datafusion-optimizer@53.1.0 X -datafusion-physical-expr@53.1.0 X -datafusion-physical-expr-adapter@53.1.0 X -datafusion-physical-expr-common@53.1.0 X -datafusion-physical-optimizer@53.1.0 X -datafusion-physical-plan@53.1.0 X -datafusion-proto@53.1.0 X -datafusion-proto-common@53.1.0 X -datafusion-pruning@53.1.0 X -datafusion-session@53.1.0 X -datafusion-sql@53.1.0 X -deranged@0.5.8 X X -des@0.8.1 X X -diff@0.1.13 X X -digest@0.10.7 X X -displaydoc@0.2.5 X X -dlv-list@0.5.2 X X -dns-lookup@3.0.1 X X -downcast-rs@1.2.1 X X -either@1.15.0 X X -encoding_rs@0.8.35 X X X -equivalent@1.0.2 X X -errno@0.3.14 X X -fallible-streaming-iterator@0.1.9 X X -fastdivide@0.4.2 X X -fastrand@2.4.1 X X -find-msvc-tools@0.1.9 X X -fixedbitset@0.5.7 X X -flatbuffers@25.12.19 X -flate2@1.1.9 X X -fnv@1.0.7 X X -foldhash@0.1.5 X -foldhash@0.2.0 X -foreign-types@0.3.2 X X -foreign-types-shared@0.1.1 X X -form_urlencoded@1.2.2 X X -fs4@0.8.4 X X -futures@0.3.32 X X -futures-channel@0.3.32 X X -futures-core@0.3.32 X X -futures-executor@0.3.32 X X -futures-io@0.3.32 X X -futures-macro@0.3.32 X X -futures-sink@0.3.32 X X -futures-task@0.3.32 X X -futures-util@0.3.32 X X -g2gen@1.2.2 X X -g2p@1.2.2 X X -g2poly@1.2.2 X X -generational-arena@0.2.9 X -generic-array@0.14.7 X -getrandom@0.2.17 X X -getrandom@0.3.4 X X -getrandom@0.4.2 X X -glob@0.3.3 X X -gloo-timers@0.3.0 X X -h2@0.4.14 X -half@2.7.1 X X -hashbrown@0.14.5 X X -hashbrown@0.15.5 X X -hashbrown@0.16.1 X X -hashbrown@0.17.1 X X -hdfs-native@0.13.5 X -heck@0.5.0 X X -hermit-abi@0.5.2 X X -hex@0.4.3 X X -hmac@0.12.1 X X -home@0.5.12 X X -htmlescape@0.3.1 X X X -http@1.4.0 X X -http-body@1.0.1 X -http-body-util@0.1.3 X -httparse@1.10.1 X X -httpdate@1.0.3 X X -humantime@2.3.0 X X -hyper@1.9.0 X -hyper-rustls@0.27.9 X X X -hyper-tls@0.6.0 X X -hyper-util@0.1.20 X -iana-time-zone@0.1.65 X X -iana-time-zone-haiku@0.1.2 X X -icu_collections@2.2.0 X -icu_locale_core@2.2.0 X -icu_normalizer@2.2.0 X -icu_normalizer_data@2.2.0 X -icu_properties@2.2.0 X -icu_properties_data@2.2.0 X -icu_provider@2.2.0 X -ident_case@1.0.1 X X -idna@1.1.0 X X -idna_adapter@1.2.2 X X -indexmap@2.14.0 X X -inout@0.1.4 X X -instant@0.1.13 X -integer-encoding@3.0.4 X -ipnet@2.12.0 X X -itertools@0.12.1 X X -itertools@0.14.0 X X -itoa@1.0.18 X X -jiff@0.2.24 X X -jiff-tzdb@0.1.6 X X -jiff-tzdb-platform@0.1.3 X X -jobserver@0.1.34 X X -js-sys@0.3.98 X X -levenshtein_automata@0.2.1 X -lexical-core@1.0.6 X X -lexical-parse-float@1.0.6 X X -lexical-parse-integer@1.0.6 X X -lexical-util@1.0.7 X X -lexical-write-float@1.0.6 X X -lexical-write-integer@1.0.6 X X -libbz2-rs-sys@0.2.5 X -libc@0.2.186 X X -libloading@0.7.4 X -libloading@0.8.9 X -libloading@0.9.0 X -liblzma@0.4.6 X X -liblzma-sys@0.4.6 X X -libm@0.2.16 X -libredox@0.1.16 X -linux-raw-sys@0.12.1 X X X -linux-raw-sys@0.4.15 X X X -litemap@0.8.2 X -lock_api@0.4.14 X X -log@0.4.29 X X -lru@0.12.5 X -lz4_flex@0.11.6 X -lz4_flex@0.13.1 X -lzokay-native@0.1.0 X -md-5@0.10.6 X X -measure_time@0.8.3 X -memchr@2.8.0 X X -memmap2@0.9.10 X X -mime@0.3.17 X X -minimal-lexical@0.2.1 X X -miniz_oxide@0.8.9 X X X -mio@1.2.0 X -murmurhash32@0.3.1 X -native-tls@0.2.18 X X -nom@7.1.3 X -num@0.4.3 X X -num-bigint@0.4.6 X X -num-complex@0.4.6 X X -num-conv@0.2.2 X X -num-integer@0.1.46 X X -num-iter@0.1.45 X X -num-rational@0.4.2 X X -num-traits@0.2.19 X X -num_cpus@1.17.0 X X -object@0.37.3 X X -object_store@0.13.2 X X -once_cell@1.21.4 X X -oneshot@0.1.13 X X -opendal@0.55.0 X -openssl@0.10.80 X -openssl-macros@0.1.1 X X -openssl-probe@0.2.1 X X -openssl-sys@0.9.116 X -orc-rust@0.8.0 X -ordered-float@2.10.1 X -ordered-multimap@0.7.3 X -ownedbytes@0.7.0 X -paimon@0.2.0 X -paimon-datafusion@0.2.0 X -parking_lot@0.12.5 X X -parking_lot_core@0.9.12 X X -parquet@58.3.0 X -paste@1.0.15 X X -percent-encoding@2.3.2 X X -petgraph@0.8.3 X X -phf@0.12.1 X -phf_shared@0.12.1 X -pin-project-lite@0.2.17 X X -pkg-config@0.3.33 X X -plain@0.2.3 X X -portable-atomic@1.13.1 X X -portable-atomic-util@0.2.7 X X -potential_utf@0.1.5 X -powerfmt@0.2.0 X X -ppv-lite86@0.2.21 X X -pretty_assertions@1.4.1 X X -prettyplease@0.2.37 X X -proc-macro2@1.0.106 X X -prost@0.13.5 X -prost@0.14.3 X -prost-derive@0.13.5 X -prost-derive@0.14.3 X -prost-types@0.14.3 X -psm@0.1.31 X X -pyo3@0.28.3 X X -pyo3-build-config@0.28.3 X X -pyo3-ffi@0.28.3 X X -pyo3-macros@0.28.3 X X -pyo3-macros-backend@0.28.3 X X -pypaimon_rust@0.2.0 X -quad-rand@0.2.3 X -quick-xml@0.37.5 X -quick-xml@0.38.4 X -quote@1.0.45 X X -r-efi@5.3.0 X X X -r-efi@6.0.0 X X X -rand@0.8.6 X X -rand@0.9.4 X X -rand_chacha@0.3.1 X X -rand_chacha@0.9.0 X X -rand_core@0.6.4 X X -rand_core@0.9.5 X X -rand_distr@0.4.3 X X -rayon@1.12.0 X X -rayon-core@1.13.0 X X -recursive@0.1.1 X -recursive-proc-macro-impl@0.1.1 X -redox_syscall@0.5.18 X -redox_syscall@0.7.5 X -regex@1.12.3 X X -regex-automata@0.4.14 X X -regex-lite@0.1.9 X X -regex-syntax@0.8.10 X X -repr_offset@0.2.2 X -reqsign@0.16.5 X -reqwest@0.12.28 X X -ring@0.17.14 X X -roaring@0.11.4 X X -roxmltree@0.21.1 X X -rust-ini@0.21.3 X -rust-stemmers@1.2.0 X X -rustc-hash@1.1.0 X X -rustc_version@0.4.1 X X -rustix@0.38.44 X X X -rustix@1.1.4 X X X -rustls@0.23.40 X X X -rustls-pki-types@1.14.1 X X -rustls-webpki@0.103.13 X -rustversion@1.0.22 X X -ryu@1.0.23 X X -same-file@1.0.6 X X -schannel@0.1.29 X -scopeguard@1.2.0 X X -security-framework@3.7.0 X X -security-framework-sys@2.17.0 X X -semver@1.0.28 X X -seq-macro@0.3.6 X X -serde@1.0.228 X X -serde_bytes@0.11.19 X X -serde_core@1.0.228 X X -serde_derive@1.0.228 X X -serde_json@1.0.149 X X -serde_repr@0.1.20 X X -serde_urlencoded@0.7.1 X X -serde_with@3.20.0 X X -serde_with_macros@3.20.0 X X -sha1@0.10.6 X X -sha2@0.10.9 X X -shlex@1.3.0 X X -simd-adler32@0.3.9 X -simdutf8@0.1.5 X X -siphasher@1.0.3 X X -sketches-ddsketch@0.2.2 X -slab@0.4.12 X -smallvec@1.15.1 X X -snafu@0.8.9 X X -snafu@0.9.0 X X -snafu-derive@0.8.9 X X -snafu-derive@0.9.0 X X -snap@1.1.1 X -socket2@0.6.3 X X -sqlparser@0.61.0 X -sqlparser_derive@0.5.0 X -stable_deref_trait@1.2.1 X X -stacker@0.1.24 X X -strsim@0.11.1 X -strum@0.27.2 X -strum_macros@0.27.2 X -subtle@2.6.1 X -syn@1.0.109 X X -syn@2.0.117 X X -sync_wrapper@1.0.2 X -synstructure@0.13.2 X -system-configuration@0.7.0 X X -system-configuration-sys@0.6.0 X X -tantivy@0.22.1 X -tantivy-bitpacker@0.6.0 X -tantivy-columnar@0.3.0 X -tantivy-common@0.7.0 X -tantivy-fst@0.5.0 X X -tantivy-query-grammar@0.22.0 X -tantivy-sstable@0.3.0 X -tantivy-stacker@0.3.0 X -tantivy-tokenizer-api@0.3.0 X -target-lexicon@0.13.5 X -tempfile@3.27.0 X X -thiserror@1.0.69 X X -thiserror@2.0.18 X X -thiserror-impl@1.0.69 X X -thiserror-impl@2.0.18 X X -thrift@0.17.0 X -time@0.3.47 X X -time-core@0.1.8 X X -tiny-keccak@2.0.2 X -tinystr@0.8.3 X -tokio@1.52.3 X -tokio-macros@2.7.0 X -tokio-native-tls@0.3.1 X -tokio-rustls@0.26.4 X X -tokio-stream@0.1.18 X -tokio-util@0.7.18 X -tower@0.5.3 X -tower-http@0.6.11 X -tower-layer@0.3.3 X -tower-service@0.3.3 X -tracing@0.1.44 X -tracing-attributes@0.1.31 X -tracing-core@0.1.36 X -try-lock@0.2.5 X -tstr@0.2.4 X -tstr_proc_macros@0.2.2 X -twox-hash@2.1.2 X -typed-arena@2.0.2 X -typed-builder@0.19.1 X X -typed-builder-macro@0.19.1 X X -typenum@1.20.0 X X -typewit@1.15.2 X -unicode-ident@1.0.24 X X X -unicode-segmentation@1.13.2 X X -unicode-width@0.2.2 X X -untrusted@0.9.0 X -url@2.5.8 X X -urlencoding@2.1.3 X -utf8-ranges@1.0.5 X X -utf8_iter@1.0.4 X X -uuid@1.23.1 X X -vcpkg@0.2.15 X X -version_check@0.9.5 X X -walkdir@2.5.0 X X -want@0.3.1 X -wasi@0.11.1+wasi-snapshot-preview1 X X X -wasip2@1.0.3+wasi-0.2.9 X X X -wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X -wasite@0.1.0 X X X -wasm-bindgen@0.2.121 X X -wasm-bindgen-futures@0.4.71 X X -wasm-bindgen-macro@0.2.121 X X -wasm-bindgen-macro-support@0.2.121 X X -wasm-bindgen-shared@0.2.121 X X -wasm-streams@0.4.2 X X -web-sys@0.3.98 X X -web-time@1.1.0 X X -webpki-roots@1.0.7 X -whoami@1.6.1 X X X -winapi@0.3.9 X X -winapi-i686-pc-windows-gnu@0.4.0 X X -winapi-util@0.1.11 X X -winapi-x86_64-pc-windows-gnu@0.4.0 X X -windows-core@0.62.2 X X -windows-implement@0.60.2 X X -windows-interface@0.59.3 X X -windows-link@0.2.1 X X -windows-registry@0.6.1 X X -windows-result@0.4.1 X X -windows-strings@0.5.1 X X -windows-sys@0.52.0 X X -windows-sys@0.59.0 X X -windows-sys@0.60.2 X X -windows-sys@0.61.2 X X -windows-targets@0.52.6 X X -windows-targets@0.53.5 X X -windows_aarch64_gnullvm@0.52.6 X X -windows_aarch64_gnullvm@0.53.1 X X -windows_aarch64_msvc@0.52.6 X X -windows_aarch64_msvc@0.53.1 X X -windows_i686_gnu@0.52.6 X X -windows_i686_gnu@0.53.1 X X -windows_i686_gnullvm@0.52.6 X X -windows_i686_gnullvm@0.53.1 X X -windows_i686_msvc@0.52.6 X X -windows_i686_msvc@0.53.1 X X -windows_x86_64_gnu@0.52.6 X X -windows_x86_64_gnu@0.53.1 X X -windows_x86_64_gnullvm@0.52.6 X X -windows_x86_64_gnullvm@0.53.1 X X -windows_x86_64_msvc@0.52.6 X X -windows_x86_64_msvc@0.53.1 X X -wit-bindgen@0.51.0 X X X -wit-bindgen@0.57.1 X X X -writeable@0.6.3 X -yansi@1.0.1 X X -yoke@0.8.2 X -yoke-derive@0.8.2 X -zerocopy@0.8.48 X X X -zerocopy-derive@0.8.48 X X X -zerofrom@0.1.8 X -zerofrom-derive@0.1.7 X -zeroize@1.8.2 X X -zerotrie@0.2.4 X -zerovec@0.11.6 X -zerovec-derive@0.11.3 X -zlib-rs@0.6.3 X -zmij@1.0.21 X -zstd@0.13.3 X -zstd-safe@7.2.4 X X -zstd-sys@2.0.16+zstd.1.5.7 X X +crate 0BSD Apache-2.0 Apache-2.0 WITH LLVM-exception BSD-2-Clause BSD-3-Clause BSL-1.0 CC0-1.0 CDLA-Permissive-2.0 EPL-2.0 ISC LGPL-2.1-or-later MIT MIT-0 MPL-2.0 Unicode-3.0 Unlicense Zlib bzip2-1.0.6 zlib-acknowledgement +adler2@2.0.1 X X X +aes@0.8.4 X X +ahash@0.8.12 X X +aho-corasick@1.1.4 X X +alloc-no-stdlib@2.0.4 X +alloc-stdlib@0.2.2 X +allocator-api2@0.2.21 X X +android_system_properties@0.1.5 X X +anyhow@1.0.102 X X +apache-avro@0.21.0 X +approx@0.5.1 X +ar_archive_writer@0.5.1 X +arc-swap@1.9.1 X X +arrayref@0.3.9 X +arrayvec@0.7.6 X X +arrow@58.3.0 X +arrow-arith@58.3.0 X +arrow-array@58.3.0 X X +arrow-buffer@58.3.0 X +arrow-cast@58.3.0 X +arrow-csv@58.3.0 X +arrow-data@58.3.0 X +arrow-ipc@58.3.0 X +arrow-json@58.3.0 X +arrow-ord@58.3.0 X +arrow-pyarrow@58.3.0 X +arrow-row@58.3.0 X +arrow-schema@58.3.0 X +arrow-select@58.3.0 X +arrow-string@58.3.0 X +async-compression@0.4.42 X X +async-ffi@0.5.0 X +async-stream@0.3.6 X +async-stream-impl@0.3.6 X +async-trait@0.1.89 X X +atoi@2.0.0 X +atomic-waker@1.1.2 X X +autocfg@1.5.1 X X +backon@1.6.0 X +base64@0.22.1 X X +base64ct@1.8.3 X X +bigdecimal@0.4.10 X X +bitflags@2.11.1 X X +bitpacking@0.9.3 X +blake2@0.10.6 X X +blake3@1.8.5 X X X +block-buffer@0.10.4 X X +block-buffer@0.12.1 X X +block-padding@0.3.3 X X +bon@3.9.1 X X +bon-macros@3.9.1 X X +brotli@8.0.3 X X +brotli-decompressor@5.0.1 X X +bumpalo@3.20.3 X X +bytemuck@1.25.0 X X X +byteorder@1.5.0 X X +bytes@1.11.1 X +bzip2@0.6.1 X X +cbc@0.1.2 X X +cc@1.2.63 X X +census@0.4.2 X +cfg-if@1.0.4 X X +chrono@0.4.44 X X +chrono-tz@0.10.4 X X +cipher@0.4.4 X X +comfy-table@7.2.2 X +compression-codecs@0.4.38 X X +compression-core@0.4.32 X X +const-oid@0.10.2 X X +const-oid@0.9.6 X X +const-random@0.1.18 X X +const-random-macro@0.1.16 X X +constant_time_eq@0.4.2 X X X +core-foundation@0.10.1 X X +core-foundation@0.9.4 X X +core-foundation-sys@0.8.7 X X +cpufeatures@0.2.17 X X +cpufeatures@0.3.0 X X +crc@3.4.0 X X +crc-catalog@2.5.0 X X +crc32c@0.6.8 X X +crc32fast@1.5.0 X X +crossbeam-channel@0.5.15 X X +crossbeam-deque@0.8.6 X X +crossbeam-epoch@0.9.18 X X +crossbeam-utils@0.8.21 X X +crunchy@0.2.4 X +crypto-common@0.1.7 X X +crypto-common@0.2.2 X X +csv@1.4.0 X X +csv-core@0.1.13 X X +ctr@0.9.2 X X +darling@0.23.0 X +darling_core@0.23.0 X +darling_macro@0.23.0 X +dashmap@6.2.1 X +datafusion@54.0.0 X +datafusion-catalog@54.0.0 X +datafusion-catalog-listing@54.0.0 X +datafusion-common@54.0.0 X +datafusion-common-runtime@54.0.0 X +datafusion-datasource@54.0.0 X +datafusion-datasource-arrow@54.0.0 X +datafusion-datasource-csv@54.0.0 X +datafusion-datasource-json@54.0.0 X +datafusion-datasource-parquet@54.0.0 X +datafusion-doc@54.0.0 X +datafusion-execution@54.0.0 X +datafusion-expr@54.0.0 X +datafusion-expr-common@54.0.0 X +datafusion-ffi@54.0.0 X +datafusion-functions@54.0.0 X +datafusion-functions-aggregate@54.0.0 X +datafusion-functions-aggregate-common@54.0.0 X +datafusion-functions-nested@54.0.0 X +datafusion-functions-table@54.0.0 X +datafusion-functions-window@54.0.0 X +datafusion-functions-window-common@54.0.0 X +datafusion-macros@54.0.0 X +datafusion-optimizer@54.0.0 X +datafusion-physical-expr@54.0.0 X +datafusion-physical-expr-adapter@54.0.0 X +datafusion-physical-expr-common@54.0.0 X +datafusion-physical-optimizer@54.0.0 X +datafusion-physical-plan@54.0.0 X +datafusion-proto@54.0.0 X +datafusion-proto-common@54.0.0 X +datafusion-pruning@54.0.0 X +datafusion-session@54.0.0 X +datafusion-sql@54.0.0 X +der@0.7.10 X X +deranged@0.5.8 X X +des@0.8.1 X X +diff@0.1.13 X X +digest@0.10.7 X X +digest@0.11.3 X X +displaydoc@0.2.6 X X +dns-lookup@3.0.1 X X +downcast-rs@1.2.1 X X +either@1.16.0 X X +encoding_rs@0.8.35 X X X +equivalent@1.0.2 X X +errno@0.3.14 X X +fallible-streaming-iterator@0.1.9 X X +fastdivide@0.4.2 X X +fastrand@2.4.1 X X +find-msvc-tools@0.1.9 X X +fixedbitset@0.5.7 X X +flatbuffers@25.12.19 X +flate2@1.1.9 X X +fnv@1.0.7 X X +foldhash@0.1.5 X +foldhash@0.2.0 X +foreign-types@0.3.2 X X +foreign-types-shared@0.1.1 X X +form_urlencoded@1.2.2 X X +fs4@0.8.4 X X +futures@0.3.32 X X +futures-channel@0.3.32 X X +futures-core@0.3.32 X X +futures-executor@0.3.32 X X +futures-io@0.3.32 X X +futures-macro@0.3.32 X X +futures-sink@0.3.32 X X +futures-task@0.3.32 X X +futures-util@0.3.32 X X +g2gen@1.2.2 X X +g2p@1.2.2 X X +g2poly@1.2.2 X X +generic-array@0.14.7 X +getrandom@0.2.17 X X +getrandom@0.3.4 X X +getrandom@0.4.2 X X +glob@0.3.3 X X +gloo-timers@0.3.0 X X +h2@0.4.14 X +half@2.7.1 X X +hashbrown@0.14.5 X X +hashbrown@0.15.5 X X +hashbrown@0.17.1 X X +hdfs-native@0.13.5 X +heck@0.5.0 X X +hermit-abi@0.5.2 X X +hex@0.4.3 X X +hmac@0.12.1 X X +home@0.5.12 X X +htmlescape@0.3.1 X X X +http@1.4.1 X X +http-body@1.0.1 X +http-body-util@0.1.3 X +httparse@1.10.1 X X +httpdate@1.0.3 X X +humantime@2.3.0 X X +hybrid-array@0.4.13 X X +hyper@1.10.1 X +hyper-rustls@0.27.9 X X X +hyper-tls@0.6.0 X X +hyper-util@0.1.20 X +iana-time-zone@0.1.65 X X +iana-time-zone-haiku@0.1.2 X X +icu_collections@2.2.0 X +icu_locale_core@2.2.0 X +icu_normalizer@2.2.0 X +icu_normalizer_data@2.2.0 X +icu_properties@2.2.0 X +icu_properties_data@2.2.0 X +icu_provider@2.2.0 X +ident_case@1.0.1 X X +idna@1.1.0 X X +idna_adapter@1.2.2 X X +indexmap@2.14.0 X X +inout@0.1.4 X X +instant@0.1.13 X +integer-encoding@3.0.4 X +ipnet@2.12.0 X X +itertools@0.12.1 X X +itertools@0.14.0 X X +itoa@1.0.18 X X +jiff@0.2.28 X X +jiff-tzdb@0.1.6 X X +jiff-tzdb-platform@0.1.3 X X +jobserver@0.1.34 X X +js-sys@0.3.99 X X +jsonwebtoken@9.3.1 X +lazy_static@1.5.0 X X +levenshtein_automata@0.2.1 X +lexical-core@1.0.6 X X +lexical-parse-float@1.0.6 X X +lexical-parse-integer@1.0.6 X X +lexical-util@1.0.7 X X +lexical-write-float@1.0.6 X X +lexical-write-integer@1.0.6 X X +libbz2-rs-sys@0.2.5 X +libc@0.2.186 X X +libloading@0.9.0 X +liblzma@0.4.6 X X +liblzma-sys@0.4.6 X X +libm@0.2.16 X +libredox@0.1.17 X +linux-raw-sys@0.12.1 X X X +linux-raw-sys@0.4.15 X X X +litemap@0.8.2 X +lock_api@0.4.14 X X +log@0.4.30 X X +lru@0.12.5 X +lz4_flex@0.11.6 X +lz4_flex@0.13.1 X +lzokay-native@0.1.0 X +matrixmultiply@0.3.10 X X +md-5@0.10.6 X X +measure_time@0.8.3 X +memchr@2.8.1 X X +memmap2@0.9.10 X X +mime@0.3.17 X X +minimal-lexical@0.2.1 X X +miniz_oxide@0.8.9 X X X +mio@1.2.1 X +murmurhash32@0.3.1 X +nalgebra@0.33.3 X +nalgebra-macros@0.2.2 X +native-tls@0.2.18 X X +nom@7.1.3 X +num@0.4.3 X X +num-bigint@0.4.6 X X +num-bigint-dig@0.8.6 X X +num-complex@0.4.6 X X +num-conv@0.2.2 X X +num-integer@0.1.46 X X +num-iter@0.1.45 X X +num-rational@0.4.2 X X +num-traits@0.2.19 X X +num_cpus@1.17.0 X X +object@0.37.3 X X +object_store@0.13.2 X X +once_cell@1.21.4 X X +oneshot@0.1.13 X X +opendal@0.55.0 X +openssl@0.10.80 X +openssl-macros@0.1.1 X X +openssl-probe@0.2.1 X X +openssl-sys@0.9.116 X +orc-rust@0.8.0 X +ordered-float@2.10.1 X +ownedbytes@0.7.0 X +paimon@0.3.0 X +paimon-datafusion@0.3.0 X +paimon-vindex-core@0.1.0 X +parking_lot@0.12.5 X X +parking_lot_core@0.9.12 X X +parquet@58.3.0 X +paste@1.0.15 X X +pbkdf2@0.12.2 X X +pem@3.0.6 X +pem-rfc7468@0.7.0 X X +percent-encoding@2.3.2 X X +petgraph@0.8.3 X X +phf@0.12.1 X +phf_shared@0.12.1 X +pin-project@1.1.13 X X +pin-project-internal@1.1.13 X X +pin-project-lite@0.2.17 X X +pkcs1@0.7.5 X X +pkcs5@0.7.1 X X +pkcs8@0.10.2 X X +pkg-config@0.3.33 X X +plain@0.2.3 X X +portable-atomic@1.13.1 X X +portable-atomic-util@0.2.7 X X +potential_utf@0.1.5 X +powerfmt@0.2.0 X X +ppv-lite86@0.2.21 X X +pretty_assertions@1.4.1 X X +prettyplease@0.2.37 X X +proc-macro-crate@3.5.0 X X +proc-macro2@1.0.106 X X +prost@0.13.5 X +prost@0.14.3 X +prost-derive@0.13.5 X +prost-derive@0.14.3 X +prost-types@0.14.3 X +psm@0.1.31 X X +pyo3@0.28.3 X X +pyo3-build-config@0.28.3 X X +pyo3-ffi@0.28.3 X X +pyo3-macros@0.28.3 X X +pyo3-macros-backend@0.28.3 X X +pypaimon_rust@0.3.0 X +quad-rand@0.2.3 X +quick-xml@0.37.5 X +quick-xml@0.38.4 X +quote@1.0.45 X X +r-efi@5.3.0 X X X +r-efi@6.0.0 X X X +rand@0.8.6 X X +rand@0.9.4 X X +rand_chacha@0.3.1 X X +rand_chacha@0.9.0 X X +rand_core@0.6.4 X X +rand_core@0.9.5 X X +rand_distr@0.4.3 X X +rawpointer@0.2.1 X X +rayon@1.12.0 X X +rayon-core@1.13.0 X X +recursive@0.1.1 X +recursive-proc-macro-impl@0.1.1 X +redox_syscall@0.5.18 X +regex@1.12.3 X X +regex-automata@0.4.14 X X +regex-lite@0.1.9 X X +regex-syntax@0.8.10 X X +reqsign@0.16.5 X +reqwest@0.12.28 X X +ring@0.17.14 X X +roaring@0.11.4 X X +roxmltree@0.21.1 X X +rsa@0.9.10 X X +rust-stemmers@1.2.0 X X +rustc-hash@1.1.0 X X +rustc_version@0.4.1 X X +rustix@0.38.44 X X X +rustix@1.1.4 X X X +rustls@0.23.40 X X X +rustls-pki-types@1.14.1 X X +rustls-webpki@0.103.13 X +rustversion@1.0.22 X X +ryu@1.0.23 X X +safe_arch@0.7.4 X X X +salsa20@0.10.2 X X +same-file@1.0.6 X X +schannel@0.1.29 X +scopeguard@1.2.0 X X +scrypt@0.11.0 X X +security-framework@3.7.0 X X +security-framework-sys@2.17.0 X X +semver@1.0.28 X X +seq-macro@0.3.6 X X +serde@1.0.228 X X +serde_bytes@0.11.19 X X +serde_core@1.0.228 X X +serde_derive@1.0.228 X X +serde_json@1.0.150 X X +serde_repr@0.1.20 X X +serde_urlencoded@0.7.1 X X +serde_with@3.20.0 X X +serde_with_macros@3.20.0 X X +sha1@0.10.6 X X +sha2@0.10.9 X X +sha2@0.11.0 X X +sha2-const-stable@0.1.0 X X +shlex@2.0.1 X X +signature@2.2.0 X X +simba@0.9.1 X +simd-adler32@0.3.9 X +simdutf8@0.1.5 X X +simple_asn1@0.6.4 X +siphasher@1.0.3 X X +sketches-ddsketch@0.2.2 X +slab@0.4.12 X +smallvec@1.15.1 X X +snafu@0.8.9 X X +snafu@0.9.1 X X +snafu-derive@0.8.9 X X +snafu-derive@0.9.1 X X +snap@1.1.1 X +socket2@0.6.4 X X +spin@0.9.8 X +spki@0.7.3 X X +sqlparser@0.62.0 X +sqlparser_derive@0.5.0 X +stabby@72.1.8 X X +stabby-abi@72.1.8 X X +stabby-macros@72.1.8 X X +stable_deref_trait@1.2.1 X X +stacker@0.1.24 X X +strsim@0.11.1 X +strum@0.27.2 X +strum_macros@0.27.2 X +subtle@2.6.1 X +syn@2.0.117 X X +sync_wrapper@1.0.2 X +synstructure@0.13.2 X +system-configuration@0.7.0 X X +system-configuration-sys@0.6.0 X X +tantivy@0.22.1 X +tantivy-bitpacker@0.6.0 X +tantivy-columnar@0.3.0 X +tantivy-common@0.7.0 X +tantivy-fst@0.5.0 X X +tantivy-query-grammar@0.22.0 X +tantivy-sstable@0.3.0 X +tantivy-stacker@0.3.0 X +tantivy-tokenizer-api@0.3.0 X +target-lexicon@0.13.5 X +tempfile@3.27.0 X X +thiserror@1.0.69 X X +thiserror@2.0.18 X X +thiserror-impl@1.0.69 X X +thiserror-impl@2.0.18 X X +thrift@0.17.0 X +time@0.3.47 X X +time-core@0.1.8 X X +time-macros@0.2.27 X X +tiny-keccak@2.0.2 X +tinystr@0.8.3 X +tokio@1.52.3 X +tokio-macros@2.7.0 X +tokio-native-tls@0.3.1 X +tokio-rustls@0.26.4 X X +tokio-stream@0.1.18 X +tokio-util@0.7.18 X +toml_datetime@1.1.1+spec-1.1.0 X X +toml_edit@0.25.12+spec-1.1.0 X X +toml_parser@1.1.2+spec-1.1.0 X X +tower@0.5.3 X +tower-http@0.6.11 X +tower-layer@0.3.3 X +tower-service@0.3.3 X +tracing@0.1.44 X +tracing-attributes@0.1.31 X +tracing-core@0.1.36 X +try-lock@0.2.5 X +twox-hash@2.1.2 X +typed-builder@0.19.1 X X +typed-builder-macro@0.19.1 X X +typenum@1.20.1 X X +unicode-ident@1.0.24 X X X +unicode-segmentation@1.13.2 X X +unicode-width@0.2.2 X X +untrusted@0.9.0 X +url@2.5.8 X X +urlencoding@2.1.3 X +utf8-ranges@1.0.5 X X +utf8_iter@1.0.4 X X +uuid@1.23.2 X X +vcpkg@0.2.15 X X +version_check@0.9.5 X X +walkdir@2.5.0 X X +want@0.3.1 X +wasi@0.11.1+wasi-snapshot-preview1 X X X +wasip2@1.0.3+wasi-0.2.9 X X X +wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X +wasite@0.1.0 X X X +wasm-bindgen@0.2.122 X X +wasm-bindgen-futures@0.4.72 X X +wasm-bindgen-macro@0.2.122 X X +wasm-bindgen-macro-support@0.2.122 X X +wasm-bindgen-shared@0.2.122 X X +wasm-streams@0.4.2 X X +web-sys@0.3.99 X X +web-time@1.1.0 X X +webpki-roots@1.0.7 X +whoami@1.6.1 X X X +wide@0.7.33 X X X +winapi@0.3.9 X X +winapi-i686-pc-windows-gnu@0.4.0 X X +winapi-util@0.1.11 X X +winapi-x86_64-pc-windows-gnu@0.4.0 X X +windows-core@0.62.2 X X +windows-implement@0.60.2 X X +windows-interface@0.59.3 X X +windows-link@0.2.1 X X +windows-registry@0.6.1 X X +windows-result@0.4.1 X X +windows-strings@0.5.1 X X +windows-sys@0.52.0 X X +windows-sys@0.59.0 X X +windows-sys@0.60.2 X X +windows-sys@0.61.2 X X +windows-targets@0.52.6 X X +windows-targets@0.53.5 X X +windows_aarch64_gnullvm@0.52.6 X X +windows_aarch64_gnullvm@0.53.1 X X +windows_aarch64_msvc@0.52.6 X X +windows_aarch64_msvc@0.53.1 X X +windows_i686_gnu@0.52.6 X X +windows_i686_gnu@0.53.1 X X +windows_i686_gnullvm@0.52.6 X X +windows_i686_gnullvm@0.53.1 X X +windows_i686_msvc@0.52.6 X X +windows_i686_msvc@0.53.1 X X +windows_x86_64_gnu@0.52.6 X X +windows_x86_64_gnu@0.53.1 X X +windows_x86_64_gnullvm@0.52.6 X X +windows_x86_64_gnullvm@0.53.1 X X +windows_x86_64_msvc@0.52.6 X X +windows_x86_64_msvc@0.53.1 X X +winnow@1.0.3 X +wit-bindgen@0.51.0 X X X +wit-bindgen@0.57.1 X X X +writeable@0.6.3 X +yansi@1.0.1 X X +yoke@0.8.2 X +yoke-derive@0.8.2 X +zerocopy@0.8.50 X X X +zerocopy-derive@0.8.50 X X X +zerofrom@0.1.8 X +zerofrom-derive@0.1.7 X +zeroize@1.8.2 X X +zerotrie@0.2.4 X +zerovec@0.11.6 X +zerovec-derive@0.11.3 X +zlib-rs@0.6.3 X +zmij@1.0.21 X +zstd@0.13.3 X +zstd-safe@7.2.4 X X +zstd-sys@2.0.16+zstd.1.5.7 X X diff --git a/bindings/python/pyproject.toml b/bindings/python/pyproject.toml index cdefdfe1..b2d94e63 100644 --- a/bindings/python/pyproject.toml +++ b/bindings/python/pyproject.toml @@ -59,7 +59,7 @@ dev = [ "maturin>=1.9.4,<2.0", "pytest>=8.0", "pyarrow>=17.0,<24.0", - "datafusion==53.0.0", + "datafusion==54.0.0", "av>=17.0,<18.0", "pillow>=12.0,<13.0", ] diff --git a/bindings/python/src/udf.rs b/bindings/python/src/udf.rs index 36340289..ef9f379b 100644 --- a/bindings/python/src/udf.rs +++ b/bindings/python/src/udf.rs @@ -15,7 +15,6 @@ // specific language governing permissions and limitations // under the License. -use std::any::Any; use std::fmt::{self, Debug}; use std::hash::{Hash, Hasher}; use std::sync::Arc; @@ -306,10 +305,6 @@ impl Hash for PyScalarUDF { } impl ScalarUDFImpl for PyScalarUDF { - fn as_any(&self) -> &dyn Any { - self - } - fn name(&self) -> &str { &self.name } diff --git a/crates/integration_tests/DEPENDENCIES.rust.tsv b/crates/integration_tests/DEPENDENCIES.rust.tsv index e4da2c86..0e65d0eb 100644 --- a/crates/integration_tests/DEPENDENCIES.rust.tsv +++ b/crates/integration_tests/DEPENDENCIES.rust.tsv @@ -7,6 +7,7 @@ alloc-stdlib@0.2.2 X android_system_properties@0.1.5 X X anyhow@1.0.102 X X apache-avro@0.21.0 X +approx@0.5.1 X arrow@58.3.0 X arrow-arith@58.3.0 X arrow-array@58.3.0 X X @@ -26,7 +27,7 @@ async-stream-impl@0.3.6 X async-trait@0.1.89 X X atoi@2.0.0 X atomic-waker@1.1.2 X X -autocfg@1.5.0 X X +autocfg@1.5.1 X X backon@1.6.0 X base64@0.22.1 X X bigdecimal@0.4.10 X X @@ -34,13 +35,13 @@ bitflags@2.11.1 X X block-buffer@0.10.4 X X bon@3.9.1 X X bon-macros@3.9.1 X X -brotli@8.0.2 X X -brotli-decompressor@5.0.0 X X -bumpalo@3.20.2 X X +brotli@8.0.3 X X +brotli-decompressor@5.0.1 X X +bumpalo@3.20.3 X X bytemuck@1.25.0 X X X byteorder@1.5.0 X X bytes@1.11.1 X -cc@1.2.62 X X +cc@1.2.63 X X cfg-if@1.0.4 X X chrono@0.4.44 X X chrono-tz@0.10.4 X X @@ -53,6 +54,9 @@ core-foundation@0.9.4 X X core-foundation-sys@0.8.7 X X cpufeatures@0.2.17 X X crc32fast@1.5.0 X X +crossbeam-deque@0.8.6 X X +crossbeam-epoch@0.9.18 X X +crossbeam-utils@0.8.21 X X crunchy@0.2.4 X crypto-common@0.1.7 X X csv@1.4.0 X X @@ -62,8 +66,8 @@ darling_core@0.23.0 X darling_macro@0.23.0 X diff@0.1.13 X X digest@0.10.7 X X -displaydoc@0.2.5 X X -either@1.15.0 X X +displaydoc@0.2.6 X X +either@1.16.0 X X encoding_rs@0.8.35 X X X equivalent@1.0.2 X X errno@0.3.14 X X @@ -97,12 +101,12 @@ heck@0.5.0 X X hex@0.4.3 X X hmac@0.12.1 X X home@0.5.12 X X -http@1.4.0 X X +http@1.4.1 X X http-body@1.0.1 X http-body-util@0.1.3 X httparse@1.10.1 X X httpdate@1.0.3 X X -hyper@1.9.0 X +hyper@1.10.1 X hyper-rustls@0.27.9 X X X hyper-tls@0.6.0 X X hyper-util@0.1.20 X @@ -123,11 +127,11 @@ integer-encoding@3.0.4 X ipnet@2.12.0 X X itertools@0.14.0 X X itoa@1.0.18 X X -jiff@0.2.24 X X +jiff@0.2.28 X X jiff-tzdb@0.1.6 X X jiff-tzdb-platform@0.1.3 X X jobserver@0.1.34 X X -js-sys@0.3.98 X X +js-sys@0.3.99 X X lexical-core@1.0.6 X X lexical-parse-float@1.0.6 X X lexical-parse-integer@1.0.6 X X @@ -135,19 +139,22 @@ lexical-util@1.0.7 X X lexical-write-float@1.0.6 X X lexical-write-integer@1.0.6 X X libc@0.2.186 X X -libloading@0.8.9 X +libloading@0.9.0 X libm@0.2.16 X linux-raw-sys@0.12.1 X X X litemap@0.8.2 X -log@0.4.29 X X +log@0.4.30 X X lz4_flex@0.11.6 X lz4_flex@0.13.1 X lzokay-native@0.1.0 X +matrixmultiply@0.3.10 X X md-5@0.10.6 X X -memchr@2.8.0 X X +memchr@2.8.1 X X mime@0.3.17 X X miniz_oxide@0.8.9 X X X -mio@1.2.0 X +mio@1.2.1 X +nalgebra@0.33.3 X +nalgebra-macros@0.2.2 X native-tls@0.2.18 X X num@0.4.3 X X num-bigint@0.4.6 X X @@ -164,8 +171,9 @@ openssl-probe@0.2.1 X X openssl-sys@0.9.116 X orc-rust@0.8.0 X ordered-float@2.10.1 X -paimon@0.2.0 X -paimon-integration-tests@0.2.0 X +paimon@0.3.0 X +paimon-integration-tests@0.3.0 X +paimon-vindex-core@0.1.0 X parquet@58.3.0 X paste@1.0.15 X X percent-encoding@2.3.2 X X @@ -193,6 +201,9 @@ rand_chacha@0.3.1 X X rand_chacha@0.9.0 X X rand_core@0.6.4 X X rand_core@0.9.5 X X +rawpointer@0.2.1 X X +rayon@1.12.0 X X +rayon-core@1.13.0 X X regex@1.12.3 X X regex-automata@0.4.14 X X regex-lite@0.1.9 X X @@ -208,6 +219,7 @@ rustls-pki-types@1.14.1 X X rustls-webpki@0.103.13 X rustversion@1.0.22 X X ryu@1.0.23 X X +safe_arch@0.7.4 X X X schannel@0.1.29 X security-framework@3.7.0 X X security-framework-sys@2.17.0 X X @@ -217,25 +229,26 @@ serde@1.0.228 X X serde_bytes@0.11.19 X X serde_core@1.0.228 X X serde_derive@1.0.228 X X -serde_json@1.0.149 X X +serde_json@1.0.150 X X serde_repr@0.1.20 X X serde_urlencoded@0.7.1 X X serde_with@3.20.0 X X serde_with_macros@3.20.0 X X sha1@0.10.6 X X sha2@0.10.9 X X -shlex@1.3.0 X X +shlex@2.0.1 X X +simba@0.9.1 X simd-adler32@0.3.9 X simdutf8@0.1.5 X X siphasher@1.0.3 X X slab@0.4.12 X smallvec@1.15.1 X X snafu@0.8.9 X X -snafu@0.9.0 X X +snafu@0.9.1 X X snafu-derive@0.8.9 X X -snafu-derive@0.9.0 X X +snafu-derive@0.9.1 X X snap@1.1.1 X -socket2@0.6.3 X X +socket2@0.6.4 X X stable_deref_trait@1.2.1 X X strsim@0.11.1 X strum@0.27.2 X @@ -269,7 +282,7 @@ try-lock@0.2.5 X twox-hash@2.1.2 X typed-builder@0.19.1 X X typed-builder-macro@0.19.1 X X -typenum@1.20.0 X X +typenum@1.20.1 X X unicode-ident@1.0.24 X X X unicode-segmentation@1.13.2 X X unicode-width@0.2.2 X X @@ -277,21 +290,22 @@ untrusted@0.9.0 X url@2.5.8 X X urlencoding@2.1.3 X utf8_iter@1.0.4 X X -uuid@1.23.1 X X +uuid@1.23.2 X X vcpkg@0.2.15 X X version_check@0.9.5 X X want@0.3.1 X wasi@0.11.1+wasi-snapshot-preview1 X X X wasip2@1.0.3+wasi-0.2.9 X X X wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X -wasm-bindgen@0.2.121 X X -wasm-bindgen-futures@0.4.71 X X -wasm-bindgen-macro@0.2.121 X X -wasm-bindgen-macro-support@0.2.121 X X -wasm-bindgen-shared@0.2.121 X X +wasm-bindgen@0.2.122 X X +wasm-bindgen-futures@0.4.72 X X +wasm-bindgen-macro@0.2.122 X X +wasm-bindgen-macro-support@0.2.122 X X +wasm-bindgen-shared@0.2.122 X X wasm-streams@0.4.2 X X -web-sys@0.3.98 X X +web-sys@0.3.99 X X webpki-roots@1.0.7 X +wide@0.7.33 X X X windows-core@0.62.2 X X windows-implement@0.60.2 X X windows-interface@0.59.3 X X @@ -316,8 +330,8 @@ writeable@0.6.3 X yansi@1.0.1 X X yoke@0.8.2 X yoke-derive@0.8.2 X -zerocopy@0.8.48 X X X -zerocopy-derive@0.8.48 X X X +zerocopy@0.8.50 X X X +zerocopy-derive@0.8.50 X X X zerofrom@0.1.8 X zerofrom-derive@0.1.7 X zeroize@1.8.2 X X diff --git a/crates/integrations/datafusion/DEPENDENCIES.rust.tsv b/crates/integrations/datafusion/DEPENDENCIES.rust.tsv index c9385751..b6dd6fe0 100644 --- a/crates/integrations/datafusion/DEPENDENCIES.rust.tsv +++ b/crates/integrations/datafusion/DEPENDENCIES.rust.tsv @@ -8,6 +8,7 @@ allocator-api2@0.2.21 X X android_system_properties@0.1.5 X X anyhow@1.0.102 X X apache-avro@0.21.0 X +approx@0.5.1 X ar_archive_writer@0.5.1 X arc-swap@1.9.1 X X arrayref@0.3.9 X @@ -32,7 +33,7 @@ async-stream-impl@0.3.6 X async-trait@0.1.89 X X atoi@2.0.0 X atomic-waker@1.1.2 X X -autocfg@1.5.0 X X +autocfg@1.5.1 X X backon@1.6.0 X base64@0.22.1 X X bigdecimal@0.4.10 X X @@ -41,16 +42,17 @@ bitpacking@0.9.3 X blake2@0.10.6 X X blake3@1.8.5 X X X block-buffer@0.10.4 X X +block-buffer@0.12.1 X X bon@3.9.1 X X bon-macros@3.9.1 X X -brotli@8.0.2 X X -brotli-decompressor@5.0.0 X X -bumpalo@3.20.2 X X +brotli@8.0.3 X X +brotli-decompressor@5.0.1 X X +bumpalo@3.20.3 X X bytemuck@1.25.0 X X X byteorder@1.5.0 X X bytes@1.11.1 X bzip2@0.6.1 X X -cc@1.2.62 X X +cc@1.2.63 X X census@0.4.2 X cfg-if@1.0.4 X X chrono@0.4.44 X X @@ -58,6 +60,7 @@ chrono-tz@0.10.4 X X comfy-table@7.2.2 X compression-codecs@0.4.38 X X compression-core@0.4.32 X X +const-oid@0.10.2 X X const-oid@0.9.6 X X const-random@0.1.18 X X const-random-macro@0.1.16 X X @@ -74,49 +77,51 @@ crossbeam-epoch@0.9.18 X X crossbeam-utils@0.8.21 X X crunchy@0.2.4 X crypto-common@0.1.7 X X +crypto-common@0.2.2 X X csv@1.4.0 X X csv-core@0.1.13 X X darling@0.23.0 X darling_core@0.23.0 X darling_macro@0.23.0 X dashmap@6.2.1 X -datafusion@53.1.0 X -datafusion-catalog@53.1.0 X -datafusion-catalog-listing@53.1.0 X -datafusion-common@53.1.0 X -datafusion-common-runtime@53.1.0 X -datafusion-datasource@53.1.0 X -datafusion-datasource-arrow@53.1.0 X -datafusion-datasource-csv@53.1.0 X -datafusion-datasource-json@53.1.0 X -datafusion-datasource-parquet@53.1.0 X -datafusion-doc@53.1.0 X -datafusion-execution@53.1.0 X -datafusion-expr@53.1.0 X -datafusion-expr-common@53.1.0 X -datafusion-functions@53.1.0 X -datafusion-functions-aggregate@53.1.0 X -datafusion-functions-aggregate-common@53.1.0 X -datafusion-functions-nested@53.1.0 X -datafusion-functions-table@53.1.0 X -datafusion-functions-window@53.1.0 X -datafusion-functions-window-common@53.1.0 X -datafusion-macros@53.1.0 X -datafusion-optimizer@53.1.0 X -datafusion-physical-expr@53.1.0 X -datafusion-physical-expr-adapter@53.1.0 X -datafusion-physical-expr-common@53.1.0 X -datafusion-physical-optimizer@53.1.0 X -datafusion-physical-plan@53.1.0 X -datafusion-pruning@53.1.0 X -datafusion-session@53.1.0 X -datafusion-sql@53.1.0 X +datafusion@54.0.0 X +datafusion-catalog@54.0.0 X +datafusion-catalog-listing@54.0.0 X +datafusion-common@54.0.0 X +datafusion-common-runtime@54.0.0 X +datafusion-datasource@54.0.0 X +datafusion-datasource-arrow@54.0.0 X +datafusion-datasource-csv@54.0.0 X +datafusion-datasource-json@54.0.0 X +datafusion-datasource-parquet@54.0.0 X +datafusion-doc@54.0.0 X +datafusion-execution@54.0.0 X +datafusion-expr@54.0.0 X +datafusion-expr-common@54.0.0 X +datafusion-functions@54.0.0 X +datafusion-functions-aggregate@54.0.0 X +datafusion-functions-aggregate-common@54.0.0 X +datafusion-functions-nested@54.0.0 X +datafusion-functions-table@54.0.0 X +datafusion-functions-window@54.0.0 X +datafusion-functions-window-common@54.0.0 X +datafusion-macros@54.0.0 X +datafusion-optimizer@54.0.0 X +datafusion-physical-expr@54.0.0 X +datafusion-physical-expr-adapter@54.0.0 X +datafusion-physical-expr-common@54.0.0 X +datafusion-physical-optimizer@54.0.0 X +datafusion-physical-plan@54.0.0 X +datafusion-pruning@54.0.0 X +datafusion-session@54.0.0 X +datafusion-sql@54.0.0 X deranged@0.5.8 X X diff@0.1.13 X X digest@0.10.7 X X -displaydoc@0.2.5 X X +digest@0.11.3 X X +displaydoc@0.2.6 X X downcast-rs@1.2.1 X X -either@1.15.0 X X +either@1.16.0 X X encoding_rs@0.8.35 X X X equivalent@1.0.2 X X errno@0.3.14 X X @@ -153,7 +158,6 @@ h2@0.4.14 X half@2.7.1 X X hashbrown@0.14.5 X X hashbrown@0.15.5 X X -hashbrown@0.16.1 X X hashbrown@0.17.1 X X heck@0.5.0 X X hermit-abi@0.5.2 X X @@ -161,13 +165,14 @@ hex@0.4.3 X X hmac@0.12.1 X X home@0.5.12 X X htmlescape@0.3.1 X X X -http@1.4.0 X X +http@1.4.1 X X http-body@1.0.1 X http-body-util@0.1.3 X httparse@1.10.1 X X httpdate@1.0.3 X X humantime@2.3.0 X X -hyper@1.9.0 X +hybrid-array@0.4.13 X X +hyper@1.10.1 X hyper-rustls@0.27.9 X X X hyper-tls@0.6.0 X X hyper-util@0.1.20 X @@ -190,11 +195,11 @@ ipnet@2.12.0 X X itertools@0.12.1 X X itertools@0.14.0 X X itoa@1.0.18 X X -jiff@0.2.24 X X +jiff@0.2.28 X X jiff-tzdb@0.1.6 X X jiff-tzdb-platform@0.1.3 X X jobserver@0.1.34 X X -js-sys@0.3.98 X X +js-sys@0.3.99 X X levenshtein_automata@0.2.1 X lexical-core@1.0.6 X X lexical-parse-float@1.0.6 X X @@ -204,7 +209,7 @@ lexical-write-float@1.0.6 X X lexical-write-integer@1.0.6 X X libbz2-rs-sys@0.2.5 X libc@0.2.186 X X -libloading@0.8.9 X +libloading@0.9.0 X liblzma@0.4.6 X X liblzma-sys@0.4.6 X X libm@0.2.16 X @@ -212,20 +217,23 @@ linux-raw-sys@0.12.1 X X X linux-raw-sys@0.4.15 X X X litemap@0.8.2 X lock_api@0.4.14 X X -log@0.4.29 X X +log@0.4.30 X X lru@0.12.5 X lz4_flex@0.11.6 X lz4_flex@0.13.1 X lzokay-native@0.1.0 X +matrixmultiply@0.3.10 X X md-5@0.10.6 X X measure_time@0.8.3 X -memchr@2.8.0 X X +memchr@2.8.1 X X memmap2@0.9.10 X X mime@0.3.17 X X minimal-lexical@0.2.1 X X miniz_oxide@0.8.9 X X X -mio@1.2.0 X +mio@1.2.1 X murmurhash32@0.3.1 X +nalgebra@0.33.3 X +nalgebra-macros@0.2.2 X native-tls@0.2.18 X X nom@7.1.3 X num@0.4.3 X X @@ -249,8 +257,9 @@ openssl-sys@0.9.116 X orc-rust@0.8.0 X ordered-float@2.10.1 X ownedbytes@0.7.0 X -paimon@0.2.0 X -paimon-datafusion@0.2.0 X +paimon@0.3.0 X +paimon-datafusion@0.3.0 X +paimon-vindex-core@0.1.0 X parking_lot@0.12.5 X X parking_lot_core@0.9.12 X X parquet@58.3.0 X @@ -259,6 +268,8 @@ percent-encoding@2.3.2 X X petgraph@0.8.3 X X phf@0.12.1 X phf_shared@0.12.1 X +pin-project@1.1.13 X X +pin-project-internal@1.1.13 X X pin-project-lite@0.2.17 X X pkg-config@0.3.33 X X portable-atomic@1.13.1 X X @@ -284,6 +295,7 @@ rand_chacha@0.9.0 X X rand_core@0.6.4 X X rand_core@0.9.5 X X rand_distr@0.4.3 X X +rawpointer@0.2.1 X X rayon@1.12.0 X X rayon-core@1.13.0 X X recursive@0.1.1 X @@ -307,6 +319,7 @@ rustls-pki-types@1.14.1 X X rustls-webpki@0.103.13 X rustversion@1.0.22 X X ryu@1.0.23 X X +safe_arch@0.7.4 X X X same-file@1.0.6 X X schannel@0.1.29 X scopeguard@1.2.0 X X @@ -318,14 +331,16 @@ serde@1.0.228 X X serde_bytes@0.11.19 X X serde_core@1.0.228 X X serde_derive@1.0.228 X X -serde_json@1.0.149 X X +serde_json@1.0.150 X X serde_repr@0.1.20 X X serde_urlencoded@0.7.1 X X serde_with@3.20.0 X X serde_with_macros@3.20.0 X X sha1@0.10.6 X X sha2@0.10.9 X X -shlex@1.3.0 X X +sha2@0.11.0 X X +shlex@2.0.1 X X +simba@0.9.1 X simd-adler32@0.3.9 X simdutf8@0.1.5 X X siphasher@1.0.3 X X @@ -333,12 +348,12 @@ sketches-ddsketch@0.2.2 X slab@0.4.12 X smallvec@1.15.1 X X snafu@0.8.9 X X -snafu@0.9.0 X X +snafu@0.9.1 X X snafu-derive@0.8.9 X X -snafu-derive@0.9.0 X X +snafu-derive@0.9.1 X X snap@1.1.1 X -socket2@0.6.3 X X -sqlparser@0.61.0 X +socket2@0.6.4 X X +sqlparser@0.62.0 X sqlparser_derive@0.5.0 X stable_deref_trait@1.2.1 X X stacker@0.1.24 X X @@ -387,7 +402,7 @@ try-lock@0.2.5 X twox-hash@2.1.2 X typed-builder@0.19.1 X X typed-builder-macro@0.19.1 X X -typenum@1.20.0 X X +typenum@1.20.1 X X unicode-ident@1.0.24 X X X unicode-segmentation@1.13.2 X X unicode-width@0.2.2 X X @@ -396,7 +411,7 @@ url@2.5.8 X X urlencoding@2.1.3 X utf8-ranges@1.0.5 X X utf8_iter@1.0.4 X X -uuid@1.23.1 X X +uuid@1.23.2 X X vcpkg@0.2.15 X X version_check@0.9.5 X X walkdir@2.5.0 X X @@ -404,15 +419,16 @@ want@0.3.1 X wasi@0.11.1+wasi-snapshot-preview1 X X X wasip2@1.0.3+wasi-0.2.9 X X X wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X -wasm-bindgen@0.2.121 X X -wasm-bindgen-futures@0.4.71 X X -wasm-bindgen-macro@0.2.121 X X -wasm-bindgen-macro-support@0.2.121 X X -wasm-bindgen-shared@0.2.121 X X +wasm-bindgen@0.2.122 X X +wasm-bindgen-futures@0.4.72 X X +wasm-bindgen-macro@0.2.122 X X +wasm-bindgen-macro-support@0.2.122 X X +wasm-bindgen-shared@0.2.122 X X wasm-streams@0.4.2 X X -web-sys@0.3.98 X X +web-sys@0.3.99 X X web-time@1.1.0 X X webpki-roots@1.0.7 X +wide@0.7.33 X X X winapi@0.3.9 X X winapi-i686-pc-windows-gnu@0.4.0 X X winapi-util@0.1.11 X X @@ -442,8 +458,8 @@ writeable@0.6.3 X yansi@1.0.1 X X yoke@0.8.2 X yoke-derive@0.8.2 X -zerocopy@0.8.48 X X X -zerocopy-derive@0.8.48 X X X +zerocopy@0.8.50 X X X +zerocopy-derive@0.8.50 X X X zerofrom@0.1.8 X zerofrom-derive@0.1.7 X zeroize@1.8.2 X X diff --git a/crates/integrations/datafusion/src/catalog.rs b/crates/integrations/datafusion/src/catalog.rs index 0ab84f64..8808ab56 100644 --- a/crates/integrations/datafusion/src/catalog.rs +++ b/crates/integrations/datafusion/src/catalog.rs @@ -17,7 +17,6 @@ //! Paimon catalog integration for DataFusion. -use std::any::Any; use std::collections::HashMap; use std::fmt::Debug; use std::sync::Arc; @@ -93,10 +92,6 @@ impl PaimonCatalogProvider { } impl CatalogProvider for PaimonCatalogProvider { - fn as_any(&self) -> &dyn Any { - self - } - fn schema_names(&self) -> Vec { let catalog = Arc::clone(&self.catalog); block_on_with_runtime( @@ -333,10 +328,6 @@ impl PaimonSchemaProvider { #[async_trait] impl SchemaProvider for PaimonSchemaProvider { - fn as_any(&self) -> &dyn Any { - self - } - fn table_names(&self) -> Vec { let catalog = Arc::clone(&self.catalog); let database = self.database.clone(); diff --git a/crates/integrations/datafusion/src/full_text_search.rs b/crates/integrations/datafusion/src/full_text_search.rs index 9b9679b2..d5f74d36 100644 --- a/crates/integrations/datafusion/src/full_text_search.rs +++ b/crates/integrations/datafusion/src/full_text_search.rs @@ -24,7 +24,6 @@ //! //! Reference: [PaimonTableValuedFunctions.scala](https://github.com/apache/paimon/blob/master/paimon-spark/paimon-spark-common/src/main/scala/org/apache/paimon/spark/PaimonTableValuedFunctions.scala) -use std::any::Any; use std::fmt::Debug; use std::sync::Arc; @@ -139,10 +138,6 @@ struct FullTextSearchTableProvider { #[async_trait] impl TableProvider for FullTextSearchTableProvider { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> ArrowSchemaRef { self.inner.schema() } diff --git a/crates/integrations/datafusion/src/lateral_vector_search.rs b/crates/integrations/datafusion/src/lateral_vector_search.rs index 91a202a0..5a442443 100644 --- a/crates/integrations/datafusion/src/lateral_vector_search.rs +++ b/crates/integrations/datafusion/src/lateral_vector_search.rs @@ -144,10 +144,7 @@ fn find_lateral_vector_search_provider( match plan { LogicalPlan::TableScan(TableScan { source, .. }) => { let provider = source_as_provider(source)?; - let Some(provider) = provider - .as_any() - .downcast_ref::() - else { + let Some(provider) = provider.downcast_ref::() else { return Ok(None); }; Ok(Some(LateralVectorSearchSpec { @@ -463,10 +460,6 @@ impl ExecutionPlan for LateralVectorSearchExec { "LateralVectorSearchExec" } - fn as_any(&self) -> &dyn Any { - self - } - fn properties(&self) -> &Arc { &self.plan_properties } @@ -513,12 +506,12 @@ impl ExecutionPlan for LateralVectorSearchExec { ))) } - fn partition_statistics(&self, _partition: Option) -> DFResult { - Ok(Statistics { + fn partition_statistics(&self, _partition: Option) -> DFResult> { + Ok(Arc::new(Statistics { num_rows: Precision::Absent, total_byte_size: Precision::Absent, column_statistics: Statistics::unknown_column(&self.output_schema), - }) + })) } } diff --git a/crates/integrations/datafusion/src/physical_plan/scan.rs b/crates/integrations/datafusion/src/physical_plan/scan.rs index 68a9c42f..1c234b20 100644 --- a/crates/integrations/datafusion/src/physical_plan/scan.rs +++ b/crates/integrations/datafusion/src/physical_plan/scan.rs @@ -15,7 +15,6 @@ // specific language governing permissions and limitations // under the License. -use std::any::Any; use std::sync::Arc; use datafusion::arrow::datatypes::SchemaRef as ArrowSchemaRef; @@ -115,10 +114,6 @@ impl ExecutionPlan for PaimonTableScan { "PaimonTableScan" } - fn as_any(&self) -> &dyn Any { - self - } - fn properties(&self) -> &Arc { &self.plan_properties } @@ -178,7 +173,7 @@ impl ExecutionPlan for PaimonTableScan { ))) } - fn partition_statistics(&self, partition: Option) -> DFResult { + fn partition_statistics(&self, partition: Option) -> DFResult> { let partitions: &[Arc<[DataSplit]>] = match partition { Some(idx) => std::slice::from_ref(&self.planned_partitions[idx]), None => &self.planned_partitions, @@ -212,11 +207,11 @@ impl ExecutionPlan for PaimonTableScan { Precision::Inexact(total_rows) }; - Ok(Statistics { + Ok(Arc::new(Statistics { num_rows: num_rows_precision, total_byte_size: Precision::Inexact(total_bytes), column_statistics: Statistics::unknown_column(&self.schema()), - }) + })) } } diff --git a/crates/integrations/datafusion/src/physical_plan/sink.rs b/crates/integrations/datafusion/src/physical_plan/sink.rs index 4f8ce43b..f021ba35 100644 --- a/crates/integrations/datafusion/src/physical_plan/sink.rs +++ b/crates/integrations/datafusion/src/physical_plan/sink.rs @@ -17,7 +17,6 @@ //! DataSink implementation for writing to Paimon tables via DataFusion. -use std::any::Any; use std::fmt; use std::sync::Arc; @@ -67,10 +66,6 @@ impl DisplayAs for PaimonDataSink { #[async_trait] impl DataSink for PaimonDataSink { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> &ArrowSchemaRef { &self.schema } diff --git a/crates/integrations/datafusion/src/relation_planner.rs b/crates/integrations/datafusion/src/relation_planner.rs index fa6e0ad9..acbdfc2d 100644 --- a/crates/integrations/datafusion/src/relation_planner.rs +++ b/crates/integrations/datafusion/src/relation_planner.rs @@ -84,7 +84,7 @@ impl RelationPlanner for PaimonRelationPlanner { let provider = source_as_provider(&source)?; // Check if this is a Paimon table. - let Some(paimon_provider) = provider.as_any().downcast_ref::() else { + let Some(paimon_provider) = provider.downcast_ref::() else { return Ok(RelationPlanning::Original(Box::new(relation))); }; diff --git a/crates/integrations/datafusion/src/sql_context.rs b/crates/integrations/datafusion/src/sql_context.rs index 8ccdc501..6170d6bc 100644 --- a/crates/integrations/datafusion/src/sql_context.rs +++ b/crates/integrations/datafusion/src/sql_context.rs @@ -252,7 +252,6 @@ impl SQLContext { .ok_or_else(|| DataFusionError::Plan(format!("Unknown catalog '{catalog}'")))?; let paimon_provider = catalog_provider - .as_any() .downcast_ref::() .ok_or_else(|| { DataFusionError::Plan(format!("Catalog '{catalog}' is not a Paimon catalog")) @@ -275,7 +274,6 @@ impl SQLContext { .ok_or_else(|| DataFusionError::Plan(format!("Unknown catalog '{catalog}'")))?; let paimon_provider = catalog_provider - .as_any() .downcast_ref::() .ok_or_else(|| { DataFusionError::Plan(format!("Catalog '{catalog}' is not a Paimon catalog")) @@ -295,7 +293,6 @@ impl SQLContext { .ok_or_else(|| DataFusionError::Plan(format!("Unknown catalog '{catalog}'")))?; let paimon_provider = catalog_provider - .as_any() .downcast_ref::() .ok_or_else(|| { DataFusionError::Plan(format!("Catalog '{catalog}' is not a Paimon catalog")) @@ -1094,14 +1091,26 @@ impl SQLContext { // Resolve target column mapping from the explicit column list. // `columns` = before PARTITION, `after_columns` = after PARTITION (Hive-style). - let target_columns = if !insert.columns.is_empty() { - Some(&insert.columns) + let target_columns: Option> = if !insert.columns.is_empty() { + Some( + insert + .columns + .iter() + .map(object_name_to_single_identifier) + .collect::>()?, + ) } else if !insert.after_columns.is_empty() { - Some(&insert.after_columns) + Some( + insert + .after_columns + .iter() + .map(|ident| ident.value.clone()) + .collect(), + ) } else { None }; - let column_reorder: Option> = if let Some(cols) = target_columns { + let column_reorder: Option> = if let Some(cols) = target_columns.as_ref() { if cols.len() != expected_source_cols { return Err(DataFusionError::Plan(format!( "Column list has {} columns, but expected {} non-partition columns", @@ -1109,7 +1118,7 @@ impl SQLContext { expected_source_cols ))); } - let col_names: Vec<&str> = cols.iter().map(|id| id.value.as_str()).collect(); + let col_names: Vec<&str> = cols.iter().map(String::as_str).collect(); let mut reorder = Vec::with_capacity(expected_source_cols); for field in &non_static_fields { let pos = col_names @@ -1764,6 +1773,18 @@ fn object_name_to_string(name: &ObjectName) -> String { .join(".") } +fn object_name_to_single_identifier(name: &ObjectName) -> DFResult { + match name.0.as_slice() { + [part] => part + .as_ident() + .map(|id| id.value.clone()) + .ok_or_else(|| DataFusionError::Plan(format!("Invalid column name: {name}"))), + _ => Err(DataFusionError::Plan(format!( + "Expected a simple column name, got: {name}" + ))), + } +} + /// Extract key-value pairs from [`CreateTableOptions`]. fn extract_options(opts: &CreateTableOptions) -> DFResult> { let sql_options = match opts { diff --git a/crates/integrations/datafusion/src/system_tables/branches.rs b/crates/integrations/datafusion/src/system_tables/branches.rs index 468a9ad7..01d942c5 100644 --- a/crates/integrations/datafusion/src/system_tables/branches.rs +++ b/crates/integrations/datafusion/src/system_tables/branches.rs @@ -17,7 +17,6 @@ //! Mirrors Java [BranchesTable](https://github.com/apache/paimon/blob/release-1.3/paimon-core/src/main/java/org/apache/paimon/table/system/BranchesTable.java). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -60,10 +59,6 @@ struct BranchesTable { #[async_trait] impl TableProvider for BranchesTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { branches_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/files.rs b/crates/integrations/datafusion/src/system_tables/files.rs index 670b887e..07264a3d 100644 --- a/crates/integrations/datafusion/src/system_tables/files.rs +++ b/crates/integrations/datafusion/src/system_tables/files.rs @@ -17,7 +17,6 @@ //! Mirrors Java [FilesTable](https://github.com/apache/paimon/blob/release-1.4/paimon-core/src/main/java/org/apache/paimon/table/system/FilesTable.java). -use std::any::Any; use std::collections::{BTreeMap, HashMap}; use std::sync::{Arc, OnceLock}; @@ -91,10 +90,6 @@ struct FilesTable { #[async_trait] impl TableProvider for FilesTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { files_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/manifests.rs b/crates/integrations/datafusion/src/system_tables/manifests.rs index 89bf66ce..4e438ae2 100644 --- a/crates/integrations/datafusion/src/system_tables/manifests.rs +++ b/crates/integrations/datafusion/src/system_tables/manifests.rs @@ -17,7 +17,6 @@ //! Mirrors Java [ManifestsTable](https://github.com/apache/paimon/blob/release-1.4/paimon-core/src/main/java/org/apache/paimon/table/system/ManifestsTable.java). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -68,10 +67,6 @@ struct ManifestsTable { #[async_trait] impl TableProvider for ManifestsTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { manifests_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/options.rs b/crates/integrations/datafusion/src/system_tables/options.rs index fe86c92c..b611ba37 100644 --- a/crates/integrations/datafusion/src/system_tables/options.rs +++ b/crates/integrations/datafusion/src/system_tables/options.rs @@ -17,7 +17,6 @@ //! Mirrors Java [OptionsTable](https://github.com/apache/paimon/blob/release-1.3/paimon-core/src/main/java/org/apache/paimon/table/system/OptionsTable.java). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -54,10 +53,6 @@ struct OptionsTable { #[async_trait] impl TableProvider for OptionsTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { options_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/partitions.rs b/crates/integrations/datafusion/src/system_tables/partitions.rs index 7fa349a5..f43501b0 100644 --- a/crates/integrations/datafusion/src/system_tables/partitions.rs +++ b/crates/integrations/datafusion/src/system_tables/partitions.rs @@ -17,7 +17,6 @@ //! Mirrors Java [PartitionsTable](https://github.com/apache/paimon/blob/release-1.4/paimon-core/src/main/java/org/apache/paimon/table/system/PartitionsTable.java). -use std::any::Any; use std::collections::{BTreeMap, HashMap}; use std::sync::{Arc, OnceLock}; @@ -102,10 +101,6 @@ impl std::fmt::Debug for PartitionsTable { #[async_trait] impl TableProvider for PartitionsTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { partitions_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/physical_files_size.rs b/crates/integrations/datafusion/src/system_tables/physical_files_size.rs index 5380612b..a3e242dd 100644 --- a/crates/integrations/datafusion/src/system_tables/physical_files_size.rs +++ b/crates/integrations/datafusion/src/system_tables/physical_files_size.rs @@ -17,7 +17,6 @@ //! Mirrors Java [PhysicalFilesSizeTable](https://github.com/apache/paimon/blob/release-1.4/paimon-core/src/main/java/org/apache/paimon/table/system). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -61,10 +60,6 @@ struct PhysicalFilesSizeTable { #[async_trait] impl TableProvider for PhysicalFilesSizeTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { output_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/referenced_files_size.rs b/crates/integrations/datafusion/src/system_tables/referenced_files_size.rs index cce5ed3f..c8f2b40a 100644 --- a/crates/integrations/datafusion/src/system_tables/referenced_files_size.rs +++ b/crates/integrations/datafusion/src/system_tables/referenced_files_size.rs @@ -17,7 +17,6 @@ //! Mirrors Java [ReferencedFilesSizeTable](https://github.com/apache/paimon/blob/release-1.4/paimon-core/src/main/java/org/apache/paimon/table/system). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -62,10 +61,6 @@ struct ReferencedFilesSizeTable { #[async_trait] impl TableProvider for ReferencedFilesSizeTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { output_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/schemas.rs b/crates/integrations/datafusion/src/system_tables/schemas.rs index 2ff9d40b..800188d5 100644 --- a/crates/integrations/datafusion/src/system_tables/schemas.rs +++ b/crates/integrations/datafusion/src/system_tables/schemas.rs @@ -17,7 +17,6 @@ //! Mirrors Java [SchemasTable](https://github.com/apache/paimon/blob/release-1.3/paimon-core/src/main/java/org/apache/paimon/table/system/SchemasTable.java). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -66,10 +65,6 @@ struct SchemasTable { #[async_trait] impl TableProvider for SchemasTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { schemas_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/snapshots.rs b/crates/integrations/datafusion/src/system_tables/snapshots.rs index 9751ef35..17f3ca89 100644 --- a/crates/integrations/datafusion/src/system_tables/snapshots.rs +++ b/crates/integrations/datafusion/src/system_tables/snapshots.rs @@ -17,7 +17,6 @@ //! Mirrors Java [SnapshotsTable](https://github.com/apache/paimon/blob/release-1.3/paimon-core/src/main/java/org/apache/paimon/table/system/SnapshotsTable.java). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -72,10 +71,6 @@ struct SnapshotsTable { #[async_trait] impl TableProvider for SnapshotsTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { snapshots_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/table_indexes.rs b/crates/integrations/datafusion/src/system_tables/table_indexes.rs index 25bdd3b8..43a8fd02 100644 --- a/crates/integrations/datafusion/src/system_tables/table_indexes.rs +++ b/crates/integrations/datafusion/src/system_tables/table_indexes.rs @@ -17,7 +17,6 @@ //! Mirrors Java [TableIndexesTable](https://github.com/apache/paimon/blob/master/paimon-core/src/main/java/org/apache/paimon/table/system/TableIndexesTable.java). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -90,10 +89,6 @@ struct TableIndexesTable { #[async_trait] impl TableProvider for TableIndexesTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { table_indexes_schema() } diff --git a/crates/integrations/datafusion/src/system_tables/tags.rs b/crates/integrations/datafusion/src/system_tables/tags.rs index ab0316f8..41f51ca3 100644 --- a/crates/integrations/datafusion/src/system_tables/tags.rs +++ b/crates/integrations/datafusion/src/system_tables/tags.rs @@ -17,7 +17,6 @@ //! Mirrors Java [TagsTable](https://github.com/apache/paimon/blob/release-1.3/paimon-core/src/main/java/org/apache/paimon/table/system/TagsTable.java). -use std::any::Any; use std::sync::{Arc, OnceLock}; use async_trait::async_trait; @@ -71,10 +70,6 @@ struct TagsTable { #[async_trait] impl TableProvider for TagsTable { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> SchemaRef { tags_schema() } diff --git a/crates/integrations/datafusion/src/table/mod.rs b/crates/integrations/datafusion/src/table/mod.rs index 316bf9db..1b8e3492 100644 --- a/crates/integrations/datafusion/src/table/mod.rs +++ b/crates/integrations/datafusion/src/table/mod.rs @@ -17,7 +17,6 @@ //! Paimon table provider for DataFusion. -use std::any::Any; use std::sync::Arc; use async_trait::async_trait; @@ -157,10 +156,6 @@ impl PaimonScanBuilder<'_> { #[async_trait] impl TableProvider for PaimonTableProvider { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> ArrowSchemaRef { self.schema.clone() } @@ -324,7 +319,6 @@ mod tests { ) -> Vec> { let plan = plan_scan(provider, filters, limit).await; let scan = plan - .as_any() .downcast_ref::() .expect("Expected PaimonTableScan"); @@ -618,7 +612,6 @@ mod tests { let full_plan = plan_partitions(&provider, vec![filter.clone()], None).await; let plan = plan_scan(&provider, vec![filter], Some(1)).await; let scan = plan - .as_any() .downcast_ref::() .expect("Expected PaimonTableScan"); @@ -655,7 +648,6 @@ mod tests { .await .expect("scan() should succeed"); let scan = plan - .as_any() .downcast_ref::() .expect("Expected PaimonTableScan"); @@ -677,7 +669,6 @@ mod tests { .await .expect("full scan should succeed"); let full_scan = full_plan - .as_any() .downcast_ref::() .expect("Expected PaimonTableScan"); assert_eq!( @@ -691,7 +682,6 @@ mod tests { .await .expect("projected scan should succeed"); let projected_scan = projected_plan - .as_any() .downcast_ref::() .expect("Expected PaimonTableScan"); @@ -707,7 +697,6 @@ mod tests { let full_plan = plan_partitions(&provider, vec![], None).await; let plan = plan_scan(&provider, vec![], Some(1)).await; let scan = plan - .as_any() .downcast_ref::() .expect("Expected PaimonTableScan"); @@ -731,7 +720,6 @@ mod tests { let full_plan = plan_partitions(&provider, vec![filter.clone()], None).await; let plan = plan_scan(&provider, vec![filter], Some(1)).await; let scan = plan - .as_any() .downcast_ref::() .expect("Expected PaimonTableScan"); diff --git a/crates/integrations/datafusion/src/vector_search.rs b/crates/integrations/datafusion/src/vector_search.rs index 536e3795..694f21bb 100644 --- a/crates/integrations/datafusion/src/vector_search.rs +++ b/crates/integrations/datafusion/src/vector_search.rs @@ -15,7 +15,6 @@ // specific language governing permissions and limitations // under the License. -use std::any::Any; use std::fmt::Debug; use std::sync::Arc; @@ -167,10 +166,6 @@ impl LateralVectorSearchTableProvider { #[async_trait] impl TableProvider for LateralVectorSearchTableProvider { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> ArrowSchemaRef { self.inner.schema() } @@ -202,10 +197,6 @@ struct VectorSearchTableProvider { #[async_trait] impl TableProvider for VectorSearchTableProvider { - fn as_any(&self) -> &dyn Any { - self - } - fn schema(&self) -> ArrowSchemaRef { self.inner.schema() } diff --git a/crates/paimon/DEPENDENCIES.rust.tsv b/crates/paimon/DEPENDENCIES.rust.tsv index 0d2a8df1..9e06a05f 100644 --- a/crates/paimon/DEPENDENCIES.rust.tsv +++ b/crates/paimon/DEPENDENCIES.rust.tsv @@ -9,6 +9,7 @@ allocator-api2@0.2.21 X X android_system_properties@0.1.5 X X anyhow@1.0.102 X X apache-avro@0.21.0 X +approx@0.5.1 X arc-swap@1.9.1 X X arrow@58.3.0 X arrow-arith@58.3.0 X @@ -29,9 +30,10 @@ async-stream-impl@0.3.6 X async-trait@0.1.89 X X atoi@2.0.0 X atomic-waker@1.1.2 X X -autocfg@1.5.0 X X +autocfg@1.5.1 X X backon@1.6.0 X base64@0.22.1 X X +base64ct@1.8.3 X X bigdecimal@0.4.10 X X bitflags@2.11.1 X X bitpacking@0.9.3 X @@ -39,14 +41,14 @@ block-buffer@0.10.4 X X block-padding@0.3.3 X X bon@3.9.1 X X bon-macros@3.9.1 X X -brotli@8.0.2 X X -brotli-decompressor@5.0.0 X X -bumpalo@3.20.2 X X +brotli@8.0.3 X X +brotli-decompressor@5.0.1 X X +bumpalo@3.20.3 X X bytemuck@1.25.0 X X X byteorder@1.5.0 X X bytes@1.11.1 X cbc@0.1.2 X X -cc@1.2.62 X X +cc@1.2.63 X X census@0.4.2 X cfg-if@1.0.4 X X chrono@0.4.44 X X @@ -76,15 +78,15 @@ ctr@0.9.2 X X darling@0.23.0 X darling_core@0.23.0 X darling_macro@0.23.0 X +der@0.7.10 X X deranged@0.5.8 X X des@0.8.1 X X diff@0.1.13 X X digest@0.10.7 X X -displaydoc@0.2.5 X X -dlv-list@0.5.2 X X +displaydoc@0.2.6 X X dns-lookup@3.0.1 X X downcast-rs@1.2.1 X X -either@1.15.0 X X +either@1.16.0 X X encoding_rs@0.8.35 X X X equivalent@1.0.2 X X errno@0.3.14 X X @@ -119,7 +121,6 @@ getrandom@0.4.2 X X gloo-timers@0.3.0 X X h2@0.4.14 X half@2.7.1 X X -hashbrown@0.14.5 X X hashbrown@0.15.5 X X hashbrown@0.17.1 X X hdfs-native@0.13.5 X @@ -129,12 +130,12 @@ hex@0.4.3 X X hmac@0.12.1 X X home@0.5.12 X X htmlescape@0.3.1 X X X -http@1.4.0 X X +http@1.4.1 X X http-body@1.0.1 X http-body-util@0.1.3 X httparse@1.10.1 X X httpdate@1.0.3 X X -hyper@1.9.0 X +hyper@1.10.1 X hyper-rustls@0.27.9 X X X hyper-tls@0.6.0 X X hyper-util@0.1.20 X @@ -158,11 +159,13 @@ ipnet@2.12.0 X X itertools@0.12.1 X X itertools@0.14.0 X X itoa@1.0.18 X X -jiff@0.2.24 X X +jiff@0.2.28 X X jiff-tzdb@0.1.6 X X jiff-tzdb-platform@0.1.3 X X jobserver@0.1.34 X X -js-sys@0.3.98 X X +js-sys@0.3.99 X X +jsonwebtoken@9.3.1 X +lazy_static@1.5.0 X X levenshtein_automata@0.2.1 X lexical-core@1.0.6 X X lexical-parse-float@1.0.6 X X @@ -171,31 +174,34 @@ lexical-util@1.0.7 X X lexical-write-float@1.0.6 X X lexical-write-integer@1.0.6 X X libc@0.2.186 X X -libloading@0.8.9 X libloading@0.9.0 X libm@0.2.16 X -libredox@0.1.16 X +libredox@0.1.17 X linux-raw-sys@0.12.1 X X X linux-raw-sys@0.4.15 X X X litemap@0.8.2 X -log@0.4.29 X X +log@0.4.30 X X lru@0.12.5 X lz4_flex@0.11.6 X lz4_flex@0.13.1 X lzokay-native@0.1.0 X +matrixmultiply@0.3.10 X X md-5@0.10.6 X X measure_time@0.8.3 X -memchr@2.8.0 X X +memchr@2.8.1 X X memmap2@0.9.10 X X mime@0.3.17 X X minimal-lexical@0.2.1 X X miniz_oxide@0.8.9 X X X -mio@1.2.0 X +mio@1.2.1 X murmurhash32@0.3.1 X +nalgebra@0.33.3 X +nalgebra-macros@0.2.2 X native-tls@0.2.18 X X nom@7.1.3 X num@0.4.3 X X num-bigint@0.4.6 X X +num-bigint-dig@0.8.6 X X num-complex@0.4.6 X X num-conv@0.2.2 X X num-integer@0.1.46 X X @@ -212,15 +218,21 @@ openssl-probe@0.2.1 X X openssl-sys@0.9.116 X orc-rust@0.8.0 X ordered-float@2.10.1 X -ordered-multimap@0.7.3 X ownedbytes@0.7.0 X -paimon@0.2.0 X +paimon@0.3.0 X +paimon-vindex-core@0.1.0 X parquet@58.3.0 X paste@1.0.15 X X +pbkdf2@0.12.2 X X +pem@3.0.6 X +pem-rfc7468@0.7.0 X X percent-encoding@2.3.2 X X phf@0.12.1 X phf_shared@0.12.1 X pin-project-lite@0.2.17 X X +pkcs1@0.7.5 X X +pkcs5@0.7.1 X X +pkcs8@0.10.2 X X pkg-config@0.3.33 X X plain@0.2.3 X X portable-atomic@1.13.1 X X @@ -249,9 +261,9 @@ rand_chacha@0.9.0 X X rand_core@0.6.4 X X rand_core@0.9.5 X X rand_distr@0.4.3 X X +rawpointer@0.2.1 X X rayon@1.12.0 X X rayon-core@1.13.0 X X -redox_syscall@0.7.5 X regex@1.12.3 X X regex-automata@0.4.14 X X regex-lite@0.1.9 X X @@ -261,7 +273,7 @@ reqwest@0.12.28 X X ring@0.17.14 X X roaring@0.11.4 X X roxmltree@0.21.1 X X -rust-ini@0.21.3 X +rsa@0.9.10 X X rust-stemmers@1.2.0 X X rustc-hash@1.1.0 X X rustc_version@0.4.1 X X @@ -272,7 +284,10 @@ rustls-pki-types@1.14.1 X X rustls-webpki@0.103.13 X rustversion@1.0.22 X X ryu@1.0.23 X X +safe_arch@0.7.4 X X X +salsa20@0.10.2 X X schannel@0.1.29 X +scrypt@0.11.0 X X security-framework@3.7.0 X X security-framework-sys@2.17.0 X X semver@1.0.28 X X @@ -281,26 +296,31 @@ serde@1.0.228 X X serde_bytes@0.11.19 X X serde_core@1.0.228 X X serde_derive@1.0.228 X X -serde_json@1.0.149 X X +serde_json@1.0.150 X X serde_repr@0.1.20 X X serde_urlencoded@0.7.1 X X serde_with@3.20.0 X X serde_with_macros@3.20.0 X X sha1@0.10.6 X X sha2@0.10.9 X X -shlex@1.3.0 X X +shlex@2.0.1 X X +signature@2.2.0 X X +simba@0.9.1 X simd-adler32@0.3.9 X simdutf8@0.1.5 X X +simple_asn1@0.6.4 X siphasher@1.0.3 X X sketches-ddsketch@0.2.2 X slab@0.4.12 X smallvec@1.15.1 X X snafu@0.8.9 X X -snafu@0.9.0 X X +snafu@0.9.1 X X snafu-derive@0.8.9 X X -snafu-derive@0.9.0 X X +snafu-derive@0.9.1 X X snap@1.1.1 X -socket2@0.6.3 X X +socket2@0.6.4 X X +spin@0.9.8 X +spki@0.7.3 X X stable_deref_trait@1.2.1 X X strsim@0.11.1 X strum@0.27.2 X @@ -328,6 +348,7 @@ thiserror-impl@2.0.18 X X thrift@0.17.0 X time@0.3.47 X X time-core@0.1.8 X X +time-macros@0.2.27 X X tiny-keccak@2.0.2 X tinystr@0.8.3 X tokio@1.52.3 X @@ -345,7 +366,7 @@ try-lock@0.2.5 X twox-hash@2.1.2 X typed-builder@0.19.1 X X typed-builder-macro@0.19.1 X X -typenum@1.20.0 X X +typenum@1.20.1 X X unicode-ident@1.0.24 X X X unicode-segmentation@1.13.2 X X unicode-width@0.2.2 X X @@ -354,7 +375,7 @@ url@2.5.8 X X urlencoding@2.1.3 X utf8-ranges@1.0.5 X X utf8_iter@1.0.4 X X -uuid@1.23.1 X X +uuid@1.23.2 X X vcpkg@0.2.15 X X version_check@0.9.5 X X want@0.3.1 X @@ -362,15 +383,16 @@ wasi@0.11.1+wasi-snapshot-preview1 X X X wasip2@1.0.3+wasi-0.2.9 X X X wasip3@0.4.0+wasi-0.3.0-rc-2026-01-06 X X X wasite@0.1.0 X X X -wasm-bindgen@0.2.121 X X -wasm-bindgen-futures@0.4.71 X X -wasm-bindgen-macro@0.2.121 X X -wasm-bindgen-macro-support@0.2.121 X X -wasm-bindgen-shared@0.2.121 X X +wasm-bindgen@0.2.122 X X +wasm-bindgen-futures@0.4.72 X X +wasm-bindgen-macro@0.2.122 X X +wasm-bindgen-macro-support@0.2.122 X X +wasm-bindgen-shared@0.2.122 X X wasm-streams@0.4.2 X X -web-sys@0.3.98 X X +web-sys@0.3.99 X X webpki-roots@1.0.7 X whoami@1.6.1 X X X +wide@0.7.33 X X X winapi@0.3.9 X X winapi-i686-pc-windows-gnu@0.4.0 X X winapi-x86_64-pc-windows-gnu@0.4.0 X X @@ -409,8 +431,8 @@ writeable@0.6.3 X yansi@1.0.1 X X yoke@0.8.2 X yoke-derive@0.8.2 X -zerocopy@0.8.48 X X X -zerocopy-derive@0.8.48 X X X +zerocopy@0.8.50 X X X +zerocopy-derive@0.8.50 X X X zerofrom@0.1.8 X zerofrom-derive@0.1.7 X zeroize@1.8.2 X X diff --git a/docs/src/sql.md b/docs/src/sql.md index 88b32100..b43f84cb 100644 --- a/docs/src/sql.md +++ b/docs/src/sql.md @@ -25,9 +25,9 @@ under the License. ```toml [dependencies] -paimon = "0.1.0" -paimon-datafusion = "0.1.0" -datafusion = "53" +paimon = "0.3.0" +paimon-datafusion = "0.3.0" +datafusion = "54.0.0" tokio = { version = "1", features = ["full"] } ``` @@ -35,14 +35,27 @@ To query tables with Mosaic data files, enable the `mosaic` feature on both crat ```toml [dependencies] -paimon = { version = "0.1.0", features = ["mosaic"] } -paimon-datafusion = { version = "0.1.0", features = ["mosaic"] } -datafusion = "53" +paimon = { version = "0.3.0", features = ["mosaic"] } +paimon-datafusion = { version = "0.3.0", features = ["mosaic"] } +datafusion = "54.0.0" tokio = { version = "1", features = ["full"] } ``` Mosaic support is currently read-only. SQL queries can read existing `.mosaic` files, but Paimon Rust does not write Mosaic data files yet. +## SQL Support Scope + +`paimon-datafusion` currently targets Apache DataFusion 54.x. The workspace pins `datafusion = "54.0.0"`. + +SQL support has two layers: + +- DataFusion provides the parser, query planner, optimizer, execution engine, expressions, scalar functions, aggregate functions, and window functions. SQL statements that `SQLContext` does not intercept are delegated to DataFusion. This includes the DataFusion SQL surface for `SELECT` queries, CTEs (including recursive CTEs), subqueries, joins including `LATERAL` joins, SQL lambda functions, grouping, `HAVING`, window clauses, `QUALIFY`, set operations, `ORDER BY`, `LIMIT`/`OFFSET`, `EXPLAIN`, information-schema commands such as `SHOW TABLES`, `DESCRIBE`, `COPY`, and ordinary `INSERT`. +- Paimon-specific table management and row-level writes are implemented by `SQLContext`. This includes Paimon `CREATE TABLE`, `ALTER TABLE`, `DROP TABLE`, `CREATE TEMPORARY TABLE`, `CREATE TEMPORARY VIEW`, `DROP TEMPORARY TABLE` / `VIEW`, `INSERT OVERWRITE ... PARTITION`, `UPDATE`, `DELETE`, `MERGE INTO`, `TRUNCATE TABLE`, `ALTER TABLE ... DROP PARTITION`, `CALL sys.*`, Paimon time travel, and `SET` / `RESET 'paimon.*'`. + +Not every DataFusion DDL/DML statement maps to a Paimon table operation. For Paimon catalogs, `CREATE EXTERNAL TABLE`, `LOCATION`, persistent `CREATE VIEW`, `CREATE MATERIALIZED VIEW`, and persistent `CREATE TABLE AS SELECT` are rejected or not implemented. DataFusion `COPY` can export query results to files; it does not create or commit Paimon table files. + +For the exact delegated SQL grammar, see the [DataFusion SQL Reference](https://datafusion.apache.org/user-guide/sql/index.html). + ## Registering Catalog Register an entire Paimon catalog so all databases and tables are accessible via `paimon.database.table` syntax: @@ -58,14 +71,14 @@ async fn example() -> Result<(), Box> { let catalog = Arc::new(FileSystemCatalog::new(options)?); let mut ctx = SQLContext::new(); - ctx.register_catalog("paimon", catalog)?; + ctx.register_catalog("paimon", catalog).await?; let df = ctx.sql("SELECT * FROM paimon.default.my_table").await?; df.show().await?; Ok(()) } ``` -`SQLContext::new` creates a session context with the Paimon relation planner pre-registered. Use `register_catalog` to add one or more Paimon catalogs; registering a catalog also registers the built-in table-valued functions (`vector_search`, `full_text_search`) against it. It also manages session-scoped dynamic options internally for `SET`/`RESET` support. +`SQLContext::new` creates a session context with the Paimon relation planner pre-registered. Use `register_catalog(...).await` to add one or more Paimon catalogs; registering a catalog also registers the built-in table-valued functions (`vector_search`, `full_text_search`) against it. It also manages session-scoped dynamic options internally for `SET`/`RESET` support. ## Data Types @@ -93,10 +106,11 @@ The following SQL data types are supported in CREATE TABLE and mapped to their c ## DDL -### CREATE SCHEMA / DROP SCHEMA +### CREATE DATABASE / CREATE SCHEMA / DROP SCHEMA ```sql CREATE SCHEMA paimon.my_db; +CREATE DATABASE paimon.my_db; DROP SCHEMA paimon.my_db CASCADE; ``` @@ -249,10 +263,10 @@ The table type determines which row-level DML operations are supported: | `TRUNCATE TABLE` | Supported | Supported | Supported | | `ALTER TABLE ... DROP PARTITION` | Supported for partitioned tables | Supported for partitioned tables | Supported for partitioned tables | | `UPDATE` | Supported via Copy-on-Write | Not supported | Supported via row-id update | -| `DELETE` | Supported via Copy-on-Write | Not supported | Not supported | -| `MERGE INTO` | Supported via Copy-on-Write | Not supported | Supported for matched `UPDATE` and not-matched `INSERT`; matched `DELETE` is not supported | +| `DELETE` | Supported via Copy-on-Write | Not supported | Supported when deletion vectors are enabled | +| `MERGE INTO` | Supported via Copy-on-Write | Not supported | Supported for matched `UPDATE`, matched `DELETE` with deletion vectors, and not-matched `INSERT` | -A data-evolution row-tracking table must have both `'data-evolution.enabled' = 'true'` and `'row-tracking.enabled' = 'true'`, and must not have primary keys. Primary-key row-level `UPDATE`, `DELETE`, and `MERGE INTO` are not supported even when data evolution is enabled. +A data-evolution row-tracking table must have both `'data-evolution.enabled' = 'true'` and `'row-tracking.enabled' = 'true'`, and must not have primary keys. `DELETE` and matched `DELETE` in `MERGE INTO` additionally require `'deletion-vectors.enabled' = 'true'`. Primary-key row-level `UPDATE`, `DELETE`, and `MERGE INTO` are not supported even when data evolution is enabled. ### INSERT INTO @@ -322,7 +336,9 @@ For append-only tables, deletes are executed using Copy-on-Write: DELETE FROM paimon.my_db.t WHERE name = 'b'; ``` -`DELETE` is not supported on primary-key tables or data-evolution tables. +For data-evolution row-tracking tables without primary keys, deletes are executed via deletion vectors and require `'deletion-vectors.enabled' = 'true'`. + +`DELETE` is not supported on primary-key tables. ### MERGE INTO @@ -361,7 +377,7 @@ ON target.id = source.id WHEN MATCHED THEN UPDATE SET name = source.name; ``` -For append-only tables, `MERGE INTO` uses Copy-on-Write file rewriting and supports matched `UPDATE`, matched `DELETE`, and not-matched `INSERT`. For data-evolution row-tracking tables without primary keys, `MERGE INTO` uses the `_ROW_ID` virtual column for row-level tracking and supports matched `UPDATE` plus not-matched `INSERT`; matched `DELETE` is not yet supported. Primary-key tables are not supported for `MERGE INTO`. +For append-only tables, `MERGE INTO` uses Copy-on-Write file rewriting and supports matched `UPDATE`, matched `DELETE`, and not-matched `INSERT`. For data-evolution row-tracking tables without primary keys, `MERGE INTO` uses the `_ROW_ID` virtual column for row-level tracking and supports matched `UPDATE`, matched `DELETE` when deletion vectors are enabled, and not-matched `INSERT`. Primary-key tables are not supported for `MERGE INTO`. ### TRUNCATE TABLE @@ -492,6 +508,7 @@ The following filter predicates are pushed down to the Paimon storage layer: - Logical: `AND`, `OR` - Null checks: `IS NULL`, `IS NOT NULL` - Range: `IN`, `NOT IN`, `BETWEEN` +- String predicates: positive `LIKE`, including no-wildcard, prefix, suffix, contains, and more complex patterns. `NOT LIKE` and `ILIKE` are evaluated by DataFusion as residual filters. Filters on partition columns enable exact partition pruning, avoiding scans of irrelevant data. @@ -540,6 +557,24 @@ SELECT * FROM vector_search('paimon.my_db.items', 'embedding', '[1.0, 0.0, 0.0, The function performs ANN search across all Lumina vector index files for the target column, merges results, and returns the top-k rows ordered by relevance score. If no matching index is found, an empty result is returned. +### Lateral Joins + +Use `CROSS JOIN LATERAL` when query vectors come from another relation. In this mode, the third `vector_search` argument is a column reference from the left side of the join instead of a JSON literal: + +```sql +SELECT q.id AS query_id, r.id AS result_id +FROM paimon.my_db.queries q +CROSS JOIN LATERAL vector_search( + 'paimon.my_db.items', + 'embedding', + q.embedding, + 10 +) AS r +ORDER BY query_id, result_id; +``` + +The query-vector column must have Arrow type `List` or `FixedSizeList`. Null query-vector rows produce no joined results, and null elements inside a vector are rejected. The lateral form returns the left row joined with the top-k matching rows from the target Paimon table for that row's query vector. + ### Supported Metrics The distance metric is configured at index creation time via table options: @@ -572,8 +607,8 @@ Paimon supports full-text search via the Tantivy search engine. The `full_text_s ```toml [dependencies] -paimon = { version = "0.1.0", features = ["fulltext"] } -paimon-datafusion = { version = "0.1.0", features = ["fulltext"] } +paimon = { version = "0.3.0", features = ["fulltext"] } +paimon-datafusion = { version = "0.3.0", features = ["fulltext"] } ``` ### Registration @@ -723,7 +758,7 @@ CREATE TEMPORARY VIEW paimon.my_db.active_users AS SELECT * FROM paimon.my_db.us ### Deregister -Use `deregister_temp_table` to remove a temporary table or view programmatically, or use the `DROP TEMPORARY TABLE` / `DROP TEMPORARY VIEW` SQL statements (see the [DDL section](#drop-temporary-table--drop-temporary-view)): +Use `deregister_temp_table` to remove a temporary table or view programmatically, or use the `DROP TEMPORARY TABLE` / `DROP TEMPORARY VIEW` SQL statements (see the [DDL section](#drop-temporary-table-drop-temporary-view)): ```rust ctx.deregister_temp_table("paimon.my_db.users")?; @@ -981,7 +1016,7 @@ bucket writes, or advanced aggregation options such as `ignore-retract`, | Option | Description | |---|---| | `'sequence.field' = 'col'` | Sequence field used to determine which record wins during deduplication | -| `'data-evolution.enabled' = 'true'` | Enable data evolution (partial-column writes, row-level UPDATE/MERGE) | +| `'data-evolution.enabled' = 'true'` | Enable data evolution (partial-column writes, row-level UPDATE/MERGE/DELETE) | | `'deletion-vectors.enabled' = 'true'` | Enable deletion vectors | | `'cross-partition-update.enabled' = 'true'` | Allow cross-partition updates | | `'changelog-producer' = 'input'` | Changelog producer (PK tables with input mode reject writes) | @@ -1002,7 +1037,7 @@ async fn main() -> Result<(), Box> { // Create SQL context and register catalog let mut ctx = SQLContext::new(); - ctx.register_catalog("paimon", catalog)?; + ctx.register_catalog("paimon", catalog).await?; // Create database and table ctx.sql("CREATE SCHEMA paimon.my_db").await?;