diff --git a/.github/workflows/java.yml b/.github/workflows/java.yml index aac412df33..b8ee97da2c 100644 --- a/.github/workflows/java.yml +++ b/.github/workflows/java.yml @@ -25,7 +25,7 @@ env: jobs: rust-clippy-fmt: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 name: Rust Clippy and Fmt Check defaults: run: @@ -46,7 +46,7 @@ jobs: run: cargo clippy --all-targets -- -D warnings build-and-test-java: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: matrix: java-version: [8, 11, 17] diff --git a/Cargo.lock b/Cargo.lock index 40107d0766..f79deab56f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -181,9 +181,9 @@ checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "arrow" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05048a8932648b63f21c37d88b552ccc8a65afb6dfe9fc9f30ce79174c2e7a85" +checksum = "c91839b07e474b3995035fd8ac33ee54f9c9ccbbb1ea33d9909c71bffdf1259d" dependencies = [ "arrow-arith", "arrow-array", @@ -202,9 +202,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8a57966e43bfe9a3277984a14c24ec617ad874e4c0e1d2a1b083a39cfbf22c" +checksum = "855c57c4efd26722b044dcd3e348252560e3e0333087fb9f6479dc0bf744054f" dependencies = [ "arrow-array", "arrow-buffer", @@ -217,9 +217,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c" +checksum = "bd03279cea46569acf9295f6224fbc370c5df184b4d2ecfe97ccb131d5615a7f" dependencies = [ "ahash", "arrow-buffer", @@ -228,15 +228,15 @@ dependencies = [ "chrono", "chrono-tz", "half", - "hashbrown", + "hashbrown 0.15.2", "num", ] [[package]] name = "arrow-buffer" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c975484888fc95ec4a632cdc98be39c085b1bb518531b0c80c5d462063e5daa1" +checksum = "9e4a9b9b1d6d7117f6138e13bc4dd5daa7f94e671b70e8c9c4dc37b4f5ecfc16" dependencies = [ "bytes", "half", @@ -245,9 +245,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da26719e76b81d8bc3faad1d4dbdc1bcc10d14704e63dc17fc9f3e7e1e567c8e" +checksum = "bc70e39916e60c5b7af7a8e2719e3ae589326039e1e863675a008bee5ffe90fd" dependencies = [ "arrow-array", "arrow-buffer", @@ -266,9 +266,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13c36dc5ddf8c128df19bab27898eea64bf9da2b555ec1cd17a8ff57fba9ec2" +checksum = "789b2af43c1049b03a8d088ff6b2257cdcea1756cd76b174b1f2600356771b97" dependencies = [ "arrow-array", "arrow-buffer", @@ -285,9 +285,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5" +checksum = "e4e75edf21ffd53744a9b8e3ed11101f610e7ceb1a29860432824f1834a1f623" dependencies = [ "arrow-buffer", "arrow-schema", @@ -297,9 +297,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e786e1cdd952205d9a8afc69397b317cfbb6e0095e445c69cda7e8da5c1eeb0f" +checksum = "d186a909dece9160bf8312f5124d797884f608ef5435a36d9d608e0b2a9bcbf8" dependencies = [ "arrow-array", "arrow-buffer", @@ -313,9 +313,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb22284c5a2a01d73cebfd88a33511a3234ab45d66086b2ca2d1228c3498e445" +checksum = "b66ff2fedc1222942d0bd2fd391cb14a85baa3857be95c9373179bd616753b85" dependencies = [ "arrow-array", "arrow-buffer", @@ -333,9 +333,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42745f86b1ab99ef96d1c0bcf49180848a64fe2c7a7a0d945bc64fa2b21ba9bc" +checksum = "ece7b5bc1180e6d82d1a60e1688c199829e8842e38497563c3ab6ea813e527fd" dependencies = [ "arrow-array", "arrow-buffer", @@ -348,9 +348,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd09a518c602a55bd406bcc291a967b284cfa7a63edfbf8b897ea4748aad23c" +checksum = "745c114c8f0e8ce211c83389270de6fbe96a9088a7b32c2a041258a443fe83ff" dependencies = [ "ahash", "arrow-array", @@ -362,18 +362,18 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e972cd1ff4a4ccd22f86d3e53e835c2ed92e0eea6a3e8eadb72b4f1ac802cf8" +checksum = "b95513080e728e4cec37f1ff5af4f12c9688d47795d17cda80b6ec2cf74d4678" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "arrow-select" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600bae05d43483d216fb3494f8c32fdbefd8aa4e1de237e790dbb3d9f44690a3" +checksum = "8e415279094ea70323c032c6e739c48ad8d80e78a09bef7117b8718ad5bf3722" dependencies = [ "ahash", "arrow-array", @@ -385,9 +385,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc1985b67cb45f6606a248ac2b4a288849f196bab8c657ea5589f47cdd55e6" +checksum = "11d956cae7002eb8d83a27dbd34daaea1cf5b75852f0b84deb4d93a276e92bbf" dependencies = [ "arrow-array", "arrow-buffer", @@ -545,7 +545,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -588,7 +588,7 @@ checksum = "6e0c28dcc82d7c8ead5cb13beb15405b57b8546e93215673ff8ca0349a028107" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1083,9 +1083,9 @@ dependencies = [ [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1216,9 +1216,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" +checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" dependencies = [ "chrono", "chrono-tz-build", @@ -1227,12 +1227,11 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" dependencies = [ "parse-zoneinfo", - "phf", "phf_codegen", ] @@ -1294,7 +1293,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -1557,7 +1556,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1571,7 +1570,7 @@ checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" dependencies = [ "cfg-if", "crossbeam-utils", - "hashbrown", + "hashbrown 0.14.5", "lock_api", "once_cell", "parking_lot_core", @@ -1579,9 +1578,9 @@ dependencies = [ [[package]] name = "datafusion" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4fd4a99fc70d40ef7e52b243b4a399c3f8d353a40d5ecb200deee05e49c61bb" +checksum = "dae5f2abc725737d6e87b6d348a5aa2d0a77e4cf873045f004546da946e6e619" dependencies = [ "ahash", "arrow", @@ -1602,6 +1601,7 @@ dependencies = [ "datafusion-functions", "datafusion-functions-aggregate", "datafusion-functions-nested", + "datafusion-functions-window", "datafusion-optimizer", "datafusion-physical-expr", "datafusion-physical-expr-common", @@ -1612,12 +1612,12 @@ dependencies = [ "futures", "glob", "half", - "hashbrown", + "hashbrown 0.14.5", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "num_cpus", - "object_store", + "object_store 0.11.1", "parking_lot", "parquet", "paste", @@ -1635,9 +1635,9 @@ dependencies = [ [[package]] name = "datafusion-catalog" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b3cfbd84c6003594ae1972314e3df303a27ce8ce755fcea3240c90f4c0529" +checksum = "998761705551f11ffa4ee692cc285b44eb1def6e0d28c4eaf5041b9e2810dc1e" dependencies = [ "arrow-schema", "async-trait", @@ -1645,13 +1645,14 @@ dependencies = [ "datafusion-execution", "datafusion-expr", "datafusion-physical-plan", + "parking_lot", ] [[package]] name = "datafusion-common" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fdbc877e3e40dcf88cc8f283d9f5c8851f0a3aa07fee657b1b75ac1ad49b9c" +checksum = "11986f191e88d950f10a5cc512a598afba27d92e04a0201215ad60785005115a" dependencies = [ "ahash", "arrow", @@ -1660,29 +1661,32 @@ dependencies = [ "arrow-schema", "chrono", "half", - "hashbrown", + "hashbrown 0.14.5", "instant", "libc", "num_cpus", - "object_store", + "object_store 0.11.1", "parquet", + "paste", "sqlparser", + "tokio", ] [[package]] name = "datafusion-common-runtime" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7496d1f664179f6ce3a5cbef6566056ccaf3ea4aa72cc455f80e62c1dd86b1" +checksum = "694c9d7ea1b82f95768215c4cb5c2d5c613690624e832a7ee64be563139d582f" dependencies = [ + "log", "tokio", ] [[package]] name = "datafusion-execution" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e70968c815b611116951e3dd876aef04bf217da31b72eec01ee6a959336a1" +checksum = "30b4cedcd98151e0a297f34021b6b232ff0ebc0f2f18ea5e7446b5ebda99b1a1" dependencies = [ "arrow", "chrono", @@ -1690,9 +1694,9 @@ dependencies = [ "datafusion-common", "datafusion-expr", "futures", - "hashbrown", + "hashbrown 0.14.5", "log", - "object_store", + "object_store 0.11.1", "parking_lot", "rand", "tempfile", @@ -1701,9 +1705,9 @@ dependencies = [ [[package]] name = "datafusion-expr" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1841c409d9518c17971d15c9bae62e629eb937e6fb6c68cd32e9186f8b30d2" +checksum = "a8dd114dc0296cacaee98ad3165724529fcca9a65b2875abcd447b9cc02b2b74" dependencies = [ "ahash", "arrow", @@ -1711,6 +1715,9 @@ dependencies = [ "arrow-buffer", "chrono", "datafusion-common", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr-common", "paste", "serde_json", "sqlparser", @@ -1718,11 +1725,22 @@ dependencies = [ "strum_macros", ] +[[package]] +name = "datafusion-expr-common" +version = "42.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1ba2bb018218d9260bbd7de6a46a20f61b93d4911dba8aa07735625004c4fb" +dependencies = [ + "arrow", + "datafusion-common", + "paste", +] + [[package]] name = "datafusion-functions" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e481cf34d2a444bd8fa09b65945f0ce83dc92df8665b761505b3d9f351bebb" +checksum = "547cb780a4ac51fd8e52c0fb9188bc16cea4e35aebf6c454bda0b82a7a417304" dependencies = [ "arrow", "arrow-buffer", @@ -1733,9 +1751,9 @@ dependencies = [ "datafusion-common", "datafusion-execution", "datafusion-expr", - "hashbrown", + "hashbrown 0.14.5", "hex", - "itertools 0.12.1", + "itertools 0.13.0", "log", "md-5", "rand", @@ -1747,9 +1765,9 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b4ece19f73c02727e5e8654d79cd5652de371352c1df3c4ac3e419ecd6943fb" +checksum = "e68cf5aa7ebcac08bd04bb709a9a6d4963eafd227da62b628133bc509c40f5a0" dependencies = [ "ahash", "arrow", @@ -1757,17 +1775,34 @@ dependencies = [ "datafusion-common", "datafusion-execution", "datafusion-expr", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr", "datafusion-physical-expr-common", + "half", "log", "paste", "sqlparser", ] +[[package]] +name = "datafusion-functions-aggregate-common" +version = "42.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2285d080dfecdfb8605b0ab2f1a41e2473208dc8e9bd6f5d1dbcfe97f517e6f" +dependencies = [ + "ahash", + "arrow", + "datafusion-common", + "datafusion-expr-common", + "datafusion-physical-expr-common", + "rand", +] + [[package]] name = "datafusion-functions-nested" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1474552cc824e8c9c88177d454db5781d4b66757d4aca75719306b8343a5e8d" +checksum = "6b6ffbbb7cf7bf0c0e05eb6207023fef341cac83a593a5365a6fc83803c572a9" dependencies = [ "arrow", "arrow-array", @@ -1779,17 +1814,30 @@ dependencies = [ "datafusion-expr", "datafusion-functions", "datafusion-functions-aggregate", - "itertools 0.12.1", + "datafusion-physical-expr-common", + "itertools 0.13.0", "log", "paste", "rand", ] +[[package]] +name = "datafusion-functions-window" +version = "42.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e78d30ebd6e9f74d4aeddec32744f5a18b5f9584591bc586fb5259c4848bac5" +dependencies = [ + "datafusion-common", + "datafusion-expr", + "datafusion-physical-expr-common", + "log", +] + [[package]] name = "datafusion-optimizer" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791ff56f55608bc542d1ea7a68a64bdc86a9413f5a381d06a39fd49c2a3ab906" +checksum = "be172c44bf344df707e0c041fa3f41e6dc5fb0976f539c68bc442bca150ee58c" dependencies = [ "arrow", "async-trait", @@ -1797,9 +1845,9 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datafusion-physical-expr", - "hashbrown", + "hashbrown 0.14.5", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "paste", "regex-syntax 0.8.4", @@ -1807,9 +1855,9 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a223962b3041304a3e20ed07a21d5de3d88d7e4e71ca192135db6d24e3365a4" +checksum = "43b86b7fa0b8161c49b0f005b0df193fc6d9b65ceec675f155422cda5d1583ca" dependencies = [ "ahash", "arrow", @@ -1823,12 +1871,14 @@ dependencies = [ "datafusion-common", "datafusion-execution", "datafusion-expr", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", "datafusion-physical-expr-common", "half", - "hashbrown", + "hashbrown 0.14.5", "hex", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "paste", "petgraph", @@ -1837,35 +1887,37 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db5e7d8532a1601cd916881db87a70b0a599900d23f3db2897d389032da53bc6" +checksum = "242ba8a26351d9ca16295814c46743b0d1b00ec372174bdfbba991d0953dd596" dependencies = [ "ahash", "arrow", "datafusion-common", - "datafusion-expr", - "hashbrown", + "datafusion-expr-common", + "hashbrown 0.14.5", "rand", ] [[package]] name = "datafusion-physical-optimizer" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb9c78f308e050f5004671039786a925c3fee83b90004e9fcfd328d7febdcc0" +checksum = "25ca088eb904bf1cfc9c5e5653110c70a6eaba43164085a9d180b35b77ce3b8b" dependencies = [ + "arrow-schema", "datafusion-common", "datafusion-execution", "datafusion-physical-expr", "datafusion-physical-plan", + "itertools 0.13.0", ] [[package]] name = "datafusion-physical-plan" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d1116949432eb2d30f6362707e2846d942e491052a206f2ddcb42d08aea1ffe" +checksum = "4989a53b824abc759685eb643f4d604c2fc2fea4e2c309ac3473bea263ecbbeb" dependencies = [ "ahash", "arrow", @@ -1880,13 +1932,14 @@ dependencies = [ "datafusion-execution", "datafusion-expr", "datafusion-functions-aggregate", + "datafusion-functions-aggregate-common", "datafusion-physical-expr", "datafusion-physical-expr-common", "futures", "half", - "hashbrown", + "hashbrown 0.14.5", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "once_cell", "parking_lot", @@ -1897,9 +1950,9 @@ dependencies = [ [[package]] name = "datafusion-sql" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45d0180711165fe94015d7c4123eb3e1cf5fb60b1506453200b8d1ce666bef0" +checksum = "66b9b75b9da10ed656073ac0553708f17eb8fa5a7b065ef9848914c93150ab9e" dependencies = [ "arrow", "arrow-array", @@ -1914,19 +1967,19 @@ dependencies = [ [[package]] name = "datafusion-substrait" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf0a0055aa98246c79f98f0d03df11f16cb7adc87818d02d4413e3f3cdadbbee" +checksum = "220d7ab0ffadd8b1af753904b18dd92d270271810b1ce9f8be3c3dbe2392b636" dependencies = [ "arrow-buffer", "async-recursion", "chrono", "datafusion", - "itertools 0.12.1", - "object_store", + "itertools 0.13.0", + "object_store 0.11.1", "pbjson-types", - "prost", - "substrait 0.36.0", + "prost 0.13.3", + "substrait 0.41.4", "url", ] @@ -2088,7 +2141,7 @@ checksum = "3bf679796c0322556351f287a51b49e48f7c4986e727b5dd78c972d30e2e16cc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -2349,7 +2402,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -2494,6 +2547,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" + [[package]] name = "heck" version = "0.4.1" @@ -2771,7 +2830,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "de3fc2e30ba82dd1b3911c8de1ffc143c74a914a14e99514d7637e3099df5ea0" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.14.5", ] [[package]] @@ -2903,7 +2962,7 @@ dependencies = [ "combine", "jni-sys", "log", - "thiserror", + "thiserror 1.0.69", "walkdir", "windows-sys 0.45.0", ] @@ -2967,6 +3026,7 @@ dependencies = [ "criterion", "dashmap 5.5.3", "datafusion", + "datafusion-expr", "datafusion-functions", "datafusion-physical-expr", "deepsize", @@ -2993,21 +3053,22 @@ dependencies = [ "lzma-sys", "mock_instant", "moka", - "object_store", + "object_store 0.10.2", "permutation", "pin-project", "pprof", "pretty_assertions", - "prost", - "prost-build", - "prost-types", + "prost 0.12.6", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", "random_word", "roaring", "rstest", "serde", "serde_json", - "snafu", + "snafu 0.7.5", "tantivy", "tempfile", "tfrecord", @@ -3029,6 +3090,7 @@ dependencies = [ "arrow-data", "arrow-schema", "arrow-select", + "bytes", "getrandom", "half", "num-traits", @@ -3058,14 +3120,14 @@ dependencies = [ "mock_instant", "moka", "num_cpus", - "object_store", + "object_store 0.10.2", "pin-project", "proptest", - "prost", + "prost 0.13.3", "rand", "roaring", "serde_json", - "snafu", + "snafu 0.7.5", "tempfile", "tokio", "tokio-stream", @@ -3096,8 +3158,8 @@ dependencies = [ "lance-datagen", "lazy_static", "log", - "prost", - "snafu", + "prost 0.13.3", + "snafu 0.7.5", "substrait-expr", "tokio", ] @@ -3150,14 +3212,14 @@ dependencies = [ "num-traits", "paste", "pprof", - "prost", - "prost-build", - "prost-types", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", "rand_xoshiro", "rstest", "seq-macro", - "snafu", + "snafu 0.7.5", "tempfile", "test-log", "tokio", @@ -3188,11 +3250,11 @@ dependencies = [ "lance-io", "log", "pprof", - "prost", - "prost-build", - "prost-types", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", - "snafu", + "snafu 0.7.5", "test-log", "tokio", ] @@ -3223,16 +3285,16 @@ dependencies = [ "lance-testing", "log", "num-traits", - "object_store", + "object_store 0.10.2", "pprof", "pretty_assertions", "proptest", - "prost", - "prost-build", - "prost-types", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", "roaring", - "snafu", + "snafu 0.7.5", "tempfile", "test-log", "tokio", @@ -3279,17 +3341,17 @@ dependencies = [ "log", "moka", "num-traits", - "object_store", + "object_store 0.10.2", "pprof", - "prost", - "prost-build", + "prost 0.13.3", + "prost-build 0.13.3", "rand", "random_word", "rayon", "roaring", "serde", "serde_json", - "snafu", + "snafu 0.7.5", "tantivy", "tempfile", "test-log", @@ -3326,16 +3388,16 @@ dependencies = [ "lazy_static", "log", "mockall", - "object_store", + "object_store 0.10.2", "parquet", "path_abs", "pin-project", "pprof", - "prost", - "prost-build", + "prost 0.13.3", + "prost-build 0.13.3", "rand", "shellexpand", - "snafu", + "snafu 0.7.5", "tempfile", "test-log", "tokio", @@ -3360,7 +3422,7 @@ dependencies = [ "lazy_static", "serde", "serde_json", - "snafu", + "snafu 0.7.5", "tokio", ] @@ -3418,19 +3480,19 @@ dependencies = [ "lance-io", "lazy_static", "log", - "object_store", + "object_store 0.10.2", "pprof", "pretty_assertions", "proptest", - "prost", - "prost-build", - "prost-types", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", "rangemap", "roaring", "serde", "serde_json", - "snafu", + "snafu 0.7.5", "tokio", "tracing", "url", @@ -3443,7 +3505,7 @@ version = "0.20.0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -3491,9 +3553,9 @@ checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" [[package]] name = "lexical-core" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +checksum = "0431c65b318a590c1de6b8fd6e72798c92291d27762d94c9e6c37ed7a73d8458" dependencies = [ "lexical-parse-float", "lexical-parse-integer", @@ -3504,9 +3566,9 @@ dependencies = [ [[package]] name = "lexical-parse-float" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +checksum = "eb17a4bdb9b418051aa59d41d65b1c9be5affab314a872e5ad7f06231fb3b4e0" dependencies = [ "lexical-parse-integer", "lexical-util", @@ -3515,9 +3577,9 @@ dependencies = [ [[package]] name = "lexical-parse-integer" -version = "0.8.6" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +checksum = "5df98f4a4ab53bf8b175b363a34c7af608fe31f93cc1fb1bf07130622ca4ef61" dependencies = [ "lexical-util", "static_assertions", @@ -3525,18 +3587,18 @@ dependencies = [ [[package]] name = "lexical-util" -version = "0.8.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +checksum = "85314db53332e5c192b6bca611fb10c114a80d1b831ddac0af1e9be1b9232ca0" dependencies = [ "static_assertions", ] [[package]] name = "lexical-write-float" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +checksum = "6e7c3ad4e37db81c1cbe7cf34610340adc09c322871972f74877a712abc6c809" dependencies = [ "lexical-util", "lexical-write-integer", @@ -3545,9 +3607,9 @@ dependencies = [ [[package]] name = "lexical-write-integer" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +checksum = "eb89e9f6958b83258afa3deed90b5de9ef68eef090ad5086c791cd2345610162" dependencies = [ "lexical-util", "static_assertions", @@ -3612,7 +3674,7 @@ version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", ] [[package]] @@ -3750,7 +3812,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -3772,7 +3834,7 @@ dependencies = [ "rustc_version", "smallvec", "tagptr", - "thiserror", + "thiserror 1.0.69", "triomphe", "uuid", ] @@ -3962,7 +4024,28 @@ dependencies = [ "rustls-pemfile 2.1.3", "serde", "serde_json", - "snafu", + "snafu 0.7.5", + "tokio", + "tracing", + "url", + "walkdir", +] + +[[package]] +name = "object_store" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eb4c22c6154a1e759d7099f9ffad7cc5ef8245f9efbab4a41b92623079c82f3" +dependencies = [ + "async-trait", + "bytes", + "chrono", + "futures", + "humantime", + "itertools 0.13.0", + "parking_lot", + "percent-encoding", + "snafu 0.8.5", "tokio", "tracing", "url", @@ -4060,9 +4143,9 @@ dependencies = [ [[package]] name = "parquet" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e977b9066b4d3b03555c22bdc442f3fadebd96a39111249113087d0edb2691cd" +checksum = "2b449890367085eb65d7d3321540abc3d7babbd179ce31df0016e90719114191" dependencies = [ "ahash", "arrow-array", @@ -4073,17 +4156,17 @@ dependencies = [ "arrow-schema", "arrow-select", "base64 0.22.1", - "brotli 6.0.0", + "brotli 7.0.0", "bytes", "chrono", "flate2", "futures", "half", - "hashbrown", + "hashbrown 0.15.2", "lz4_flex", "num", "num-bigint", - "object_store", + "object_store 0.11.1", "paste", "seq-macro", "snap", @@ -4123,9 +4206,9 @@ dependencies = [ [[package]] name = "pbjson" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90" +checksum = "c7e6349fa080353f4a597daffd05cb81572a9c031a6d4fff7e504947496fcc68" dependencies = [ "base64 0.21.7", "serde", @@ -4133,28 +4216,28 @@ dependencies = [ [[package]] name = "pbjson-build" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" +checksum = "6eea3058763d6e656105d1403cb04e0a41b7bbac6362d413e7c33be0c32279c9" dependencies = [ - "heck 0.4.1", - "itertools 0.11.0", - "prost", - "prost-types", + "heck 0.5.0", + "itertools 0.13.0", + "prost 0.13.3", + "prost-types 0.13.3", ] [[package]] name = "pbjson-types" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12" +checksum = "e54e5e7bfb1652f95bc361d76f3c780d8e526b134b85417e774166ee941f0887" dependencies = [ "bytes", "chrono", "pbjson", "pbjson-build", - "prost", - "prost-build", + "prost 0.13.3", + "prost-build 0.13.3", "serde", ] @@ -4235,7 +4318,7 @@ checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -4352,7 +4435,7 @@ dependencies = [ "smallvec", "symbolic-demangle", "tempfile", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4402,12 +4485,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.20" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f12335488a2f3b0a83b14edad48dca9879ce89b2edd10e80237e4e852dd645e" +checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -4421,9 +4504,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.86" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -4455,7 +4538,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "deb1435c188b76130da55f17a466d252ff7b1418b2ad3e037d127b94e3411f29" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.12.6", +] + +[[package]] +name = "prost" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +dependencies = [ + "bytes", + "prost-derive 0.13.3", ] [[package]] @@ -4472,10 +4565,31 @@ dependencies = [ "once_cell", "petgraph", "prettyplease", - "prost", - "prost-types", + "prost 0.12.6", + "prost-types 0.12.6", "regex", - "syn 2.0.87", + "syn 2.0.89", + "tempfile", +] + +[[package]] +name = "prost-build" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" +dependencies = [ + "bytes", + "heck 0.5.0", + "itertools 0.13.0", + "log", + "multimap", + "once_cell", + "petgraph", + "prettyplease", + "prost 0.13.3", + "prost-types 0.13.3", + "regex", + "syn 2.0.89", "tempfile", ] @@ -4489,7 +4603,20 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", +] + +[[package]] +name = "prost-derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] @@ -4498,7 +4625,16 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9091c90b0a32608e984ff2fa4091273cbdd755d54935c51d520887f4a1dbd5b0" dependencies = [ - "prost", + "prost 0.12.6", +] + +[[package]] +name = "prost-types" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +dependencies = [ + "prost 0.13.3", ] [[package]] @@ -4554,7 +4690,7 @@ dependencies = [ "rustc-hash 2.0.0", "rustls 0.23.12", "socket2 0.5.7", - "thiserror", + "thiserror 1.0.69", "tokio", "tracing", ] @@ -4571,7 +4707,7 @@ dependencies = [ "rustc-hash 2.0.0", "rustls 0.23.12", "slab", - "thiserror", + "thiserror 1.0.69", "tinyvec", "tracing", ] @@ -4737,7 +4873,7 @@ checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom", "libredox", - "thiserror", + "thiserror 1.0.69", ] [[package]] @@ -4792,21 +4928,21 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "regress" -version = "0.8.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f5f39ba4513916c1b2657b72af6ec671f091cd637992f58d0ede5cae4e5dea0" +checksum = "0eae2a1ebfecc58aff952ef8ccd364329abe627762f5bf09ff42eb9d98522479" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", "memchr", ] [[package]] name = "regress" -version = "0.9.1" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eae2a1ebfecc58aff952ef8ccd364329abe627762f5bf09ff42eb9d98522479" +checksum = "1541daf4e4ed43a0922b7969bdc2170178bcacc5dabf7e39bc508a9fa3953a7a" dependencies = [ - "hashbrown", + "hashbrown 0.14.5", "memchr", ] @@ -4921,7 +5057,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn 2.0.87", + "syn 2.0.89", "unicode-ident", ] @@ -5163,7 +5299,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5222,22 +5358,22 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.204" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.204" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5248,14 +5384,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "serde_json" -version = "1.0.122" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784b6203951c57ff748476b126ccb5e8e2959a5c19e5c617ab1956be3dbc68da" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", "memchr", @@ -5265,14 +5401,14 @@ dependencies = [ [[package]] name = "serde_tokenstream" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8790a7c3fe883e443eaa2af6f705952bc5d6e8671a220b9335c8cae92c037e74" +checksum = "64060d864397305347a78851c51588fd283767e7e7589829e8121d65512340f1" dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5375,7 +5511,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" dependencies = [ "doc-comment", - "snafu-derive", + "snafu-derive 0.7.5", +] + +[[package]] +name = "snafu" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" +dependencies = [ + "snafu-derive 0.8.5", ] [[package]] @@ -5390,6 +5535,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "snafu-derive" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "snap" version = "1.1.1" @@ -5424,9 +5581,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "sqlparser" -version = "0.49.0" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a404d0e14905361b918cb8afdb73605e25c1d5029312bd9785142dcb3aa49e" +checksum = "b2e5b515a2bd5168426033e9efbfd05500114833916f1d5c268f938b4ee130ac" dependencies = [ "log", "sqlparser_derive", @@ -5440,7 +5597,7 @@ checksum = "01b2e185515564f15375f593fb966b5718bc624ba77fe49fa4616ad619690554" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5498,93 +5655,94 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] name = "substrait" -version = "0.29.4" +version = "0.41.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df6c402018947957c4c7f2af49304f5cd8a948858686bf958d519cf0aa644790" +checksum = "bdab7f3d581f47ffd33ccf7aef3fa13932176de0b63c52e01eea4cb60617bce3" dependencies = [ "heck 0.5.0", + "pbjson", + "pbjson-build", + "pbjson-types", "prettyplease", - "prost", - "prost-build", - "prost-types", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "schemars", "semver", "serde", "serde_json", "serde_yaml", - "syn 2.0.87", - "typify 0.0.16", + "syn 2.0.89", + "typify 0.1.0", "walkdir", ] [[package]] name = "substrait" -version = "0.36.0" +version = "0.49.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1ee6e584c8bf37104b7eb51c25eae07a9321b0e01379bec3b7c462d2f42afbf" +checksum = "e13a66e9f86d17064bc06ca30971acdb5e2715a2973ce856801185b70aad7938" dependencies = [ "heck 0.5.0", - "pbjson", - "pbjson-build", - "pbjson-types", "prettyplease", - "prost", - "prost-build", - "prost-types", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", + "regress 0.10.1", "schemars", "semver", "serde", "serde_json", "serde_yaml", - "syn 2.0.87", - "typify 0.1.0", + "syn 2.0.89", + "typify 0.2.0", "walkdir", ] [[package]] name = "substrait-expr" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9a8b8cc82442b391b67e7c195f0d3de35838bb78b115468d28076ec54dd4577" +checksum = "45a6a94f5dd69c5329a9c96c93ac5f17a8d64089ca21d29d7971825f7451941d" dependencies = [ "once_cell", - "prost", - "substrait 0.29.4", + "prost 0.13.3", + "substrait 0.49.1", "substrait-expr-funcgen", "substrait-expr-macros", - "thiserror", + "thiserror 2.0.3", ] [[package]] name = "substrait-expr-funcgen" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96a5fb5bfa1ff743bdc1c259c46fde88d1ef8129c68ff7e7d876f907d67dbff7" +checksum = "cc422ee763a029e27b5094e197f4af9b26866a728faeefe9a9e4b16d9c9724d6" dependencies = [ "convert_case", "prettyplease", "proc-macro2", "quote", "serde_yaml", - "substrait 0.29.4", - "syn 2.0.87", - "thiserror", + "substrait 0.49.1", + "syn 2.0.89", + "thiserror 2.0.3", ] [[package]] name = "substrait-expr-macros" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "919e5b5c5495d18dffb0b8369d74a143c893cbfb98b4337cecb31f3f9bcc112b" +checksum = "3a2be2af0276c9d693f90d0f4e0e7b1790b14692538e0d418812249f41c055be" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5629,9 +5787,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.87" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", @@ -5698,7 +5856,7 @@ dependencies = [ "tantivy-stacker", "tantivy-tokenizer-api", "tempfile", - "thiserror", + "thiserror 1.0.69", "time", "uuid", "winapi", @@ -5858,7 +6016,7 @@ checksum = "5999e24eaa32083191ba4e425deb75cdf25efefabe5aaccb7446dd0d4122a3f5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -5883,31 +6041,51 @@ dependencies = [ "num-traits", "once_cell", "pin-project", - "prost", - "prost-build", + "prost 0.12.6", + "prost-build 0.12.6", "tar", - "thiserror", + "thiserror 1.0.69", "ureq", ] [[package]] name = "thiserror" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" +dependencies = [ + "thiserror-impl 2.0.3", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] name = "thiserror-impl" -version = "1.0.63" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" +checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -6021,7 +6199,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -6132,7 +6310,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] @@ -6215,83 +6393,86 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "typify" -version = "0.0.16" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c61e9db210bbff218e6535c664b37ec47da449169b98e7866d0580d0db75529" +checksum = "adb6beec125971dda80a086f90b4a70f60f222990ce4d63ad0fc140492f53444" dependencies = [ - "typify-impl 0.0.16", - "typify-macro 0.0.16", + "typify-impl 0.1.0", + "typify-macro 0.1.0", ] [[package]] name = "typify" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb6beec125971dda80a086f90b4a70f60f222990ce4d63ad0fc140492f53444" +checksum = "b4c644dda9862f0fef3a570d8ddb3c2cfb1d5ac824a1f2ddfa7bc8f071a5ad8a" dependencies = [ - "typify-impl 0.1.0", - "typify-macro 0.1.0", + "typify-impl 0.2.0", + "typify-macro 0.2.0", ] [[package]] name = "typify-impl" -version = "0.0.16" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95e32f38493804f88e2dc7a5412eccd872ea5452b4db9b0a77de4df180f2a87e" +checksum = "93bbb24e990654aff858d80fee8114f4322f7d7a1b1ecb45129e2fcb0d0ad5ae" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "log", "proc-macro2", "quote", - "regress 0.8.0", + "regress 0.9.1", "schemars", + "semver", + "serde", "serde_json", - "syn 2.0.87", - "thiserror", + "syn 2.0.89", + "thiserror 1.0.69", "unicode-ident", ] [[package]] name = "typify-impl" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93bbb24e990654aff858d80fee8114f4322f7d7a1b1ecb45129e2fcb0d0ad5ae" +checksum = "d59ab345b6c0d8ae9500b9ff334a4c7c0d316c1c628dc55726b95887eb8dbd11" dependencies = [ "heck 0.5.0", "log", "proc-macro2", "quote", - "regress 0.9.1", + "regress 0.10.1", "schemars", "semver", "serde", "serde_json", - "syn 2.0.87", - "thiserror", + "syn 2.0.89", + "thiserror 1.0.69", "unicode-ident", ] [[package]] name = "typify-macro" -version = "0.0.16" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc09508b72f63d521d68e42c7f172c7416d67986df44b3c7d1f7f9963948ed32" +checksum = "f8e6491896e955692d68361c68db2b263e3bec317ec0b684e0e2fa882fb6e31e" dependencies = [ "proc-macro2", "quote", "schemars", + "semver", "serde", "serde_json", "serde_tokenstream", - "syn 2.0.87", - "typify-impl 0.0.16", + "syn 2.0.89", + "typify-impl 0.1.0", ] [[package]] name = "typify-macro" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8e6491896e955692d68361c68db2b263e3bec317ec0b684e0e2fa882fb6e31e" +checksum = "785e2cdcef0df8160fdd762ed548a637aaec1e83704fdbc14da0df66013ee8d0" dependencies = [ "proc-macro2", "quote", @@ -6300,8 +6481,8 @@ dependencies = [ "serde", "serde_json", "serde_tokenstream", - "syn 2.0.87", - "typify-impl 0.1.0", + "syn 2.0.89", + "typify-impl 0.2.0", ] [[package]] @@ -6504,7 +6685,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "wasm-bindgen-shared", ] @@ -6538,7 +6719,7 @@ checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -6933,7 +7114,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.87", + "syn 2.0.89", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index e4f3174669..6009d5922f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -61,17 +61,17 @@ lance-test-macros = { version = "=0.20.0", path = "./rust/lance-test-macros" } lance-testing = { version = "=0.20.0", path = "./rust/lance-testing" } approx = "0.5.1" # Note that this one does not include pyarrow -arrow = { version = "52.2", optional = false, features = ["prettyprint"] } -arrow-arith = "52.2" -arrow-array = "52.2" -arrow-buffer = "52.2" -arrow-cast = "52.2" -arrow-data = "52.2" -arrow-ipc = { version = "52.2", features = ["zstd"] } -arrow-ord = "52.2" -arrow-row = "52.2" -arrow-schema = "52.2" -arrow-select = "52.2" +arrow = { version = "53.2", optional = false, features = ["prettyprint"] } +arrow-arith = "53.2" +arrow-array = "53.2" +arrow-buffer = "53.2" +arrow-cast = "53.2" +arrow-data = "53.2" +arrow-ipc = { version = "53.2", features = ["zstd"] } +arrow-ord = "53.2" +arrow-row = "53.2" +arrow-schema = "53.2" +arrow-select = "53.2" async-recursion = "1.0" async-trait = "0.1" aws-config = "1.2.0" @@ -95,18 +95,18 @@ criterion = { version = "0.5", features = [ "html_reports", ] } crossbeam-queue = "0.3" -datafusion = { version = "41.0", default-features = false, features = [ +datafusion = { version = "42.0", default-features = false, features = [ "nested_expressions", "regex_expressions", "unicode_expressions", ] } -datafusion-common = "41.0" -datafusion-functions = { version = "41.0", features = ["regex_expressions"] } -datafusion-sql = "41.0" -datafusion-expr = "41.0" -datafusion-execution = "41.0" -datafusion-optimizer = "41.0" -datafusion-physical-expr = { version = "41.0", features = [ +datafusion-common = "42.0" +datafusion-functions = { version = "42.0", features = ["regex_expressions"] } +datafusion-sql = "42.0" +datafusion-expr = "42.0" +datafusion-execution = "42.0" +datafusion-optimizer = "42.0" +datafusion-physical-expr = { version = "42.0", features = [ "regex_expressions", ] } deepsize = "0.2.0" @@ -124,14 +124,14 @@ moka = { version = "0.12", features = ["future", "sync"] } num-traits = "0.2" # Set min to prevent use of versions with CVE-2024-41178 object_store = { version = "0.10.2" } -parquet = "52.0" +parquet = "53.0" pin-project = "1.0" path_abs = "0.5" pprof = { version = "0.14.0", features = ["flamegraph", "criterion"] } proptest = "1.3.1" -prost = "0.12.2" -prost-build = "0.12.2" -prost-types = "0.12.2" +prost = "0.13.2" +prost-build = "0.13.2" +prost-types = "0.13.2" rand = { version = "0.8.3", features = ["small_rng"] } rangemap = { version = "1.0" } rayon = "1.10" diff --git a/python/Cargo.lock b/python/Cargo.lock index 4bbf63f81b..d971675f4f 100644 --- a/python/Cargo.lock +++ b/python/Cargo.lock @@ -57,9 +57,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.20" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45862d1c77f2228b9e10bc609d5bc203d86ebc9b87ad8d5d5167a6c9abf739d9" +checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" [[package]] name = "android-tzdata" @@ -78,9 +78,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.93" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" +checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" [[package]] name = "arc-swap" @@ -102,9 +102,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05048a8932648b63f21c37d88b552ccc8a65afb6dfe9fc9f30ce79174c2e7a85" +checksum = "c91839b07e474b3995035fd8ac33ee54f9c9ccbbb1ea33d9909c71bffdf1259d" dependencies = [ "arrow-arith", "arrow-array", @@ -124,9 +124,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8a57966e43bfe9a3277984a14c24ec617ad874e4c0e1d2a1b083a39cfbf22c" +checksum = "855c57c4efd26722b044dcd3e348252560e3e0333087fb9f6479dc0bf744054f" dependencies = [ "arrow-array", "arrow-buffer", @@ -139,9 +139,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f4a9468c882dc66862cef4e1fd8423d47e67972377d85d80e022786427768c" +checksum = "bd03279cea46569acf9295f6224fbc370c5df184b4d2ecfe97ccb131d5615a7f" dependencies = [ "ahash", "arrow-buffer", @@ -150,15 +150,15 @@ dependencies = [ "chrono", "chrono-tz", "half", - "hashbrown 0.14.5", + "hashbrown 0.15.1", "num", ] [[package]] name = "arrow-buffer" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c975484888fc95ec4a632cdc98be39c085b1bb518531b0c80c5d462063e5daa1" +checksum = "9e4a9b9b1d6d7117f6138e13bc4dd5daa7f94e671b70e8c9c4dc37b4f5ecfc16" dependencies = [ "bytes", "half", @@ -167,9 +167,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da26719e76b81d8bc3faad1d4dbdc1bcc10d14704e63dc17fc9f3e7e1e567c8e" +checksum = "bc70e39916e60c5b7af7a8e2719e3ae589326039e1e863675a008bee5ffe90fd" dependencies = [ "arrow-array", "arrow-buffer", @@ -188,9 +188,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c13c36dc5ddf8c128df19bab27898eea64bf9da2b555ec1cd17a8ff57fba9ec2" +checksum = "789b2af43c1049b03a8d088ff6b2257cdcea1756cd76b174b1f2600356771b97" dependencies = [ "arrow-array", "arrow-buffer", @@ -207,9 +207,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd9d6f18c65ef7a2573ab498c374d8ae364b4a4edf67105357491c031f716ca5" +checksum = "e4e75edf21ffd53744a9b8e3ed11101f610e7ceb1a29860432824f1834a1f623" dependencies = [ "arrow-buffer", "arrow-schema", @@ -219,9 +219,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e786e1cdd952205d9a8afc69397b317cfbb6e0095e445c69cda7e8da5c1eeb0f" +checksum = "d186a909dece9160bf8312f5124d797884f608ef5435a36d9d608e0b2a9bcbf8" dependencies = [ "arrow-array", "arrow-buffer", @@ -235,9 +235,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb22284c5a2a01d73cebfd88a33511a3234ab45d66086b2ca2d1228c3498e445" +checksum = "b66ff2fedc1222942d0bd2fd391cb14a85baa3857be95c9373179bd616753b85" dependencies = [ "arrow-array", "arrow-buffer", @@ -255,9 +255,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42745f86b1ab99ef96d1c0bcf49180848a64fe2c7a7a0d945bc64fa2b21ba9bc" +checksum = "ece7b5bc1180e6d82d1a60e1688c199829e8842e38497563c3ab6ea813e527fd" dependencies = [ "arrow-array", "arrow-buffer", @@ -270,9 +270,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd09a518c602a55bd406bcc291a967b284cfa7a63edfbf8b897ea4748aad23c" +checksum = "745c114c8f0e8ce211c83389270de6fbe96a9088a7b32c2a041258a443fe83ff" dependencies = [ "ahash", "arrow-array", @@ -284,18 +284,18 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e972cd1ff4a4ccd22f86d3e53e835c2ed92e0eea6a3e8eadb72b4f1ac802cf8" +checksum = "b95513080e728e4cec37f1ff5af4f12c9688d47795d17cda80b6ec2cf74d4678" dependencies = [ "bitflags 2.6.0", ] [[package]] name = "arrow-select" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "600bae05d43483d216fb3494f8c32fdbefd8aa4e1de237e790dbb3d9f44690a3" +checksum = "8e415279094ea70323c032c6e739c48ad8d80e78a09bef7117b8718ad5bf3722" dependencies = [ "ahash", "arrow-array", @@ -307,9 +307,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0dc1985b67cb45f6606a248ac2b4a288849f196bab8c657ea5589f47cdd55e6" +checksum = "11d956cae7002eb8d83a27dbd34daaea1cf5b75852f0b84deb4d93a276e92bbf" dependencies = [ "arrow-array", "arrow-buffer", @@ -393,9 +393,9 @@ dependencies = [ [[package]] name = "async-io" -version = "2.4.0" +version = "2.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" +checksum = "444b0228950ee6501b3568d3c93bf1176a1fdbc3b758dcd9475046d30f4dc7e8" dependencies = [ "async-lock", "cfg-if", @@ -438,7 +438,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -481,7 +481,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -513,9 +513,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.10" +version = "1.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b49afaa341e8dd8577e1a2200468f98956d6eda50bcf4a53246cc00174ba924" +checksum = "2d6448cfb224dd6a9b9ac734f58622dd0d4751f3589f3b777345745f46b2eb14" dependencies = [ "aws-credential-types", "aws-runtime", @@ -580,9 +580,9 @@ dependencies = [ [[package]] name = "aws-sdk-dynamodb" -version = "1.54.0" +version = "1.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8efdda6a491bb4640d35b99b0a4b93f75ce7d6e3a1937c3e902d3cb23d0a179c" +checksum = "473aa619c2a3581ab00d9000e66a11982f6354d0150797518b8d459c7f9a6b5c" dependencies = [ "aws-credential-types", "aws-runtime", @@ -603,9 +603,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.49.0" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09677244a9da92172c8dc60109b4a9658597d4d298b188dd0018b6a66b410ca4" +checksum = "ded855583fa1d22e88fe39fd6062b062376e50a8211989e07cf5e38d52eb3453" dependencies = [ "aws-credential-types", "aws-runtime", @@ -625,9 +625,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.50.0" +version = "1.49.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81fea2f3a8bb3bd10932ae7ad59cc59f65f270fc9183a7e91f501dc5efbef7ee" +checksum = "9177ea1192e6601ae16c7273385690d88a7ed386a00b74a6bc894d12103cd933" dependencies = [ "aws-credential-types", "aws-runtime", @@ -647,9 +647,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.50.0" +version = "1.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ada54e5f26ac246dc79727def52f7f8ed38915cb47781e2a72213957dc3a7d5" +checksum = "823ef553cf36713c97453e2ddff1eb8f62be7f4523544e2a5db64caf80100f0a" dependencies = [ "aws-credential-types", "aws-runtime", @@ -770,9 +770,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.7.3" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92165296a47a812b267b4f41032ff8069ab7ff783696d217f0994a0d7ab585cd" +checksum = "e086682a53d3aa241192aa110fa8dfce98f2f5ac2ead0de84d41582c7e8fdb96" dependencies = [ "aws-smithy-async", "aws-smithy-types", @@ -787,9 +787,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.9" +version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fbd94a32b3a7d55d3806fe27d98d3ad393050439dd05eb53ece36ec5e3d3510" +checksum = "07c9cdc179e6afbf5d391ab08c85eac817b51c87e1892a5edb5f7bbdc64314b4" dependencies = [ "base64-simd", "bytes", @@ -950,9 +950,9 @@ dependencies = [ [[package]] name = "brotli" -version = "6.0.0" +version = "7.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74f7971dbd9326d58187408ab83117d8ac1bb9c17b085fdacd1cf2f598719b6b" +checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1026,9 +1026,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.1" +version = "1.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" +checksum = "67b9470d453346108f93a59222a9a1a5724db32d0a4727b7ab7ace4b4d822dc9" dependencies = [ "jobserver", "libc", @@ -1070,9 +1070,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93698b29de5e97ad0ae26447b344c482a7284c737d9ddc5f9e52b74a336671bb" +checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" dependencies = [ "chrono", "chrono-tz-build", @@ -1081,20 +1081,19 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c088aee841df9c3041febbb73934cfc39708749bf96dc827e3359cd39ef11b1" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" dependencies = [ "parse-zoneinfo", - "phf", "phf_codegen", ] [[package]] name = "comfy-table" -version = "7.1.3" +version = "7.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" +checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" dependencies = [ "strum", "strum_macros", @@ -1146,16 +1145,6 @@ dependencies = [ "libc", ] -[[package]] -name = "core-foundation" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b55271e5c8c478ad3f38ad24ef34923091e0548492a266d19b3c0b4d82574c63" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -1164,9 +1153,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.16" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] @@ -1256,9 +1245,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.3.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", "itoa", @@ -1304,9 +1293,9 @@ dependencies = [ [[package]] name = "datafusion" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4fd4a99fc70d40ef7e52b243b4a399c3f8d353a40d5ecb200deee05e49c61bb" +checksum = "dae5f2abc725737d6e87b6d348a5aa2d0a77e4cf873045f004546da946e6e619" dependencies = [ "ahash", "arrow", @@ -1327,6 +1316,7 @@ dependencies = [ "datafusion-functions", "datafusion-functions-aggregate", "datafusion-functions-nested", + "datafusion-functions-window", "datafusion-optimizer", "datafusion-physical-expr", "datafusion-physical-expr-common", @@ -1339,10 +1329,10 @@ dependencies = [ "half", "hashbrown 0.14.5", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "num_cpus", - "object_store", + "object_store 0.11.1", "parking_lot", "parquet", "paste", @@ -1360,9 +1350,9 @@ dependencies = [ [[package]] name = "datafusion-catalog" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13b3cfbd84c6003594ae1972314e3df303a27ce8ce755fcea3240c90f4c0529" +checksum = "998761705551f11ffa4ee692cc285b44eb1def6e0d28c4eaf5041b9e2810dc1e" dependencies = [ "arrow-schema", "async-trait", @@ -1370,13 +1360,14 @@ dependencies = [ "datafusion-execution", "datafusion-expr", "datafusion-physical-plan", + "parking_lot", ] [[package]] name = "datafusion-common" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fdbc877e3e40dcf88cc8f283d9f5c8851f0a3aa07fee657b1b75ac1ad49b9c" +checksum = "11986f191e88d950f10a5cc512a598afba27d92e04a0201215ad60785005115a" dependencies = [ "ahash", "arrow", @@ -1389,25 +1380,28 @@ dependencies = [ "instant", "libc", "num_cpus", - "object_store", + "object_store 0.11.1", "parquet", + "paste", "sqlparser", + "tokio", ] [[package]] name = "datafusion-common-runtime" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a7496d1f664179f6ce3a5cbef6566056ccaf3ea4aa72cc455f80e62c1dd86b1" +checksum = "694c9d7ea1b82f95768215c4cb5c2d5c613690624e832a7ee64be563139d582f" dependencies = [ + "log", "tokio", ] [[package]] name = "datafusion-execution" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799e70968c815b611116951e3dd876aef04bf217da31b72eec01ee6a959336a1" +checksum = "30b4cedcd98151e0a297f34021b6b232ff0ebc0f2f18ea5e7446b5ebda99b1a1" dependencies = [ "arrow", "chrono", @@ -1417,7 +1411,7 @@ dependencies = [ "futures", "hashbrown 0.14.5", "log", - "object_store", + "object_store 0.11.1", "parking_lot", "rand", "tempfile", @@ -1426,9 +1420,9 @@ dependencies = [ [[package]] name = "datafusion-expr" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c1841c409d9518c17971d15c9bae62e629eb937e6fb6c68cd32e9186f8b30d2" +checksum = "a8dd114dc0296cacaee98ad3165724529fcca9a65b2875abcd447b9cc02b2b74" dependencies = [ "ahash", "arrow", @@ -1436,6 +1430,9 @@ dependencies = [ "arrow-buffer", "chrono", "datafusion-common", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr-common", "paste", "serde_json", "sqlparser", @@ -1443,11 +1440,22 @@ dependencies = [ "strum_macros", ] +[[package]] +name = "datafusion-expr-common" +version = "42.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d1ba2bb018218d9260bbd7de6a46a20f61b93d4911dba8aa07735625004c4fb" +dependencies = [ + "arrow", + "datafusion-common", + "paste", +] + [[package]] name = "datafusion-functions" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e481cf34d2a444bd8fa09b65945f0ce83dc92df8665b761505b3d9f351bebb" +checksum = "547cb780a4ac51fd8e52c0fb9188bc16cea4e35aebf6c454bda0b82a7a417304" dependencies = [ "arrow", "arrow-buffer", @@ -1460,7 +1468,7 @@ dependencies = [ "datafusion-expr", "hashbrown 0.14.5", "hex", - "itertools 0.12.1", + "itertools 0.13.0", "log", "md-5", "rand", @@ -1472,9 +1480,9 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b4ece19f73c02727e5e8654d79cd5652de371352c1df3c4ac3e419ecd6943fb" +checksum = "e68cf5aa7ebcac08bd04bb709a9a6d4963eafd227da62b628133bc509c40f5a0" dependencies = [ "ahash", "arrow", @@ -1482,17 +1490,34 @@ dependencies = [ "datafusion-common", "datafusion-execution", "datafusion-expr", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr", "datafusion-physical-expr-common", + "half", "log", "paste", "sqlparser", ] +[[package]] +name = "datafusion-functions-aggregate-common" +version = "42.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2285d080dfecdfb8605b0ab2f1a41e2473208dc8e9bd6f5d1dbcfe97f517e6f" +dependencies = [ + "ahash", + "arrow", + "datafusion-common", + "datafusion-expr-common", + "datafusion-physical-expr-common", + "rand", +] + [[package]] name = "datafusion-functions-nested" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1474552cc824e8c9c88177d454db5781d4b66757d4aca75719306b8343a5e8d" +checksum = "6b6ffbbb7cf7bf0c0e05eb6207023fef341cac83a593a5365a6fc83803c572a9" dependencies = [ "arrow", "arrow-array", @@ -1504,17 +1529,30 @@ dependencies = [ "datafusion-expr", "datafusion-functions", "datafusion-functions-aggregate", - "itertools 0.12.1", + "datafusion-physical-expr-common", + "itertools 0.13.0", "log", "paste", "rand", ] +[[package]] +name = "datafusion-functions-window" +version = "42.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e78d30ebd6e9f74d4aeddec32744f5a18b5f9584591bc586fb5259c4848bac5" +dependencies = [ + "datafusion-common", + "datafusion-expr", + "datafusion-physical-expr-common", + "log", +] + [[package]] name = "datafusion-optimizer" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "791ff56f55608bc542d1ea7a68a64bdc86a9413f5a381d06a39fd49c2a3ab906" +checksum = "be172c44bf344df707e0c041fa3f41e6dc5fb0976f539c68bc442bca150ee58c" dependencies = [ "arrow", "async-trait", @@ -1524,7 +1562,7 @@ dependencies = [ "datafusion-physical-expr", "hashbrown 0.14.5", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "paste", "regex-syntax", @@ -1532,9 +1570,9 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a223962b3041304a3e20ed07a21d5de3d88d7e4e71ca192135db6d24e3365a4" +checksum = "43b86b7fa0b8161c49b0f005b0df193fc6d9b65ceec675f155422cda5d1583ca" dependencies = [ "ahash", "arrow", @@ -1548,12 +1586,14 @@ dependencies = [ "datafusion-common", "datafusion-execution", "datafusion-expr", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", "datafusion-physical-expr-common", "half", "hashbrown 0.14.5", "hex", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "paste", "petgraph", @@ -1562,35 +1602,37 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db5e7d8532a1601cd916881db87a70b0a599900d23f3db2897d389032da53bc6" +checksum = "242ba8a26351d9ca16295814c46743b0d1b00ec372174bdfbba991d0953dd596" dependencies = [ "ahash", "arrow", "datafusion-common", - "datafusion-expr", + "datafusion-expr-common", "hashbrown 0.14.5", "rand", ] [[package]] name = "datafusion-physical-optimizer" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb9c78f308e050f5004671039786a925c3fee83b90004e9fcfd328d7febdcc0" +checksum = "25ca088eb904bf1cfc9c5e5653110c70a6eaba43164085a9d180b35b77ce3b8b" dependencies = [ + "arrow-schema", "datafusion-common", "datafusion-execution", "datafusion-physical-expr", "datafusion-physical-plan", + "itertools 0.13.0", ] [[package]] name = "datafusion-physical-plan" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d1116949432eb2d30f6362707e2846d942e491052a206f2ddcb42d08aea1ffe" +checksum = "4989a53b824abc759685eb643f4d604c2fc2fea4e2c309ac3473bea263ecbbeb" dependencies = [ "ahash", "arrow", @@ -1605,13 +1647,14 @@ dependencies = [ "datafusion-execution", "datafusion-expr", "datafusion-functions-aggregate", + "datafusion-functions-aggregate-common", "datafusion-physical-expr", "datafusion-physical-expr-common", "futures", "half", "hashbrown 0.14.5", "indexmap", - "itertools 0.12.1", + "itertools 0.13.0", "log", "once_cell", "parking_lot", @@ -1622,9 +1665,9 @@ dependencies = [ [[package]] name = "datafusion-sql" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b45d0180711165fe94015d7c4123eb3e1cf5fb60b1506453200b8d1ce666bef0" +checksum = "66b9b75b9da10ed656073ac0553708f17eb8fa5a7b065ef9848914c93150ab9e" dependencies = [ "arrow", "arrow-array", @@ -1639,18 +1682,18 @@ dependencies = [ [[package]] name = "datafusion-substrait" -version = "41.0.0" +version = "42.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf0a0055aa98246c79f98f0d03df11f16cb7adc87818d02d4413e3f3cdadbbee" +checksum = "220d7ab0ffadd8b1af753904b18dd92d270271810b1ce9f8be3c3dbe2392b636" dependencies = [ "arrow-buffer", "async-recursion", "chrono", "datafusion", - "itertools 0.12.1", - "object_store", + "itertools 0.13.0", + "object_store 0.11.1", "pbjson-types", - "prost 0.12.6", + "prost 0.13.3", "substrait", "url", ] @@ -1725,7 +1768,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -1827,9 +1870,9 @@ checksum = "9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471" [[package]] name = "fastrand" -version = "2.2.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "filetime" @@ -1861,9 +1904,9 @@ dependencies = [ [[package]] name = "flate2" -version = "1.0.35" +version = "1.0.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c936bfdafb507ebbf50b8074c54fa31c5be9a1e7e5f467dd659697041407d07c" +checksum = "a1b589b4dc103969ad3cf85c950899926ec64300a1a46d76c03a6072957036f0" dependencies = [ "crc32fast", "miniz_oxide", @@ -1963,9 +2006,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" +checksum = "3f1fa2f9765705486b33fd2acf1577f8ec449c2ba1f318ae5447697b7c08d210" dependencies = [ "fastrand", "futures-core", @@ -1982,7 +2025,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -2083,9 +2126,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" dependencies = [ "atomic-waker", "bytes", @@ -2297,14 +2340,14 @@ dependencies = [ [[package]] name = "hyper" -version = "1.5.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97818827ef4f364230e16705d4706e2897df2bb60617d6ca15d598025a3c481f" +checksum = "bbbff0a806a4728c99295b254c8838933b5b082d75e3cb70c8dab21fdfbcfa9a" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "httparse", @@ -2339,10 +2382,10 @@ checksum = "08afdbb5c31130e3034af566421053ab03787c640246a446327f550d11bcb333" dependencies = [ "futures-util", "http 1.1.0", - "hyper 1.5.1", + "hyper 1.5.0", "hyper-util", - "rustls 0.23.17", - "rustls-native-certs 0.8.1", + "rustls 0.23.16", + "rustls-native-certs 0.8.0", "rustls-pki-types", "tokio", "tokio-rustls 0.26.0", @@ -2360,7 +2403,7 @@ dependencies = [ "futures-util", "http 1.1.0", "http-body 1.0.1", - "hyper 1.5.1", + "hyper 1.5.0", "pin-project-lite", "socket2", "tokio", @@ -2515,7 +2558,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -2634,9 +2677,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.13" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" @@ -2687,6 +2730,7 @@ dependencies = [ "chrono", "dashmap 5.5.3", "datafusion", + "datafusion-expr", "datafusion-functions", "datafusion-physical-expr", "deepsize", @@ -2705,17 +2749,18 @@ dependencies = [ "lazy_static", "log", "moka", - "object_store", + "object_store 0.10.2", "permutation", "pin-project", "prost 0.12.6", - "prost-build 0.12.6", - "prost-types 0.12.6", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", "roaring", "serde", "serde_json", - "snafu", + "snafu 0.7.5", "tantivy", "tempfile", "tfrecord", @@ -2735,6 +2780,7 @@ dependencies = [ "arrow-data", "arrow-schema", "arrow-select", + "bytes", "getrandom", "half", "num-traits", @@ -2763,13 +2809,13 @@ dependencies = [ "mock_instant", "moka", "num_cpus", - "object_store", + "object_store 0.10.2", "pin-project", - "prost 0.12.6", + "prost 0.13.3", "rand", "roaring", "serde_json", - "snafu", + "snafu 0.7.5", "tokio", "tokio-stream", "tokio-util", @@ -2798,8 +2844,8 @@ dependencies = [ "lance-core", "lazy_static", "log", - "prost 0.12.6", - "snafu", + "prost 0.13.3", + "snafu 0.7.5", "tokio", ] @@ -2845,12 +2891,12 @@ dependencies = [ "log", "num-traits", "paste", - "prost 0.12.6", - "prost-build 0.12.6", - "prost-types 0.12.6", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", "seq-macro", - "snafu", + "snafu 0.7.5", "tokio", "tracing", "zstd", @@ -2879,12 +2925,12 @@ dependencies = [ "lance-io", "log", "num-traits", - "object_store", - "prost 0.12.6", - "prost-build 0.12.6", - "prost-types 0.12.6", + "object_store 0.10.2", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "roaring", - "snafu", + "snafu 0.7.5", "tempfile", "tokio", "tracing", @@ -2925,15 +2971,15 @@ dependencies = [ "log", "moka", "num-traits", - "object_store", - "prost 0.12.6", - "prost-build 0.12.6", + "object_store 0.10.2", + "prost 0.13.3", + "prost-build 0.13.3", "rand", "rayon", "roaring", "serde", "serde_json", - "snafu", + "snafu 0.7.5", "tantivy", "tempfile", "tokio", @@ -2967,14 +3013,14 @@ dependencies = [ "lance-core", "lazy_static", "log", - "object_store", + "object_store 0.10.2", "path_abs", "pin-project", - "prost 0.12.6", - "prost-build 0.12.6", + "prost 0.13.3", + "prost-build 0.13.3", "rand", "shellexpand", - "snafu", + "snafu 0.7.5", "tokio", "tracing", "url", @@ -3026,16 +3072,16 @@ dependencies = [ "lance-io", "lazy_static", "log", - "object_store", - "prost 0.12.6", - "prost-build 0.12.6", - "prost-types 0.12.6", + "object_store 0.10.2", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "rand", "rangemap", "roaring", "serde", "serde_json", - "snafu", + "snafu 0.7.5", "tokio", "tracing", "url", @@ -3056,9 +3102,9 @@ checksum = "0c2cdeb66e45e9f36bfad5bbdb4d2384e70936afbee843c6f6543f0c551ebb25" [[package]] name = "lexical-core" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cde5de06e8d4c2faabc400238f9ae1c74d5412d03a7bd067645ccbc47070e46" +checksum = "0431c65b318a590c1de6b8fd6e72798c92291d27762d94c9e6c37ed7a73d8458" dependencies = [ "lexical-parse-float", "lexical-parse-integer", @@ -3069,9 +3115,9 @@ dependencies = [ [[package]] name = "lexical-parse-float" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "683b3a5ebd0130b8fb52ba0bdc718cc56815b6a097e28ae5a6997d0ad17dc05f" +checksum = "eb17a4bdb9b418051aa59d41d65b1c9be5affab314a872e5ad7f06231fb3b4e0" dependencies = [ "lexical-parse-integer", "lexical-util", @@ -3080,9 +3126,9 @@ dependencies = [ [[package]] name = "lexical-parse-integer" -version = "0.8.6" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d0994485ed0c312f6d965766754ea177d07f9c00c9b82a5ee62ed5b47945ee9" +checksum = "5df98f4a4ab53bf8b175b363a34c7af608fe31f93cc1fb1bf07130622ca4ef61" dependencies = [ "lexical-util", "static_assertions", @@ -3090,18 +3136,18 @@ dependencies = [ [[package]] name = "lexical-util" -version = "0.8.5" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5255b9ff16ff898710eb9eb63cb39248ea8a5bb036bea8085b1a767ff6c4e3fc" +checksum = "85314db53332e5c192b6bca611fb10c114a80d1b831ddac0af1e9be1b9232ca0" dependencies = [ "static_assertions", ] [[package]] name = "lexical-write-float" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accabaa1c4581f05a3923d1b4cfd124c329352288b7b9da09e766b0668116862" +checksum = "6e7c3ad4e37db81c1cbe7cf34610340adc09c322871972f74877a712abc6c809" dependencies = [ "lexical-util", "lexical-write-integer", @@ -3110,9 +3156,9 @@ dependencies = [ [[package]] name = "lexical-write-integer" -version = "0.8.5" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1b6f3d1f4422866b68192d62f77bc5c700bee84f3069f2469d7bc8c77852446" +checksum = "eb89e9f6958b83258afa3deed90b5de9ef68eef090ad5086c791cd2345610162" dependencies = [ "lexical-util", "static_assertions", @@ -3120,9 +3166,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.164" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libm" @@ -3312,7 +3358,7 @@ dependencies = [ "rustc_version", "smallvec", "tagptr", - "thiserror 1.0.69", + "thiserror", "triomphe", "uuid", ] @@ -3475,7 +3521,7 @@ dependencies = [ "chrono", "futures", "humantime", - "hyper 1.5.1", + "hyper 1.5.0", "itertools 0.13.0", "md-5", "parking_lot", @@ -3487,7 +3533,28 @@ dependencies = [ "rustls-pemfile 2.2.0", "serde", "serde_json", - "snafu", + "snafu 0.7.5", + "tokio", + "tracing", + "url", + "walkdir", +] + +[[package]] +name = "object_store" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eb4c22c6154a1e759d7099f9ffad7cc5ef8245f9efbab4a41b92623079c82f3" +dependencies = [ + "async-trait", + "bytes", + "chrono", + "futures", + "humantime", + "itertools 0.13.0", + "parking_lot", + "percent-encoding", + "snafu 0.8.5", "tokio", "tracing", "url", @@ -3579,9 +3646,9 @@ dependencies = [ [[package]] name = "parquet" -version = "52.2.0" +version = "53.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e977b9066b4d3b03555c22bdc442f3fadebd96a39111249113087d0edb2691cd" +checksum = "2b449890367085eb65d7d3321540abc3d7babbd179ce31df0016e90719114191" dependencies = [ "ahash", "arrow-array", @@ -3598,11 +3665,11 @@ dependencies = [ "flate2", "futures", "half", - "hashbrown 0.14.5", + "hashbrown 0.15.1", "lz4_flex", "num", "num-bigint", - "object_store", + "object_store 0.11.1", "paste", "seq-macro", "snap", @@ -3642,9 +3709,9 @@ dependencies = [ [[package]] name = "pbjson" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1030c719b0ec2a2d25a5df729d6cff1acf3cc230bf766f4f97833591f7577b90" +checksum = "c7e6349fa080353f4a597daffd05cb81572a9c031a6d4fff7e504947496fcc68" dependencies = [ "base64 0.21.7", "serde", @@ -3652,28 +3719,28 @@ dependencies = [ [[package]] name = "pbjson-build" -version = "0.6.2" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2580e33f2292d34be285c5bc3dba5259542b083cfad6037b6d70345f24dcb735" +checksum = "6eea3058763d6e656105d1403cb04e0a41b7bbac6362d413e7c33be0c32279c9" dependencies = [ - "heck 0.4.1", - "itertools 0.11.0", - "prost 0.12.6", - "prost-types 0.12.6", + "heck 0.5.0", + "itertools 0.13.0", + "prost 0.13.3", + "prost-types 0.13.3", ] [[package]] name = "pbjson-types" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18f596653ba4ac51bdecbb4ef6773bc7f56042dc13927910de1684ad3d32aa12" +checksum = "e54e5e7bfb1652f95bc361d76f3c780d8e526b134b85417e774166ee941f0887" dependencies = [ "bytes", "chrono", "pbjson", "pbjson-build", - "prost 0.12.6", - "prost-build 0.12.6", + "prost 0.13.3", + "prost-build 0.13.3", "serde", ] @@ -3754,7 +3821,7 @@ checksum = "3c0f5fad0874fc7abcd4d750e76917eaebbecaa2c20bde22e1dbeeba8beb758c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -3788,9 +3855,9 @@ checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "polling" -version = "3.7.4" +version = "3.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" +checksum = "cc2790cd301dec6cd3b7a025e4815cf825724a51c98dccfe6a3e55f05ffb6511" dependencies = [ "cfg-if", "concurrent-queue", @@ -3839,14 +3906,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "64d1ec885c64d0457d564db4ec299b2dae3f9c02808b8ad9c3a089c591b18033" dependencies = [ "proc-macro2", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] @@ -3871,6 +3938,16 @@ dependencies = [ "prost-derive 0.12.6", ] +[[package]] +name = "prost" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b0487d90e047de87f984913713b85c601c05609aad5b0df4b4573fbf69aa13f" +dependencies = [ + "bytes", + "prost-derive 0.13.3", +] + [[package]] name = "prost-build" version = "0.11.9" @@ -3910,7 +3987,28 @@ dependencies = [ "prost 0.12.6", "prost-types 0.12.6", "regex", - "syn 2.0.89", + "syn 2.0.87", + "tempfile", +] + +[[package]] +name = "prost-build" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c1318b19085f08681016926435853bbf7858f9c082d0999b80550ff5d9abe15" +dependencies = [ + "bytes", + "heck 0.5.0", + "itertools 0.13.0", + "log", + "multimap 0.10.0", + "once_cell", + "petgraph", + "prettyplease 0.2.25", + "prost 0.13.3", + "prost-types 0.13.3", + "regex", + "syn 2.0.87", "tempfile", ] @@ -3937,7 +4035,20 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", +] + +[[package]] +name = "prost-derive" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9552f850d5f0964a4e4d0bf306459ac29323ddfbae05e35a7c0d35cb0803cc5" +dependencies = [ + "anyhow", + "itertools 0.13.0", + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] @@ -3958,6 +4069,15 @@ dependencies = [ "prost 0.12.6", ] +[[package]] +name = "prost-types" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4759aa0d3a6232fb8dbdb97b61de2c20047c68aca932c7ed76da9d788508d670" +dependencies = [ + "prost 0.13.3", +] + [[package]] name = "pylance" version = "0.20.0" @@ -3985,14 +4105,14 @@ dependencies = [ "lance-table", "lazy_static", "log", - "object_store", - "prost 0.12.6", + "object_store 0.10.2", + "prost 0.13.3", "prost-build 0.11.9", "pyo3", "serde", "serde_json", "serde_yaml", - "snafu", + "snafu 0.7.5", "tokio", "tracing", "tracing-chrome", @@ -4003,15 +4123,15 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8" +checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", - "parking_lot", + "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", @@ -4021,9 +4141,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50" +checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" dependencies = [ "once_cell", "target-lexicon", @@ -4031,9 +4151,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403" +checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636" dependencies = [ "libc", "pyo3-build-config", @@ -4041,27 +4161,27 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c" +checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "pyo3-macros-backend" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c" +checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe" dependencies = [ - "heck 0.4.1", + "heck 0.5.0", "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -4091,47 +4211,44 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.6" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62e96808277ec6f97351a2380e6c25114bc9e67037775464979f3037c92d05ef" +checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" dependencies = [ "bytes", "pin-project-lite", "quinn-proto", "quinn-udp", "rustc-hash 2.0.0", - "rustls 0.23.17", + "rustls 0.23.16", "socket2", - "thiserror 2.0.3", + "thiserror", "tokio", "tracing", ] [[package]] name = "quinn-proto" -version = "0.11.9" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2fe5ef3495d7d2e377ff17b1a8ce2ee2ec2a18cde8b6ad6619d65d0701c135d" +checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", - "getrandom", "rand", "ring", "rustc-hash 2.0.0", - "rustls 0.23.17", - "rustls-pki-types", + "rustls 0.23.16", "slab", - "thiserror 2.0.3", + "thiserror", "tinyvec", "tracing", - "web-time", ] [[package]] name = "quinn-udp" -version = "0.5.7" +version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a626c6807713b15cac82a6acaccd6043c9a5408c24baae07611fec3f243da" +checksum = "e346e016eacfff12233c243718197ca12f148c84e1e84268a896699b41c71780" dependencies = [ "cfg_aliases", "libc", @@ -4257,7 +4374,7 @@ checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", "libredox", - "thiserror 1.0.69", + "thiserror", ] [[package]] @@ -4274,9 +4391,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -4315,11 +4432,11 @@ dependencies = [ "bytes", "futures-core", "futures-util", - "h2 0.4.7", + "h2 0.4.6", "http 1.1.0", "http-body 1.0.1", "http-body-util", - "hyper 1.5.1", + "hyper 1.5.0", "hyper-rustls 0.27.3", "hyper-util", "ipnet", @@ -4330,8 +4447,8 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.17", - "rustls-native-certs 0.8.1", + "rustls 0.23.16", + "rustls-native-certs 0.8.0", "rustls-pemfile 2.2.0", "rustls-pki-types", "serde", @@ -4414,9 +4531,9 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.41" +version = "0.38.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" +checksum = "375116bee2be9ed569afe2154ea6a99dfdffd257f533f187498c2a8f5feaf4ee" dependencies = [ "bitflags 2.6.0", "errno", @@ -4439,9 +4556,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.17" +version = "0.23.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f1a745511c54ba6d4465e8d5dfbd81b45791756de28d4981af70d6dca128f1e" +checksum = "eee87ff5d9b36712a58574e12e9f0ea80f915a5b0ac518d322b24a465617925e" dependencies = [ "log", "once_cell", @@ -4461,19 +4578,20 @@ dependencies = [ "openssl-probe", "rustls-pemfile 1.0.4", "schannel", - "security-framework 2.11.1", + "security-framework", ] [[package]] name = "rustls-native-certs" -version = "0.8.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" +checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" dependencies = [ "openssl-probe", + "rustls-pemfile 2.2.0", "rustls-pki-types", "schannel", - "security-framework 3.0.1", + "security-framework", ] [[package]] @@ -4499,9 +4617,6 @@ name = "rustls-pki-types" version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16f1201b3c9a7ee8039bcadc17b7e605e2945b27eee7631788c1bd2b0643674b" -dependencies = [ - "web-time", -] [[package]] name = "rustls-webpki" @@ -4547,9 +4662,9 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.27" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ "windows-sys 0.59.0", ] @@ -4575,7 +4690,7 @@ dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -4601,20 +4716,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ "bitflags 2.6.0", - "core-foundation 0.9.4", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework" -version = "3.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1415a607e92bec364ea2cf9264646dcce0f91e6d65281bd6f2819cca3bf39c8" -dependencies = [ - "bitflags 2.6.0", - "core-foundation 0.10.0", + "core-foundation", "core-foundation-sys", "libc", "security-framework-sys", @@ -4622,9 +4724,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.1" +version = "2.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa39c7303dc58b5543c94d22c1766b0d31f2ee58306363ea622b10bbc075eaa2" +checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" dependencies = [ "core-foundation-sys", "libc", @@ -4647,22 +4749,22 @@ checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.215" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.215" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -4673,14 +4775,14 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.133" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", "memchr", @@ -4697,7 +4799,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -4806,7 +4908,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" dependencies = [ "doc-comment", - "snafu-derive", + "snafu-derive 0.7.5", +] + +[[package]] +name = "snafu" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" +dependencies = [ + "snafu-derive 0.8.5", ] [[package]] @@ -4821,6 +4932,18 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "snafu-derive" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "snap" version = "1.1.1" @@ -4845,9 +4968,9 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "sqlparser" -version = "0.49.0" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a404d0e14905361b918cb8afdb73605e25c1d5029312bd9785142dcb3aa49e" +checksum = "b2e5b515a2bd5168426033e9efbfd05500114833916f1d5c268f938b4ee130ac" dependencies = [ "log", "sqlparser_derive", @@ -4861,7 +4984,7 @@ checksum = "01b2e185515564f15375f593fb966b5718bc624ba77fe49fa4616ad619690554" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -4907,29 +5030,29 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] name = "substrait" -version = "0.36.0" +version = "0.41.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1ee6e584c8bf37104b7eb51c25eae07a9321b0e01379bec3b7c462d2f42afbf" +checksum = "2a3bf05f1d7a3fd7a97790d410f6e859b3a98dcde05e7a3fc00b31b0f60fe7cb" dependencies = [ "heck 0.5.0", "pbjson", "pbjson-build", "pbjson-types", "prettyplease 0.2.25", - "prost 0.12.6", - "prost-build 0.12.6", - "prost-types 0.12.6", + "prost 0.13.3", + "prost-build 0.13.3", + "prost-types 0.13.3", "schemars", "semver", "serde", "serde_json", "serde_yaml", - "syn 2.0.89", + "syn 2.0.87", "typify", "walkdir", ] @@ -4953,9 +5076,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.89" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", @@ -4964,9 +5087,9 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "1.0.2" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" dependencies = [ "futures-core", ] @@ -4979,7 +5102,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -5033,7 +5156,7 @@ dependencies = [ "tantivy-stacker", "tantivy-tokenizer-api", "tempfile", - "thiserror 1.0.69", + "thiserror", "time", "uuid", "winapi", @@ -5154,9 +5277,9 @@ checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.14.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28cce251fcbc87fac86a866eeb0d6c2d536fc16d06f184bb61aeae11aa4cee0c" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", @@ -5199,48 +5322,28 @@ dependencies = [ "prost 0.12.6", "prost-build 0.12.6", "tar", - "thiserror 1.0.69", + "thiserror", "ureq", ] [[package]] name = "thiserror" -version = "1.0.69" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" -dependencies = [ - "thiserror-impl 1.0.69", -] - -[[package]] -name = "thiserror" -version = "2.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c006c85c7651b3cf2ada4584faa36773bd07bac24acfb39f3c431b36d7e667aa" -dependencies = [ - "thiserror-impl 2.0.3", -] - -[[package]] -name = "thiserror-impl" -version = "1.0.69" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" +checksum = "02dd99dc800bbb97186339685293e1cc5d9df1f8fae2d0aecd9ff1c77efea892" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.89", + "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.3" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f077553d607adc1caf65430528a576c757a71ed73944b66ebb58ef2bbd243568" +checksum = "a7c61ec9a6f64d2793d8a45faba21efbe3ced62a886d44c36a009b2b519b4c7e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -5331,9 +5434,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.41.1" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -5354,7 +5457,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -5373,7 +5476,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0c7bc40d0e5a97695bb96e27995cd3a08538541b0a846f65bba7a359f36700d4" dependencies = [ - "rustls 0.23.17", + "rustls 0.23.16", "rustls-pki-types", "tokio", ] @@ -5427,7 +5530,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -5529,8 +5632,8 @@ dependencies = [ "semver", "serde", "serde_json", - "syn 2.0.89", - "thiserror 1.0.69", + "syn 2.0.87", + "thiserror", "unicode-ident", ] @@ -5547,15 +5650,15 @@ dependencies = [ "serde", "serde_json", "serde_tokenstream", - "syn 2.0.89", + "syn 2.0.87", "typify-impl", ] [[package]] name = "unicode-ident" -version = "1.0.14" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-segmentation" @@ -5565,9 +5668,9 @@ checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.2.0" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "unindent" @@ -5597,7 +5700,7 @@ dependencies = [ "flate2", "log", "once_cell", - "rustls 0.23.17", + "rustls 0.23.16", "rustls-pki-types", "url", "webpki-roots", @@ -5719,7 +5822,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", "wasm-bindgen-shared", ] @@ -5753,7 +5856,7 @@ checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -5787,21 +5890,11 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "web-time" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" -dependencies = [ - "js-sys", - "wasm-bindgen", -] - [[package]] name = "webpki-roots" -version = "0.26.7" +version = "0.26.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" +checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" dependencies = [ "rustls-pki-types", ] @@ -6103,7 +6196,7 @@ checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", "synstructure", ] @@ -6125,7 +6218,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] @@ -6145,7 +6238,7 @@ checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", "synstructure", ] @@ -6174,7 +6267,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.89", + "syn 2.0.87", ] [[package]] diff --git a/python/Cargo.toml b/python/Cargo.toml index f19fafab57..57549345a3 100644 --- a/python/Cargo.toml +++ b/python/Cargo.toml @@ -12,11 +12,11 @@ name = "lance" crate-type = ["cdylib"] [dependencies] -arrow = { version = "52.2", features = ["pyarrow"] } -arrow-array = "52.2" -arrow-data = "52.2" -arrow-schema = "52.2" -arrow-select = "52.2" +arrow = { version = "53.2", features = ["pyarrow"] } +arrow-array = "53.2" +arrow-data = "53.2" +arrow-schema = "53.2" +arrow-select = "53.2" object_store = "0.10.1" async-trait = "0.1" chrono = "0.4.31" @@ -42,11 +42,12 @@ lance-linalg = { path = "../rust/lance-linalg" } lance-table = { path = "../rust/lance-table" } lazy_static = "1" log = "0.4" -prost = "0.12.2" -pyo3 = { version = "0.21", features = [ +prost = "0.13.2" +pyo3 = { version = "0.22", features = [ "extension-module", "abi3-py39", "gil-refs", + "py-clone", ] } tokio = { version = "1.23", features = ["rt-multi-thread"] } uuid = "1.3.0" diff --git a/python/src/arrow.rs b/python/src/arrow.rs index bf3fb5f68c..d7e30c01a6 100644 --- a/python/src/arrow.rs +++ b/python/src/arrow.rs @@ -33,7 +33,7 @@ impl BFloat16 { } #[classmethod] - fn from_bytes(_cls: &PyType, bytes: &[u8]) -> PyResult { + fn from_bytes(_cls: &Bound<'_, PyType>, bytes: &[u8]) -> PyResult { if bytes.len() != 2 { PyValueError::new_err(format!( "BFloat16::from_bytes: expected 2 bytes, got {}", diff --git a/python/src/datagen.rs b/python/src/datagen.rs index c23949b203..7980fa8ee7 100644 --- a/python/src/datagen.rs +++ b/python/src/datagen.rs @@ -2,7 +2,11 @@ use arrow::pyarrow::PyArrowType; use arrow_array::RecordBatch; use arrow_schema::Schema; use lance_datagen::{BatchCount, ByteCount}; -use pyo3::{pyfunction, types::PyModule, wrap_pyfunction, PyResult, Python}; +use pyo3::{ + pyfunction, + types::{PyModule, PyModuleMethods}, + wrap_pyfunction, Bound, PyResult, Python, +}; const DEFAULT_BATCH_SIZE_BYTES: u64 = 32 * 1024; const DEFAULT_BATCH_COUNT: u32 = 4; @@ -13,6 +17,7 @@ pub fn is_datagen_supported() -> bool { } #[pyfunction] +#[pyo3(signature=(schema, batch_count=None, bytes_in_batch=None))] pub fn rand_batches( schema: PyArrowType, batch_count: Option, @@ -35,10 +40,10 @@ pub fn rand_batches( .collect::>>>() } -pub fn register_datagen(py: Python, m: &PyModule) -> PyResult<()> { - let datagen = PyModule::new(py, "datagen")?; +pub fn register_datagen(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> { + let datagen = PyModule::new_bound(py, "datagen")?; datagen.add_wrapped(wrap_pyfunction!(is_datagen_supported))?; datagen.add_wrapped(wrap_pyfunction!(rand_batches))?; - m.add_submodule(datagen)?; + m.add_submodule(&datagen)?; Ok(()) } diff --git a/python/src/dataset.rs b/python/src/dataset.rs index ddf0cf3501..1a0ef1f27f 100644 --- a/python/src/dataset.rs +++ b/python/src/dataset.rs @@ -140,12 +140,13 @@ pub struct MergeInsertBuilder { #[pymethods] impl MergeInsertBuilder { #[new] - pub fn new(dataset: &PyAny, on: &PyAny) -> PyResult { + pub fn new(dataset: &Bound<'_, PyAny>, on: &Bound<'_, PyAny>) -> PyResult { let dataset: Py = dataset.extract()?; let ds = dataset.borrow(on.py()).ds.clone(); // Either a single string, which we put in a vector or an iterator // of strings, which we collect into a vector - let on = PyAny::downcast::(on) + let on = on + .downcast::() .map(|val| vec![val.to_string()]) .or_else(|_| { let iterator = on.iter().map_err(|_| { @@ -155,7 +156,7 @@ impl MergeInsertBuilder { })?; let mut keys = Vec::new(); for key in iterator { - keys.push(PyAny::downcast::(key?)?.to_string()); + keys.push(key?.downcast::()?.to_string()); } PyResult::Ok(keys) })?; @@ -171,6 +172,7 @@ impl MergeInsertBuilder { Ok(Self { builder, dataset }) } + #[pyo3(signature=(condition=None))] pub fn when_matched_update_all<'a>( mut slf: PyRefMut<'a, Self>, condition: Option<&str>, @@ -191,6 +193,7 @@ impl MergeInsertBuilder { Ok(slf) } + #[pyo3(signature=(expr=None))] pub fn when_not_matched_by_source_delete<'a>( mut slf: PyRefMut<'a, Self>, expr: Option<&str>, @@ -219,11 +222,11 @@ impl MergeInsertBuilder { .spawn(Some(py), job.execute_reader(new_data))? .map_err(|err| PyIOError::new_err(err.to_string()))?; - let dataset = self.dataset.as_ref(py); + let dataset = self.dataset.bind(py); dataset.borrow_mut().ds = new_self.0; let merge_stats = new_self.1; - let merge_dict = PyDict::new(py); + let merge_dict = PyDict::new_bound(py); merge_dict.set_item("num_inserted_rows", merge_stats.num_inserted_rows)?; merge_dict.set_item("num_updated_rows", merge_stats.num_updated_rows)?; merge_dict.set_item("num_deleted_rows", merge_stats.num_deleted_rows)?; @@ -344,7 +347,7 @@ impl Operation { name: String, fields: Vec, dataset_version: u64, - fragment_ids: &PySet, + fragment_ids: &Bound<'_, PySet>, ) -> PyResult { let fragment_ids: Vec = fragment_ids .iter() @@ -392,7 +395,7 @@ impl Operation { } } -pub fn transforms_from_python(transforms: &PyAny) -> PyResult { +pub fn transforms_from_python(transforms: &Bound<'_, PyAny>) -> PyResult { if let Ok(transforms) = transforms.extract::<&PyDict>() { let expressions = transforms .iter() @@ -449,6 +452,7 @@ pub struct Dataset { impl Dataset { #[allow(clippy::too_many_arguments)] #[new] + #[pyo3(signature=(uri, version=None, block_size=None, index_cache_size=None, metadata_cache_size=None, commit_handler=None, storage_options=None, manifest=None))] fn new( py: Python, uri: String, @@ -477,10 +481,10 @@ impl Dataset { let mut builder = DatasetBuilder::from_uri(&uri).with_read_params(params); if let Some(ver) = version { - if let Ok(i) = ver.downcast::(py) { + if let Ok(i) = ver.downcast_bound::(py) { let v: u64 = i.extract()?; builder = builder.with_version(v); - } else if let Ok(v) = ver.downcast::(py) { + } else if let Ok(v) = ver.downcast_bound::(py) { let t: &str = v.extract()?; builder = builder.with_tag(t); } else { @@ -545,7 +549,7 @@ impl Dataset { fn serialized_manifest(&self, py: Python) -> PyObject { let manifest_bytes = self.ds.manifest().serialized(); - PyBytes::new(py, &manifest_bytes).into() + PyBytes::new_bound(py, &manifest_bytes).into() } /// Load index metadata. @@ -559,7 +563,7 @@ impl Dataset { index_metadata .iter() .map(|idx| { - let dict = PyDict::new(py); + let dict = PyDict::new_bound(py); let schema = self_.ds.schema(); let idx_schema = schema.project_by_ids(idx.fields.as_slice(), true); @@ -588,7 +592,7 @@ impl Dataset { .map(|f| f.name.clone()) .collect::>(); - let fragment_set = PySet::empty(py).unwrap(); + let fragment_set = PySet::empty_bound(py).unwrap(); if let Some(bitmap) = &idx.fragment_bitmap { for fragment_id in bitmap.iter() { fragment_set.add(fragment_id).unwrap(); @@ -610,6 +614,7 @@ impl Dataset { } #[allow(clippy::too_many_arguments)] + #[pyo3(signature=(columns=None, columns_with_transform=None, filter=None, prefilter=None, limit=None, offset=None, nearest=None, batch_size=None, io_buffer_size=None, batch_readahead=None, fragment_readahead=None, scan_in_order=None, fragments=None, with_row_id=None, with_row_address=None, use_stats=None, substrait_filter=None, fast_search=None, full_text_query=None, late_materialization=None, use_scalar_index=None))] fn scanner( self_: PyRef<'_, Self>, columns: Option>, @@ -630,7 +635,7 @@ impl Dataset { use_stats: Option, substrait_filter: Option>, fast_search: Option, - full_text_query: Option<&PyDict>, + full_text_query: Option<&Bound<'_, PyDict>>, late_materialization: Option, use_scalar_index: Option, ) -> PyResult { @@ -673,7 +678,8 @@ impl Dataset { None } else { Some( - PyAny::downcast::(columns)? + columns + .downcast::()? .iter() .map(|c| c.extract::()) .collect::>>()?, @@ -863,12 +869,14 @@ impl Dataset { Ok(Scanner::new(scan)) } + #[pyo3(signature=(filter=None))] fn count_rows(&self, filter: Option) -> PyResult { RT.runtime .block_on(self.ds.count_rows(filter)) .map_err(|err| PyIOError::new_err(err.to_string())) } + #[pyo3(signature=(row_indices, columns = None, columns_with_transform = None))] fn take( self_: PyRef<'_, Self>, row_indices: Vec, @@ -895,6 +903,7 @@ impl Dataset { batch.to_pyarrow(self_.py()) } + #[pyo3(signature=(row_indices, columns = None, columns_with_transform = None))] fn take_rows( self_: PyRef<'_, Self>, row_indices: Vec, @@ -982,7 +991,7 @@ impl Dataset { Ok(PyArrowType(Box::new(LanceReader::from_stream(stream)))) } - fn alter_columns(&mut self, alterations: &PyList) -> PyResult<()> { + fn alter_columns(&mut self, alterations: &Bound<'_, PyList>) -> PyResult<()> { let alterations = alterations .iter() .map(|obj| { @@ -1067,7 +1076,12 @@ impl Dataset { Ok(()) } - fn update(&mut self, updates: &PyDict, predicate: Option<&str>) -> PyResult { + #[pyo3(signature=(updates, predicate=None))] + fn update( + &mut self, + updates: &Bound<'_, PyDict>, + predicate: Option<&str>, + ) -> PyResult { let mut builder = UpdateBuilder::new(self.ds.clone()); if let Some(predicate) = predicate { builder = builder @@ -1093,7 +1107,7 @@ impl Dataset { .map_err(|err| PyIOError::new_err(err.to_string()))?; self.ds = new_self.new_dataset; - let update_dict = PyDict::new(updates.py()); + let update_dict = PyDict::new_bound(updates.py()); let num_rows_updated = new_self.rows_updated; update_dict.set_item("num_rows_updated", num_rows_updated)?; Ok(update_dict.into()) @@ -1112,7 +1126,7 @@ impl Dataset { let pyvers: Vec = versions .iter() .map(|v| { - let dict = PyDict::new(py); + let dict = PyDict::new_bound(py); dict.set_item("version", v.version).unwrap(); dict.set_item( "timestamp", @@ -1120,7 +1134,8 @@ impl Dataset { ) .unwrap(); let tup: Vec<(&String, &String)> = v.metadata.iter().collect(); - dict.set_item("metadata", tup.into_py_dict(py)).unwrap(); + dict.set_item("metadata", tup.into_py_dict_bound(py)) + .unwrap(); dict.to_object(py) }) .collect::>() @@ -1141,10 +1156,10 @@ impl Dataset { } fn checkout_version(&self, py: Python, version: PyObject) -> PyResult { - if let Ok(i) = version.downcast::(py) { + if let Ok(i) = version.downcast_bound::(py) { let ref_: u64 = i.extract()?; self._checkout_version(ref_) - } else if let Ok(v) = version.downcast::(py) { + } else if let Ok(v) = version.downcast_bound::(py) { let ref_: &str = v.extract()?; self._checkout_version(ref_) } else { @@ -1164,6 +1179,7 @@ impl Dataset { } /// Cleanup old versions from the dataset + #[pyo3(signature = (older_than_micros, delete_unverified = None, error_if_tagged_old_versions = None))] fn cleanup_old_versions( &self, older_than_micros: i64, @@ -1192,9 +1208,9 @@ impl Dataset { .list_tags() .map_err(|err| PyValueError::new_err(err.to_string()))?; Python::with_gil(|py| { - let pytags = PyDict::new(py); + let pytags = PyDict::new_bound(py); for (k, v) in tags.iter() { - let dict = PyDict::new(py); + let dict = PyDict::new_bound(py); dict.set_item("version", v.version).unwrap(); dict.set_item("manifest_size", v.manifest_size).unwrap(); dict.to_object(py); @@ -1264,6 +1280,7 @@ impl Dataset { Ok(()) } + #[pyo3(signature = (columns, index_type, name = None, replace = None, storage_options = None, kwargs = None))] fn create_index( &mut self, columns: Vec<&str>, @@ -1409,6 +1426,7 @@ impl Dataset { } #[staticmethod] + #[pyo3(signature = (dest, storage_options = None))] fn drop(dest: String, storage_options: Option>) -> PyResult<()> { RT.spawn(None, async move { let (object_store, path) = @@ -1422,11 +1440,12 @@ impl Dataset { #[allow(clippy::too_many_arguments)] #[staticmethod] + #[pyo3(signature = (dest, operation, read_version = None, commit_lock = None, storage_options = None, enable_v2_manifest_paths = None, detached = None, max_retries = None))] fn commit( dest: &Bound, operation: Operation, read_version: Option, - commit_lock: Option<&PyAny>, + commit_lock: Option<&Bound<'_, PyAny>>, storage_options: Option>, enable_v2_manifest_paths: Option, detached: Option, @@ -1440,7 +1459,7 @@ impl Dataset { ..Default::default() }); - let commit_handler = commit_lock.map(|commit_lock| { + let commit_handler = commit_lock.as_ref().map(|commit_lock| { Arc::new(PyCommitLock::new(commit_lock.to_object(commit_lock.py()))) as Arc }); @@ -1480,10 +1499,11 @@ impl Dataset { } #[staticmethod] + #[pyo3(signature = (dest, transactions, commit_lock = None, storage_options = None, enable_v2_manifest_paths = None, detached = None, max_retries = None))] fn commit_batch<'py>( dest: &Bound<'py, PyAny>, transactions: Vec>, - commit_lock: Option<&'py PyAny>, + commit_lock: Option<&Bound<'py, PyAny>>, storage_options: Option>, enable_v2_manifest_paths: Option, detached: Option, @@ -1503,8 +1523,8 @@ impl Dataset { }); let py = dest.py(); - let dest = if dest.is_instance_of::() { - let dataset: Dataset = dest.extract()?; + let dest = if dest.is_instance_of::() { + let dataset: Self = dest.extract()?; WriteDestination::Dataset(dataset.ds.clone()) } else { WriteDestination::Uri(dest.extract()?) @@ -1567,9 +1587,10 @@ impl Dataset { Ok(()) } + #[pyo3(signature = (reader, batch_size = None))] fn add_columns_from_reader( &mut self, - reader: &Bound, + reader: &Bound<'_, PyAny>, batch_size: Option, ) -> PyResult<()> { let batches = ArrowArrayStreamReader::from_pyarrow_bound(reader)?; @@ -1588,9 +1609,10 @@ impl Dataset { Ok(()) } + #[pyo3(signature = (transforms, read_columns = None, batch_size = None))] fn add_columns( &mut self, - transforms: &PyAny, + transforms: &Bound<'_, PyAny>, read_columns: Option>, batch_size: Option, ) -> PyResult<()> { @@ -1637,11 +1659,11 @@ impl Dataset { #[pyfunction(name = "_write_dataset")] pub fn write_dataset( - reader: &Bound, - dest: &Bound, - options: &PyDict, + reader: &Bound<'_, PyAny>, + dest: &Bound<'_, PyAny>, + options: &Bound<'_, PyDict>, ) -> PyResult { - let params = get_write_params(options)?; + let params = get_write_params(options.as_gil_ref())?; let py = options.py(); let dest = if dest.is_instance_of::() { let dataset: Dataset = dest.extract()?; @@ -1928,7 +1950,7 @@ impl WriteFragmentProgress for PyWriteProgress { Python::with_gil(|py| -> PyResult<()> { self.py_obj - .call_method(py, "_do_begin", (json_str,), None)?; + .call_method_bound(py, "_do_begin", (json_str,), None)?; Ok(()) }) .map_err(|e| { @@ -1945,7 +1967,7 @@ impl WriteFragmentProgress for PyWriteProgress { Python::with_gil(|py| -> PyResult<()> { self.py_obj - .call_method(py, "_do_complete", (json_str,), None)?; + .call_method_bound(py, "_do_complete", (json_str,), None)?; Ok(()) }) .map_err(|e| { @@ -1960,13 +1982,13 @@ impl WriteFragmentProgress for PyWriteProgress { /// Formats a Python error just as it would in Python interpreter. fn format_python_error(e: PyErr, py: Python) -> PyResult { - let sys_mod = py.import("sys")?; + let sys_mod = py.import_bound("sys")?; // the traceback is the third element of the tuple returned by sys.exc_info() let traceback = sys_mod.call_method0("exc_info")?.get_item(2)?; - let tracback_mod = py.import("traceback")?; + let tracback_mod = py.import_bound("traceback")?; let fmt_func = tracback_mod.getattr("format_exception")?; - let e_type = e.get_type(py).to_owned(); + let e_type = e.get_type_bound(py).to_owned(); let formatted = fmt_func.call1((e_type, &e, traceback))?; let lines: Vec = formatted.extract()?; Ok(lines.join("")) diff --git a/python/src/dataset/commit.rs b/python/src/dataset/commit.rs index d34cef4112..4e6ecbc594 100644 --- a/python/src/dataset/commit.rs +++ b/python/src/dataset/commit.rs @@ -24,7 +24,7 @@ use pyo3::{exceptions::PyIOError, prelude::*}; lazy_static! { static ref PY_CONFLICT_ERROR: PyResult = { Python::with_gil(|py| { - py.import("lance") + py.import_bound("lance") .and_then(|lance| lance.getattr("commit")) .and_then(|commit| commit.getattr("CommitConflictError")) .map(|error| error.to_object(py)) @@ -34,7 +34,7 @@ lazy_static! { fn handle_error(py_err: PyErr, py: Python) -> CommitError { let conflict_err_type = match &*PY_CONFLICT_ERROR { - Ok(err) => err.as_ref(py).get_type(), + Ok(err) => err.bind(py).get_type(), Err(import_error) => { return CommitError::OtherError(Error::Internal { message: format!("Error importing from pylance {}", import_error), @@ -43,7 +43,7 @@ fn handle_error(py_err: PyErr, py: Python) -> CommitError { } }; - if py_err.is_instance(py, conflict_err_type) { + if py_err.is_instance_bound(py, &conflict_err_type) { CommitError::CommitConflict } else { CommitError::OtherError(Error::Internal { @@ -113,7 +113,7 @@ impl CommitLease for PyCommitLease { // context manager. PyIOError::new_err("commit failed").restore(py); let args = py - .import("sys") + .import_bound("sys") .unwrap() .getattr("exc_info") .unwrap() diff --git a/python/src/dataset/optimize.rs b/python/src/dataset/optimize.rs index eeac1ea8a8..9ba4f5e989 100644 --- a/python/src/dataset/optimize.rs +++ b/python/src/dataset/optimize.rs @@ -23,7 +23,7 @@ use pyo3::{exceptions::PyNotImplementedError, pyclass::CompareOp, types::PyTuple use super::*; -fn parse_compaction_options(options: &PyDict) -> PyResult { +fn parse_compaction_options(options: &Bound<'_, PyDict>) -> PyResult { let mut opts = CompactionOptions::default(); for (key, value) in options.into_iter() { @@ -68,7 +68,8 @@ fn unwrap_dataset(dataset: PyObject) -> PyResult> { } fn wrap_fragment(py: Python<'_>, fragment: &Fragment) -> PyResult { - let fragment_metadata = PyModule::import(py, "lance.fragment")?.getattr("FragmentMetadata")?; + let fragment_metadata = + PyModule::import_bound(py, "lance.fragment")?.getattr("FragmentMetadata")?; let fragment_json = serde_json::to_string(&fragment).map_err(|x| { PyValueError::new_err(format!("failed to serialize fragment metadata: {}", x)) })?; @@ -190,8 +191,8 @@ impl PyCompactionPlan { pub fn __reduce__(&self, py: Python<'_>) -> PyResult<(PyObject, PyObject)> { let state = self.json()?; - let state = PyTuple::new(py, vec![state]).extract()?; - let from_json = PyModule::import(py, "lance.optimize")? + let state = PyTuple::new_bound(py, vec![state]).extract()?; + let from_json = PyModule::import_bound(py, "lance.optimize")? .getattr("CompactionPlan")? .getattr("from_json")? .extract()?; @@ -302,8 +303,8 @@ impl PyCompactionTask { pub fn __reduce__(&self, py: Python<'_>) -> PyResult<(PyObject, PyObject)> { let state = self.json()?; - let state = PyTuple::new(py, vec![state]).extract()?; - let from_json = PyModule::import(py, "lance.optimize")? + let state = PyTuple::new_bound(py, vec![state]).extract()?; + let from_json = PyModule::import_bound(py, "lance.optimize")? .getattr("CompactionTask")? .getattr("from_json")? .extract()?; @@ -417,8 +418,8 @@ impl PyRewriteResult { pub fn __reduce__(&self, py: Python<'_>) -> PyResult<(PyObject, PyObject)> { let state = self.json()?; - let state = PyTuple::new(py, vec![state]).extract()?; - let from_json = PyModule::import(py, "lance.optimize")? + let state = PyTuple::new_bound(py, vec![state]).extract()?; + let from_json = PyModule::import_bound(py, "lance.optimize")? .getattr("RewriteResult")? .getattr("from_json")? .extract()?; @@ -472,7 +473,7 @@ impl PyCompaction { // Make sure we parse the options within a scoped GIL context, so we // aren't holding the GIL while blocking the thread on the operation. let opts = Python::with_gil(|py| { - let options = options.downcast::(py)?; + let options = options.downcast_bound::(py)?; parse_compaction_options(options) })?; let mut new_ds = dataset.ds.as_ref().clone(); @@ -509,7 +510,7 @@ impl PyCompaction { // Make sure we parse the options within a scoped GIL context, so we // aren't holding the GIL while blocking the thread on the operation. let opts = Python::with_gil(|py| { - let options = options.downcast::(py)?; + let options = options.downcast_bound::(py)?; parse_compaction_options(options) })?; let plan = RT diff --git a/python/src/debug.rs b/python/src/debug.rs index 8856c1fb28..105f73feec 100644 --- a/python/src/debug.rs +++ b/python/src/debug.rs @@ -13,20 +13,20 @@ use crate::{Dataset, FragmentMetadata, RT}; /// /// This can be used to view the field ids and types in the schema. #[pyfunction] -pub fn format_schema(dataset: &PyAny) -> PyResult { +pub fn format_schema(dataset: &Bound<'_, PyAny>) -> PyResult { let py = dataset.py(); let dataset = dataset.getattr("_ds")?.extract::>()?; - let dataset_ref = &dataset.as_ref(py).borrow().ds; + let dataset_ref = &dataset.bind(py).borrow().ds; let schema = dataset_ref.schema(); Ok(format!("{:#?}", schema)) } /// Print the full Lance manifest of the dataset. #[pyfunction] -pub fn format_manifest(dataset: &PyAny) -> PyResult { +pub fn format_manifest(dataset: &Bound<'_, PyAny>) -> PyResult { let py = dataset.py(); let dataset = dataset.getattr("_ds")?.extract::>()?; - let dataset_ref = &dataset.as_ref(py).borrow().ds; + let dataset_ref = &dataset.bind(py).borrow().ds; let manifest = dataset_ref.manifest(); Ok(format!("{:#?}", manifest)) } @@ -81,17 +81,20 @@ impl PrettyPrintableFragment { /// Debug print a LanceFragment. #[pyfunction] -pub fn format_fragment(fragment: &PyAny, dataset: &PyAny) -> PyResult { +pub fn format_fragment( + fragment: &Bound<'_, PyAny>, + dataset: &Bound<'_, PyAny>, +) -> PyResult { let py = fragment.py(); let fragment = fragment .getattr("_metadata")? .extract::>()?; let dataset = dataset.getattr("_ds")?.extract::>()?; - let dataset_ref = &dataset.as_ref(py).borrow().ds; + let dataset_ref = &dataset.bind(py).borrow().ds; let schema = dataset_ref.schema(); - let meta = fragment.as_ref(py).borrow().inner.clone(); + let meta = fragment.bind(py).borrow().inner.clone(); let pp_meta = PrettyPrintableFragment::new(&meta, schema); Ok(format!("{:#?}", pp_meta)) } @@ -104,12 +107,12 @@ pub fn format_fragment(fragment: &PyAny, dataset: &PyAny) -> PyResult { #[pyfunction] #[pyo3(signature = (dataset, /, max_transactions = 10))] pub fn list_transactions( - dataset: &PyAny, + dataset: &Bound<'_, PyAny>, max_transactions: usize, ) -> PyResult>> { let py = dataset.py(); let dataset = dataset.getattr("_ds")?.extract::>()?; - let mut dataset = dataset.as_ref(py).borrow().ds.clone(); + let mut dataset = dataset.bind(py).borrow().ds.clone(); RT.block_on(Some(py), async move { let mut transactions = vec![]; diff --git a/python/src/file.rs b/python/src/file.rs index e6e3d237d1..ade9c825e5 100644 --- a/python/src/file.rs +++ b/python/src/file.rs @@ -213,6 +213,7 @@ impl LanceFileWriter { #[pymethods] impl LanceFileWriter { #[new] + #[pyo3(signature=(path, schema=None, data_cache_bytes=None, version=None, storage_options=None, keep_original_array=None))] pub fn new( path: String, schema: Option>, @@ -390,6 +391,7 @@ impl LanceFileReader { #[pymethods] impl LanceFileReader { #[new] + #[pyo3(signature=(path, storage_options=None))] pub fn new(path: String, storage_options: Option>) -> PyResult { RT.runtime.block_on(Self::open(path, storage_options)) } diff --git a/python/src/fragment.rs b/python/src/fragment.rs index bc46ce54ad..802d33039d 100644 --- a/python/src/fragment.rs +++ b/python/src/fragment.rs @@ -125,6 +125,7 @@ impl FileFragment { FragmentMetadata::new(self.fragment.metadata().clone()) } + #[pyo3(signature=(_filter=None))] fn count_rows(&self, _filter: Option) -> PyResult { RT.runtime.block_on(async { self.fragment @@ -134,6 +135,7 @@ impl FileFragment { }) } + #[pyo3(signature=(row_indices, columns=None))] fn take( self_: PyRef<'_, Self>, row_indices: Vec, @@ -159,6 +161,7 @@ impl FileFragment { } #[allow(clippy::too_many_arguments)] + #[pyo3(signature=(columns=None, columns_with_transform=None, batch_size=None, filter=None, limit=None, offset=None, with_row_id=None, batch_readahead=None))] fn scanner( self_: PyRef<'_, Self>, columns: Option>, @@ -215,6 +218,7 @@ impl FileFragment { Ok(Scanner::new(scn)) } + #[pyo3(signature=(reader, batch_size=None))] fn add_columns_from_reader( &mut self, reader: &Bound, @@ -234,9 +238,10 @@ impl FileFragment { Ok((FragmentMetadata::new(fragment), LanceSchema(schema))) } + #[pyo3(signature=(transforms, read_columns=None, batch_size=None))] fn add_columns( &mut self, - transforms: &PyAny, + transforms: &Bound<'_, PyAny>, read_columns: Option>, batch_size: Option, ) -> PyResult<(FragmentMetadata, LanceSchema)> { diff --git a/python/src/indices.rs b/python/src/indices.rs index 9b7b315e8f..e2db9d3943 100644 --- a/python/src/indices.rs +++ b/python/src/indices.rs @@ -13,6 +13,8 @@ use lance_index::vector::{ }; use lance_linalg::distance::DistanceType; use pyo3::exceptions::PyValueError; +use pyo3::types::PyModuleMethods; +use pyo3::Bound; use pyo3::{ pyfunction, types::{PyList, PyModule}, @@ -198,6 +200,7 @@ async fn do_transform_vectors( #[pyfunction] #[allow(clippy::too_many_arguments)] +#[pyo3(signature=(dataset, column, dimension, num_subvectors, distance_type, ivf_centroids, pq_codebook, dst_uri, fragments, partitions_ds_uri=None))] pub fn transform_vectors( py: Python<'_>, dataset: &Dataset, @@ -285,7 +288,7 @@ pub fn shuffle_transformed_vectors( match result { Ok(partition_files) => { - let py_list = PyList::new(py, partition_files); + let py_list = PyList::new_bound(py, partition_files); Ok(py_list.into()) } Err(e) => Err(pyo3::exceptions::PyRuntimeError::new_err(e.to_string())), @@ -329,6 +332,7 @@ async fn do_load_shuffled_vectors( } #[pyfunction] +#[pyo3(signature=(filenames, dir_path, dataset, column, ivf_centroids, pq_codebook, pq_dimension, num_subvectors, distance_type, index_name=None))] #[allow(clippy::too_many_arguments)] pub fn load_shuffled_vectors( filenames: Vec, @@ -375,13 +379,13 @@ pub fn load_shuffled_vectors( )? } -pub fn register_indices(py: Python, m: &PyModule) -> PyResult<()> { - let indices = PyModule::new(py, "indices")?; +pub fn register_indices(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> { + let indices = PyModule::new_bound(py, "indices")?; indices.add_wrapped(wrap_pyfunction!(train_ivf_model))?; indices.add_wrapped(wrap_pyfunction!(train_pq_model))?; indices.add_wrapped(wrap_pyfunction!(transform_vectors))?; indices.add_wrapped(wrap_pyfunction!(shuffle_transformed_vectors))?; indices.add_wrapped(wrap_pyfunction!(load_shuffled_vectors))?; - m.add_submodule(indices)?; + m.add_submodule(&indices)?; Ok(()) } diff --git a/python/src/lib.rs b/python/src/lib.rs index ec39c834fd..9b82ff2a53 100644 --- a/python/src/lib.rs +++ b/python/src/lib.rs @@ -89,10 +89,10 @@ pub fn is_datagen_supported() -> bool { // A fallback module for when datagen is not enabled #[cfg(not(feature = "datagen"))] -fn register_datagen(py: Python, m: &PyModule) -> PyResult<()> { - let datagen = PyModule::new(py, "datagen")?; +fn register_datagen(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> { + let datagen = PyModule::new_bound(py, "datagen")?; datagen.add_wrapped(wrap_pyfunction!(is_datagen_supported))?; - m.add_submodule(datagen)?; + m.add_submodule(&datagen)?; Ok(()) } @@ -102,7 +102,7 @@ lazy_static! { } #[pymodule] -fn lance(py: Python, m: &PyModule) -> PyResult<()> { +fn lance(py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> { let env = Env::new() .filter_or("LANCE_LOG", "warn") .write_style("LANCE_LOG_STYLE"); @@ -297,10 +297,10 @@ fn read_tfrecord( #[pyfunction] #[pyo3(signature = (dataset,))] -fn manifest_needs_migration(dataset: &PyAny) -> PyResult { +fn manifest_needs_migration(dataset: &Bound<'_, PyAny>) -> PyResult { let py = dataset.py(); let dataset = dataset.getattr("_ds")?.extract::>()?; - let dataset_ref = &dataset.as_ref(py).borrow().ds; + let dataset_ref = &dataset.bind(py).borrow().ds; let indices = RT .block_on(Some(py), dataset_ref.load_indices())? .map_err(|err| PyIOError::new_err(format!("Could not read dataset metadata: {}", err)))?; diff --git a/python/src/schema.rs b/python/src/schema.rs index 9670b48257..5e345a81d2 100644 --- a/python/src/schema.rs +++ b/python/src/schema.rs @@ -76,8 +76,8 @@ impl LanceSchema { states.push(field.encode_to_vec().into_py(py)); } - let state = PyTuple::new(py, states).extract()?; - let from_protos = PyModule::import(py, "lance.schema")? + let state = PyTuple::new_bound(py, states).extract()?; + let from_protos = PyModule::import_bound(py, "lance.schema")? .getattr("LanceSchema")? .getattr("_from_protos")? .extract()?; diff --git a/python/src/tracing.rs b/python/src/tracing.rs index a9373c3e50..8904fee140 100644 --- a/python/src/tracing.rs +++ b/python/src/tracing.rs @@ -55,6 +55,7 @@ fn get_filter(level: Option<&str>) -> PyResult { } #[pyfunction] +#[pyo3(signature=(path=None, level=None))] pub fn trace_to_chrome(path: Option<&str>, level: Option<&str>) -> PyResult { let mut builder = ChromeLayerBuilder::new() .trace_style(TraceStyle::Async) diff --git a/rust/lance-arrow/Cargo.toml b/rust/lance-arrow/Cargo.toml index 64dea8d8db..d6b870965b 100644 --- a/rust/lance-arrow/Cargo.toml +++ b/rust/lance-arrow/Cargo.toml @@ -20,6 +20,7 @@ arrow-data = { workspace = true } arrow-cast = { workspace = true } arrow-schema = { workspace = true } arrow-select = { workspace = true } +bytes = { workspace = true } half = { workspace = true } num-traits = { workspace = true } rand.workspace = true diff --git a/rust/lance-arrow/src/deepcopy.rs b/rust/lance-arrow/src/deepcopy.rs index 7a04fc1c9f..93b58fb9c8 100644 --- a/rust/lance-arrow/src/deepcopy.rs +++ b/rust/lance-arrow/src/deepcopy.rs @@ -8,7 +8,7 @@ use arrow_buffer::{Buffer, NullBuffer}; use arrow_data::ArrayData; pub fn deep_copy_buffer(buffer: &Buffer) -> Buffer { - Buffer::from(Vec::from(buffer.as_slice())) + Buffer::from(buffer.as_slice()) } fn deep_copy_nulls(nulls: &NullBuffer) -> Buffer { diff --git a/rust/lance-arrow/src/lib.rs b/rust/lance-arrow/src/lib.rs index eafd958659..cc0a6e1c68 100644 --- a/rust/lance-arrow/src/lib.rs +++ b/rust/lance-arrow/src/lib.rs @@ -5,14 +5,15 @@ //! //! To improve Arrow-RS ergonomic -use std::collections::HashMap; use std::sync::Arc; +use std::{collections::HashMap, ptr::NonNull}; use arrow_array::{ cast::AsArray, Array, ArrayRef, ArrowNumericType, FixedSizeBinaryArray, FixedSizeListArray, GenericListArray, OffsetSizeTrait, PrimitiveArray, RecordBatch, StructArray, UInt32Array, UInt8Array, }; +use arrow_buffer::MutableBuffer; use arrow_data::ArrayDataBuilder; use arrow_schema::{ArrowError, DataType, Field, FieldRef, Fields, IntervalUnit, Schema}; use arrow_select::{interleave::interleave, take::take}; @@ -654,6 +655,68 @@ pub fn interleave_batches( RecordBatch::try_new(schema, columns) } +pub trait BufferExt { + /// Create an `arrow_buffer::Buffer`` from a `bytes::Bytes` object + /// + /// The alignment must be specified (as `bytes_per_value`) since we want to make + /// sure we can safely reinterpret the buffer. + /// + /// If the buffer is properly aligned this will be zero-copy. If not, a copy + /// will be made and an owned buffer returned. + /// + /// If `bytes_per_value` is not a power of two, then we assume the buffer is + /// never going to be reinterpreted into another type and we can safely + /// ignore the alignment. + /// + /// Yes, the method name is odd. It's because there is already a `from_bytes` + /// which converts from `arrow_buffer::bytes::Bytes` (not `bytes::Bytes`) + fn from_bytes_bytes(bytes: bytes::Bytes, bytes_per_value: u64) -> Self; + + /// Allocates a new properly aligned arrow buffer and copies `bytes` into it + /// + /// `size_bytes` can be larger than `bytes` and, if so, the trailing bytes will + /// be zeroed out. + /// + /// # Panics + /// + /// Panics if `size_bytes` is less than `bytes.len()` + fn copy_bytes_bytes(bytes: bytes::Bytes, size_bytes: usize) -> Self; +} + +fn is_pwr_two(n: u64) -> bool { + n & (n - 1) == 0 +} + +impl BufferExt for arrow_buffer::Buffer { + fn from_bytes_bytes(bytes: bytes::Bytes, bytes_per_value: u64) -> Self { + if is_pwr_two(bytes_per_value) && bytes.as_ptr().align_offset(bytes_per_value as usize) != 0 + { + // The original buffer is not aligned, cannot zero-copy + let size_bytes = bytes.len(); + Self::copy_bytes_bytes(bytes, size_bytes) + } else { + // The original buffer is aligned, can zero-copy + // SAFETY: the alignment is correct we can make this conversion + unsafe { + Self::from_custom_allocation( + NonNull::new(bytes.as_ptr() as _).expect("should be a valid pointer"), + bytes.len(), + Arc::new(bytes), + ) + } + } + } + + fn copy_bytes_bytes(bytes: bytes::Bytes, size_bytes: usize) -> Self { + assert!(size_bytes >= bytes.len()); + let mut buf = MutableBuffer::with_capacity(size_bytes); + let to_fill = size_bytes - bytes.len(); + buf.extend(bytes); + buf.extend(std::iter::repeat(0).take(to_fill)); + Self::from(buf) + } +} + #[cfg(test)] mod tests { use super::*; diff --git a/rust/lance-core/src/error.rs b/rust/lance-core/src/error.rs index c186d77c37..be694b7b4d 100644 --- a/rust/lance-core/src/error.rs +++ b/rust/lance-core/src/error.rs @@ -226,6 +226,16 @@ impl From for Error { } } +impl From for Error { + #[track_caller] + fn from(e: prost::UnknownEnumValue) -> Self { + Self::IO { + source: box_error(e), + location: std::panic::Location::caller().to_snafu_location(), + } + } +} + impl From for Error { #[track_caller] fn from(e: tokio::task::JoinError) -> Self { diff --git a/rust/lance-datafusion/Cargo.toml b/rust/lance-datafusion/Cargo.toml index 41af9afb28..03e392bcd1 100644 --- a/rust/lance-datafusion/Cargo.toml +++ b/rust/lance-datafusion/Cargo.toml @@ -10,8 +10,8 @@ categories.workspace = true description = "Internal utilities used by other lance modules to simplify working with datafusion" [dependencies] -arrow.workspace = true -arrow-array.workspace = true +arrow = { workspace = true, features = ["ffi"] } +arrow-array = { workspace = true, features = ["ffi"] } arrow-buffer.workspace = true arrow-schema.workspace = true arrow-select.workspace = true @@ -21,7 +21,7 @@ datafusion.workspace = true datafusion-common.workspace = true datafusion-functions.workspace = true datafusion-physical-expr.workspace = true -datafusion-substrait = { version = "41.0", optional = true } +datafusion-substrait = { version = "42.0", optional = true } futures.workspace = true lance-arrow.workspace = true lance-core = { workspace = true, features = ["datafusion"] } @@ -32,7 +32,7 @@ snafu.workspace = true tokio.workspace = true [dev-dependencies] -substrait-expr = { version = "0.2.1" } +substrait-expr = { version = "0.2.2" } lance-datagen.workspace = true [features] diff --git a/rust/lance-datafusion/src/substrait.rs b/rust/lance-datafusion/src/substrait.rs index 57cffb1261..6f835a85f5 100644 --- a/rust/lance-datafusion/src/substrait.rs +++ b/rust/lance-datafusion/src/substrait.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright The Lance Authors -use arrow_schema::Schema; +use arrow_schema::Schema as ArrowSchema; use datafusion::{ datasource::empty::EmptyTable, execution::context::SessionContext, logical_expr::Expr, }; @@ -20,7 +20,7 @@ use datafusion_substrait::substrait::proto::{ r#type::{Kind, Struct}, read_rel::{NamedTable, ReadType}, rel, Expression, ExtendedExpression, NamedStruct, Plan, PlanRel, ProjectRel, ReadRel, Rel, - RelRoot, + RelRoot, Type, }; use lance_core::{Error, Result}; use prost::Message; @@ -29,7 +29,7 @@ use std::collections::HashMap; use std::sync::Arc; /// Convert a DF Expr into a Substrait ExtendedExpressions message -pub fn encode_substrait(expr: Expr, schema: Arc) -> Result> { +pub fn encode_substrait(expr: Expr, schema: Arc) -> Result> { use datafusion::logical_expr::{builder::LogicalTableSource, logical_plan, LogicalPlan}; use datafusion_substrait::substrait::proto::{plan_rel, ExpressionReference, NamedStruct}; @@ -81,10 +81,17 @@ pub fn encode_substrait(expr: Expr, schema: Arc) -> Result> { } } +fn count_fields(dtype: &Type) -> usize { + match dtype.kind.as_ref().unwrap() { + Kind::Struct(struct_type) => struct_type.types.iter().map(count_fields).sum::() + 1, + _ => 1, + } +} + fn remove_extension_types( substrait_schema: &NamedStruct, - arrow_schema: Arc, -) -> Result<(NamedStruct, Arc, HashMap)> { + arrow_schema: Arc, +) -> Result<(NamedStruct, Arc, HashMap)> { let fields = substrait_schema.r#struct.as_ref().unwrap(); if fields.types.len() != arrow_schema.fields.len() { return Err(Error::InvalidInput { @@ -96,25 +103,35 @@ fn remove_extension_types( let mut kept_arrow_fields = Vec::with_capacity(arrow_schema.fields.len()); let mut index_mapping = HashMap::with_capacity(arrow_schema.fields.len()); let mut field_counter = 0; - for (field_index, (substrait_field, arrow_field)) in fields - .types - .iter() - .zip(arrow_schema.fields.iter()) - .enumerate() - { - if !matches!( - substrait_field.kind.as_ref().unwrap(), - Kind::UserDefined(_) | Kind::UserDefinedTypeReference(_) - ) { + let mut field_index = 0; + // TODO: this logic doesn't catch user defined fields inside of struct fields + for (substrait_field, arrow_field) in fields.types.iter().zip(arrow_schema.fields.iter()) { + let num_fields = count_fields(substrait_field); + + if !substrait_schema.names[field_index].starts_with("__unlikely_name_placeholder") + && !matches!( + substrait_field.kind.as_ref().unwrap(), + Kind::UserDefined(_) | Kind::UserDefinedTypeReference(_) + ) + { kept_substrait_fields.push(substrait_field.clone()); kept_arrow_fields.push(arrow_field.clone()); - index_mapping.insert(field_index, field_counter); - field_counter += 1; + for i in 0..num_fields { + index_mapping.insert(field_index + i, field_counter + i); + } + field_counter += num_fields; + } + field_index += num_fields; + } + let mut names = vec![String::new(); index_mapping.len()]; + for (old_idx, old_name) in substrait_schema.names.iter().enumerate() { + if let Some(new_idx) = index_mapping.get(&old_idx) { + names[*new_idx] = old_name.clone(); } } - let new_arrow_schema = Arc::new(Schema::new(kept_arrow_fields)); + let new_arrow_schema = Arc::new(ArrowSchema::new(kept_arrow_fields)); let new_substrait_schema = NamedStruct { - names: vec![], + names, r#struct: Some(Struct { nullability: fields.nullability, type_variation_reference: fields.type_variation_reference, @@ -241,7 +258,7 @@ fn remap_expr_references(expr: &mut Expression, mapping: &HashMap) /// Convert a Substrait ExtendedExpressions message into a DF Expr /// /// The ExtendedExpressions message must contain a single scalar expression -pub async fn parse_substrait(expr: &[u8], input_schema: Arc) -> Result { +pub async fn parse_substrait(expr: &[u8], input_schema: Arc) -> Result { let envelope = ExtendedExpression::decode(expr)?; if envelope.referred_expr.is_empty() { return Err(Error::InvalidInput { diff --git a/rust/lance-encoding-datafusion/src/zone.rs b/rust/lance-encoding-datafusion/src/zone.rs index 03b8e5278a..7f6a5e2dc2 100644 --- a/rust/lance-encoding-datafusion/src/zone.rs +++ b/rust/lance-encoding-datafusion/src/zone.rs @@ -146,7 +146,7 @@ pub(crate) fn extract_zone_info( let mut zone_index = zone_index.clone(); let inner = zone_index.inner.take().unwrap(); let rows_per_zone = zone_index.rows_per_zone; - let zone_map_buffer = zone_index.zone_map_buffer.as_ref().unwrap().clone(); + let zone_map_buffer = *zone_index.zone_map_buffer.as_ref().unwrap(); assert_eq!( zone_map_buffer.buffer_type, i32::from(pb::buffer::BufferType::Column) diff --git a/rust/lance-io/src/encodings/binary.rs b/rust/lance-io/src/encodings/binary.rs index 8eccf95532..edb2b03471 100644 --- a/rust/lance-io/src/encodings/binary.rs +++ b/rust/lance-io/src/encodings/binary.rs @@ -26,6 +26,7 @@ use arrow_schema::DataType; use async_trait::async_trait; use bytes::Bytes; use futures::{StreamExt, TryStreamExt}; +use lance_arrow::BufferExt; use snafu::{location, Location}; use tokio::io::AsyncWriteExt; @@ -224,7 +225,7 @@ impl<'a, T: ByteArrayType> BinaryDecoder<'a, T> { .null_bit_buffer(null_buf); } - let buf = bytes.into(); + let buf = Buffer::from_bytes_bytes(bytes, /*bytes_per_value=*/ 1); let array_data = data_builder .add_buffer(offset_data.buffers()[0].clone()) .add_buffer(buf) diff --git a/rust/lance-io/src/encodings/plain.rs b/rust/lance-io/src/encodings/plain.rs index 9951e21374..844a4c516c 100644 --- a/rust/lance-io/src/encodings/plain.rs +++ b/rust/lance-io/src/encodings/plain.rs @@ -7,7 +7,6 @@ //! it stores the array directly in the file. It offers O(1) read access. use std::ops::{Range, RangeFrom, RangeFull, RangeTo}; -use std::ptr::NonNull; use std::slice::from_raw_parts; use std::sync::Arc; @@ -204,21 +203,14 @@ pub fn bytes_to_array( let min_buffer_size = len_plus_offset.saturating_mul(*byte_width); // alignment or size isn't right -- just make a copy - if (bytes.len() < min_buffer_size) || (bytes.as_ptr().align_offset(*alignment) != 0) { - bytes.into() + if bytes.len() < min_buffer_size { + Buffer::copy_bytes_bytes(bytes, min_buffer_size) } else { - // SAFETY: the alignment is correct we can make this conversion - unsafe { - Buffer::from_custom_allocation( - NonNull::new(bytes.as_ptr() as _).expect("should be a valid pointer"), - bytes.len(), - Arc::new(bytes), - ) - } + Buffer::from_bytes_bytes(bytes, *alignment as u64) } } else { // cases we don't handle, just copy - bytes.into() + Buffer::from_slice_ref(bytes) }; let array_data = ArrayDataBuilder::new(data_type.clone()) diff --git a/rust/lance-linalg/src/simd.rs b/rust/lance-linalg/src/simd.rs index ff95164c75..da4429a251 100644 --- a/rust/lance-linalg/src/simd.rs +++ b/rust/lance-linalg/src/simd.rs @@ -41,7 +41,6 @@ pub trait SIMD: /// Create a new instance with all lanes set to zero. fn zeros() -> Self; - /// Gather elements from the slice, using i32 indices. /// Load aligned data from aligned memory. /// /// # Safety diff --git a/rust/lance/Cargo.toml b/rust/lance/Cargo.toml index 05b0a0a381..d368654731 100644 --- a/rust/lance/Cargo.toml +++ b/rust/lance/Cargo.toml @@ -60,6 +60,7 @@ arrow.workspace = true datafusion.workspace = true datafusion-functions.workspace = true datafusion-physical-expr.workspace = true +datafusion-expr.workspace = true lapack = { version = "0.19.0", optional = true } snafu = { workspace = true } log = { workspace = true } @@ -69,6 +70,7 @@ moka.workspace = true permutation = { version = "0.4.0" } tantivy.workspace = true tfrecord = { version = "0.15.0", optional = true, features = ["async"] } +prost_old = { version = "0.12.6", package = "prost", optional = true } aws-sdk-dynamodb = { workspace = true, optional = true } tempfile.workspace = true tracing.workspace = true @@ -105,7 +107,7 @@ random_word = { version = "0.4.3", features = ["en"] } fp16kernels = ["lance-linalg/fp16kernels"] # Prevent dynamic linking of lzma, which comes from datafusion cli = ["clap", "lzma-sys/static"] -tensorflow = ["tfrecord"] +tensorflow = ["tfrecord", "prost_old"] dynamodb = ["lance-table/dynamodb", "aws-sdk-dynamodb"] dynamodb_tests = ["dynamodb"] substrait = ["lance-datafusion/substrait"] diff --git a/rust/lance/src/datafusion/logical_plan.rs b/rust/lance/src/datafusion/logical_plan.rs index b45bdedbe2..6afb94e332 100644 --- a/rust/lance/src/datafusion/logical_plan.rs +++ b/rust/lance/src/datafusion/logical_plan.rs @@ -1,7 +1,7 @@ // SPDX-License-Identifier: Apache-2.0 // SPDX-FileCopyrightText: Copyright The Lance Authors -use std::{any::Any, sync::Arc}; +use std::{any::Any, borrow::Cow, sync::Arc}; use arrow_schema::Schema as ArrowSchema; use async_trait::async_trait; @@ -34,7 +34,7 @@ impl TableProvider for Dataset { None } - fn get_logical_plan(&self) -> Option<&LogicalPlan> { + fn get_logical_plan(&self) -> Option> { None } diff --git a/rust/lance/src/dataset/scanner.rs b/rust/lance/src/dataset/scanner.rs index 6e0cf9c47a..9c7de8ba6f 100644 --- a/rust/lance/src/dataset/scanner.rs +++ b/rust/lance/src/dataset/scanner.rs @@ -13,9 +13,8 @@ use arrow_select::concat::concat_batches; use async_recursion::async_recursion; use datafusion::functions_aggregate; use datafusion::functions_aggregate::count::count_udaf; -use datafusion::logical_expr::{lit, Expr}; +use datafusion::logical_expr::Expr; use datafusion::physical_expr::PhysicalSortExpr; -use datafusion::physical_expr_common::aggregate::AggregateExprBuilder; use datafusion::physical_plan::coalesce_batches::CoalesceBatchesExec; use datafusion::physical_plan::empty::EmptyExec; use datafusion::physical_plan::expressions; @@ -28,11 +27,11 @@ use datafusion::physical_plan::{ filter::FilterExec, limit::GlobalLimitExec, repartition::RepartitionExec, - udaf::create_aggregate_expr, union::UnionExec, ExecutionPlan, SendableRecordBatchStream, }; use datafusion::scalar::ScalarValue; +use datafusion_physical_expr::aggregate::AggregateExprBuilder; use datafusion_physical_expr::{Partitioning, PhysicalExpr}; use futures::stream::{Stream, StreamExt}; use futures::TryStreamExt; @@ -960,17 +959,16 @@ impl Scanner { let plan = self.create_plan().await?; // Datafusion interprets COUNT(*) as COUNT(1) let one = Arc::new(Literal::new(ScalarValue::UInt8(Some(1)))); - let count_expr = create_aggregate_expr( - &count_udaf(), - &[one], - &[lit(1)], - &[], - &[], - &plan.schema(), - None, - false, - false, - )?; + + let input_phy_exprs: &[Arc] = &[one]; + let schema = plan.schema(); + + let mut builder = AggregateExprBuilder::new(count_udaf(), input_phy_exprs.to_vec()); + builder = builder.schema(schema); + builder = builder.alias("count_rows".to_string()); + + let count_expr = builder.build()?; + let plan_schema = plan.schema(); let count_plan = Arc::new(AggregateExec::try_new( AggregateMode::Single, diff --git a/rust/lance/src/io/exec/rowids.rs b/rust/lance/src/io/exec/rowids.rs index 90d36532c7..3c6af04083 100644 --- a/rust/lance/src/io/exec/rowids.rs +++ b/rust/lance/src/io/exec/rowids.rs @@ -240,8 +240,8 @@ impl ExecutionPlan for AddRowAddrExec { DataFusionError::Internal("RowAddrExec: rowid column stats not found".into()) })?; let row_addr_col_stats = ColumnStatistics { - null_count: row_id_col_stats.null_count.clone(), - distinct_count: row_id_col_stats.distinct_count.clone(), + null_count: row_id_col_stats.null_count, + distinct_count: row_id_col_stats.distinct_count, max_value: Precision::Absent, min_value: Precision::Absent, }; @@ -251,7 +251,6 @@ impl ExecutionPlan for AddRowAddrExec { // is a minimum size of 64 bytes. let mut added_byte_size = stats .num_rows - .clone() .map(|n| (n * 8).max(64)) .add(&Precision::Exact(base_size)); if row_id_col_stats @@ -261,8 +260,7 @@ impl ExecutionPlan for AddRowAddrExec { .unwrap_or_default() { // Account for null buffer. - added_byte_size = - added_byte_size.add(&stats.num_rows.clone().map(|n| n.div_ceil(8).max(64))); + added_byte_size = added_byte_size.add(&stats.num_rows.map(|n| n.div_ceil(8).max(64))); } stats.total_byte_size = stats.total_byte_size.add(&added_byte_size); stats diff --git a/rust/lance/src/utils/tfrecord.rs b/rust/lance/src/utils/tfrecord.rs index a076d72813..92b99a2f23 100644 --- a/rust/lance/src/utils/tfrecord.rs +++ b/rust/lance/src/utils/tfrecord.rs @@ -17,7 +17,7 @@ use datafusion::physical_plan::SendableRecordBatchStream; use futures::{StreamExt, TryStreamExt}; use half::{bf16, f16}; use lance_arrow::bfloat16::{ARROW_EXT_META_KEY, ARROW_EXT_NAME_KEY, BFLOAT16_EXT_NAME}; -use prost::Message; +use prost_old::Message; use std::collections::HashMap; use std::sync::Arc; @@ -32,6 +32,20 @@ use tfrecord::protobuf::feature::Kind; use tfrecord::protobuf::{DataType as TensorDataType, TensorProto}; use tfrecord::record_reader::RecordStream; use tfrecord::{Example, Feature}; + +trait OldProstResultExt { + fn map_prost_err(self, location: Location) -> Result; +} + +impl OldProstResultExt for std::result::Result { + fn map_prost_err(self, location: Location) -> Result { + self.map_err(|err| Error::IO { + source: Box::new(err), + location, + }) + } +} + /// Infer the Arrow schema from a TFRecord file. /// /// The featured named by `tensor_features` will be assumed to be binary fields @@ -224,7 +238,7 @@ impl FeatureMeta { } fn extract_tensor(data: &[u8]) -> Result { - let tensor_proto = TensorProto::decode(data)?; + let tensor_proto = TensorProto::decode(data).map_prost_err(location!())?; Ok(FeatureType::Tensor { shape: tensor_proto .tensor_shape @@ -617,7 +631,7 @@ fn convert_fixedshape_tensor( DataType::Float16 => { let mut values = Float16Builder::with_capacity(features.len()); for tensors in tensor_iter { - if let Some(tensors) = tensors? { + if let Some(tensors) = tensors.map_prost_err(location!())? { for tensor in tensors { validate_tensor(&tensor, type_info)?; if tensor.half_val.is_empty() { @@ -645,7 +659,7 @@ fn convert_fixedshape_tensor( let mut values = FixedSizeBinaryBuilder::with_capacity(features.len(), 2); for tensors in tensor_iter { - if let Some(tensors) = tensors? { + if let Some(tensors) = tensors.map_prost_err(location!())? { for tensor in tensors { validate_tensor(&tensor, type_info)?; if tensor.half_val.is_empty() { @@ -673,7 +687,7 @@ fn convert_fixedshape_tensor( DataType::Float32 => { let mut values = Float32Builder::with_capacity(features.len()); for tensors in tensor_iter { - if let Some(tensors) = tensors? { + if let Some(tensors) = tensors.map_prost_err(location!())? { for tensor in tensors { validate_tensor(&tensor, type_info)?; if tensor.float_val.is_empty() { @@ -695,7 +709,7 @@ fn convert_fixedshape_tensor( DataType::Float64 => { let mut values = Float64Builder::with_capacity(features.len()); for tensors in tensor_iter { - if let Some(tensors) = tensors? { + if let Some(tensors) = tensors.map_prost_err(location!())? { for tensor in tensors { validate_tensor(&tensor, type_info)?; if tensor.float_val.is_empty() {