diff --git a/.github/workflows/pr.yaml b/.github/workflows/pr.yaml index 81762025..566c17c1 100644 --- a/.github/workflows/pr.yaml +++ b/.github/workflows/pr.yaml @@ -13,7 +13,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable @@ -44,7 +44,7 @@ jobs: - 'adbc' steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable @@ -68,7 +68,7 @@ jobs: MYSQL_DOCKER_IMAGE: public.ecr.aws/ubuntu/mysql:8.0-22.04_beta steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable @@ -128,7 +128,7 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable diff --git a/Cargo.lock b/Cargo.lock index 39d525fa..6bddcf6a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -52,9 +52,9 @@ dependencies = [ [[package]] name = "adbc_core" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b891479797b5588e320f7fd3caf15faba311cf8f8a76911195b6a3d55304eb" +checksum = "1a38cdcc3e43dc645038c2b6339dd98610c48ae593cc67839452e6670fa09f27" dependencies = [ "arrow-array", "arrow-schema", @@ -62,9 +62,9 @@ dependencies = [ [[package]] name = "adbc_driver_manager" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "844df935978b736a83ac34fc60b81ef06d792389ba00e37e2c0e3db09986512e" +checksum = "75c8a313f30eb7d90584eda8760037c746a1827297100b64704b30f3f6cbd203" dependencies = [ "adbc_core", "adbc_ffi", @@ -76,9 +76,9 @@ dependencies = [ [[package]] name = "adbc_ffi" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c30e0f28a8363a76a8ec802934223ea5811ea658308c7403c8beb9aa86fa808f" +checksum = "08d36274376fdc4849cf47a78f3baeef4ae1654ef703dc3148d91adde3336c11" dependencies = [ "adbc_core", "arrow-array", @@ -97,7 +97,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "version_check", ] @@ -270,8 +270,8 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-arith", "arrow-array", @@ -291,21 +291,21 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "chrono", - "num", + "num-traits", ] [[package]] name = "arrow-array" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "ahash 0.8.12", "arrow-buffer", @@ -314,28 +314,32 @@ dependencies = [ "chrono", "chrono-tz", "half", - "hashbrown 0.15.5", - "num", + "hashbrown 0.16.1", + "num-complex", + "num-integer", + "num-traits", ] [[package]] name = "arrow-buffer" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "bytes", "half", - "num", + "num-bigint", + "num-traits", ] [[package]] name = "arrow-cast" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", + "arrow-ord", "arrow-schema", "arrow-select", "atoi", @@ -344,14 +348,14 @@ dependencies = [ "comfy-table", "half", "lexical-core", - "num", + "num-traits", "ryu", ] [[package]] name = "arrow-csv" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-cast", @@ -364,19 +368,20 @@ dependencies = [ [[package]] name = "arrow-data" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-buffer", "arrow-schema", "half", - "num", + "num-integer", + "num-traits", ] [[package]] name = "arrow-flight" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-arith", "arrow-array", @@ -394,29 +399,31 @@ dependencies = [ "futures", "once_cell", "paste", - "prost 0.13.5", + "prost", "prost-types", "tonic", + "tonic-prost", ] [[package]] name = "arrow-ipc" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", + "arrow-select", "flatbuffers", - "lz4_flex", + "lz4_flex 0.12.0", "zstd", ] [[package]] name = "arrow-json" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-buffer", @@ -425,20 +432,22 @@ dependencies = [ "arrow-schema", "chrono", "half", - "indexmap 2.12.1", + "indexmap 2.13.0", + "itoa", "lexical-core", "memchr", - "num", - "serde", + "num-traits", + "ryu", + "serde_core", "serde_json", "simdutf8", ] [[package]] name = "arrow-odbc" -version = "20.1.1" +version = "21.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16890fc7c22c174fc1742c9c2cd97e4967aa1f7ec399115414d74d9659c84a24" +checksum = "e3d8a5f0627736d6df11766d3c16a157629555fc351471ffdf0d4e1a21deb798" dependencies = [ "arrow", "atoi", @@ -450,8 +459,8 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-buffer", @@ -462,8 +471,8 @@ dependencies = [ [[package]] name = "arrow-pyarrow" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-data", @@ -473,8 +482,8 @@ dependencies = [ [[package]] name = "arrow-row" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-buffer", @@ -485,31 +494,32 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "bitflags 2.10.0", "serde", + "serde_core", "serde_json", ] [[package]] name = "arrow-select" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "ahash 0.8.12", "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", - "num", + "num-traits", ] [[package]] name = "arrow-string" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "arrow-array", "arrow-buffer", @@ -517,7 +527,7 @@ dependencies = [ "arrow-schema", "arrow-select", "memchr", - "num", + "num-traits", "regex", "regex-syntax", ] @@ -579,7 +589,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -590,7 +600,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -616,9 +626,9 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b098575ebe77cb6d14fc7f32749631a6e44edbef6b796f89b020e99ba20d425" +checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" dependencies = [ "axum-core", "bytes", @@ -641,9 +651,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.5.5" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59446ce19cd142f8833f856eb31f3eb097812d1479ab224f54d72428ca21ea22" +checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", @@ -665,12 +675,13 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bb8" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "212d8b8e1a22743d9241575c6ba822cf9c8fef34771c86ab7e477a4fbfd254e5" +checksum = "457d7ed3f888dfd2c7af56d4975cade43c622f74bdcddfed6d4352f57acc6310" dependencies = [ "futures-util", "parking_lot", + "portable-atomic", "tokio", ] @@ -687,9 +698,9 @@ dependencies = [ [[package]] name = "bigdecimal" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "560f42649de9fa436b73517378a147ec21f6c997a546581df4b4b31677828934" +checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695" dependencies = [ "autocfg", "libm", @@ -733,15 +744,16 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" +checksum = "2468ef7d57b3fb7e16b576e8377cdbde2320c60e1491e961d11da40fc4f02a2d" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", + "cpufeatures", ] [[package]] @@ -809,9 +821,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +checksum = "d1da5ab77c1437701eeff7c88d968729e7766172279eab0676857b3d63af7a6f" dependencies = [ "borsh-derive", "cfg_aliases", @@ -819,15 +831,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.7" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +checksum = "0686c856aa6aac0c4498f936d7d6a02df690f614c03e4d906d1018062b5c5e2c" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -860,10 +872,10 @@ dependencies = [ "ahash 0.8.12", "base64", "bitvec", - "getrandom 0.2.16", + "getrandom 0.2.17", "getrandom 0.3.4", "hex", - "indexmap 2.12.1", + "indexmap 2.13.0", "js-sys", "once_cell", "rand 0.9.2", @@ -894,17 +906,18 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.19.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" [[package]] name = "byte-unit" -version = "5.1.6" +version = "5.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1cd29c3c585209b0cbc7309bfe3ed7efd8c84c21b7af29c8bfae908f8777174" +checksum = "8c6d47a4e2961fb8721bcfc54feae6455f2f64e7054f9bc67e875f0e77f4c58d" dependencies = [ "rust_decimal", + "schemars 1.2.0", "serde", "utf8-width", ] @@ -993,9 +1006,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.47" +version = "1.2.52" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd405d82c84ff7f35739f175f67d8b9fb7687a0e84ccdc78bd3568839827cf07" +checksum = "cd4932aefd12402b36c60956a4fe0035421f544799057659ff86f923657aada3" dependencies = [ "find-msvc-tools", "jobserver", @@ -1066,7 +1079,7 @@ dependencies = [ "http-body-util", "hyper", "hyper-util", - "lz4_flex", + "lz4_flex 0.11.5", "replace_with", "sealed", "serde", @@ -1085,7 +1098,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1106,9 +1119,9 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.2.1" +version = "7.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03b7db8e0b4b2fdad6c551e634134e99ec000e5c8c3b6856c65e8bbaded7a3b" +checksum = "958c5d6ecf1f214b4c2bbbbf6ab9523a864bd136dcf71a7e8904799acfe1ad47" dependencies = [ "unicode-segmentation", "unicode-width", @@ -1150,7 +1163,7 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", "once_cell", "tiny-keccak", ] @@ -1166,9 +1179,18 @@ dependencies = [ [[package]] name = "constant_time_eq" -version = "0.3.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" +checksum = "3d52eff69cd5e647efe296129160853a42795992097e8af39800e1060caeea9b" + +[[package]] +name = "convert_case" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "633458d4ef8c78b72454de2d54fd6ab2e60f9e02be22f3c6104cdc8a4e0fceb9" +dependencies = [ + "unicode-segmentation", +] [[package]] name = "core-foundation" @@ -1366,7 +1388,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1380,7 +1402,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1391,7 +1413,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1402,7 +1424,7 @@ checksum = "d38308df82d1080de0afee5d069fa14b0326a88c14f15c5ccda35b4a6c414c81" dependencies = [ "darling_core 0.21.3", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -1421,17 +1443,17 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +checksum = "d7a1e2f27636f116493b8b860f5546edb47c8d8f8ea73e1d2a20be88e28d1fea" [[package]] name = "datafusion" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ba7cb113e9c0bedf9e9765926031e132fa05a1b09ba6e93a6d1a4d7044457b8" dependencies = [ "arrow", - "arrow-ipc", "arrow-schema", "async-trait", "bytes", @@ -1439,15 +1461,16 @@ dependencies = [ "chrono", "datafusion-catalog", "datafusion-catalog-listing", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-common-runtime", "datafusion-datasource", + "datafusion-datasource-arrow", "datafusion-datasource-csv", "datafusion-datasource-json", "datafusion-datasource-parquet", "datafusion-execution", "datafusion-expr", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-expr-common", "datafusion-functions", "datafusion-functions-aggregate", "datafusion-functions-nested", @@ -1456,7 +1479,7 @@ dependencies = [ "datafusion-optimizer", "datafusion-physical-expr", "datafusion-physical-expr-adapter", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "datafusion-physical-optimizer", "datafusion-physical-plan", "datafusion-session", @@ -1470,6 +1493,7 @@ dependencies = [ "parquet", "rand 0.9.2", "regex", + "rstest", "serde", "sqlparser", "tempfile", @@ -1482,13 +1506,14 @@ dependencies = [ [[package]] name = "datafusion-catalog" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66a3a799f914a59b1ea343906a0486f17061f39509af74e874a866428951130d" dependencies = [ "arrow", "async-trait", "dashmap", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-common-runtime", "datafusion-datasource", "datafusion-execution", @@ -1496,7 +1521,6 @@ dependencies = [ "datafusion-physical-expr", "datafusion-physical-plan", "datafusion-session", - "datafusion-sql", "futures", "itertools", "log", @@ -1507,21 +1531,23 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db1b113c80d7a0febcd901476a57aef378e717c54517a163ed51417d87621b0" dependencies = [ "arrow", "async-trait", "datafusion-catalog", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-datasource", "datafusion-execution", "datafusion-expr", "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-adapter", + "datafusion-physical-expr-common", "datafusion-physical-plan", - "datafusion-session", "futures", + "itertools", "log", "object_store", "tokio", @@ -1529,39 +1555,17 @@ dependencies = [ [[package]] name = "datafusion-common" -version = "50.3.0" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a83760d9a13122d025fbdb1d5d5aaf93dd9ada5e90ea229add92aa30898b2d1" -dependencies = [ - "ahash 0.8.12", - "arrow", - "arrow-ipc", - "base64", - "chrono", - "half", - "hashbrown 0.14.5", - "indexmap 2.12.1", - "libc", - "log", - "paste", - "sqlparser", - "tokio", - "web-time", -] - -[[package]] -name = "datafusion-common" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +checksum = "7c10f7659e96127d25e8366be7c8be4109595d6a2c3eac70421f380a7006a1b0" dependencies = [ "ahash 0.8.12", "arrow", "arrow-ipc", - "base64", "chrono", "half", "hashbrown 0.14.5", - "indexmap 2.12.1", + "indexmap 2.13.0", "libc", "log", "object_store", @@ -1576,8 +1580,9 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b92065bbc6532c6651e2f7dd30b55cba0c7a14f860c7e1d15f165c41a1868d95" dependencies = [ "futures", "log", @@ -1586,8 +1591,9 @@ dependencies = [ [[package]] name = "datafusion-datasource" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fde13794244bc7581cd82f6fff217068ed79cdc344cafe4ab2c3a1c3510b38d6" dependencies = [ "arrow", "async-compression", @@ -1595,13 +1601,13 @@ dependencies = [ "bytes", "bzip2 0.6.1", "chrono", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-common-runtime", "datafusion-execution", "datafusion-expr", "datafusion-physical-expr", "datafusion-physical-expr-adapter", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-session", "flate2", @@ -1610,9 +1616,7 @@ dependencies = [ "itertools", "log", "object_store", - "parquet", "rand 0.9.2", - "tempfile", "tokio", "tokio-util", "url", @@ -1620,22 +1624,45 @@ dependencies = [ "zstd", ] +[[package]] +name = "datafusion-datasource-arrow" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "804fa9b4ecf3157982021770617200ef7c1b2979d57bec9044748314775a9aea" +dependencies = [ + "arrow", + "arrow-ipc", + "async-trait", + "bytes", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", + "futures", + "itertools", + "object_store", + "tokio", +] + [[package]] name = "datafusion-datasource-csv" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61a1641a40b259bab38131c5e6f48fac0717bedb7dc93690e604142a849e0568" dependencies = [ "arrow", "async-trait", "bytes", - "datafusion-catalog", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-common-runtime", "datafusion-datasource", "datafusion-execution", "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-session", "futures", @@ -1646,47 +1673,44 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adeacdb00c1d37271176f8fb6a1d8ce096baba16ea7a4b2671840c5c9c64fe85" dependencies = [ "arrow", "async-trait", "bytes", - "datafusion-catalog", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-common-runtime", "datafusion-datasource", "datafusion-execution", "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-session", "futures", "object_store", - "serde_json", "tokio", ] [[package]] name = "datafusion-datasource-parquet" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43d0b60ffd66f28bfb026565d62b0a6cbc416da09814766a3797bba7d85a3cd9" dependencies = [ "arrow", "async-trait", "bytes", - "datafusion-catalog", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-common-runtime", "datafusion-datasource", "datafusion-execution", "datafusion-expr", - "datafusion-functions-aggregate", + "datafusion-functions-aggregate-common", "datafusion-physical-expr", "datafusion-physical-expr-adapter", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-physical-optimizer", + "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-pruning", "datafusion-session", @@ -1696,24 +1720,25 @@ dependencies = [ "object_store", "parking_lot", "parquet", - "rand 0.9.2", "tokio", ] [[package]] name = "datafusion-doc" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b99e13947667b36ad713549237362afb054b2d8f8cc447751e23ec61202db07" [[package]] name = "datafusion-execution" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63695643190679037bc946ad46a263b62016931547bf119859c511f7ff2f5178" dependencies = [ "arrow", "async-trait", "dashmap", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-expr", "futures", "log", @@ -1726,19 +1751,21 @@ dependencies = [ [[package]] name = "datafusion-expr" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f9a4787cbf5feb1ab351f789063398f67654a6df75c4d37d7f637dc96f951a91" dependencies = [ "arrow", "async-trait", "chrono", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-doc", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-functions-aggregate-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", "datafusion-functions-window-common", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "indexmap 2.12.1", + "datafusion-physical-expr-common", + "indexmap 2.13.0", + "itertools", "paste", "recursive", "serde_json", @@ -1747,25 +1774,13 @@ dependencies = [ [[package]] name = "datafusion-expr-common" -version = "50.3.0" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d155ccbda29591ca71a1344dd6bed26c65a4438072b400df9db59447f590bb6" +checksum = "5ce2fb1b8c15c9ac45b0863c30b268c69dc9ee7a1ee13ecf5d067738338173dc" dependencies = [ "arrow", - "datafusion-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "indexmap 2.12.1", - "itertools", - "paste", -] - -[[package]] -name = "datafusion-expr-common" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" -dependencies = [ - "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "indexmap 2.12.1", + "datafusion-common", + "indexmap 2.13.0", "itertools", "paste", ] @@ -1773,7 +1788,7 @@ dependencies = [ [[package]] name = "datafusion-federation" version = "0.4.2" -source = "git+https://github.com/spiceai/datafusion-federation.git?rev=afcbd1ce99703f1322d176fc1b99745f647234d0#afcbd1ce99703f1322d176fc1b99745f647234d0" +source = "git+https://github.com/spiceai/datafusion-federation.git?rev=796bd54#796bd54f181cdff1d66a514cbe7c8987573b547b" dependencies = [ "arrow-json", "async-stream", @@ -1785,9 +1800,9 @@ dependencies = [ [[package]] name = "datafusion-ffi" -version = "50.3.0" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ddb7c4e645df080c27dad13a198d191da328dd1c98e198664a7a0f64b335cc" +checksum = "ec510e7787641279b0336e8b79e4b7bd1385d5976875ff9b97f4269ce5231a67" dependencies = [ "abi_stable", "arrow", @@ -1795,20 +1810,22 @@ dependencies = [ "async-ffi", "async-trait", "datafusion", - "datafusion-functions-aggregate-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "datafusion-common", + "datafusion-functions-aggregate-common", "datafusion-proto", - "datafusion-proto-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "datafusion-proto-common", "futures", "log", - "prost 0.13.5", + "prost", "semver", "tokio", ] [[package]] name = "datafusion-functions" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794a9db7f7b96b3346fc007ff25e994f09b8f0511b4cf7dff651fadfe3ebb28f" dependencies = [ "arrow", "arrow-buffer", @@ -1816,16 +1833,17 @@ dependencies = [ "blake2", "blake3", "chrono", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-doc", "datafusion-execution", "datafusion-expr", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-expr-common", "datafusion-macros", "hex", "itertools", "log", "md-5", + "num-traits", "rand 0.9.2", "regex", "sha2", @@ -1835,19 +1853,20 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c25210520a9dcf9c2b2cbbce31ebd4131ef5af7fc60ee92b266dc7d159cb305" dependencies = [ "ahash 0.8.12", "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-doc", "datafusion-execution", "datafusion-expr", - "datafusion-functions-aggregate-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-functions-aggregate-common", "datafusion-macros", "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "half", "log", "paste", @@ -1855,45 +1874,35 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" -version = "50.3.0" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5951e572a8610b89968a09b5420515a121fbc305c0258651f318dc07c97ab17" -dependencies = [ - "ahash 0.8.12", - "arrow", - "datafusion-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "datafusion-expr-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "datafusion-physical-expr-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "datafusion-functions-aggregate-common" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +checksum = "62f4a66f3b87300bb70f4124b55434d2ae3fe80455f3574701d0348da040b55d" dependencies = [ "ahash 0.8.12", "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", + "datafusion-expr-common", + "datafusion-physical-expr-common", ] [[package]] name = "datafusion-functions-nested" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae5c06eed03918dc7fe7a9f082a284050f0e9ecf95d72f57712d1496da03b8c4" dependencies = [ "arrow", "arrow-ord", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-doc", "datafusion-execution", "datafusion-expr", + "datafusion-expr-common", "datafusion-functions", "datafusion-functions-aggregate", - "datafusion-functions-aggregate-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-functions-aggregate-common", "datafusion-macros", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "itertools", "log", "paste", @@ -1901,13 +1910,14 @@ dependencies = [ [[package]] name = "datafusion-functions-table" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db4fed1d71738fbe22e2712d71396db04c25de4111f1ec252b8f4c6d3b25d7f5" dependencies = [ "arrow", "async-trait", "datafusion-catalog", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-expr", "datafusion-physical-plan", "parking_lot", @@ -1916,52 +1926,56 @@ dependencies = [ [[package]] name = "datafusion-functions-window" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d92206aa5ae21892f1552b4d61758a862a70956e6fd7a95cb85db1de74bc6d1" dependencies = [ "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-doc", "datafusion-expr", "datafusion-functions-window-common", "datafusion-macros", "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "log", "paste", ] [[package]] name = "datafusion-functions-window-common" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53ae9bcc39800820d53a22d758b3b8726ff84a5a3e24cecef04ef4e5fdf1c7cc" dependencies = [ - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", + "datafusion-physical-expr-common", ] [[package]] name = "datafusion-macros" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1063ad4c9e094b3f798acee16d9a47bd7372d9699be2de21b05c3bd3f34ab848" dependencies = [ - "datafusion-expr", + "datafusion-doc", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "datafusion-optimizer" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f35f9ec5d08b87fd1893a30c2929f2559c2f9806ca072d8fefca5009dc0f06a" dependencies = [ "arrow", "chrono", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-expr", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-expr-common", "datafusion-physical-expr", - "indexmap 2.12.1", + "indexmap 2.13.0", "itertools", "log", "recursive", @@ -1971,21 +1985,21 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c30cc8012e9eedcb48bbe112c6eff4ae5ed19cf3003cb0f505662e88b7014c5d" dependencies = [ "ahash 0.8.12", "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-expr", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-functions-aggregate-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr-common", "half", "hashbrown 0.14.5", - "indexmap 2.12.1", + "indexmap 2.13.0", "itertools", - "log", "parking_lot", "paste", "petgraph", @@ -1993,68 +2007,57 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9ff2dbd476221b1f67337699eff432781c4e6e1713d2aefdaa517dfbf79768" dependencies = [ "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-expr", "datafusion-functions", "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "itertools", ] [[package]] name = "datafusion-physical-expr-common" -version = "50.3.0" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6652fe7b5bf87e85ed175f571745305565da2c0b599d98e697bcbedc7baa47c3" -dependencies = [ - "ahash 0.8.12", - "arrow", - "datafusion-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "datafusion-expr-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "hashbrown 0.14.5", - "itertools", -] - -[[package]] -name = "datafusion-physical-expr-common" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +checksum = "90da43e1ec550b172f34c87ec68161986ced70fd05c8d2a2add66eef9c276f03" dependencies = [ "ahash 0.8.12", "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", + "datafusion-expr-common", "hashbrown 0.14.5", "itertools", ] [[package]] name = "datafusion-physical-optimizer" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce9804f799acd7daef3be7aaffe77c0033768ed8fdbf5fb82fc4c5f2e6bc14e6" dependencies = [ "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-execution", "datafusion-expr", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-expr-common", "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-pruning", "itertools", - "log", "recursive", ] [[package]] name = "datafusion-physical-plan" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0acf0ad6b6924c6b1aa7d213b181e012e2d3ec0a64ff5b10ee6282ab0f8532ac" dependencies = [ "ahash 0.8.12", "arrow", @@ -2062,18 +2065,18 @@ dependencies = [ "arrow-schema", "async-trait", "chrono", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-common-runtime", "datafusion-execution", "datafusion-expr", - "datafusion-functions-aggregate-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-functions-aggregate-common", "datafusion-functions-window-common", "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "futures", "half", "hashbrown 0.14.5", - "indexmap 2.12.1", + "indexmap 2.13.0", "itertools", "log", "parking_lot", @@ -2083,52 +2086,54 @@ dependencies = [ [[package]] name = "datafusion-proto" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d368093a98a17d1449b1083ac22ed16b7128e4c67789991869480d8c4a40ecb9" dependencies = [ "arrow", "chrono", - "datafusion", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-catalog", + "datafusion-catalog-listing", + "datafusion-common", + "datafusion-datasource", + "datafusion-datasource-arrow", + "datafusion-datasource-csv", + "datafusion-datasource-json", + "datafusion-datasource-parquet", + "datafusion-execution", "datafusion-expr", - "datafusion-proto-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-functions-table", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-proto-common", "object_store", - "prost 0.13.5", + "prost", ] [[package]] name = "datafusion-proto-common" -version = "50.3.0" +version = "51.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4b14f288ca4ef77743d9672cafecf3adfffff0b9b04af9af79ecbeaaf736901" +checksum = "3b6aef3d5e5c1d2bc3114c4876730cb76a9bdc5a8df31ef1b6db48f0c1671895" dependencies = [ "arrow", - "datafusion-common 50.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "prost 0.13.5", -] - -[[package]] -name = "datafusion-proto-common" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" -dependencies = [ - "arrow", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "prost 0.13.5", + "datafusion-common", + "prost", ] [[package]] name = "datafusion-pruning" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac2c2498a1f134a9e11a9f5ed202a2a7d7e9774bd9249295593053ea3be999db" dependencies = [ "arrow", - "arrow-schema", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-datasource", - "datafusion-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-expr-common", "datafusion-physical-expr", - "datafusion-physical-expr-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-physical-expr-common", "datafusion-physical-plan", "itertools", "log", @@ -2136,38 +2141,30 @@ dependencies = [ [[package]] name = "datafusion-session" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f96eebd17555386f459037c65ab73aae8df09f464524c709d6a3134ad4f4776" dependencies = [ - "arrow", "async-trait", - "dashmap", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", - "datafusion-common-runtime", + "datafusion-common", "datafusion-execution", "datafusion-expr", - "datafusion-physical-expr", "datafusion-physical-plan", - "datafusion-sql", - "futures", - "itertools", - "log", - "object_store", "parking_lot", - "tokio", ] [[package]] name = "datafusion-sql" -version = "50.3.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2#41d08054e37e9cdca9b760c16fc2b97a21893af2" +version = "51.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fc195fe60634b2c6ccfd131b487de46dc30eccae8a3c35a13f136e7f440414f" dependencies = [ "arrow", "bigdecimal", "chrono", - "datafusion-common 50.3.0 (git+https://github.com/spiceai/datafusion.git?rev=41d08054e37e9cdca9b760c16fc2b97a21893af2)", + "datafusion-common", "datafusion-expr", - "indexmap 2.12.1", + "indexmap 2.13.0", "log", "recursive", "regex", @@ -2228,8 +2225,7 @@ dependencies = [ "parquet", "pem", "postgres-native-tls", - "prost 0.13.5", - "prost 0.14.1", + "prost", "r2d2", "r2d2_adbc", "rand 0.9.2", @@ -2260,7 +2256,7 @@ dependencies = [ [[package]] name = "datafusion-table-providers-python" -version = "0.8.2" +version = "0.9.2" dependencies = [ "arrow", "arrow-flight", @@ -2290,7 +2286,7 @@ checksum = "d65d7ce8132b7c0e54497a4d9a55a1c2a0912a0d786cf894472ba818fba45762" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2301,27 +2297,29 @@ checksum = "ef941ded77d15ca19b40374869ac6000af1c9f2a4c0f3d4c70926287e6364a8f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "derive_more" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ "derive_more-impl", ] [[package]] name = "derive_more-impl" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" +checksum = "799a97264921d8623a957f6c3b9011f3b5492f557bbb7a5a19b7fa6d06ba8dcb" dependencies = [ + "convert_case", "proc-macro2", "quote", - "syn 2.0.111", + "rustc_version", + "syn 2.0.114", "unicode-xid", ] @@ -2350,7 +2348,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2370,20 +2368,19 @@ checksum = "d8b14ccef22fc6f5a8f4d7d768562a182c04ce9a3b3157b91390b52ddfdf1a76" [[package]] name = "duckdb" -version = "1.3.2" -source = "git+https://github.com/spiceai/duckdb-rs.git?rev=dd02045c3aa77895723e873222cbe30f5c8f77a9#dd02045c3aa77895723e873222cbe30f5c8f77a9" +version = "1.4.2" +source = "git+https://github.com/spiceai/duckdb-rs.git?rev=923c33ede98429f6b5e9692fa9680ac455708c32#923c33ede98429f6b5e9692fa9680ac455708c32" dependencies = [ "arrow", "cast", "fallible-iterator 0.3.0", "fallible-streaming-iterator", "hashlink", - "libduckdb-sys 1.3.2", + "libduckdb-sys 1.4.2", "num", "num-integer", "r2d2", "rust_decimal", - "smallvec", "strum", ] @@ -2423,7 +2420,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2501,9 +2498,9 @@ dependencies = [ [[package]] name = "find-msvc-tools" -version = "0.1.5" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" +checksum = "f449e6c6c08c865631d4890cfacf252b3d396c9bcc83adb6623cdb02a8336c41" [[package]] name = "fixedbitset" @@ -2513,9 +2510,9 @@ checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "flatbuffers" -version = "25.9.23" +version = "25.12.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b6620799e7340ebd9968d2e0708eb82cf1971e9a16821e2091b6d6e475eed5" +checksum = "35f6839d7b3b98adde531effaf34f0c2badc6f4735d26fe74709d8e513a96ef3" dependencies = [ "bitflags 2.10.0", "rustc_version", @@ -2523,14 +2520,14 @@ dependencies = [ [[package]] name = "flate2" -version = "1.1.5" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfe33edd8e85a12a67454e37f8c75e730830d83e313556ab9ebf9ee7fbeb3bfb" +checksum = "b375d6465b98090a5f25b1c7703f3859783755aa9a80433b36e0379a3ec2f369" dependencies = [ "crc32fast", - "libz-rs-sys", "libz-sys", "miniz_oxide", + "zlib-rs", ] [[package]] @@ -2572,7 +2569,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2673,7 +2670,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -2733,9 +2730,9 @@ dependencies = [ [[package]] name = "geo-types" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a4dcd69d35b2c87a7c83bce9af69fd65c9d68d3833a0ded568983928f3fc99" +checksum = "24f8647af4005fa11da47cd56252c6ef030be8fa97bdbf355e7dfb6348f0a82c" dependencies = [ "approx", "num-traits", @@ -2771,9 +2768,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +checksum = "ff2abc00be7fca6ebc474524697ae276ad847ad0a6b3faa4bcb027e9a4614ad0" dependencies = [ "cfg-if", "js-sys", @@ -2804,9 +2801,9 @@ checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" [[package]] name = "h2" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c0b69cfcb4e1b9f1bf2f53f95f766e4661169728ec61cd3fe5a0166f2d1386" +checksum = "2f44da3a8150a6703ed5d34e164b875fd14c2cdab9af1252a9a1020bde2bdc54" dependencies = [ "atomic-waker", "bytes", @@ -2814,7 +2811,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.12.1", + "indexmap 2.13.0", "slab", "tokio", "tokio-util", @@ -2959,12 +2956,11 @@ dependencies = [ [[package]] name = "http" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" +checksum = "e3ba2a386d7f85a81f119ad7498ebe444d2e22c2af0b86b069416ace48b3311a" dependencies = [ "bytes", - "fnv", "itoa", ] @@ -3094,9 +3090,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52e9a2a24dc5c6821e71a7030e1e14b7b632acac55c40e9d2e082c621261bb56" +checksum = "727805d60e7938b76b826a6ef209eb70eaa1812794f9424d4a4e2d740662df5f" dependencies = [ "base64", "bytes", @@ -3205,9 +3201,9 @@ checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ "icu_collections", "icu_locale_core", @@ -3219,9 +3215,9 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.1.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" @@ -3278,9 +3274,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.12.1" +version = "2.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ad4bb2b565bca0645f4d68c5c9af97fba094e9791da685bf83cb5f3ce74acf2" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" dependencies = [ "equivalent", "hashbrown 0.16.1", @@ -3305,19 +3301,20 @@ checksum = "c727f80bfa4a6c6e2508d2f05b6f4bfce242030bd88ed15ae5331c5b5d30fba7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "insta" -version = "1.44.1" +version = "1.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8732d3774162a0851e3f2b150eb98f31a9885dd75985099421d393385a01dfd" +checksum = "1b66886d14d18d420ab5052cbff544fc5d34d0b2cdd35eb5976aaa10a4a472e5" dependencies = [ "console", "once_cell", "regex", "similar", + "tempfile", ] [[package]] @@ -3346,9 +3343,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" +checksum = "c91338f0783edbd6195decb37bae672fd3b165faffb89bf7b9e6942f8b1a731a" dependencies = [ "memchr", "serde", @@ -3371,9 +3368,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.15" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" [[package]] name = "jni" @@ -3409,9 +3406,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b011eec8cc36da2aab2d5cff675ec18454fad408585853910a202391cf9f8e65" +checksum = "464a3709c7f55f1f721e5389aa6ea4e3bc6aba669353300af094b29ffbdde1d8" dependencies = [ "once_cell", "wasm-bindgen", @@ -3423,7 +3420,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.13.0", ] [[package]] @@ -3497,9 +3494,9 @@ checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" [[package]] name = "libc" -version = "0.2.177" +version = "0.2.180" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" +checksum = "bcc35a38544a891a5f7c865aca548a982ccb3b8650a5b06d0fd33a10283c56fc" [[package]] name = "libduckdb-sys" @@ -3518,8 +3515,8 @@ dependencies = [ [[package]] name = "libduckdb-sys" -version = "1.3.2" -source = "git+https://github.com/spiceai/duckdb-rs.git?rev=dd02045c3aa77895723e873222cbe30f5c8f77a9#dd02045c3aa77895723e873222cbe30f5c8f77a9" +version = "1.4.2" +source = "git+https://github.com/spiceai/duckdb-rs.git?rev=923c33ede98429f6b5e9692fa9680ac455708c32#923c33ede98429f6b5e9692fa9680ac455708c32" dependencies = [ "cc", "flate2", @@ -3558,13 +3555,13 @@ checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.10" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" +checksum = "3d0b95e02c851351f877147b7deea7b1afb1df71b63aa5f8270716e0c5720616" dependencies = [ "bitflags 2.10.0", "libc", - "redox_syscall 0.5.18", + "redox_syscall 0.7.0", ] [[package]] @@ -3577,15 +3574,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "libz-rs-sys" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "840db8cf39d9ec4dd794376f38acc40d0fc65eec2a8f484f7fd375b84602becd" -dependencies = [ - "zlib-rs", -] - [[package]] name = "libz-sys" version = "1.1.23" @@ -3626,9 +3614,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.28" +version = "0.4.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" +checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lru" @@ -3644,6 +3632,12 @@ name = "lz4_flex" version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" + +[[package]] +name = "lz4_flex" +version = "0.12.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab6473172471198271ff72e9379150e9dfd70d8e533e0752a27e515b48dd375e" dependencies = [ "twox-hash", ] @@ -3668,7 +3662,7 @@ dependencies = [ "macro_magic_core", "macro_magic_macros", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3682,7 +3676,7 @@ dependencies = [ "macro_magic_core_macros", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3693,7 +3687,7 @@ checksum = "b02abfe41815b5bd98dbd4260173db2c116dda171dc0fe7838cb206333b83308" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3704,7 +3698,7 @@ checksum = "73ea28ee64b88876bf45277ed9a5817c1817df061a74f2b988971a12570e5869" dependencies = [ "macro_magic_core", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3765,9 +3759,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.1.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d83b0086dc8ecf3ce9ae2874b2d1290252e2a30720bea58a5c6639b0092873" +checksum = "a69bcab0ad47271a0234d9422b131806bf3968021e5dc9328caf2d4cd58557fc" dependencies = [ "libc", "wasi", @@ -3776,9 +3770,9 @@ dependencies = [ [[package]] name = "moka" -version = "0.12.11" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8261cd88c312e0004c1d51baad2980c66528dfdb2bee62003e643a4d8f86b077" +checksum = "a3dec6bd31b08944e08b58fd99373893a6c17054d6f3ea5006cc894f4f4eee2a" dependencies = [ "crossbeam-channel", "crossbeam-epoch", @@ -3786,7 +3780,6 @@ dependencies = [ "equivalent", "parking_lot", "portable-atomic", - "rustc_version", "smallvec", "tagptr", "uuid", @@ -3833,7 +3826,7 @@ dependencies = [ "mongocrypt", "mongodb-internal-macros", "openssl", - "openssl-probe", + "openssl-probe 0.1.6", "pbkdf2", "percent-encoding", "rand 0.9.2", @@ -3856,7 +3849,7 @@ dependencies = [ "tokio-util", "typed-builder", "uuid", - "webpki-roots 1.0.4", + "webpki-roots", ] [[package]] @@ -3868,7 +3861,7 @@ dependencies = [ "macro_magic", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -3884,7 +3877,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "termcolor", "thiserror 2.0.17", ] @@ -3958,7 +3951,7 @@ dependencies = [ "libc", "log", "openssl", - "openssl-probe", + "openssl-probe 0.1.6", "openssl-sys", "schannel", "security-framework 2.11.1", @@ -4104,7 +4097,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4402,7 +4395,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4411,6 +4404,12 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +[[package]] +name = "openssl-probe" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9f50d9b3dabb09ecd771ad0aa242ca6894994c130308ca3d7684634df8037391" + [[package]] name = "openssl-sys" version = "0.9.111" @@ -4425,10 +4424,11 @@ dependencies = [ [[package]] name = "orbclient" -version = "0.3.49" +version = "0.3.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "247ad146e19b9437f8604c21f8652423595cf710ad108af40e77d3ae6e96b827" +checksum = "52ad2c6bae700b7aa5d1cc30c59bdd3a1c180b09dbaea51e2ae2b8e1cf211fdd" dependencies = [ + "libc", "libredox", ] @@ -4466,8 +4466,8 @@ dependencies = [ [[package]] name = "parquet" -version = "56.0.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=9f9c372ff5744488226462e3ea7d94ff47909833#9f9c372ff5744488226462e3ea7d94ff47909833" +version = "57.2.0" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=ca671dd37d73b730938f77f7a7ad76545280a4a8#ca671dd37d73b730938f77f7a7ad76545280a4a8" dependencies = [ "ahash 0.8.12", "arrow-array", @@ -4484,13 +4484,13 @@ dependencies = [ "flate2", "futures", "half", - "hashbrown 0.15.5", - "lz4_flex", - "num", + "hashbrown 0.16.1", + "lz4_flex 0.12.0", "num-bigint", + "num-integer", + "num-traits", "object_store", "paste", - "ring", "seq-macro", "simdutf8", "snap", @@ -4539,7 +4539,7 @@ checksum = "8701b58ea97060d5e5b155d383a69952a60943f0e6dfe30b04c287beb0b27455" dependencies = [ "fixedbitset", "hashbrown 0.15.5", - "indexmap 2.12.1", + "indexmap 2.13.0", "serde", ] @@ -4597,7 +4597,7 @@ checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -4628,15 +4628,15 @@ dependencies = [ "concurrent-queue", "hermit-abi", "pin-project-lite", - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.61.2", ] [[package]] name = "portable-atomic" -version = "1.11.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" +checksum = "f89776e4d69bb58bc6993e99ffa1d11f228b839984854c7daeb5d37f87cbe950" [[package]] name = "postgres-native-tls" @@ -4736,28 +4736,18 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "proc-macro2" -version = "1.0.103" +version = "1.0.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee95bc4ef87b8d5ba32e8b7714ccc834865276eab0aed5c9958d00ec45f49e8" +checksum = "535d180e0ecab6268a3e718bb9fd44db66bbbc256257165fc699dadf70d16fe7" dependencies = [ "unicode-ident", ] -[[package]] -name = "prost" -version = "0.13.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" -dependencies = [ - "bytes", - "prost-derive 0.13.5", -] - [[package]] name = "prost" version = "0.14.1" @@ -4765,42 +4755,29 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7231bd9b3d3d33c86b58adbac74b5ec0ad9f496b19d22801d773636feaa95f3d" dependencies = [ "bytes", - "prost-derive 0.14.1", + "prost-derive", ] [[package]] name = "prost-derive" -version = "0.13.5" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" dependencies = [ "anyhow", "itertools", "proc-macro2", "quote", - "syn 2.0.111", -] - -[[package]] -name = "prost-derive" -version = "0.14.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9120690fafc389a67ba3803df527d0ec9cbbc9cc45e4cc20b332996dfb672425" -dependencies = [ - "anyhow", - "itertools", - "proc-macro2", - "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "prost-types" -version = "0.13.5" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" +checksum = "b9b4db3d6da204ed77bb26ba83b6122a73aeb2e87e25fbf7ad2e84c4ccbf8f72" dependencies = [ - "prost 0.13.5", + "prost", ] [[package]] @@ -4835,9 +4812,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.25.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8970a78afe0628a3e3430376fc5fd76b6b45c4d43360ffd6cdd40bdde72b682a" +checksum = "7ba0117f4212101ee6544044dae45abe1083d30ce7b29c4b5cbdfa2354e07383" dependencies = [ "indoc", "libc", @@ -4852,19 +4829,18 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.25.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "458eb0c55e7ece017adeba38f2248ff3ac615e53660d7c71a238d7d2a01c7598" +checksum = "4fc6ddaf24947d12a9aa31ac65431fb1b851b8f4365426e182901eabfb87df5f" dependencies = [ - "once_cell", "target-lexicon", ] [[package]] name = "pyo3-ffi" -version = "0.25.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7114fe5457c61b276ab77c5055f206295b812608083644a5c5b2640c3102565c" +checksum = "025474d3928738efb38ac36d4744a74a400c901c7596199e20e45d98eb194105" dependencies = [ "libc", "pyo3-build-config", @@ -4872,34 +4848,34 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.25.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8725c0a622b374d6cb051d11a0983786448f7785336139c3c94f5aa6bef7e50" +checksum = "2e64eb489f22fe1c95911b77c44cc41e7c19f3082fc81cce90f657cdc42ffded" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "pyo3-macros-backend" -version = "0.25.1" +version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4109984c22491085343c05b0dbc54ddc405c3cf7b4374fc533f5c3313a572ccc" +checksum = "100246c0ecf400b475341b8455a9213344569af29a3c841d29270e53102e0fcf" dependencies = [ "heck 0.5.0", "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "quote" -version = "1.0.42" +version = "1.0.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" +checksum = "dc74d9a594b72ae6656596548f56f667211f8a97b3d4c3d467150794690dc40a" dependencies = [ "proc-macro2", ] @@ -4923,9 +4899,9 @@ dependencies = [ [[package]] name = "r2d2_adbc" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "530f1d047af6b0ac597f6609d907d3f43c1fac4dffb683901f62f73103128b5f" +checksum = "4ceae1815a5cc7165bb1841a4318561921303c9283a4706f4044d989bd29236d" dependencies = [ "adbc_core", "r2d2", @@ -4955,7 +4931,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", - "rand_core 0.9.3", + "rand_core 0.9.4", ] [[package]] @@ -4975,7 +4951,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" dependencies = [ "ppv-lite86", - "rand_core 0.9.3", + "rand_core 0.9.4", ] [[package]] @@ -4984,14 +4960,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.16", + "getrandom 0.2.17", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +checksum = "4f1b3bc831f92381018fd9c6350b917c7b21f1eed35a65a51900e0e55a3d7afa" dependencies = [ "getrandom 0.3.4", ] @@ -5019,7 +4995,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5040,6 +5016,15 @@ dependencies = [ "bitflags 2.10.0", ] +[[package]] +name = "redox_syscall" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49f3fe0889e69e2ae9e41f4d6c4c0181701d00e4697b356fb1f74173a5e0ee27" +dependencies = [ + "bitflags 2.10.0", +] + [[package]] name = "ref-cast" version = "1.0.25" @@ -5057,7 +5042,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5121,9 +5106,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.24" +version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d0946410b9f7b082a427e4ef5c8ff541a88b357bc6c637c40db3a68ac70a36f" +checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ "base64", "bytes", @@ -5173,7 +5158,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.16", + "getrandom 0.2.17", "libc", "untrusted", "windows-sys 0.52.0", @@ -5181,9 +5166,9 @@ dependencies = [ [[package]] name = "rkyv" -version = "0.7.45" +version = "0.7.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +checksum = "2297bf9c81a3f0dc96bc9521370b88f054168c29826a75e89c55ff196e7ed6a1" dependencies = [ "bitvec", "bytecheck", @@ -5199,9 +5184,9 @@ dependencies = [ [[package]] name = "rkyv_derive" -version = "0.7.45" +version = "0.7.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +checksum = "84d7b42d4b8d06048d3ac8db0eb31bcb942cbeb709f0b5f2b2ebde398d3038f5" dependencies = [ "proc-macro2", "quote", @@ -5233,7 +5218,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.111", + "syn 2.0.114", "unicode-ident", ] @@ -5301,9 +5286,9 @@ dependencies = [ [[package]] name = "rustix" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" +checksum = "146c9e247ccc180c1f61615433868c99f3de3ae256a30a43b49f67c2d9171f34" dependencies = [ "bitflags 2.10.0", "errno", @@ -5314,9 +5299,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.35" +version = "0.23.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" +checksum = "c665f33d38cea657d9614f766881e4d510e0eda4239891eea56b4cadcf01801b" dependencies = [ "log", "once_cell", @@ -5329,11 +5314,11 @@ dependencies = [ [[package]] name = "rustls-native-certs" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9980d917ebb0c0536119ba501e90834767bffc3d60641457fd84a1f3fd337923" +checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.0", "rustls-pki-types", "schannel", "security-framework 3.5.1", @@ -5341,9 +5326,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.13.0" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94182ad936a0c91c324cd46c6511b9510ed16af436d7b5bab34beab0afd55f7a" +checksum = "21e6f2ab2928ca4291b86736a8bd920a277a399bba1589409d72154ff87c1282" dependencies = [ "zeroize", ] @@ -5367,9 +5352,9 @@ checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" -version = "1.0.20" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" +checksum = "a50f4cf475b65d88e057964e0e9bb1f0aa9bbb2036dc65c64596b42932536984" [[package]] name = "same-file" @@ -5418,9 +5403,9 @@ dependencies = [ [[package]] name = "schemars" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9558e172d4e8533736ba97870c4b2cd63f84b382a3d6eb063da41b91cce17289" +checksum = "54e910108742c57a770f492731f99be216a52fadd361b06c8fb59d74ccc267d2" dependencies = [ "dyn-clone", "ref-cast", @@ -5461,7 +5446,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "thiserror 1.0.69", ] @@ -5479,7 +5464,7 @@ checksum = "22f968c5ea23d555e670b449c1c5e7b2fc399fdaec1d304a17cd48e288abc107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5576,7 +5561,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5587,21 +5572,21 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "serde_json" -version = "1.0.145" +version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" +checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.13.0", "itoa", "memchr", - "ryu", "serde", "serde_core", + "zmij", ] [[package]] @@ -5612,14 +5597,14 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "serde_spanned" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e24345aa0fe688594e73770a5f6d1b216508b4f93484c0026d521acd30134392" +checksum = "f8bbf91e5a4d6315eee45e704372590b30e260ee83af6639d64557f51b067776" dependencies = [ "serde_core", ] @@ -5638,17 +5623,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.16.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10574371d41b0d9b2cff89418eda27da52bcaff2cc8741db26382a77c29131f1" +checksum = "4fa237f2807440d238e0364a218270b98f767a00d3dada77b1c53ae88940e2e7" dependencies = [ "base64", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.12.1", + "indexmap 2.13.0", "schemars 0.9.0", - "schemars 1.1.0", + "schemars 1.2.0", "serde_core", "serde_json", "serde_with_macros", @@ -5657,14 +5642,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.16.0" +version = "3.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08a72d8216842fdd57820dc78d840bef99248e35fb2554ff923319e60f2d686b" +checksum = "52a8e3ca0ca629121f70ab50f95249e5a6f925cc0f6ffe8256c45b728875706c" dependencies = [ "darling 0.21.3", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5706,18 +5691,19 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.7" +version = "1.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7664a098b8e616bdfcc2dc0e9ac44eb231eedf41db4e9fe95d8d32ec728dedad" +checksum = "c4db69cba1110affc0e9f7bcd48bbf87b3f4fc7c61fc9155afd4c469eb3d6c1b" dependencies = [ + "errno", "libc", ] [[package]] name = "simd-adler32" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" +checksum = "e320a6c5ad31d271ad523dcf3ad13e2767ad8b1cb8f047f75a8aeaf8da139da2" [[package]] name = "simdutf8" @@ -5776,7 +5762,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5807,9 +5793,9 @@ dependencies = [ [[package]] name = "sqlparser" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec4b661c54b1e4b603b37873a18c59920e4c51ea8ea2cf527d925424dbd4437c" +checksum = "4591acadbcf52f0af60eafbb2c003232b2b4cd8de5f0e9437cb8b1b59046cc0f" dependencies = [ "log", "recursive", @@ -5824,7 +5810,7 @@ checksum = "da5fc6819faabb412da764b99d3b713bb55083c11e7e0c00144d386cd6a1939c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5887,7 +5873,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5909,9 +5895,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.111" +version = "2.0.114" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "390cc9a294ab71bdb1aa2e99d13be9c753cd2d7bd6560c77118597410c4d2e87" +checksum = "d4d107df263a3013ef9b1879b0df87d706ff80f65a86ea879bd9c31f9b307c2a" dependencies = [ "proc-macro2", "quote", @@ -5935,7 +5921,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -5990,20 +5976,20 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.13.3" +version = "0.13.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c" +checksum = "b1dd07eb858a2067e2f3c7155d54e929265c264e6f37efe3ee7a8d1b5a1dd0ba" [[package]] name = "tempfile" -version = "3.23.0" +version = "3.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d31c77bdf42a745371d260a26ca7163f1e0924b64afa0b688e61b5a9fa02f16" +checksum = "655da9c7eb6305c55742045d5a8d2037996d61d8de95806335c7c86ce0f82e9c" dependencies = [ "fastrand", "getrandom 0.3.4", "once_cell", - "rustix 1.1.2", + "rustix 1.1.3", "windows-sys 0.61.2", ] @@ -6018,9 +6004,9 @@ dependencies = [ [[package]] name = "test-log" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e33b98a582ea0be1168eba097538ee8dd4bbe0f2b01b22ac92ea30054e5be7b" +checksum = "37d53ac171c92a39e4769491c4b4dde7022c60042254b5fc044ae409d34a24d4" dependencies = [ "env_logger", "test-log-macros", @@ -6029,13 +6015,13 @@ dependencies = [ [[package]] name = "test-log-macros" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" +checksum = "be35209fd0781c5401458ab66e4f98accf63553e8fae7425503e92fdd319783b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6064,7 +6050,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6075,7 +6061,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6165,9 +6151,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.48.0" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff360e02eab121e0bc37a2d3b4d4dc622e6eda3a8e5253d5435ecf5bd4c68408" +checksum = "72a2903cd7736441aac9df9d7688bd0ce48edccaadf181c3b90be801e81d3d86" dependencies = [ "bytes", "libc", @@ -6188,7 +6174,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6261,9 +6247,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.17" +version = "0.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" +checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" dependencies = [ "futures-core", "pin-project-lite", @@ -6272,9 +6258,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.17" +version = "0.7.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" +checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" dependencies = [ "bytes", "futures-core", @@ -6286,9 +6272,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.9.8" +version = "0.9.11+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc8b1fb61449e27716ec0e1bdf0f6b8f3e8f6b05391e8497b8b6d7804ea6d8" +checksum = "f3afc9a848309fe1aaffaed6e1546a7a14de1f935dc9d89d32afd9a44bab7c46" dependencies = [ "serde_spanned", "toml_datetime", @@ -6299,20 +6285,20 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.7.3" +version = "0.7.5+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" +checksum = "92e1cfed4a3038bc5a127e35a2d360f145e1f4b971b551a2ba5fd7aedf7e1347" dependencies = [ "serde_core", ] [[package]] name = "toml_edit" -version = "0.23.7" +version = "0.23.10+spec-1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" dependencies = [ - "indexmap 2.12.1", + "indexmap 2.13.0", "toml_datetime", "toml_parser", "winnow", @@ -6320,24 +6306,24 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" +checksum = "a3198b4b0a8e11f09dd03e133c0280504d0801269e9afa46362ffde1cbeebf44" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.0.4" +version = "1.0.6+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df8b2b54733674ad286d16267dcfc7a71ed5c776e4ac7aa3c3e2561f7c637bf2" +checksum = "ab16f14aed21ee8bfd8ec22513f7287cd4a91aa92e44edfe2c17ddd004e92607" [[package]] name = "tonic" -version = "0.13.1" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" dependencies = [ "async-trait", "axum", @@ -6352,9 +6338,9 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost 0.13.5", "rustls-native-certs", - "socket2 0.5.10", + "socket2 0.6.1", + "sync_wrapper", "tokio", "tokio-rustls", "tokio-stream", @@ -6362,18 +6348,29 @@ dependencies = [ "tower-layer", "tower-service", "tracing", - "webpki-roots 0.26.11", + "webpki-roots", +] + +[[package]] +name = "tonic-prost" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +dependencies = [ + "bytes", + "prost", + "tonic", ] [[package]] name = "tower" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" +checksum = "ebe5ef63511595f1344e2d5cfa636d973292adc0eec1f0ad45fae9f0851ab1d4" dependencies = [ "futures-core", "futures-util", - "indexmap 2.12.1", + "indexmap 2.13.0", "pin-project-lite", "slab", "sync_wrapper", @@ -6386,9 +6383,9 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.6" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" +checksum = "d4e6559d53cc268e5031cd8429d05415bc4cb4aefc4aa5d6cc35fbf5b924a1f8" dependencies = [ "bitflags 2.10.0", "bytes", @@ -6416,9 +6413,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.41" +version = "0.1.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" +checksum = "63e71662fa4b2a2c3a26f570f037eb95bb1f85397f3cd8076caed2f026a6d100" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -6427,20 +6424,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.30" +version = "0.1.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" +checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "tracing-core" -version = "0.1.34" +version = "0.1.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" +checksum = "db97caf9d906fbde555dd62fa95ddba9eecfd14cb388e4f491a66d74cd5fb79a" dependencies = [ "once_cell", "valuable", @@ -6459,9 +6456,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.20" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" +checksum = "2f30143827ddab0d256fd843b7a66d164e9f271cfa0dde49142c5ca0ca291f1e" dependencies = [ "matchers", "nu-ansi-term", @@ -6525,7 +6522,7 @@ checksum = "0e48cea23f68d1f78eb7bc092881b6bb88d3d6b5b7e6234f6f9c911da1ffb221" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6599,9 +6596,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.7" +version = "2.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" +checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" dependencies = [ "form_urlencoded", "idna", @@ -6611,9 +6608,9 @@ dependencies = [ [[package]] name = "utf8-width" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86bd8d4e895da8537e5315b8254664e6b769c4ff3db18321b297a1e7004392e3" +checksum = "1292c0d970b54115d14f2492fe0170adf21d68a1de108eebc51c1df4f346a091" [[package]] name = "utf8_iter" @@ -6629,13 +6626,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.18.1" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +checksum = "e2e054861b4bd027cd373e18e8d8d8e6548085000e41290d95ce0c373a654b4a" dependencies = [ "getrandom 0.3.4", "js-sys", - "serde", + "serde_core", "wasm-bindgen", ] @@ -6699,9 +6696,9 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da95793dfc411fbbd93f5be7715b0578ec61fe87cb1a42b12eb625caa5c5ea60" +checksum = "0d759f433fa64a2d763d1340820e46e111a7a5ab75f993d1852d70b03dbb80fd" dependencies = [ "cfg-if", "once_cell", @@ -6712,9 +6709,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.55" +version = "0.4.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "551f88106c6d5e7ccc7cd9a16f312dd3b5d36ea8b4954304657d5dfba115d4a0" +checksum = "836d9622d604feee9e5de25ac10e3ea5f2d65b41eac0d9ce72eb5deae707ce7c" dependencies = [ "cfg-if", "js-sys", @@ -6725,9 +6722,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04264334509e04a7bf8690f2384ef5265f05143a4bff3889ab7a3269adab59c2" +checksum = "48cb0d2638f8baedbc542ed444afc0644a29166f1595371af4fecf8ce1e7eeb3" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -6735,31 +6732,31 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420bc339d9f322e562942d52e115d57e950d12d88983a14c79b86859ee6c7ebc" +checksum = "cefb59d5cd5f92d9dcf80e4683949f15ca4b511f4ac0a6e14d4e1ac60c6ecd40" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.105" +version = "0.2.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76f218a38c84bcb33c25ec7059b07847d465ce0e0a76b995e134a45adcb6af76" +checksum = "cbc538057e648b67f72a982e708d485b2efa771e1ac05fec311f9f63e5800db4" dependencies = [ "unicode-ident", ] [[package]] name = "web-sys" -version = "0.3.82" +version = "0.3.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a1f95c0d03a47f4ae1f7a64643a6bb97465d9b740f0fa8f90ea33915c99a9a1" +checksum = "9b32828d774c412041098d182a8b38b16ea816958e07cf40eec2bc080ae137ac" dependencies = [ "js-sys", "wasm-bindgen", @@ -6777,18 +6774,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.4", -] - -[[package]] -name = "webpki-roots" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2878ef029c47c6e8cf779119f20fcf52bde7ad42a731b2a304bc221df17571e" +checksum = "12bed680863276c63889429bfd6cab3b99943659923822de1c8a39c49e4d722c" dependencies = [ "rustls-pki-types", ] @@ -6862,7 +6850,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -6873,7 +6861,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7250,9 +7238,9 @@ dependencies = [ [[package]] name = "winnow" -version = "0.7.13" +version = "0.7.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +checksum = "5a5364e9d77fcdeeaa6062ced926ee3381faa2ee02d3eb83a5c27a8825540829" dependencies = [ "memchr", ] @@ -7307,7 +7295,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.2", + "rustix 1.1.3", ] [[package]] @@ -7357,28 +7345,28 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] [[package]] name = "zerocopy" -version = "0.8.28" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43fa6694ed34d6e57407afbccdeecfa268c470a7d2a5b0cf49ce9fcc345afb90" +checksum = "668f5168d10b9ee831de31933dc111a459c97ec93225beb307aed970d1372dfd" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.28" +version = "0.8.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c640b22cd9817fae95be82f0d2f90b11f7605f6c319d16705c459b27ac2cbc26" +checksum = "2c7962b26b0a8685668b671ee4b54d007a67d4eaf05fda79ac0ecf41e32270f1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] @@ -7398,7 +7386,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", "synstructure", ] @@ -7438,14 +7426,20 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.111", + "syn 2.0.114", ] [[package]] name = "zlib-rs" -version = "0.5.2" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40990edd51aae2c2b6907af74ffb635029d5788228222c4bb811e9351c0caad3" + +[[package]] +name = "zmij" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f06ae92f42f5e5c42443fd094f245eb656abf56dd7cce9b8b263236565e00f2" +checksum = "ac93432f5b761b22864c774aac244fa5c0fd877678a4c37ebf6cf42208f9c9ec" [[package]] name = "zstd" diff --git a/Cargo.toml b/Cargo.toml index 7262f78c..538b224e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,7 +20,7 @@ members = ["core", "python"] resolver = "2" [workspace.package] -version = "0.8.2" +version = "0.9.2" readme = "README.md" edition = "2021" repository = "https://github.com/datafusion-contrib/datafusion-table-providers" @@ -28,29 +28,29 @@ license = "Apache-2.0" description = "Extend the capabilities of DataFusion to support additional data sources via implementations of the `TableProvider` trait." [workspace.dependencies] -arrow = "56" -arrow-array = { version = "56" } -arrow-flight = { version = "56", features = [ - "flight-sql-experimental", - "tls-ring", - "tls-native-roots", +arrow = "57.0.0" +arrow-array = { version = "57.0.0" } +arrow-flight = { version = "57.0.0", features = [ + "flight-sql-experimental", + "tls-ring", + "tls-native-roots", ] } -arrow-ipc = { version = "56" } -arrow-schema = { version = "56", features = ["serde"] } -arrow-json = "56" -arrow-odbc = { version = "20.0.0" } -datafusion = { version = "50.3", default-features = false } -datafusion-expr = { version = "50.3" } -datafusion-federation = { version = "0.4.2", features = ["sql"] } -datafusion-ffi = { version = "50.3" } -datafusion-proto = { version = "50.3" } -datafusion-physical-expr = { version = "50.3" } -datafusion-physical-plan = { version = "50.3" } +arrow-ipc = { version = "57.0.0" } +arrow-schema = { version = "57.2.0", features = ["serde"] } +arrow-json = "57.0.0" +arrow-odbc = { version = "21.0.0" } +datafusion = { version = "51", default-features = false } +datafusion-expr = { version = "51" } +datafusion-federation = { git = "https://github.com/spiceai/datafusion-federation.git", rev = "796bd54" } +datafusion-ffi = { version = "51" } +datafusion-proto = { version = "51" } +datafusion-physical-expr = { version = "51" } +datafusion-physical-plan = { version = "51" } datafusion-table-providers = { path = "core" } -duckdb = "1.3.2" # Forked to add support for duckdb_scan_arrow, pending: https://github.com/duckdb/duckdb-rs/pull/488 -adbc_core = { version = "0.20.0" } -adbc_driver_manager = { version = "0.20.0" } -parquet = "56" +duckdb = { git = "https://github.com/spiceai/duckdb-rs.git", rev = "923c33ede98429f6b5e9692fa9680ac455708c32" } # Forked to add support for duckdb_scan_arrow, pending: https://github.com/duckdb/duckdb-rs/pull/488 +adbc_core = { version = "0.21.0" } +adbc_driver_manager = { version = "0.21.0" } +parquet = "57" rusqlite = "0.37" tokio-rusqlite = "0.7.0" async-stream = "0.3.5" @@ -73,7 +73,7 @@ rand = "0.9" regex = "1" uuid = "1.9.1" prost = "0.14.1" -tonic = { version = "0.13", features = ["tls-native-roots", "tls-webpki-roots"] } +tonic = { version = "0.14", features = ["tls-native-roots", "tls-webpki-roots"] } bytes = "1.7.1" base64 = "0.22.1" dashmap = "6.1.0" @@ -93,24 +93,20 @@ sea-query = { git = "https://github.com/spiceai/sea-query.git", rev = "213b6b876 ] } [patch.crates-io] -datafusion-federation = { git = "https://github.com/spiceai/datafusion-federation.git", rev = "afcbd1ce99703f1322d176fc1b99745f647234d0" } # spiceai-50 -duckdb = { git = "https://github.com/spiceai/duckdb-rs.git", rev = "dd02045c3aa77895723e873222cbe30f5c8f77a9" } # spiceai-1.3.2 - -datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "41d08054e37e9cdca9b760c16fc2b97a21893af2" } # spiceai-50 -datafusion-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "41d08054e37e9cdca9b760c16fc2b97a21893af2" } # spiceai-50 -datafusion-physical-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "41d08054e37e9cdca9b760c16fc2b97a21893af2" } # spiceai-50 -datafusion-physical-plan = { git = "https://github.com/spiceai/datafusion.git", rev = "41d08054e37e9cdca9b760c16fc2b97a21893af2" } # spiceai-50 -datafusion-proto = { git = "https://github.com/spiceai/datafusion.git", rev = "41d08054e37e9cdca9b760c16fc2b97a21893af2" } # spiceai-50 - -arrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-array = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-buffer = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-cast = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-flight = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-json = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-ipc = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-ord = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -arrow-schema = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 -parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "9f9c372ff5744488226462e3ea7d94ff47909833" } # spiceai-56 - rusqlite = { git = "https://github.com/spiceai/rusqlite.git", rev = "3d1f5f6f6d6d062676210d095df45eafa6e19fd8" } # spiceai-v0.37.0 + +# spiceai-57.2-patches: ObjectVersionType + new_with_meta support for Azure compatibility +arrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-array = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-buffer = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-cast = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-data = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-flight = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-ipc = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-json = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-ord = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-row = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-schema = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-select = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +arrow-string = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } +parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "ca671dd37d73b730938f77f7a7ad76545280a4a8" } diff --git a/benches/sqlite_insert_benchmark.rs b/benches/sqlite_insert_benchmark.rs index 6740a7d1..6531738b 100644 --- a/benches/sqlite_insert_benchmark.rs +++ b/benches/sqlite_insert_benchmark.rs @@ -181,6 +181,7 @@ async fn run_benchmark( constraints: Constraints::new_unverified(vec![]), column_defaults: std::collections::HashMap::default(), temporary: false, + or_replace: false, }; let ctx = SessionContext::new(); diff --git a/core/Cargo.toml b/core/Cargo.toml index 603a54bd..ab5f7271 100644 --- a/core/Cargo.toml +++ b/core/Cargo.toml @@ -30,7 +30,7 @@ byte-unit = { version = "5.1.4", optional = true } chrono = { workspace = true } clickhouse = { version = "0.13.3", optional = true } dashmap = { workspace = true } -datafusion = { workspace = true, default-features = false } +datafusion = { workspace = true, default-features = false, features = ["sql"] } datafusion-expr = { workspace = true, optional = true } datafusion-federation = { workspace = true, features = ["sql"], optional = true } datafusion-physical-expr = { workspace = true, optional = true } @@ -68,7 +68,7 @@ prost = { workspace = true, optional = true } rand = { workspace = true } regex = { workspace = true } r2d2 = { version = "0.8", optional = true } -r2d2_adbc = { version = "0.1.0", optional = true } +r2d2_adbc = { version = "0.2.0", optional = true } rusqlite = { workspace = true, optional = true } rust_decimal = { version = "1.38.0", features = ["db-postgres"], optional = true } sea-query = { workspace = true } @@ -88,9 +88,9 @@ tokio-postgres = { version = "0.7.10", features = [ tokio-rusqlite = { workspace = true, optional = true } tonic = { workspace = true, optional = true } tracing = { workspace = true } -uuid = { workspace = true, optional = true } hickory-resolver = { workspace = true } url = { workspace = true } +uuid = { workspace = true, optional = true } adbc_driver_manager = { workspace = true, optional = true } adbc_core = { workspace = true, optional = true } @@ -98,9 +98,9 @@ adbc_core = { workspace = true, optional = true } anyhow = "1.0" bollard = "0.19" geozero = { version = "0.14.0", features = ["with-wkb"] } -insta = { version = "1.43.2", features = ["filters"] } +insta = { version = "1.46.0", features = ["filters"] } parquet = { workspace = true } -prost = { version = "=0.13.5" } +prost = { version = "=0.14.1" } rand = { workspace = true } reqwest = "0.12" rstest = "0.26.1" @@ -216,4 +216,4 @@ required-features = ["sqlite"] [[example]] name = "adbc" path = "examples/adbc_duckdb.rs" -required-features = ["adbc"] \ No newline at end of file +required-features = ["adbc"] diff --git a/core/benches/sqlite_insert_benchmark.rs b/core/benches/sqlite_insert_benchmark.rs index 87d69d11..322bf6e5 100644 --- a/core/benches/sqlite_insert_benchmark.rs +++ b/core/benches/sqlite_insert_benchmark.rs @@ -172,6 +172,7 @@ async fn run_benchmark( file_type: String::new(), table_partition_cols: vec![], if_not_exists: true, + or_replace: false, definition: None, order_exprs: vec![], unbounded: false, diff --git a/core/src/duckdb.rs b/core/src/duckdb.rs index baa1782b..c21cadaf 100644 --- a/core/src/duckdb.rs +++ b/core/src/duckdb.rs @@ -450,7 +450,7 @@ impl TableProviderFactory for DuckDBTableProviderFactory { let read_pool = read_pool.with_connection_setup_queries(local_settings); - let schema: SchemaRef = Arc::new(cmd.schema.as_ref().into()); + let schema: SchemaRef = Arc::new(cmd.schema.as_ref().as_arrow().clone()); let table_definition = TableDefinition::new(RelationName::new(name.clone()), Arc::clone(&schema)) @@ -804,6 +804,7 @@ pub(crate) mod tests { constraints: Constraints::default(), column_defaults: HashMap::new(), temporary: false, + or_replace: false, }; let table_provider = factory @@ -865,6 +866,7 @@ pub(crate) mod tests { constraints: Constraints::default(), column_defaults: HashMap::new(), temporary: false, + or_replace: false, }; let table_provider = factory @@ -922,6 +924,7 @@ pub(crate) mod tests { constraints: Constraints::default(), column_defaults: HashMap::new(), temporary: false, + or_replace: false, }; let table_provider = factory @@ -977,6 +980,7 @@ pub(crate) mod tests { constraints: Constraints::default(), column_defaults: HashMap::new(), temporary: false, + or_replace: false, }; let table_provider = factory @@ -1035,6 +1039,7 @@ pub(crate) mod tests { constraints: Constraints::default(), column_defaults: HashMap::new(), temporary: false, + or_replace: false, }; let result = factory.create(&ctx.state(), &cmd).await; diff --git a/core/src/duckdb/creator.rs b/core/src/duckdb/creator.rs index 6eb7b626..72738c99 100644 --- a/core/src/duckdb/creator.rs +++ b/core/src/duckdb/creator.rs @@ -97,6 +97,10 @@ impl TableDefinition { Arc::clone(&self.schema) } + pub fn indexes(&self) -> &[(ColumnReference, IndexType)] { + &self.indexes + } + /// For an internal table, generate a unique name based on the table definition name and the current system time. pub fn generate_internal_name(&self) -> super::Result { let unix_ms = std::time::SystemTime::now() @@ -113,10 +117,6 @@ impl TableDefinition { self.constraints.as_ref() } - pub fn indexes(&self) -> &[(ColumnReference, IndexType)] { - &self.indexes - } - /// Returns true if this table definition has a base table matching the exact `RelationName` of the definition /// /// # Errors @@ -315,7 +315,7 @@ impl TableManager { /// Inserts data from this table into the target table. #[tracing::instrument(level = "debug", skip_all)] #[allow(dead_code)] - pub(crate) fn insert_into( + pub fn insert_into( &self, table: &TableManager, tx: &Transaction<'_>, @@ -393,7 +393,7 @@ impl TableManager { Ok(()) } - pub(crate) fn drop_indexes(&self, tx: &Transaction<'_>) -> super::Result<()> { + pub fn drop_indexes(&self, tx: &Transaction<'_>) -> super::Result<()> { // drop indexes on this table for index in self.indexes_vec() { self.drop_index(tx, index)?; diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_0.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_0.snap index 6a93f486..685c81be 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_0.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_0.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -39,6 +39,6 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 │ │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_1.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_1.snap index 59d93396..19981aa2 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_1.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_1.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,10 +29,10 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ Projections: name │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_0.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_0.snap index 6a93f486..685c81be 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_0.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_0.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -39,6 +39,6 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 │ │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_1.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_1.snap index 59d93396..19981aa2 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_1.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_1.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,10 +29,10 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ Projections: name │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_2.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_2.snap index b1af244f..d39602db 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_2.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_2.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT name, status FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT name, status FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -37,6 +37,6 @@ EXPLAIN ANALYZE SELECT name, status FROM test_table WHERE id = 1 │ │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_3.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_3.snap index 8cb00c22..4e5547c3 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_3.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_3.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE age = 30 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE age = 30 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -39,6 +39,6 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE age = 30 │ │ │ Filters: age=30 │ │ │ -│ 2 Rows │ +│ 2 rows │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_4.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_4.snap index 22700bf5..323ef862 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_4.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_4.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE age = 30 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,10 +29,10 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE age = 30 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ Projections: name │ │ Filters: age=30 │ │ │ -│ 2 Rows │ +│ 2 rows │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_5.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_5.snap index 19356376..80fd8be0 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_5.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_5.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT id, name FROM test_table WHERE age = 30 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -28,7 +28,7 @@ EXPLAIN ANALYZE SELECT id, name FROM test_table WHERE age = 30 │ id │ │ name │ │ │ -│ 2 Rows │ +│ 2 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -38,7 +38,7 @@ EXPLAIN ANALYZE SELECT id, name FROM test_table WHERE age = 30 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -46,6 +46,6 @@ EXPLAIN ANALYZE SELECT id, name FROM test_table WHERE age = 30 │ │ │ Filters: age=30 │ │ │ -│ 2 Rows │ +│ 2 rows │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_6.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_6.snap index 79b1003b..1a76369a 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_6.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_6.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE status = 'active' ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE status = 'active' │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -40,6 +40,6 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE status = 'active' │ Filters: │ │ status='active' │ │ │ -│ 3 Rows │ +│ 3 rows │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_7.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_7.snap index 2533ea0a..84be5d2b 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_7.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_7.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE status = 'active' ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,12 +29,12 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE status = 'active' │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ Projections: name │ │ │ │ Filters: │ │ status='active' │ │ │ -│ 3 Rows │ +│ 3 rows │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_8.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_8.snap index 816d7e80..5e7f1378 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_8.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_multiple_indexes_8.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT id, age FROM test_table WHERE status = 'active' ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT id, age FROM test_table WHERE status = 'active' │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ id │ @@ -38,6 +38,6 @@ EXPLAIN ANALYZE SELECT id, age FROM test_table WHERE status = 'active' │ Filters: │ │ status='active' │ │ │ -│ 3 Rows │ +│ 3 rows │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_0.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_0.snap index 6a93f486..685c81be 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_0.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_0.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -39,6 +39,6 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE id = 1 │ │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_1.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_1.snap index 59d93396..19981aa2 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_1.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_1.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,10 +29,10 @@ EXPLAIN ANALYZE SELECT name FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ Projections: name │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_2.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_2.snap index b1af244f..d39602db 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_2.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_2.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT name, status FROM test_table WHERE id = 1 ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -29,7 +29,7 @@ EXPLAIN ANALYZE SELECT name, status FROM test_table WHERE id = 1 │__data_test_table_redacted│ │ redacted │ │ │ -│ Type: Index Scan │ +│ Type: Sequential Scan │ │ │ │ Projections: │ │ name │ @@ -37,6 +37,6 @@ EXPLAIN ANALYZE SELECT name, status FROM test_table WHERE id = 1 │ │ │ Filters: id=1 │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_3.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_3.snap index bab75885..8d404613 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_3.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_3.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE name = 'Alice' ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -39,6 +39,6 @@ EXPLAIN ANALYZE SELECT * FROM test_table WHERE name = 'Alice' │ │ │ Filters: name='Alice' │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_4.snap b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_4.snap index a668f4d0..6bbf6858 100644 --- a/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_4.snap +++ b/core/src/duckdb/snapshots/datafusion_table_providers__duckdb__creator__tests__explain_analyze_primary_key_and_index_4.snap @@ -1,5 +1,5 @@ --- -source: src/duckdb/creator.rs +source: core/src/duckdb/creator.rs expression: explain_result --- ┌─────────────────────────────────────┐ @@ -19,7 +19,7 @@ EXPLAIN ANALYZE SELECT id, status FROM test_table WHERE name = 'Bob' ┌─────────────┴─────────────┐ │ EXPLAIN_ANALYZE │ │ ──────────────────── │ -│ 0 Rows │ +│ 0 rows │ │ (0.00s) │ └─────────────┬─────────────┘ ┌─────────────┴─────────────┐ @@ -37,6 +37,6 @@ EXPLAIN ANALYZE SELECT id, status FROM test_table WHERE name = 'Bob' │ │ │ Filters: name='Bob' │ │ │ -│ 1 Rows │ +│ 1 row │ │ (0.00s) │ └───────────────────────────┘ diff --git a/core/src/duckdb/sql_table.rs b/core/src/duckdb/sql_table.rs index dcb6ef6a..e340cc7c 100644 --- a/core/src/duckdb/sql_table.rs +++ b/core/src/duckdb/sql_table.rs @@ -22,11 +22,11 @@ use datafusion::{ }, sql::{unparser::dialect::DuckDBDialect, TableReference}, }; +use datafusion_physical_expr::EquivalenceProperties; use futures::TryStreamExt; use std::collections::HashMap; use std::fmt::Display; use std::{any::Any, fmt, sync::Arc}; -use datafusion_physical_expr::EquivalenceProperties; pub struct DuckDBTable { pub(crate) base_table: SqlTable, @@ -79,6 +79,12 @@ impl DuckDBTable { } } + #[must_use] + pub fn with_indexes(mut self, indexes: Vec<(ColumnReference, IndexType)>) -> Self { + self.indexes = indexes; + self + } + fn create_physical_plan( &self, projections: Option<&Vec>, @@ -194,7 +200,9 @@ impl DuckSqlExec { optimized_sql_properties: None, }) } +} +impl DuckSqlExec { /// The SQL expression for this execution node. This may differ from `DuckSqlExec::base_sql` /// if rewritten by an optimization step. pub fn sql(&self) -> SqlResult { @@ -211,8 +219,9 @@ impl DuckSqlExec { } /// Indexes that may be bound for the SQL expression in this execution node - pub fn indexes(&self) -> &Vec<(ColumnReference, IndexType)> { - self.indexes.as_ref() + #[must_use] + pub fn indexes(&self) -> &[(ColumnReference, IndexType)] { + &self.indexes } /// The unoptimized SQL expression for this execution node @@ -222,6 +231,7 @@ impl DuckSqlExec { /// Use this method to bind an optimized SQL expression from a `PhysicalOptimizerRule`. Provide /// a `new_schema` if changing the output schema of this node. + #[must_use] pub fn with_optimized_sql( mut self, sql: impl Into, @@ -267,12 +277,14 @@ impl ExecutionPlan for DuckSqlExec { fn schema(&self) -> SchemaRef { self.optimized_sql_schema .as_ref() - .map(Arc::clone) - .unwrap_or(self.base_exec.schema()) + .cloned() + .unwrap_or_else(|| self.base_exec.schema()) } fn properties(&self) -> &PlanProperties { - self.optimized_sql_properties.as_ref().unwrap_or(self.base_exec.properties()) + self.optimized_sql_properties + .as_ref() + .unwrap_or_else(|| self.base_exec.properties()) } fn children(&self) -> Vec<&Arc> { diff --git a/core/src/flight/codec.rs b/core/src/flight/codec.rs index 11b43d91..afe8448a 100644 --- a/core/src/flight/codec.rs +++ b/core/src/flight/codec.rs @@ -22,7 +22,7 @@ use std::sync::Arc; use crate::flight::exec::{FlightConfig, FlightExec}; use crate::flight::to_df_err; use datafusion::common::DataFusionError; -use datafusion::logical_expr::registry::FunctionRegistry; +use datafusion::execution::TaskContext; use datafusion::physical_plan::ExecutionPlan; use datafusion_proto::physical_plan::PhysicalExtensionCodec; @@ -35,7 +35,7 @@ impl PhysicalExtensionCodec for FlightPhysicalCodec { &self, buf: &[u8], inputs: &[Arc], - _registry: &dyn FunctionRegistry, + _registry: &TaskContext, ) -> datafusion::common::Result> { if inputs.is_empty() { let config: FlightConfig = serde_json::from_slice(buf).map_err(to_df_err)?; diff --git a/core/src/mysql.rs b/core/src/mysql.rs index 41dabb09..aab16b94 100644 --- a/core/src/mysql.rs +++ b/core/src/mysql.rs @@ -199,7 +199,7 @@ impl TableProviderFactory for MySQLTableProviderFactory { ) -> datafusion::common::Result> { let name = cmd.name.to_string(); let mut options = cmd.options.clone(); - let schema: Schema = cmd.schema.as_ref().into(); + let schema: Schema = cmd.schema.as_ref().as_arrow().clone(); let indexes_option_str = options.remove("indexes"); let unparsed_indexes: HashMap = match indexes_option_str { @@ -394,8 +394,9 @@ impl MySQL { batch: RecordBatch, on_conflict: Option, ) -> Result<()> { + let batches = vec![batch]; let insert_table_builder = - InsertBuilder::new(&TableReference::bare(self.table_name.clone()), vec![batch]); + InsertBuilder::new(&TableReference::bare(self.table_name.clone()), &batches); let sea_query_on_conflict = on_conflict.map(|oc| oc.build_sea_query_on_conflict(&self.schema)); diff --git a/core/src/postgres.rs b/core/src/postgres.rs index 1719124b..739effbd 100644 --- a/core/src/postgres.rs +++ b/core/src/postgres.rs @@ -234,7 +234,7 @@ impl TableProviderFactory for PostgresTableProviderFactory { let name = cmd.name.clone(); let mut options = cmd.options.clone(); - let schema: Schema = cmd.schema.as_ref().into(); + let schema: Schema = cmd.schema.as_ref().as_arrow().clone(); let indexes_option_str = options.remove("indexes"); let unparsed_indexes: HashMap = match indexes_option_str { @@ -442,7 +442,8 @@ impl Postgres { batch: RecordBatch, on_conflict: Option, ) -> Result<()> { - let insert_table_builder = InsertBuilder::new(&self.table, vec![batch]); + let batches = vec![batch]; + let insert_table_builder = InsertBuilder::new(&self.table, &batches); let sea_query_on_conflict = on_conflict.map(|oc| oc.build_sea_query_on_conflict(&self.schema)); diff --git a/core/src/sql/arrow_sql_gen/arrow.rs b/core/src/sql/arrow_sql_gen/arrow.rs index 7ecb9c24..437d76a0 100644 --- a/core/src/sql/arrow_sql_gen/arrow.rs +++ b/core/src/sql/arrow_sql_gen/arrow.rs @@ -1,13 +1,13 @@ use datafusion::arrow::{ array::{ types::Int8Type, ArrayBuilder, BinaryBuilder, BooleanBuilder, Date32Builder, Date64Builder, - Decimal128Builder, Decimal256Builder, FixedSizeBinaryBuilder, FixedSizeListBuilder, - Float32Builder, Float64Builder, Int16Builder, Int32Builder, Int64Builder, Int8Builder, - IntervalMonthDayNanoBuilder, LargeBinaryBuilder, LargeStringBuilder, ListBuilder, - NullBuilder, StringBuilder, StringDictionaryBuilder, StructBuilder, - Time64NanosecondBuilder, TimestampMicrosecondBuilder, TimestampMillisecondBuilder, - TimestampNanosecondBuilder, TimestampSecondBuilder, UInt16Builder, UInt32Builder, - UInt64Builder, UInt8Builder, + Decimal128Builder, Decimal256Builder, Decimal32Builder, Decimal64Builder, + FixedSizeBinaryBuilder, FixedSizeListBuilder, Float32Builder, Float64Builder, Int16Builder, + Int32Builder, Int64Builder, Int8Builder, IntervalMonthDayNanoBuilder, LargeBinaryBuilder, + LargeStringBuilder, ListBuilder, NullBuilder, StringBuilder, StringDictionaryBuilder, + StructBuilder, Time64NanosecondBuilder, TimestampMicrosecondBuilder, + TimestampMillisecondBuilder, TimestampNanosecondBuilder, TimestampSecondBuilder, + UInt16Builder, UInt32Builder, UInt64Builder, UInt8Builder, }, datatypes::{DataType, TimeUnit, UInt16Type}, }; @@ -40,6 +40,16 @@ pub fn map_data_type_to_array_builder(data_type: &DataType) -> Box Box::new(BinaryBuilder::new()), DataType::LargeBinary => Box::new(LargeBinaryBuilder::new()), DataType::Interval(_) => Box::new(IntervalMonthDayNanoBuilder::new()), + DataType::Decimal32(precision, scale) => Box::new( + Decimal32Builder::new() + .with_precision_and_scale(*precision, *scale) + .unwrap_or_default(), + ), + DataType::Decimal64(precision, scale) => Box::new( + Decimal64Builder::new() + .with_precision_and_scale(*precision, *scale) + .unwrap_or_default(), + ), DataType::Decimal128(precision, scale) => Box::new( Decimal128Builder::new() .with_precision_and_scale(*precision, *scale) diff --git a/core/src/sql/arrow_sql_gen/statement.rs b/core/src/sql/arrow_sql_gen/statement.rs index 6e3fe2f0..6edbf077 100644 --- a/core/src/sql/arrow_sql_gen/statement.rs +++ b/core/src/sql/arrow_sql_gen/statement.rs @@ -162,6 +162,20 @@ macro_rules! push_value { }}; } +macro_rules! push_big_decimal_value { + ($row_values:expr, $column:expr, $row:expr, $scale:expr, $array_type:ident) => {{ + let array = $column.as_any().downcast_ref::(); + if let Some(valid_array) = array { + if valid_array.is_null($row) { + $row_values.push(Keyword::Null.into()); + continue; + } + $row_values + .push(BigDecimal::new(valid_array.value($row).into(), i64::from(*$scale)).into()); + } + }}; +} + macro_rules! push_list_values { ($data_type:expr, $list_array:expr, $row_values:expr, $array_type:ty, $vec_type:ty, $sql_type:expr) => {{ let mut list_values: Vec<$vec_type> = Vec::new(); @@ -177,9 +191,9 @@ macro_rules! push_list_values { }}; } -pub struct InsertBuilder { +pub struct InsertBuilder<'a> { table: TableReference, - record_batches: Vec, + record_batches: &'a Vec, } #[allow(unused_variables)] @@ -206,9 +220,9 @@ pub fn use_json_insert_for_type( false } -impl InsertBuilder { +impl<'a> InsertBuilder<'a> { #[must_use] - pub fn new(table: &TableReference, record_batches: Vec) -> Self { + pub fn new(table: &TableReference, record_batches: &'a Vec) -> Self { Self { table: table.clone(), record_batches, @@ -248,18 +262,14 @@ impl InsertBuilder { DataType::LargeUtf8 => push_value!(row_values, column, row, LargeStringArray), DataType::Utf8View => push_value!(row_values, column, row, StringViewArray), DataType::Boolean => push_value!(row_values, column, row, BooleanArray), + DataType::Decimal32(_, scale) => { + push_big_decimal_value!(row_values, column, row, scale, Decimal32Array) + } + DataType::Decimal64(_, scale) => { + push_big_decimal_value!(row_values, column, row, scale, Decimal64Array) + } DataType::Decimal128(_, scale) => { - let array = column.as_any().downcast_ref::(); - if let Some(valid_array) = array { - if valid_array.is_null(row) { - row_values.push(Keyword::Null.into()); - continue; - } - row_values.push( - BigDecimal::new(valid_array.value(row).into(), i64::from(*scale)) - .into(), - ); - } + push_big_decimal_value!(row_values, column, row, scale, Decimal128Array) } DataType::Decimal256(_, scale) => { let array = column.as_any().downcast_ref::(); @@ -1070,7 +1080,7 @@ impl InsertBuilder { .columns(columns) .to_owned(); - for record_batch in &self.record_batches { + for record_batch in self.record_batches { self.construct_insert_stmt(&mut insert_stmt, record_batch, &query_builder)?; } if let Some(on_conflict) = on_conflict { @@ -1309,9 +1319,10 @@ pub(crate) fn map_data_type_to_column_type(data_type: &DataType) -> ColumnType { DataType::Utf8 | DataType::LargeUtf8 | DataType::Utf8View => ColumnType::Text, DataType::Boolean => ColumnType::Boolean, #[allow(clippy::cast_sign_loss)] // This is safe because scale will never be negative - DataType::Decimal128(p, s) | DataType::Decimal256(p, s) => { - ColumnType::Decimal(Some((u32::from(*p), *s as u32))) - } + DataType::Decimal32(p, s) + | DataType::Decimal64(p, s) + | DataType::Decimal128(p, s) + | DataType::Decimal256(p, s) => ColumnType::Decimal(Some((u32::from(*p), *s as u32))), DataType::Timestamp(_unit, time_zone) => { if time_zone.is_some() { return ColumnType::TimestampWithTimeZone; @@ -1456,10 +1467,14 @@ mod tests { Field::new("id", DataType::Int32, false), Field::new("name", DataType::Utf8, false), Field::new("age", DataType::Int32, true), + Field::new("balance", DataType::Decimal64(10, 2), true), ]); let id_array = array::Int32Array::from(vec![1, 2, 3]); let name_array = array::StringArray::from(vec!["a", "b", "c"]); let age_array = array::Int32Array::from(vec![10, 20, 30]); + let balance_array = array::Decimal64Array::from(vec![12345, -12345, 12300]) + .with_precision_and_scale(10, 2) + .unwrap(); let batch1 = RecordBatch::try_new( Arc::new(schema1.clone()), @@ -1467,6 +1482,7 @@ mod tests { Arc::new(id_array.clone()), Arc::new(name_array.clone()), Arc::new(age_array.clone()), + Arc::new(balance_array.clone()), ], ) .expect("Unable to build record batch"); @@ -1475,6 +1491,7 @@ mod tests { Field::new("id", DataType::Int32, false), Field::new("name", DataType::Utf8, false), Field::new("blah", DataType::Int32, true), + Field::new("balance", DataType::Decimal64(10, 2), true), ]); let batch2 = RecordBatch::try_new( @@ -1483,15 +1500,25 @@ mod tests { Arc::new(id_array), Arc::new(name_array), Arc::new(age_array), + Arc::new(balance_array), ], ) .expect("Unable to build record batch"); let record_batches = vec![batch1, batch2]; - let sql = InsertBuilder::new(&TableReference::from("users"), record_batches) + let sql = InsertBuilder::new(&TableReference::from("users"), &record_batches) .build_postgres(None) .expect("Failed to build insert statement"); - assert_eq!(sql, "INSERT INTO \"users\" (\"id\", \"name\", \"age\") VALUES (1, 'a', 10), (2, 'b', 20), (3, 'c', 30), (1, 'a', 10), (2, 'b', 20), (3, 'c', 30)"); + assert_eq!( + sql, + "INSERT INTO \"users\" (\"id\", \"name\", \"age\", \"balance\") VALUES \ + (1, 'a', 10, 123.45), \ + (2, 'b', 20, -123.45), \ + (3, 'c', 30, 123.00), \ + (1, 'a', 10, 123.45), \ + (2, 'b', 20, -123.45), \ + (3, 'c', 30, 123.00)" + ); } #[test] @@ -1532,7 +1559,7 @@ mod tests { .expect("Unable to build record batch"); let record_batches = vec![batch1, batch2]; - let sql = InsertBuilder::new(&TableReference::from("schema.users"), record_batches) + let sql = InsertBuilder::new(&TableReference::from("schema.users"), &record_batches) .build_postgres(None) .expect("Failed to build insert statement"); assert_eq!(sql, "INSERT INTO \"schema\".\"users\" (\"id\", \"name\", \"age\") VALUES (1, 'a', 10), (2, 'b', 20), (3, 'c', 30), (1, 'a', 10), (2, 'b', 20), (3, 'c', 30)"); @@ -1569,7 +1596,7 @@ mod tests { let batch = RecordBatch::try_new(Arc::new(schema1.clone()), vec![Arc::new(list_array)]) .expect("Unable to build record batch"); - let sql = InsertBuilder::new(&TableReference::from("arrays"), vec![batch]) + let sql = InsertBuilder::new(&TableReference::from("arrays"), &vec![batch]) .build_postgres(None) .expect("Failed to build insert statement"); assert_eq!( diff --git a/core/src/sql/db_connection_pool/dbconnection/duckdbconn.rs b/core/src/sql/db_connection_pool/dbconnection/duckdbconn.rs index 7d248824..87648fe6 100644 --- a/core/src/sql/db_connection_pool/dbconnection/duckdbconn.rs +++ b/core/src/sql/db_connection_pool/dbconnection/duckdbconn.rs @@ -17,8 +17,8 @@ use duckdb::vtab::to_duckdb_type_id; use duckdb::ToSql; use duckdb::{Connection, DuckdbConnectionManager}; use dyn_clone::DynClone; -use rand::distr::{Alphanumeric, SampleString}; use once_cell::sync::OnceCell; +use rand::distr::{Alphanumeric, SampleString}; use snafu::{prelude::*, ResultExt}; use tokio::sync::mpsc::Sender; @@ -233,9 +233,9 @@ impl DuckDBAttachments { /// /// Returns an error if attachment or search_path setting fails. pub fn attach_once(&self, conn: &Connection) -> Result<()> { - let search_path = self.search_path_cache.get_or_try_init(|| { - self.attach(conn) - })?; + let search_path = self + .search_path_cache + .get_or_try_init(|| self.attach(conn))?; conn.execute(&format!("SET search_path = '{}'", search_path), []) .context(DuckDBConnectionSnafu)?; @@ -295,7 +295,7 @@ impl DuckDbConnection { ) -> &mut r2d2::PooledConnection { &mut self.conn } - + #[must_use] pub fn with_unsupported_type_action( mut self, diff --git a/core/src/sql/db_connection_pool/dbconnection/sqliteconn.rs b/core/src/sql/db_connection_pool/dbconnection/sqliteconn.rs index 2e420552..01422524 100644 --- a/core/src/sql/db_connection_pool/dbconnection/sqliteconn.rs +++ b/core/src/sql/db_connection_pool/dbconnection/sqliteconn.rs @@ -20,7 +20,9 @@ use super::Result; #[derive(Debug, Snafu)] pub enum Error { #[snafu(display("ConnectionError {source}"))] - ConnectionError { source: tokio_rusqlite::Error }, + ConnectionError { + source: tokio_rusqlite::Error, + }, #[snafu(display("Unable to query: {source}"))] QueryError { source: rusqlite::Error }, diff --git a/core/src/sql/db_connection_pool/sqlitepool.rs b/core/src/sql/db_connection_pool/sqlitepool.rs index 981f18ff..44944cfa 100644 --- a/core/src/sql/db_connection_pool/sqlitepool.rs +++ b/core/src/sql/db_connection_pool/sqlitepool.rs @@ -180,9 +180,13 @@ impl SqliteConnectionPool { .await .map_err(|e| match e { tokio_rusqlite::Error::Error(e) => Error::ConnectionPoolError { source: e }, - tokio_rusqlite::Error::ConnectionClosed => Error::ConnectionPoolError { source: rusqlite::Error::InvalidQuery }, + tokio_rusqlite::Error::ConnectionClosed => Error::ConnectionPoolError { + source: rusqlite::Error::InvalidQuery, + }, tokio_rusqlite::Error::Close((_, e)) => Error::ConnectionPoolError { source: e }, - _ => Error::ConnectionPoolError { source: rusqlite::Error::InvalidQuery }, + _ => Error::ConnectionPoolError { + source: rusqlite::Error::InvalidQuery, + }, })?; // database attachments are only supported for file-mode databases @@ -206,9 +210,15 @@ impl SqliteConnectionPool { .await .map_err(|e| match e { tokio_rusqlite::Error::Error(e) => Error::ConnectionPoolError { source: e }, - tokio_rusqlite::Error::ConnectionClosed => Error::ConnectionPoolError { source: rusqlite::Error::InvalidQuery }, - tokio_rusqlite::Error::Close((_, e)) => Error::ConnectionPoolError { source: e }, - _ => Error::ConnectionPoolError { source: rusqlite::Error::InvalidQuery }, + tokio_rusqlite::Error::ConnectionClosed => Error::ConnectionPoolError { + source: rusqlite::Error::InvalidQuery, + }, + tokio_rusqlite::Error::Close((_, e)) => { + Error::ConnectionPoolError { source: e } + } + _ => Error::ConnectionPoolError { + source: rusqlite::Error::InvalidQuery, + }, })?; } diff --git a/core/src/sqlite.rs b/core/src/sqlite.rs index 6656cbe5..2ad5588d 100644 --- a/core/src/sqlite.rs +++ b/core/src/sqlite.rs @@ -336,7 +336,7 @@ impl TableProviderFactory for SqliteTableProviderFactory { ) }; - let schema: SchemaRef = Arc::new(cmd.schema.as_ref().into()); + let schema: SchemaRef = Arc::new(cmd.schema.as_ref().as_arrow().clone()); let schema: SchemaRef = SqliteConnection::handle_unsupported_schema(&schema, UnsupportedTypeAction::Error) .map_err(|e| DataFusionError::External(e.into()))?; @@ -741,7 +741,8 @@ impl Sqlite { batch: RecordBatch, on_conflict: Option<&OnConflict>, ) -> rusqlite::Result<()> { - let insert_table_builder = InsertBuilder::new(&self.table, vec![batch]); + let batches = vec![batch]; + let insert_table_builder = InsertBuilder::new(&self.table, &batches); let sea_query_on_conflict = on_conflict.map(|oc| oc.build_sea_query_on_conflict(&self.schema)); @@ -1560,6 +1561,7 @@ pub(crate) mod tests { constraints: primary_keys_constraints, column_defaults: HashMap::default(), temporary: false, + or_replace: false, }; let ctx = SessionContext::new(); let table = SqliteTableProviderFactory::default() diff --git a/core/src/sqlite/federation.rs b/core/src/sqlite/federation.rs index bb1339d7..cff50ee9 100644 --- a/core/src/sqlite/federation.rs +++ b/core/src/sqlite/federation.rs @@ -93,6 +93,7 @@ impl SQLExecutor for SQLiteTable { let rule = Box::new(sqlite_ast_analyzer(self.decimal_between)); Some(AstAnalyzer::new(vec![rule])) } + fn can_execute_plan(&self, plan: &LogicalPlan) -> bool { // Default to not federate if [`Self::function_support`] provided, otherwise true. self.function_support.as_ref().is_none_or(|func_supp| { diff --git a/core/src/sqlite/write.rs b/core/src/sqlite/write.rs index e0190837..aad1b815 100644 --- a/core/src/sqlite/write.rs +++ b/core/src/sqlite/write.rs @@ -233,13 +233,14 @@ impl DataSink for SqliteDataSink { .context(super::UnableToInsertIntoTableAsyncSnafu) .map_err(|e| { if let super::Error::UnableToInsertIntoTableAsync { - source: tokio_rusqlite::Error::Error(rusqlite::Error::SqliteFailure( - rusqlite::ffi::Error { - code: rusqlite::ffi::ErrorCode::DiskFull, - .. - }, - _, - )), + source: + tokio_rusqlite::Error::Error(rusqlite::Error::SqliteFailure( + rusqlite::ffi::Error { + code: rusqlite::ffi::ErrorCode::DiskFull, + .. + }, + _, + )), } = e { DataFusionError::External(super::Error::DiskFull {}.into()) @@ -325,6 +326,7 @@ mod tests { constraints: Constraints::default(), column_defaults: HashMap::default(), temporary: false, + or_replace: false, }; let ctx = SessionContext::new(); let table = SqliteTableProviderFactory::default() @@ -467,6 +469,7 @@ mod tests { constraints: Constraints::default(), column_defaults: HashMap::default(), temporary: false, + or_replace: false, }; let ctx = SessionContext::new(); @@ -773,6 +776,7 @@ mod tests { constraints: Constraints::default(), column_defaults: HashMap::default(), temporary: false, + or_replace: false, }; let ctx = SessionContext::new(); let table = SqliteTableProviderFactory::default() @@ -817,6 +821,7 @@ mod tests { constraints: Constraints::default(), column_defaults: HashMap::default(), temporary: false, + or_replace: false, }; let ctx = SessionContext::new(); diff --git a/core/src/util/constraints.rs b/core/src/util/constraints.rs index 68b4fcce..3918b575 100644 --- a/core/src/util/constraints.rs +++ b/core/src/util/constraints.rs @@ -354,8 +354,7 @@ pub(crate) mod tests { .await?; // Read parquet into record batches - let parquet_reader = ParquetRecordBatchReaderBuilder::try_new(parquet_bytes)? - .build()?; + let parquet_reader = ParquetRecordBatchReaderBuilder::try_new(parquet_bytes)?.build()?; let batches: Vec = parquet_reader.collect::, _>>()?; let schema = batches[0].schema(); @@ -365,8 +364,7 @@ pub(crate) mod tests { // This should fail because there are duplicate vendor_ids let result = - validate_batch_with_constraints(batches, &constraints, &UpsertOptions::default()) - .await; + validate_batch_with_constraints(batches, &constraints, &UpsertOptions::default()).await; assert!(result.is_err()); Ok(()) diff --git a/core/tests/arrow_record_batch_gen/mod.rs b/core/tests/arrow_record_batch_gen/mod.rs index c3aa3237..658d4db9 100644 --- a/core/tests/arrow_record_batch_gen/mod.rs +++ b/core/tests/arrow_record_batch_gen/mod.rs @@ -395,21 +395,30 @@ pub(crate) fn get_arrow_struct_record_batch() -> (RecordBatch, SchemaRef) { (record_batch, schema) } -// Decimal128/Decimal256 pub(crate) fn get_arrow_decimal_record_batch() -> (RecordBatch, SchemaRef) { + let decimal32_array = Decimal32Array::from(vec![123, 222, 321]); + let decimal64_array = + Decimal64Array::from(vec![i64::from(123), i64::from(222), i64::from(321)]); let decimal128_array = Decimal128Array::from(vec![i128::from(123), i128::from(222), i128::from(321)]); let decimal256_array = Decimal256Array::from(vec![i256::from(-123), i256::from(222), i256::from(0)]); let schema = Arc::new(Schema::new(vec![ + Field::new("decimal32", DataType::Decimal32(9, 2), false), + Field::new("decimal64", DataType::Decimal64(18, 6), false), Field::new("decimal128", DataType::Decimal128(38, 10), false), Field::new("decimal256", DataType::Decimal256(76, 10), false), ])); let record_batch = RecordBatch::try_new( Arc::clone(&schema), - vec![Arc::new(decimal128_array), Arc::new(decimal256_array)], + vec![ + Arc::new(decimal32_array), + Arc::new(decimal64_array), + Arc::new(decimal128_array), + Arc::new(decimal256_array), + ], ) .expect("Failed to created arrow decimal record batch"); @@ -417,6 +426,9 @@ pub(crate) fn get_arrow_decimal_record_batch() -> (RecordBatch, SchemaRef) { } pub(crate) fn get_mysql_arrow_decimal_record() -> (RecordBatch, SchemaRef) { + let decimal32_array = Decimal32Array::from(vec![123, 222, 321]); + let decimal64_array = + Decimal64Array::from(vec![i64::from(123), i64::from(222), i64::from(321)]); let decimal128_array = Decimal128Array::from(vec![i128::from(123), i128::from(222), i128::from(321)]); let decimal256_array = @@ -425,13 +437,20 @@ pub(crate) fn get_mysql_arrow_decimal_record() -> (RecordBatch, SchemaRef) { .expect("Fail to create Decimal256(65, 10) array"); let schema = Arc::new(Schema::new(vec![ + Field::new("decimal32", DataType::Decimal32(9, 2), false), + Field::new("decimal64", DataType::Decimal64(18, 6), false), Field::new("decimal128", DataType::Decimal128(38, 10), false), Field::new("decimal256", DataType::Decimal256(65, 10), false), // Maximum is 65. ])); let record_batch = RecordBatch::try_new( Arc::clone(&schema), - vec![Arc::new(decimal128_array), Arc::new(decimal256_array)], + vec![ + Arc::new(decimal32_array), + Arc::new(decimal64_array), + Arc::new(decimal128_array), + Arc::new(decimal256_array), + ], ) .expect("Failed to created arrow decimal record batch"); diff --git a/core/tests/duckdb/mod.rs b/core/tests/duckdb/mod.rs index 3d933dc3..01113639 100644 --- a/core/tests/duckdb/mod.rs +++ b/core/tests/duckdb/mod.rs @@ -28,6 +28,7 @@ async fn arrow_duckdb_round_trip( file_type: "".to_string(), table_partition_cols: vec![], if_not_exists: false, + or_replace: false, definition: None, order_exprs: vec![], unbounded: false, diff --git a/core/tests/mysql/mod.rs b/core/tests/mysql/mod.rs index b5c1a5bb..8f5b233e 100644 --- a/core/tests/mysql/mod.rs +++ b/core/tests/mysql/mod.rs @@ -853,6 +853,7 @@ async fn arrow_mysql_round_trip( .collect(), constraints: Constraints::default(), column_defaults: Default::default(), + or_replace: false, }; let table_provider = factory .create(&ctx.state(), &cmd) diff --git a/core/tests/postgres/mod.rs b/core/tests/postgres/mod.rs index 7774460f..e33039ce 100644 --- a/core/tests/postgres/mod.rs +++ b/core/tests/postgres/mod.rs @@ -50,6 +50,7 @@ async fn arrow_postgres_round_trip( constraints: Constraints::default(), column_defaults: HashMap::new(), temporary: false, + or_replace: false, }; let table_provider = factory .create(&ctx.state(), &cmd) diff --git a/core/tests/postgres/schema.rs b/core/tests/postgres/schema.rs index ff1d8a46..37641234 100644 --- a/core/tests/postgres/schema.rs +++ b/core/tests/postgres/schema.rs @@ -66,6 +66,7 @@ async fn test_postgres_schema_inference() { constraints: Constraints::default(), column_defaults: HashMap::new(), temporary: false, + or_replace: false, }; let _ = factory .create(&ctx.state(), &cmd) diff --git a/core/tests/postgres/snapshots/integration__postgres__schema__postgres_materialized_view_schema_inference.snap b/core/tests/postgres/snapshots/integration__postgres__schema__postgres_materialized_view_schema_inference.snap index d152bc46..a5f68efa 100644 --- a/core/tests/postgres/snapshots/integration__postgres__schema__postgres_materialized_view_schema_inference.snap +++ b/core/tests/postgres/snapshots/integration__postgres__schema__postgres_materialized_view_schema_inference.snap @@ -8,33 +8,21 @@ Schema { name: "id", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "small_int_col", data_type: Int16, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "integer_col", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "big_int_col", data_type: Int64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "decimal_col", @@ -43,9 +31,6 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "numeric_col", @@ -54,65 +39,41 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "real_col", data_type: Float32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "double_col", data_type: Float64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "char_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "varchar_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "text_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "bytea_col", data_type: Binary, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "date_col", data_type: Date32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "time_col", @@ -120,9 +81,6 @@ Schema { Nanosecond, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "timestamp_col", @@ -131,9 +89,6 @@ Schema { None, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "timestamptz_col", @@ -144,9 +99,6 @@ Schema { ), ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "interval_col", @@ -154,17 +106,11 @@ Schema { MonthDayNano, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "boolean_col", data_type: Boolean, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "mood_col", @@ -173,59 +119,36 @@ Schema { Utf8, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "uuid_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "json_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "int_array_col", data_type: List( Field { - name: "item", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "text_array_col", data_type: List( Field { - name: "item", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "int_range_col", @@ -235,24 +158,15 @@ Schema { name: "lower", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "upper", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "composite_col", @@ -262,25 +176,16 @@ Schema { name: "x", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "y", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "z", data_type: Int64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "x1", @@ -289,16 +194,10 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], metadata: {}, diff --git a/core/tests/postgres/snapshots/integration__postgres__schema__postgres_schema_inference_complex_types.snap b/core/tests/postgres/snapshots/integration__postgres__schema__postgres_schema_inference_complex_types.snap index 9d4a5cec..47f27813 100644 --- a/core/tests/postgres/snapshots/integration__postgres__schema__postgres_schema_inference_complex_types.snap +++ b/core/tests/postgres/snapshots/integration__postgres__schema__postgres_schema_inference_complex_types.snap @@ -1,5 +1,5 @@ --- -source: tests/postgres/schema.rs +source: core/tests/postgres/schema.rs expression: pretty_schema --- Schema { @@ -7,34 +7,21 @@ Schema { Field { name: "id", data_type: Int32, - nullable: false, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "small_int_col", data_type: Int16, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "integer_col", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "big_int_col", data_type: Int64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "decimal_col", @@ -43,9 +30,6 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "numeric_col", @@ -54,65 +38,41 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "real_col", data_type: Float32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "double_col", data_type: Float64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "char_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "varchar_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "text_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "bytea_col", data_type: Binary, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "date_col", data_type: Date32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "time_col", @@ -120,9 +80,6 @@ Schema { Nanosecond, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "timestamp_col", @@ -131,9 +88,6 @@ Schema { None, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "timestamptz_col", @@ -144,9 +98,6 @@ Schema { ), ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "interval_col", @@ -154,17 +105,11 @@ Schema { MonthDayNano, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "boolean_col", data_type: Boolean, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "mood_col", @@ -173,59 +118,36 @@ Schema { Utf8, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "uuid_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "json_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "int_array_col", data_type: List( Field { - name: "item", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "text_array_col", data_type: List( Field { - name: "item", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "int_range_col", @@ -235,24 +157,15 @@ Schema { name: "lower", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "upper", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "composite_col", @@ -262,25 +175,16 @@ Schema { name: "x", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "y", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "z", data_type: Int64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "x1", @@ -289,16 +193,10 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], metadata: {}, diff --git a/core/tests/postgres/snapshots/integration__postgres__schema__postgres_view_schema_inference.snap b/core/tests/postgres/snapshots/integration__postgres__schema__postgres_view_schema_inference.snap index d152bc46..a5f68efa 100644 --- a/core/tests/postgres/snapshots/integration__postgres__schema__postgres_view_schema_inference.snap +++ b/core/tests/postgres/snapshots/integration__postgres__schema__postgres_view_schema_inference.snap @@ -8,33 +8,21 @@ Schema { name: "id", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "small_int_col", data_type: Int16, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "integer_col", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "big_int_col", data_type: Int64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "decimal_col", @@ -43,9 +31,6 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "numeric_col", @@ -54,65 +39,41 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "real_col", data_type: Float32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "double_col", data_type: Float64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "char_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "varchar_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "text_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "bytea_col", data_type: Binary, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "date_col", data_type: Date32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "time_col", @@ -120,9 +81,6 @@ Schema { Nanosecond, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "timestamp_col", @@ -131,9 +89,6 @@ Schema { None, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "timestamptz_col", @@ -144,9 +99,6 @@ Schema { ), ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "interval_col", @@ -154,17 +106,11 @@ Schema { MonthDayNano, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "boolean_col", data_type: Boolean, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "mood_col", @@ -173,59 +119,36 @@ Schema { Utf8, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "uuid_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "json_col", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "int_array_col", data_type: List( Field { - name: "item", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "text_array_col", data_type: List( Field { - name: "item", data_type: Utf8, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "int_range_col", @@ -235,24 +158,15 @@ Schema { name: "lower", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "upper", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "composite_col", @@ -262,25 +176,16 @@ Schema { name: "x", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "y", data_type: Int32, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "z", data_type: Int64, nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, Field { name: "x1", @@ -289,16 +194,10 @@ Schema { 2, ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], ), nullable: true, - dict_id: 0, - dict_is_ordered: false, - metadata: {}, }, ], metadata: {}, diff --git a/core/tests/sqlite/mod.rs b/core/tests/sqlite/mod.rs index 46975eae..f9830ffc 100644 --- a/core/tests/sqlite/mod.rs +++ b/core/tests/sqlite/mod.rs @@ -5,7 +5,7 @@ use arrow::array::{ StringArray, Time32MillisecondArray, Time32SecondArray, Time64MicrosecondArray, Time64NanosecondArray, UInt16Array, UInt32Array, UInt64Array, UInt8Array, }; -use arrow::datatypes::{DataType, Decimal128Type, DecimalType, Field, Schema, SchemaRef, TimeUnit}; +use arrow::datatypes::{DataType, Field, Schema, SchemaRef, TimeUnit}; use datafusion::catalog::TableProviderFactory; use datafusion::common::{Constraints, ToDFSchema}; use datafusion::execution::context::SessionContext; @@ -52,12 +52,10 @@ async fn arrow_sqlite_round_trip( // Create sqlite table from arrow records and insert arrow records let schema = Arc::clone(&arrow_record.schema()); let create_table_stmts = CreateTableBuilder::new(schema, table_name).build_sqlite(); - let insert_table_stmt = InsertBuilder::new( - &TableReference::from(table_name), - vec![arrow_record.clone()], - ) - .build_sqlite(None) - .expect("SQLite insert statement should be constructed"); + let batches = vec![arrow_record.clone()]; + let insert_table_stmt = InsertBuilder::new(&TableReference::from(table_name), &batches) + .build_sqlite(None) + .expect("SQLite insert statement should be constructed"); // Test arrow -> Sqlite row coverage let _ = conn @@ -313,6 +311,7 @@ async fn test_sqlite_table_provider_roundtrip( constraints: Constraints::new_unverified(vec![]), column_defaults: HashMap::default(), temporary: false, + or_replace: false, }; let factory = SqliteTableProviderFactory::default() @@ -359,10 +358,12 @@ async fn test_sqlite_table_provider_roundtrip( ); // Cast the result back to the original schema for comparison + #[cfg(feature = "sqlite-federation")] let casted_result = try_cast_to(result_batch.clone(), Arc::clone(&schema)) .expect("should cast result to original schema"); // Verify the data matches + #[cfg(feature = "sqlite-federation")] assert_eq!( casted_result, record_batch, "Round-tripped data should match original" @@ -388,6 +389,7 @@ async fn test_sqlite_list_utf8_federation_roundtrip() { file_type: String::new(), table_partition_cols: vec![], if_not_exists: true, + or_replace: false, definition: None, order_exprs: vec![], unbounded: false, @@ -450,6 +452,7 @@ async fn test_sqlite_list_utf8_federation_roundtrip() { ); } +#[allow(dead_code)] fn downcast_decimal_array(array: &ArrayRef) -> &Decimal128Array { match array.as_any().downcast_ref::() { Some(array) => array, @@ -457,6 +460,7 @@ fn downcast_decimal_array(array: &ArrayRef) -> &Decimal128Array { } } +#[allow(dead_code)] async fn download_parquet_as_record_batch(url: &str) -> anyhow::Result { // Download the parquet file let response = reqwest::get(url).await?; diff --git a/python/Cargo.toml b/python/Cargo.toml index 5906538d..3f3b9da6 100644 --- a/python/Cargo.toml +++ b/python/Cargo.toml @@ -19,7 +19,7 @@ arrow-flight = { workspace = true, optional = true } datafusion = { workspace = true, features = ["pyarrow"] } datafusion-ffi = { workspace = true } datafusion-table-providers = { workspace = true } -pyo3 = { version = "0.25" } +pyo3 = { version = "0.26.0" } tokio = { version = "1.46", features = [ "macros", "rt", diff --git a/python/src/utils.rs b/python/src/utils.rs index cd14a8d1..ab3f89ce 100644 --- a/python/src/utils.rs +++ b/python/src/utils.rs @@ -11,7 +11,7 @@ where F: Future + Send, F::Output: Send, { - py.allow_threads(|| execute_in_tokio(|| f)) + py.detach(|| execute_in_tokio(|| f)) } pub fn to_pyerr(err: T) -> PyErr {