From 696d3188177e86d65dddf7fcae68c59f06fb0a7b Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Tue, 4 Aug 2026 18:31:15 -0400 Subject: [PATCH 01/16] bump to datafusion apache/main latest commit, use temp iceberg-rust --- native/Cargo.lock | 493 +++++++----------- native/Cargo.toml | 16 +- native/core/Cargo.toml | 2 +- native/core/src/execution/columnar_to_row.rs | 13 +- native/core/src/execution/merge_as_partial.rs | 18 +- .../src/execution/operators/iceberg_scan.rs | 2 + native/core/src/execution/planner.rs | 10 +- .../eager_page_index_reader_factory.rs | 6 +- native/shuffle/src/partitioners/traits.rs | 2 +- native/shuffle/src/writers/local/spill.rs | 34 +- .../shuffle/src/writers/partition_writer.rs | 2 +- native/spark-expr/src/agg_funcs/avg.rs | 9 +- .../spark-expr/src/agg_funcs/avg_decimal.rs | 9 +- .../spark-expr/src/agg_funcs/correlation.rs | 17 +- native/spark-expr/src/agg_funcs/covariance.rs | 17 +- .../spark-expr/src/agg_funcs/hll_plus_plus.rs | 15 +- native/spark-expr/src/agg_funcs/percentile.rs | 11 +- native/spark-expr/src/agg_funcs/stddev.rs | 13 +- .../spark-expr/src/agg_funcs/sum_decimal.rs | 16 +- native/spark-expr/src/agg_funcs/sum_int.rs | 44 +- native/spark-expr/src/agg_funcs/variance.rs | 15 +- 21 files changed, 354 insertions(+), 410 deletions(-) diff --git a/native/Cargo.lock b/native/Cargo.lock index eadd9d995c5..1fe9d297c72 100644 --- a/native/Cargo.lock +++ b/native/Cargo.lock @@ -68,9 +68,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.4" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddd31a130427c27518df266943a5308ed92d4b226cc639f5a8f1002816174301" +checksum = "c982642fa9e8606056828ee9a8505737230110bb1099153c79efe865c59d12ba" dependencies = [ "memchr", ] @@ -198,7 +198,7 @@ dependencies = [ "snap", "strum", "strum_macros", - "thiserror 2.0.20", + "thiserror 2.0.19", "uuid", "zstd", ] @@ -232,9 +232,9 @@ checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "arrow" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfdd0833e32a9874d2b55089333ad310c0be208aafa277385ce2461dec90be3" +checksum = "b952ca5a8046ad741b60f142d6eca4aeebcad615694202bc64c5341f23e32c5b" dependencies = [ "arrow-arith", "arrow-array", @@ -253,9 +253,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a41203398f0eaa6f7ec8e62c0da742a21abf282c148fc157f6c35c90e29981a" +checksum = "64a13b8d3008c4e9063c597a08f46446fe3fd5789277127672d6c0bdbb43b1ff" dependencies = [ "arrow-array", "arrow-buffer", @@ -267,9 +267,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae33dad492b7df00a217563a7b0ef2874df68a0deea1b1a3acf628152f7f7a69" +checksum = "9486151b2f0785bafc6fa04fc5c99fcb4495455662e58787ea32eaaed33c4192" dependencies = [ "ahash", "arrow-buffer", @@ -286,9 +286,9 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9552f96391c005e6ab449fa941420935e7e062489b12b8b1b08879b2163f5b5" +checksum = "c4776577a87794bfdf0b4e90e2ea12454fa7738ea2823c4be5b9d1851da7b434" dependencies = [ "bytes", "half", @@ -298,9 +298,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8a327c9649f30d8406995f27642b68df354713cca3baaaf100f076f18d5f34" +checksum = "a9ad451ce4f98710828a455b96991b8f031deb2e67f5fcad6773f017e4a69c3a" dependencies = [ "arrow-array", "arrow-buffer", @@ -320,9 +320,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af0dd6d90d1955e9f9a014c1e563ee8aeffc21909085d25623e1da44d96eca26" +checksum = "8aa7bf96d6141a7bcca2eed57c7c9767d2a2175281857b8a7b68308992864784" dependencies = [ "arrow-array", "arrow-cast", @@ -335,9 +335,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b24852db04738907e06c04ea61e42fe7fda962a34513022dc0d0e754fb7976b" +checksum = "b38fe43e2e8704360f1464e6e8cc4fc381ef02cc4fb0192afa8df1aaa0115c66" dependencies = [ "arrow-buffer", "arrow-schema", @@ -348,9 +348,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a908a11fcfb3fb2f6730f4ac15e367bc644e419155e96238f68cf3adde572b" +checksum = "29dac499fcbc6ba74ee0324057821d381929a48526a3966bd9dffb44aa06d98c" dependencies = [ "arrow-array", "arrow-buffer", @@ -364,9 +364,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a96aed3931c076adee39ec2a40d8219fc7f09e79bcdaca1df16272993e1e14" +checksum = "0fe05e916ddc50f4c7a363cd69c0ef5894fcee063517e9a0b8582f0c56746af6" dependencies = [ "arrow-array", "arrow-buffer", @@ -389,9 +389,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63a083ec750f5c043f02946b4baf05fcdbb55f4560a3277055caca5cc99f3eb0" +checksum = "0e13dbdc2a9c053c10c7baa6e30faee04a180aa7ce88e471835850ce37abd20b" dependencies = [ "arrow-array", "arrow-buffer", @@ -402,9 +402,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514ba0ef0d4c5896202dae736251ce415abb43a950bed570fb7981b8716c0e4c" +checksum = "4d5a1f8c733d15260b305683472ee8ad89c62cbd706703ca873b90d051b41592" dependencies = [ "arrow-array", "arrow-buffer", @@ -415,9 +415,9 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ca356ad6425cecb6eb7b28e4f659f1ee7880fbb1a16127de7dd62901efee9e" +checksum = "d9e4969dc350d571766247143ab36a5187d095d3d3690970408bc630d47c69e5" dependencies = [ "bitflags 2.13.1", "serde_core", @@ -426,9 +426,9 @@ dependencies = [ [[package]] name = "arrow-select" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58da39eb3d8350ad4a549e5c2bc49284dac554016c69829310350f1731b0aad" +checksum = "402770dba90865359d98d1ef92ef16e23d75c0cca9c2c880c8a05468b7743bf9" dependencies = [ "ahash", "arrow-array", @@ -440,9 +440,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6789b388467525e3271326b6b4915666ecfdf5142aef09779445c954b67543c" +checksum = "a2b0afbb8b9016700938291123df30838b89decc3213dba00852021988b170d3" dependencies = [ "arrow-array", "arrow-buffer", @@ -598,9 +598,9 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.92" +version = "0.1.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" +checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" dependencies = [ "proc-macro2", "quote", @@ -1401,9 +1401,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.6" +version = "4.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" +checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf" dependencies = [ "clap_builder", "clap_derive", @@ -1411,9 +1411,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.6" +version = "4.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" +checksum = "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078" dependencies = [ "anstream", "anstyle", @@ -1470,14 +1470,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "comet-contrib-delta" -version = "0.18.0" -dependencies = [ - "datafusion", - "datafusion-comet-proto", -] - [[package]] name = "comfy-table" version = "7.2.2" @@ -1847,8 +1839,7 @@ dependencies = [ [[package]] name = "datafusion" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754ef4e8f073922a26f5b23133b9db4829342362b09be0bc94309cf261c2f098" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-schema", @@ -1881,7 +1872,7 @@ dependencies = [ "datafusion-sql", "futures", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", "parking_lot", @@ -1896,8 +1887,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06afd1e38dd27bbb1258685a1fc6524df6aff4e07b25b393a47de59635178d99" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "async-trait", @@ -1911,7 +1901,7 @@ dependencies = [ "datafusion-physical-plan", "datafusion-session", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", "parking_lot", @@ -1921,8 +1911,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0668fb32c12065ec242be0e5b4bc62bd7a06a0be3ecd83791ef877e4be67e02" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "async-trait", @@ -1936,9 +1925,10 @@ dependencies = [ "datafusion-physical-expr-common", "datafusion-physical-plan", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", + "percent-encoding", ] [[package]] @@ -1951,7 +1941,6 @@ dependencies = [ "aws-config", "aws-credential-types", "bytes", - "comet-contrib-delta", "criterion", "datafusion", "datafusion-comet-common", @@ -1979,7 +1968,7 @@ dependencies = [ "object_store", "object_store_opendal", "once_cell", - "opendal 0.58.1", + "opendal", "parking_lot", "parquet", "paste", @@ -2006,7 +1995,7 @@ dependencies = [ "datafusion", "serde", "serde_json", - "thiserror 2.0.20", + "thiserror 2.0.19", ] [[package]] @@ -2024,7 +2013,7 @@ dependencies = [ "paste", "prost", "regex", - "thiserror 2.0.20", + "thiserror 2.0.19", ] [[package]] @@ -2074,7 +2063,6 @@ dependencies = [ "datafusion", "datafusion-comet-common", "datafusion-comet-jni-bridge", - "datafusion-spark", "futures", "jni 0.22.4", "num", @@ -2091,8 +2079,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca43b263cdff57042cfa8fb817fb3469f4878933380dccff25f5e793580abbf9" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-ipc", @@ -2103,9 +2090,10 @@ dependencies = [ "hashbrown 0.17.1", "hex", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "libc", "log", + "num-traits", "object_store", "parquet", "sqlparser", @@ -2117,8 +2105,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f0ba2b864792bdca4d76c59a1de0ab6e1b61946596b9936888dbd6360035f2" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "futures", "log", @@ -2128,8 +2115,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b840a8bce0bcbf5afad02946d438591e7c373f7afccaf3d874c04485772514dd" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "async-compression", @@ -2149,7 +2135,7 @@ dependencies = [ "flate2", "futures", "glob", - "itertools 0.14.0", + "itertools 0.15.0", "liblzma", "log", "object_store", @@ -2164,8 +2150,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24cc0b9cf6e367f27f27406eff13abf48a11b72446aaa40b3105c0ded5c17d9" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-ipc", @@ -2180,7 +2165,7 @@ dependencies = [ "datafusion-physical-plan", "datafusion-session", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "object_store", "tokio", ] @@ -2188,8 +2173,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1abe56b2a7a2d1d6de5117dd1a203181e267f28529faa5da546947621b697d7" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "async-trait", @@ -2211,8 +2195,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3e467f0611ad7bdd5aad17c63c9bb6182d04e5282e5496d897ea2b49c024ba" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "async-trait", @@ -2234,10 +2217,10 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc35b92cd560082155e80d9c826929c852d3c51543f4affd3a51c464a0aab3a" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", + "arrow-schema", "async-trait", "bytes", "datafusion-common", @@ -2254,7 +2237,7 @@ dependencies = [ "datafusion-pruning", "datafusion-session", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", "parking_lot", @@ -2265,18 +2248,17 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69bb69d8769e34f76839c960dbde24c1ac0c885a79b6c3c2287bdc56ec67891" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" [[package]] name = "datafusion-execution" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8eac0a09bc8d263f52025cad9e001da4d8138d633fa288edda4d06b1772eae6" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-buffer", "async-trait", + "bytes", "dashmap", "datafusion-common", "datafusion-expr", @@ -2286,16 +2268,18 @@ dependencies = [ "object_store", "parking_lot", "parquet", + "pin-project-lite", "rand 0.9.5", "tempfile", + "tokio", + "tokio-util", "url", ] [[package]] name = "datafusion-expr" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb14d374767ee0fc62dc79a5ba8bcf8a63c14e993c7d992d0e63adfa23d77d3" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-schema", @@ -2308,7 +2292,7 @@ dependencies = [ "datafusion-functions-window-common", "datafusion-physical-expr-common", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "serde_json", "sqlparser", ] @@ -2316,24 +2300,22 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b19a8c95522bee8cbb313d74263b85e355d2b52f42e67ef5694bf5de9e9356" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", ] [[package]] name = "datafusion-functions" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f64c983bbbdcb729d921a2b2ac3375598719b5cc0c30345ad664936f3176fc7" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-buffer", - "base64 0.22.1", + "base64 0.23.1", "blake2", "blake3", "chrono", @@ -2346,7 +2328,7 @@ dependencies = [ "datafusion-macros", "datafusion-physical-expr-common", "hex", - "itertools 0.14.0", + "itertools 0.15.0", "log", "md-5 0.11.0", "memchr", @@ -2360,8 +2342,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89bc17041e424a47ed062f43df24d84aab8b57c4c3221e5c1a5eef46d6c5718b" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", @@ -2372,8 +2353,8 @@ dependencies = [ "datafusion-macros", "datafusion-physical-expr", "datafusion-physical-expr-common", - "foldhash 0.2.0", "half", + "hashbrown 0.17.1", "log", "num-traits", ] @@ -2381,8 +2362,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dd2a9e865c6108059f5b37b77934f84b50bfb108f837bd0e5c9536e03f0545" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", @@ -2393,8 +2373,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f0bdfeef16d96417b9632ef855645376b242e9006a126dfd0bedfc54a93f5f" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-ord", @@ -2409,7 +2388,7 @@ dependencies = [ "datafusion-macros", "datafusion-physical-expr-common", "hashbrown 0.17.1", - "itertools 0.14.0", + "itertools 0.15.0", "itoa", "log", "memchr", @@ -2418,8 +2397,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e4941673c917819616877e9993da4503e4f4739812be0bc32c5356184c6383" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "async-trait", @@ -2434,8 +2412,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dd2e16c12b84b6f6b41b19f55b366dd1c46876bb35b86896c6349067379e8d" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", @@ -2451,8 +2428,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cdc5e4b6f8b6ef823cc1c761f85088ad4c884fe8df64df3cbcc6b2b84698441" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2461,19 +2437,17 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3614234dd93578c92428cb4f408e020874f0d2b7e6c90c928d9d28b5df2ceb" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "datafusion-doc", "quote", - "syn 2.0.119", + "syn 3.0.3", ] [[package]] name = "datafusion-optimizer" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0635620b050b81bb92764e99250868f654e2cd5ad1bece413283b3f73c83179" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "chrono", @@ -2482,7 +2456,7 @@ dependencies = [ "datafusion-expr-common", "datafusion-physical-expr", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "log", "regex", "regex-syntax", @@ -2491,8 +2465,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cabf7a86eb70b816729e33c81bf7767c936ee1226f607a114f5dac2decac8d0" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", @@ -2503,7 +2476,7 @@ dependencies = [ "half", "hashbrown 0.17.1", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "parking_lot", "petgraph", "tokio", @@ -2512,8 +2485,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de222e04f7e6744501555a54ab0abe26bfdfebee380af79a9bdc175704246859" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", @@ -2521,14 +2493,13 @@ dependencies = [ "datafusion-functions", "datafusion-physical-expr", "datafusion-physical-expr-common", - "itertools 0.14.0", + "itertools 0.15.0", ] [[package]] name = "datafusion-physical-expr-common" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d0d0057fc5a502d45c870cb6d47c66eb7bdd5edb1bd71ad6f3f724975ac2a8" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "chrono", @@ -2536,7 +2507,7 @@ dependencies = [ "datafusion-expr-common", "hashbrown 0.17.1", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "parking_lot", "pin-project", ] @@ -2544,8 +2515,7 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86046eed10950c5f9aaed9acfd148e9bd2e1dfdfe4f9aef607d1447b271e4183" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", @@ -2556,14 +2526,14 @@ dependencies = [ "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-pruning", - "itertools 0.14.0", + "datafusion-session", + "itertools 0.15.0", ] [[package]] name = "datafusion-physical-plan" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bc84da934c903407ba297971ebcc020c4c1a38aafd765d6c144c76eff3fa6a1" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "arrow-data", @@ -2571,6 +2541,7 @@ dependencies = [ "arrow-ord", "arrow-schema", "async-trait", + "bytes", "datafusion-common", "datafusion-common-runtime", "datafusion-execution", @@ -2584,19 +2555,19 @@ dependencies = [ "half", "hashbrown 0.17.1", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "log", "num-traits", "parking_lot", "pin-project-lite", + "serde_json", "tokio", ] [[package]] name = "datafusion-pruning" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb63eeac6de19be40f487b65dd84e546195f783c5a9928618e0c4f2a3569b0d7" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "datafusion-common", @@ -2611,9 +2582,9 @@ dependencies = [ [[package]] name = "datafusion-session" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f961d209177f91bd014db5cbb2c33b7d28a2597b9003e77f17aeb712964315a" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ + "arrow-schema", "async-trait", "datafusion-common", "datafusion-execution", @@ -2625,8 +2596,7 @@ dependencies = [ [[package]] name = "datafusion-spark" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ccd16a6949503e56c084df1b90c8889db826ec9347d2f0f51a7837d6fa011e" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "bigdecimal", @@ -2655,8 +2625,7 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d71cb454da682b2af7488e1fc1ddd72ee1b28f19297b8ccad73f0a21ee9a69" +source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" dependencies = [ "arrow", "bigdecimal", @@ -2707,7 +2676,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror 2.0.20", + "thiserror 2.0.19", ] [[package]] @@ -3506,7 +3475,7 @@ dependencies = [ [[package]] name = "iceberg" version = "0.10.0" -source = "git+https://github.com/apache/iceberg-rust?rev=3d84c81353b1b23b6e4ae8eea8f8a021cc6927a7#3d84c81353b1b23b6e4ae8eea8f8a021cc6927a7" +source = "git+https://github.com/mbutrovich/iceberg-rust?rev=f9473d9790fbc6bded1551f846a8603d75f59c7b#f9473d9790fbc6bded1551f846a8603d75f59c7b" dependencies = [ "aes-gcm", "anyhow", @@ -3532,6 +3501,7 @@ dependencies = [ "fastnum", "flate2", "fnv", + "form_urlencoded", "futures", "itertools 0.13.0", "moka", @@ -3562,7 +3532,7 @@ dependencies = [ [[package]] name = "iceberg-storage-opendal" version = "0.10.0" -source = "git+https://github.com/apache/iceberg-rust?rev=3d84c81353b1b23b6e4ae8eea8f8a021cc6927a7#3d84c81353b1b23b6e4ae8eea8f8a021cc6927a7" +source = "git+https://github.com/mbutrovich/iceberg-rust?rev=f9473d9790fbc6bded1551f846a8603d75f59c7b#f9473d9790fbc6bded1551f846a8603d75f59c7b" dependencies = [ "anyhow", "async-trait", @@ -3570,7 +3540,7 @@ dependencies = [ "cfg-if", "futures", "iceberg", - "opendal 0.57.0", + "opendal", "reqsign-aws-v4", "reqsign-core", "serde", @@ -3738,12 +3708,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "integer-encoding" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" - [[package]] name = "inventory" version = "0.3.24" @@ -3903,7 +3867,7 @@ dependencies = [ "libloading", "log", "simd_cesu8", - "thiserror 2.0.20", + "thiserror 2.0.19", "walkdir", "windows-link", ] @@ -4173,7 +4137,7 @@ dependencies = [ "serde-value", "serde_json", "serde_yaml", - "thiserror 2.0.20", + "thiserror 2.0.19", "thread-id", "typemap-ors", "unicode-segmentation", @@ -4473,7 +4437,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "thiserror 2.0.20", + "thiserror 2.0.19", "tokio", "tracing", "url", @@ -4484,9 +4448,9 @@ dependencies = [ [[package]] name = "object_store_opendal" -version = "0.58.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88f165780495c17aa3ce86846600504198c3fffd99073521552751c2430fa6ac" +checksum = "0eb12a624a41fce745838d0ef3701ff6c47797c13cd18ad3612fd2a3134fdbd8" dependencies = [ "async-trait", "bytes", @@ -4494,7 +4458,7 @@ dependencies = [ "futures", "mea", "object_store", - "opendal 0.58.1", + "opendal", "pin-project", "tokio", ] @@ -4530,34 +4494,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96c9c85ce253ff87225e7669979d877a20c98a06604ec9d6dd5f4473e08f1ae1" dependencies = [ "ctor", - "opendal-core 0.57.0", - "opendal-layer-concurrent-limit 0.57.0", - "opendal-layer-logging 0.57.0", - "opendal-layer-retry 0.57.0", - "opendal-layer-timeout 0.57.0", + "opendal-core", + "opendal-layer-concurrent-limit", + "opendal-layer-logging", + "opendal-layer-retry", + "opendal-layer-timeout", "opendal-service-azdls", "opendal-service-fs", "opendal-service-gcs", + "opendal-service-hdfs", "opendal-service-oss", "opendal-service-s3", ] -[[package]] -name = "opendal" -version = "0.58.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f20562cc7447fcc915fc5c23df305a412ea80a733c9f2fd9e2d267e2815be6d" -dependencies = [ - "ctor", - "opendal-core 0.58.1", - "opendal-http-transport-reqwest", - "opendal-layer-concurrent-limit 0.58.1", - "opendal-layer-logging 0.58.1", - "opendal-layer-retry 0.58.1", - "opendal-layer-timeout 0.58.1", - "opendal-service-hdfs", -] - [[package]] name = "opendal-core" version = "0.57.0" @@ -4586,45 +4535,6 @@ dependencies = [ "web-time", ] -[[package]] -name = "opendal-core" -version = "0.58.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec75551ff4cf3e57da98979f6a937aaa9ddb3915bf68cc17d03df733be6646ed" -dependencies = [ - "anyhow", - "base64 0.23.1", - "bytes", - "futures", - "http 1.5.0", - "jiff", - "log", - "md-5 0.11.0", - "mea", - "percent-encoding", - "quick-xml 0.41.0", - "serde", - "serde_json", - "tokio", - "url", - "uuid", - "web-time", -] - -[[package]] -name = "opendal-http-transport-reqwest" -version = "0.58.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad4d4f19c3ce01126a30611f8e544eaa217104a278c889ac17c9374fe4f9e4ef" -dependencies = [ - "bytes", - "futures", - "http 1.5.0", - "http-body 1.1.0", - "opendal-core 0.58.1", - "reqwest 0.13.4", -] - [[package]] name = "opendal-layer-concurrent-limit" version = "0.57.0" @@ -4634,19 +4544,7 @@ dependencies = [ "futures", "http 1.5.0", "mea", - "opendal-core 0.57.0", -] - -[[package]] -name = "opendal-layer-concurrent-limit" -version = "0.58.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249ac5b0aa5a7a6c3737342d10456067937f9c9a6f3f02544271f7908ab91081" -dependencies = [ - "futures", - "http 1.5.0", - "mea", - "opendal-core 0.58.1", + "opendal-core", ] [[package]] @@ -4656,17 +4554,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58ada45c6d81d1aa4c9305d0c7d4bc317c59c85866a0908a2d75a7a978aa5ee2" dependencies = [ "log", - "opendal-core 0.57.0", -] - -[[package]] -name = "opendal-layer-logging" -version = "0.58.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c75411ab00f77851ff086b686c1e9ca8175ac18c15afa2cb75b9036436cb06c" -dependencies = [ - "log", - "opendal-core 0.58.1", + "opendal-core", ] [[package]] @@ -4677,18 +4565,7 @@ checksum = "7b2a25a718afb81fad81cb9a0580a1cb989221fa2317f888c6a37f8dad408eb7" dependencies = [ "backon", "log", - "opendal-core 0.57.0", -] - -[[package]] -name = "opendal-layer-retry" -version = "0.58.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b7738bd5f233ad8da39af9b9316b9b7a4eaddd91e8e32a1e19b7030688121d" -dependencies = [ - "backon", - "log", - "opendal-core 0.58.1", + "opendal-core", ] [[package]] @@ -4697,17 +4574,7 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e91f731724c213af81e9d03517859c8fc47b4578e64ad61ae4f099f10fe36e3" dependencies = [ - "opendal-core 0.57.0", - "tokio", -] - -[[package]] -name = "opendal-layer-timeout" -version = "0.58.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a704141924500f3803c05ed871b53305d2a2f11cb5ef20160c3ee688a1857f66" -dependencies = [ - "opendal-core 0.58.1", + "opendal-core", "tokio", ] @@ -4721,7 +4588,7 @@ dependencies = [ "bytes", "http 1.5.0", "log", - "opendal-core 0.57.0", + "opendal-core", "opendal-service-azure-common", "quick-xml 0.39.4", "reqsign-azure-storage", @@ -4738,7 +4605,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b489f13c42e69d69bdd72952b634356ec43a7881a20259b38b540fcecdf4051" dependencies = [ "http 1.5.0", - "opendal-core 0.57.0", + "opendal-core", ] [[package]] @@ -4749,7 +4616,7 @@ checksum = "22e89a665fef0e6bd249cf5ea47fc174b7ba892159bee4b9382528b1ca873a2c" dependencies = [ "bytes", "log", - "opendal-core 0.57.0", + "opendal-core", "serde", "tokio", "xattr", @@ -4765,7 +4632,7 @@ dependencies = [ "bytes", "http 1.5.0", "log", - "opendal-core 0.57.0", + "opendal-core", "percent-encoding", "quick-xml 0.39.4", "reqsign-core", @@ -4778,15 +4645,15 @@ dependencies = [ [[package]] name = "opendal-service-hdfs" -version = "0.58.1" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00570d1cc0c3f00db60bc8aaa63aa304e176285264e8674ca11897afaf509629" +checksum = "fb51ce674ce98b8b7d9ac7d2dfc9d7fc8f1bbd1da1a5fb928ecc5f13ba7dc88a" dependencies = [ "bytes", "futures", "hdrs", "log", - "opendal-core 0.58.1", + "opendal-core", "serde", "tokio", ] @@ -4800,7 +4667,7 @@ dependencies = [ "bytes", "http 1.5.0", "log", - "opendal-core 0.57.0", + "opendal-core", "quick-xml 0.39.4", "reqsign-aliyun-oss", "reqsign-core", @@ -4820,7 +4687,7 @@ dependencies = [ "http 1.5.0", "log", "md-5 0.11.0", - "opendal-core 0.57.0", + "opendal-core", "quick-xml 0.39.4", "reqsign-aws-v4", "reqsign-core", @@ -4900,9 +4767,9 @@ dependencies = [ [[package]] name = "parquet" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d298093b2dec60289dce0684c986d0f7679e9dd15771c2c65406e1aaf604a704" +checksum = "5302d4da74d6596a1f11f9928767995b53bca657cbeea1e4e8c5074f8a1157dd" dependencies = [ "ahash", "arrow-array", @@ -4932,7 +4799,6 @@ dependencies = [ "seq-macro", "simdutf8", "snap", - "thrift", "tokio", "twox-hash", "zstd", @@ -4940,9 +4806,9 @@ dependencies = [ [[package]] name = "parquet-variant" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fc70e87931167a4a3fde2ee923023a0624367691e3fd503476a1084dda5a054" +checksum = "57db04c7f8598c9e12c935a7e953a441009189da3f1d504b63c5dc3346a4d59b" dependencies = [ "arrow", "arrow-schema", @@ -4956,9 +4822,9 @@ dependencies = [ [[package]] name = "parquet-variant-compute" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "823a9ecee8fd83a68f7165ef13acc840c4d7ed995838ba99d4714b20a2b5e780" +checksum = "9ecebd5a05d4837104ae401977f5d8ad816045e01b367035c416df3c39540613" dependencies = [ "arrow", "arrow-schema", @@ -4973,9 +4839,9 @@ dependencies = [ [[package]] name = "parquet-variant-json" -version = "58.4.0" +version = "59.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f37a91177e2dddb10333546952fcf2b7674b97ebd9449432f24b883d6ea8108" +checksum = "e5fc56a025dc3d5537140fc95d80879750fc1aa4324cf2452f3d1471854c2f8d" dependencies = [ "arrow-schema", "base64 0.22.1", @@ -5246,7 +5112,7 @@ dependencies = [ "spin 0.10.1", "symbolic-demangle", "tempfile", - "thiserror 2.0.20", + "thiserror 2.0.19", ] [[package]] @@ -5401,7 +5267,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.20", + "thiserror 2.0.19", "tokio", "tracing", "web-time", @@ -5424,7 +5290,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.20", + "thiserror 2.0.19", "tinyvec", "tracing", "web-time", @@ -5612,9 +5478,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.16" +version = "0.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" +checksum = "ad8553b9b26413251cbf30e620595c7a41b3887f03da04579c0e6b0d6a06b4b2" dependencies = [ "aho-corasick", "memchr", @@ -5635,9 +5501,9 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "reqsign-aliyun-oss" -version = "3.1.2" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c0f9f69a519dd6958c4b43606bb8e1278cdc76d611fc8fed4b796eee548dc0f" +checksum = "a5e6d659fcdbca6fe2d7ef109c2e28499b7be80501f1bb86c10caf5ec8ac1219" dependencies = [ "anyhow", "form_urlencoded", @@ -5651,12 +5517,11 @@ dependencies = [ ] [[package]] -name = "reqsign-aws-v4" +name = "reqsign-aws-core" version = "3.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc883bc56889f3e4a419265c87facea222a921debc5c6f15c7fd8b68ec4b36b2" +checksum = "e4af084e1f3cbf3e67e0c972765399bce54ecec804cceba46b39a8331f3c1bff" dependencies = [ - "anyhow", "bytes", "form_urlencoded", "hex", @@ -5672,14 +5537,29 @@ dependencies = [ "sha1 0.11.0", ] +[[package]] +name = "reqsign-aws-v4" +version = "3.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ac5b3b7cefa28933792b439186459f77f19f9b6edbeab41b8b187150361a206" +dependencies = [ + "bytes", + "http 1.5.0", + "log", + "quick-xml 0.41.0", + "reqsign-aws-core", + "reqsign-core", + "serde", +] + [[package]] name = "reqsign-azure-storage" -version = "3.1.1" +version = "3.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6ebd8524185ce9c64063e3095f83968acfa90922f00c601a4a0f3aca15b077e" +checksum = "2824e7da3c2cc42ac3406c674eb57c89127fdcd97f3a73c608cfc680505ea134" dependencies = [ "anyhow", - "base64 0.22.1", + "base64 0.23.1", "bytes", "form_urlencoded", "http 1.5.0", @@ -5695,9 +5575,9 @@ dependencies = [ [[package]] name = "reqsign-core" -version = "3.3.0" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4ac1510872d9481205975d264deb39c109797e5068cc882ed9064270eaae5fa" +checksum = "c07dd510b1e1b9b241883e483358147fb2ed2d497a7b39b065ba61eb93deceb0" dependencies = [ "anyhow", "base64 0.23.1", @@ -5719,9 +5599,9 @@ dependencies = [ [[package]] name = "reqsign-file-read-tokio" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "688ff0ae421b8d4b92b53fdafaf53df2de28f428a9962edcf21702990b26f74b" +checksum = "663d9d55abd0df0830ef0ae43708297cc1371cf4e8ca91f3ac813c309cca8c98" dependencies = [ "anyhow", "reqsign-core", @@ -5730,9 +5610,9 @@ dependencies = [ [[package]] name = "reqsign-google" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96da0b579b846d358090cb06b9e3c2ad1375529efbe3e0c45f96bd7bcf043ea" +checksum = "4080a227f82a09f68540ecd028622065d7ac4c0bcb8727a25bdcfc0526235792" dependencies = [ "form_urlencoded", "http 1.5.0", @@ -6568,11 +6448,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.20" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" dependencies = [ - "thiserror-impl 2.0.20", + "thiserror-impl 2.0.19", ] [[package]] @@ -6588,9 +6468,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.20" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" dependencies = [ "proc-macro2", "quote", @@ -6607,17 +6487,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "thrift" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" -dependencies = [ - "byteorder", - "integer-encoding", - "ordered-float 2.10.1", -] - [[package]] name = "tikv-jemalloc-ctl" version = "0.6.1" @@ -7572,9 +7441,9 @@ dependencies = [ [[package]] name = "zlib-rs" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b142a20ec14a91d5bc708c1dc21b080c550113d8aa77afa29635673a65dd02c5" +checksum = "34b31d188d9d685a4f9c7b46d6e36631b07058d2cfe190267adce54dc230bf12" [[package]] name = "zmij" diff --git a/native/Cargo.toml b/native/Cargo.toml index 471060bc828..73d0d4dbaeb 100644 --- a/native/Cargo.toml +++ b/native/Cargo.toml @@ -38,14 +38,14 @@ edition = "2021" rust-version = "1.88" [workspace.dependencies] -arrow = { version = "58.4.0", features = ["prettyprint", "ffi", "chrono-tz"] } +arrow = { version = "59.1.0", features = ["prettyprint", "ffi", "chrono-tz"] } async-trait = { version = "0.1" } bytes = { version = "1.11.1" } -parquet = { version = "58.4.0", default-features = false, features = ["experimental"] } -datafusion = { version = "54.1.0", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } -datafusion-datasource = { version = "54.1.0" } -datafusion-physical-expr-adapter = { version = "54.1.0" } -datafusion-spark = { version = "54.1.0", features = ["core"] } +parquet = { version = "59.1.0", default-features = false, features = ["experimental"] } +datafusion = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } +datafusion-datasource = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" } +datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" } +datafusion-spark = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41", features = ["core"] } datafusion-comet-spark-expr = { path = "spark-expr" } datafusion-comet-common = { path = "common" } datafusion-comet-jni-bridge = { path = "jni-bridge" } @@ -61,8 +61,8 @@ object_store = { version = "0.13.2", features = ["gcp", "azure", "aws", "http"] url = "2.2" aws-config = "1.8.18" aws-credential-types = "1.2.13" -iceberg = { git = "https://github.com/apache/iceberg-rust", rev = "3d84c81353b1b23b6e4ae8eea8f8a021cc6927a7" } -iceberg-storage-opendal = { git = "https://github.com/apache/iceberg-rust", rev = "3d84c81353b1b23b6e4ae8eea8f8a021cc6927a7", features = ["opendal-memory", "opendal-fs", "opendal-s3", "opendal-gcs", "opendal-oss", "opendal-azdls"] } +iceberg = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "f9473d9790fbc6bded1551f846a8603d75f59c7b" } +iceberg-storage-opendal = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "f9473d9790fbc6bded1551f846a8603d75f59c7b", features = ["opendal-memory", "opendal-fs", "opendal-s3", "opendal-gcs", "opendal-oss", "opendal-azdls"] } reqsign-core = "3" [profile.release] diff --git a/native/core/Cargo.toml b/native/core/Cargo.toml index 8dc8d73273f..e625a2b6b1f 100644 --- a/native/core/Cargo.toml +++ b/native/core/Cargo.toml @@ -94,7 +94,7 @@ jni = { version = "0.22.4", features = ["invocation"] } lazy_static = "1.4" assertables = "10" hex = "0.4.3" -datafusion-functions-nested = { version = "54.1.0" } +datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" } [features] backtrace = ["datafusion/backtrace"] diff --git a/native/core/src/execution/columnar_to_row.rs b/native/core/src/execution/columnar_to_row.rs index a1321a9defc..74defde6729 100644 --- a/native/core/src/execution/columnar_to_row.rs +++ b/native/core/src/execution/columnar_to_row.rs @@ -2491,11 +2491,14 @@ mod tests { let schema = vec![DataType::FixedSizeBinary(3)]; let mut ctx = ColumnarToRowContext::new(schema, 100); - let array: ArrayRef = Arc::new(FixedSizeBinaryArray::from(vec![ - Some(&[1u8, 2, 3][..]), - Some(&[4u8, 5, 6][..]), - None, // Test null handling - ])); + let array: ArrayRef = Arc::new( + FixedSizeBinaryArray::try_from(vec![ + Some(&[1u8, 2, 3][..]), + Some(&[4u8, 5, 6][..]), + None, // Test null handling + ]) + .unwrap(), + ); let arrays = vec![array]; let (ptr, offsets, lengths) = ctx.convert(&arrays, 3).unwrap(); diff --git a/native/core/src/execution/merge_as_partial.rs b/native/core/src/execution/merge_as_partial.rs index 5ea26115bf2..3ad3492e1ed 100644 --- a/native/core/src/execution/merge_as_partial.rs +++ b/native/core/src/execution/merge_as_partial.rs @@ -210,20 +210,30 @@ impl GroupsAccumulator for MergeAsPartialGroupsAccumulator { opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { - // Redirect update to merge — this is the key trick. + // Redirect update to merge — this is the key trick. Spark's PartialMerge mode + // never applies a filter (filters apply once, at the Partial stage), so there's + // nothing to forward into merge_batch, which no longer accepts one. + debug_assert!(opt_filter.is_none()); self.inner - .merge_batch(values, group_indices, opt_filter, total_num_groups) + .merge_batch(values, group_indices, total_num_groups) } fn merge_batch( &mut self, values: &[ArrayRef], group_indices: &[usize], - opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { self.inner - .merge_batch(values, group_indices, opt_filter, total_num_groups) + .merge_batch(values, group_indices, total_num_groups) + } + + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> Result> { + datafusion::common::not_impl_err!("Input batch conversion to state not implemented") } fn evaluate(&mut self, emit_to: EmitTo) -> Result { diff --git a/native/core/src/execution/operators/iceberg_scan.rs b/native/core/src/execution/operators/iceberg_scan.rs index e727294fd9e..4dca1a32983 100644 --- a/native/core/src/execution/operators/iceberg_scan.rs +++ b/native/core/src/execution/operators/iceberg_scan.rs @@ -651,6 +651,8 @@ mod tests { start: 0, length: 0, record_count: None, + first_row_id: None, + data_sequence_number: None, data_file_path: "data.parquet".to_string(), data_file_format: DataFileFormat::Parquet, schema: Arc::new(Schema::builder().build().unwrap()), diff --git a/native/core/src/execution/planner.rs b/native/core/src/execution/planner.rs index ea5f1ef9238..464e1af1a36 100644 --- a/native/core/src/execution/planner.rs +++ b/native/core/src/execution/planner.rs @@ -120,7 +120,7 @@ use arrow::array::{ use arrow::buffer::{BooleanBuffer, NullBuffer, OffsetBuffer}; use arrow::row::{OwnedRow, RowConverter, SortField}; use datafusion::common::utils::SingleRowListArrayBuilder; -use datafusion::common::UnnestOptions; +use datafusion::common::{NullHandling, UnnestOptions}; use datafusion::physical_plan::filter::FilterExec; use datafusion::physical_plan::joins::NestedLoopJoinExec; use datafusion::physical_plan::limit::GlobalLimitExec; @@ -2105,7 +2105,11 @@ impl PhysicalPlanner { }); let unnest_options = UnnestOptions { - preserve_nulls: explode.outer, + null_handling: if explode.outer { + NullHandling::Preserve + } else { + NullHandling::Drop + }, recursions: vec![], }; @@ -4181,6 +4185,8 @@ fn parse_file_scan_tasks_from_common( start: proto_task.start, length: proto_task.length, record_count: proto_task.record_count, + first_row_id: None, + data_sequence_number: None, data_file_format, schema: schema_ref, project_field_ids, diff --git a/native/core/src/parquet/eager_page_index_reader_factory.rs b/native/core/src/parquet/eager_page_index_reader_factory.rs index 278814c4bf9..d3c854093c5 100644 --- a/native/core/src/parquet/eager_page_index_reader_factory.rs +++ b/native/core/src/parquet/eager_page_index_reader_factory.rs @@ -68,11 +68,11 @@ use std::sync::Arc; #[derive(Debug)] pub struct EagerPageIndexReaderFactory { store: Arc, - metadata_cache: Arc, + metadata_cache: Arc, } impl EagerPageIndexReaderFactory { - pub fn new(store: Arc, metadata_cache: Arc) -> Self { + pub fn new(store: Arc, metadata_cache: Arc) -> Self { Self { store, metadata_cache, @@ -118,7 +118,7 @@ struct EagerPageIndexReader { store: Arc, inner: ParquetObjectReader, partitioned_file: PartitionedFile, - metadata_cache: Arc, + metadata_cache: Arc, metadata_size_hint: Option, } diff --git a/native/shuffle/src/partitioners/traits.rs b/native/shuffle/src/partitioners/traits.rs index 9572b70db5b..5bd41a62a50 100644 --- a/native/shuffle/src/partitioners/traits.rs +++ b/native/shuffle/src/partitioners/traits.rs @@ -19,7 +19,7 @@ use arrow::record_batch::RecordBatch; use datafusion::common::Result; #[async_trait::async_trait] -pub(crate) trait ShufflePartitioner: Send + Sync { +pub(crate) trait ShufflePartitioner: Send { /// Insert a batch into the partitioner async fn insert_batch(&mut self, batch: RecordBatch) -> Result<()>; /// Write shuffle data and shuffle index file to disk diff --git a/native/shuffle/src/writers/local/spill.rs b/native/shuffle/src/writers/local/spill.rs index d8534b44564..babdc938663 100644 --- a/native/shuffle/src/writers/local/spill.rs +++ b/native/shuffle/src/writers/local/spill.rs @@ -19,21 +19,21 @@ use crate::metrics::ShufflePartitionerMetrics; use crate::writers::BufBatchWriter; use crate::ShuffleBlockWriter; use arrow::record_batch::RecordBatch; -use datafusion::common::DataFusionError; -use datafusion::execution::disk_manager::RefCountedTempFile; use datafusion::execution::runtime_env::RuntimeEnv; -use std::fs::{File, OpenOptions}; +use datafusion::execution::SpillFile as DfSpillFile; +use datafusion::execution::SpillWriter as DfSpillWriter; +use std::sync::Arc; -struct SpillFile { - temp_file: RefCountedTempFile, - file: File, +struct ActiveSpillFile { + temp_file: Arc, + writer: Box, } pub(crate) struct SpillWriter { shuffle_block_writer: ShuffleBlockWriter, write_buffer_size: usize, batch_size: usize, - spill_file: Option, + spill_file: Option, } impl SpillWriter { @@ -62,7 +62,7 @@ impl SpillWriter { let total_bytes_written = { let mut buf_batch_writer = BufBatchWriter::new( &mut self.shuffle_block_writer, - &mut self.spill_file.as_mut().unwrap().file, + &mut self.spill_file.as_mut().unwrap().writer, self.write_buffer_size, self.batch_size, ); @@ -93,21 +93,11 @@ impl SpillWriter { ) -> datafusion::common::Result<()> { if self.spill_file.is_none() { // Spill file is not yet created, create it - let spill_file = runtime + let temp_file = runtime .disk_manager .create_tmp_file("shuffle writer spill")?; - let spill_data = OpenOptions::new() - .write(true) - .create(true) - .truncate(true) - .open(spill_file.path()) - .map_err(|e| { - DataFusionError::Execution(format!("Error occurred while spilling {e}")) - })?; - self.spill_file = Some(SpillFile { - temp_file: spill_file, - file: spill_data, - }); + let writer = temp_file.open_writer()?; + self.spill_file = Some(ActiveSpillFile { temp_file, writer }); } Ok(()) } @@ -115,7 +105,7 @@ impl SpillWriter { pub(crate) fn path(&self) -> Option<&std::path::Path> { self.spill_file .as_ref() - .map(|spill_file| spill_file.temp_file.path()) + .and_then(|spill_file| spill_file.temp_file.path()) } #[cfg(test)] diff --git a/native/shuffle/src/writers/partition_writer.rs b/native/shuffle/src/writers/partition_writer.rs index 25b0e598df8..9b415f897da 100644 --- a/native/shuffle/src/writers/partition_writer.rs +++ b/native/shuffle/src/writers/partition_writer.rs @@ -32,7 +32,7 @@ use arrow::record_batch::RecordBatch; /// ascending id order, then a single [`finish_all`](PartitionWriter::finish_all). /// /// [`LocalPartitionWriter`]: crate::writers::local::local_partition_writer::LocalPartitionWriter -pub(crate) trait PartitionWriter: Send + Sync { +pub(crate) trait PartitionWriter: Send { /// Stages the batches from `iter` for partition `pid` without finalizing it. /// /// Used to stream single-partition output and to stage multi-partition diff --git a/native/spark-expr/src/agg_funcs/avg.rs b/native/spark-expr/src/agg_funcs/avg.rs index 24a9a309911..bb5371568b5 100644 --- a/native/spark-expr/src/agg_funcs/avg.rs +++ b/native/spark-expr/src/agg_funcs/avg.rs @@ -283,7 +283,6 @@ where &mut self, values: &[ArrayRef], group_indices: &[usize], - _opt_filter: Option<&arrow::array::BooleanArray>, total_num_groups: usize, ) -> Result<()> { assert_eq!(values.len(), 2, "two arguments to merge_batch"); @@ -340,6 +339,14 @@ where ]) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&arrow::array::BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { self.counts.capacity() * std::mem::size_of::() + self.sums.capacity() * std::mem::size_of::() diff --git a/native/spark-expr/src/agg_funcs/avg_decimal.rs b/native/spark-expr/src/agg_funcs/avg_decimal.rs index 186e0272445..0e02dd03d41 100644 --- a/native/spark-expr/src/agg_funcs/avg_decimal.rs +++ b/native/spark-expr/src/agg_funcs/avg_decimal.rs @@ -543,7 +543,6 @@ impl GroupsAccumulator for AvgDecimalGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - _opt_filter: Option<&arrow::array::BooleanArray>, total_num_groups: usize, ) -> Result<()> { assert_eq!(values.len(), 2, "two arguments to merge_batch"); @@ -652,6 +651,14 @@ impl GroupsAccumulator for AvgDecimalGroupsAccumulator { ]) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&arrow::array::BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { self.counts.capacity() * std::mem::size_of::() + self.sums.capacity() * std::mem::size_of::() diff --git a/native/spark-expr/src/agg_funcs/correlation.rs b/native/spark-expr/src/agg_funcs/correlation.rs index 189b76c8636..d69ac61def7 100644 --- a/native/spark-expr/src/agg_funcs/correlation.rs +++ b/native/spark-expr/src/agg_funcs/correlation.rs @@ -24,7 +24,7 @@ use crate::agg_funcs::covariance::{CovarianceAccumulator, CovarianceGroupsAccumu use crate::agg_funcs::stddev::StddevAccumulator; use crate::agg_funcs::variance::VarianceGroupsAccumulator; use arrow::compute::filter; -use datafusion::common::{Result, ScalarValue}; +use datafusion::common::{not_impl_err, Result, ScalarValue}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::{ Accumulator, AggregateUDFImpl, EmitTo, GroupsAccumulator, Signature, Volatility, @@ -335,7 +335,6 @@ impl GroupsAccumulator for CorrelationGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { assert_eq!(values.len(), 6, "six state columns to merge_batch"); @@ -358,11 +357,11 @@ impl GroupsAccumulator for CorrelationGroupsAccumulator { ]; self.covar - .merge_batch(&covar_state, group_indices, opt_filter, total_num_groups)?; + .merge_batch(&covar_state, group_indices, total_num_groups)?; self.var1 - .merge_batch(&var1_state, group_indices, opt_filter, total_num_groups)?; + .merge_batch(&var1_state, group_indices, total_num_groups)?; self.var2 - .merge_batch(&var2_state, group_indices, opt_filter, total_num_groups)?; + .merge_batch(&var2_state, group_indices, total_num_groups)?; Ok(()) } @@ -442,6 +441,14 @@ impl GroupsAccumulator for CorrelationGroupsAccumulator { ]) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { self.covar.size() + self.var1.size() + self.var2.size() } diff --git a/native/spark-expr/src/agg_funcs/covariance.rs b/native/spark-expr/src/agg_funcs/covariance.rs index e5b77ad33bc..548c1187208 100644 --- a/native/spark-expr/src/agg_funcs/covariance.rs +++ b/native/spark-expr/src/agg_funcs/covariance.rs @@ -21,7 +21,9 @@ use arrow::array::{Array, ArrayRef, AsArray, BooleanArray, Float64Array}; use arrow::buffer::NullBuffer; use arrow::compute::cast; use arrow::datatypes::{DataType, Field, FieldRef, Float64Type}; -use datafusion::common::{downcast_value, unwrap_or_internal_err, Result, ScalarValue}; +use datafusion::common::{ + downcast_value, not_impl_err, unwrap_or_internal_err, Result, ScalarValue, +}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::{ Accumulator, AggregateUDFImpl, EmitTo, GroupsAccumulator, Signature, Volatility, @@ -414,7 +416,6 @@ impl GroupsAccumulator for CovarianceGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - _opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { assert_eq!(values.len(), 4, "four arguments to merge_batch"); @@ -467,6 +468,14 @@ impl GroupsAccumulator for CovarianceGroupsAccumulator { ]) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { (self.counts.capacity() + self.mean1s.capacity() @@ -563,8 +572,8 @@ mod groups_tests { let rstate = right.state(EmitTo::All).unwrap(); let mut merged = pop(); - merged.merge_batch(&lstate, &[0], None, 1).unwrap(); - merged.merge_batch(&rstate, &[0], None, 1).unwrap(); + merged.merge_batch(&lstate, &[0], 1).unwrap(); + merged.merge_batch(&rstate, &[0], 1).unwrap(); let merged_result = evaluate(&mut merged)[0].unwrap(); assert!((single - merged_result).abs() < 1e-12); diff --git a/native/spark-expr/src/agg_funcs/hll_plus_plus.rs b/native/spark-expr/src/agg_funcs/hll_plus_plus.rs index 01fa13800a5..3cb39f0acd7 100644 --- a/native/spark-expr/src/agg_funcs/hll_plus_plus.rs +++ b/native/spark-expr/src/agg_funcs/hll_plus_plus.rs @@ -30,7 +30,7 @@ use arrow::array::{ Array, ArrayRef, AsArray, BooleanArray, Float32Array, Float64Array, Int64Array, }; use arrow::datatypes::{DataType, Field, FieldRef, Float32Type, Float64Type}; -use datafusion::common::{Result, ScalarValue}; +use datafusion::common::{not_impl_err, Result, ScalarValue}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::{ Accumulator, AggregateUDFImpl, EmitTo, GroupsAccumulator, Signature, Volatility, @@ -425,7 +425,6 @@ impl GroupsAccumulator for HllPlusPlusGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - _opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { self.resize(total_num_groups); @@ -467,6 +466,14 @@ impl GroupsAccumulator for HllPlusPlusGroupsAccumulator { Ok(columns) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { std::mem::size_of_val(self) + self.words.capacity() * std::mem::size_of::() @@ -639,9 +646,7 @@ mod tests { for part in [&mut left, &mut right] { let state = part.state(EmitTo::All).unwrap(); let n = state[0].len(); - merged - .merge_batch(&state, &vec![0usize; n], None, 1) - .unwrap(); + merged.merge_batch(&state, &vec![0usize; n], 1).unwrap(); } let single = { let mut a = acc(9); diff --git a/native/spark-expr/src/agg_funcs/percentile.rs b/native/spark-expr/src/agg_funcs/percentile.rs index 3fddfdcb684..78e585a3965 100644 --- a/native/spark-expr/src/agg_funcs/percentile.rs +++ b/native/spark-expr/src/agg_funcs/percentile.rs @@ -20,7 +20,7 @@ use arrow::array::{ }; use arrow::buffer::{OffsetBuffer, ScalarBuffer}; use arrow::datatypes::{DataType, Field, FieldRef, Float64Type}; -use datafusion::common::{internal_err, plan_err, Result, ScalarValue}; +use datafusion::common::{internal_err, not_impl_err, plan_err, Result, ScalarValue}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::Volatility::Immutable; use datafusion::logical_expr::{ @@ -221,7 +221,6 @@ impl GroupsAccumulator for SparkPercentileGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - _opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { let input_group_values = values[0].as_list::(); @@ -268,6 +267,14 @@ impl GroupsAccumulator for SparkPercentileGroupsAccumulator { Ok(Arc::new(builder.finish())) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { self.group_values .iter() diff --git a/native/spark-expr/src/agg_funcs/stddev.rs b/native/spark-expr/src/agg_funcs/stddev.rs index 3389a86af68..bbceaa72dcd 100644 --- a/native/spark-expr/src/agg_funcs/stddev.rs +++ b/native/spark-expr/src/agg_funcs/stddev.rs @@ -22,7 +22,7 @@ use arrow::array::{ArrayRef, AsArray, BooleanArray, Float64Array}; use arrow::datatypes::FieldRef; use arrow::datatypes::{DataType, Field, Float64Type}; use datafusion::common::types::NativeType; -use datafusion::common::{internal_err, Result, ScalarValue}; +use datafusion::common::{internal_err, not_impl_err, Result, ScalarValue}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::{ Accumulator, AggregateUDFImpl, Coercion, EmitTo, GroupsAccumulator, Signature, Volatility, @@ -231,11 +231,10 @@ impl GroupsAccumulator for StddevGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { self.inner - .merge_batch(values, group_indices, opt_filter, total_num_groups) + .merge_batch(values, group_indices, total_num_groups) } fn evaluate(&mut self, emit_to: EmitTo) -> Result { @@ -250,6 +249,14 @@ impl GroupsAccumulator for StddevGroupsAccumulator { self.inner.state(emit_to) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { self.inner.size() } diff --git a/native/spark-expr/src/agg_funcs/sum_decimal.rs b/native/spark-expr/src/agg_funcs/sum_decimal.rs index 4ddf13c5d69..cae0a70b422 100644 --- a/native/spark-expr/src/agg_funcs/sum_decimal.rs +++ b/native/spark-expr/src/agg_funcs/sum_decimal.rs @@ -21,7 +21,7 @@ use arrow::array::{ cast::AsArray, types::Decimal128Type, Array, ArrayRef, BooleanArray, Decimal128Array, }; use arrow::datatypes::{DataType, Field, FieldRef}; -use datafusion::common::{DataFusionError, Result as DFResult, ScalarValue}; +use datafusion::common::{not_impl_err, DataFusionError, Result as DFResult, ScalarValue}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::Volatility::Immutable; use datafusion::logical_expr::{ @@ -541,14 +541,8 @@ impl GroupsAccumulator for SumDecimalGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> DFResult<()> { - debug_assert!( - opt_filter.is_none(), - "opt_filter is not supported in merge_batch" - ); - self.resize_helper(total_num_groups); // For decimal sum, always expect 2 arrays regardless of eval_mode @@ -609,6 +603,14 @@ impl GroupsAccumulator for SumDecimalGroupsAccumulator { Ok(()) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> DFResult> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { self.sum.capacity() * std::mem::size_of::>() + self.is_empty.capacity() * std::mem::size_of::() diff --git a/native/spark-expr/src/agg_funcs/sum_int.rs b/native/spark-expr/src/agg_funcs/sum_int.rs index 59a4371772e..56a8c122c41 100644 --- a/native/spark-expr/src/agg_funcs/sum_int.rs +++ b/native/spark-expr/src/agg_funcs/sum_int.rs @@ -23,7 +23,7 @@ use arrow::array::{ use arrow::datatypes::{ ArrowNativeType, DataType, Field, FieldRef, Int16Type, Int32Type, Int64Type, Int8Type, }; -use datafusion::common::{DataFusionError, Result as DFResult, ScalarValue}; +use datafusion::common::{not_impl_err, DataFusionError, Result as DFResult, ScalarValue}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::Volatility::Immutable; use datafusion::logical_expr::{ @@ -495,14 +495,8 @@ impl GroupsAccumulator for SumIntGroupsAccumulatorLegacy { &mut self, values: &[ArrayRef], group_indices: &[usize], - opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> DFResult<()> { - debug_assert!( - opt_filter.is_none(), - "opt_filter is not supported in merge_batch" - ); - if values.len() != 1 { return Err(DataFusionError::Internal(format!( "Invalid state while merging batch. Expected 1 element but found {}", @@ -529,6 +523,14 @@ impl GroupsAccumulator for SumIntGroupsAccumulatorLegacy { Ok(()) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> DFResult> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { std::mem::size_of_val(self) } @@ -642,14 +644,8 @@ impl GroupsAccumulator for SumIntGroupsAccumulatorAnsi { &mut self, values: &[ArrayRef], group_indices: &[usize], - opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> DFResult<()> { - debug_assert!( - opt_filter.is_none(), - "opt_filter is not supported in merge_batch" - ); - if values.len() != 1 { return Err(DataFusionError::Internal(format!( "Invalid state while merging batch. Expected 1 element but found {}", @@ -680,6 +676,14 @@ impl GroupsAccumulator for SumIntGroupsAccumulatorAnsi { Ok(()) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> DFResult> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { std::mem::size_of_val(self) } @@ -826,14 +830,8 @@ impl GroupsAccumulator for SumIntGroupsAccumulatorTry { &mut self, values: &[ArrayRef], group_indices: &[usize], - opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> DFResult<()> { - debug_assert!( - opt_filter.is_none(), - "opt_filter is not supported in merge_batch" - ); - if values.len() != 2 { return Err(DataFusionError::Internal(format!( "Invalid state while merging batch. Expected 2 elements but found {}", @@ -886,6 +884,14 @@ impl GroupsAccumulator for SumIntGroupsAccumulatorTry { Ok(()) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> DFResult> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { std::mem::size_of_val(self) } diff --git a/native/spark-expr/src/agg_funcs/variance.rs b/native/spark-expr/src/agg_funcs/variance.rs index f1841729cf0..57a8f6da501 100644 --- a/native/spark-expr/src/agg_funcs/variance.rs +++ b/native/spark-expr/src/agg_funcs/variance.rs @@ -18,7 +18,7 @@ use arrow::array::{Array, ArrayRef, AsArray, BooleanArray, Float64Array}; use arrow::buffer::NullBuffer; use arrow::datatypes::{DataType, Field, FieldRef, Float64Type}; -use datafusion::common::{downcast_value, Result, ScalarValue}; +use datafusion::common::{downcast_value, not_impl_err, Result, ScalarValue}; use datafusion::logical_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion::logical_expr::Volatility::Immutable; use datafusion::logical_expr::{ @@ -340,7 +340,6 @@ impl GroupsAccumulator for VarianceGroupsAccumulator { &mut self, values: &[ArrayRef], group_indices: &[usize], - _opt_filter: Option<&BooleanArray>, total_num_groups: usize, ) -> Result<()> { assert_eq!(values.len(), 3, "three arguments to merge_batch"); @@ -387,6 +386,14 @@ impl GroupsAccumulator for VarianceGroupsAccumulator { ]) } + fn convert_to_state( + &self, + _values: &[ArrayRef], + _opt_filter: Option<&BooleanArray>, + ) -> Result> { + not_impl_err!("Input batch conversion to state not implemented") + } + fn size(&self) -> usize { self.counts.capacity() * size_of::() + self.means.capacity() * size_of::() @@ -512,8 +519,8 @@ mod groups_tests { let right_state = right.state(EmitTo::All).unwrap(); let mut merged = pop_acc(); - merged.merge_batch(&left_state, &[0], None, 1).unwrap(); - merged.merge_batch(&right_state, &[0], None, 1).unwrap(); + merged.merge_batch(&left_state, &[0], 1).unwrap(); + merged.merge_batch(&right_state, &[0], 1).unwrap(); let merged_result = evaluate(&mut merged)[0].unwrap(); assert!((single_result - merged_result).abs() < 1e-12); From cc92035715ef731eec608590c90561babb390d44 Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Tue, 4 Aug 2026 19:39:18 -0400 Subject: [PATCH 02/16] fix clippy, bump iceberg-rust commit and opendal deps --- native/Cargo.lock | 106 +++++++++++------- native/Cargo.toml | 4 +- native/core/src/execution/operators/copy.rs | 8 +- .../src/execution/operators/parquet_writer.rs | 4 +- native/core/src/parquet/parquet_exec.rs | 11 +- .../src/writers/shuffle_block_writer.rs | 6 +- .../src/array_funcs/array_insert.rs | 24 ++-- .../spark-expr/src/array_funcs/array_slice.rs | 2 +- .../spark-expr/src/array_funcs/arrays_zip.rs | 6 +- .../src/array_funcs/list_extract.rs | 8 +- .../src/bloom_filter/spark_bit_array.rs | 3 +- 11 files changed, 106 insertions(+), 76 deletions(-) diff --git a/native/Cargo.lock b/native/Cargo.lock index 1fe9d297c72..2f54b61dac1 100644 --- a/native/Cargo.lock +++ b/native/Cargo.lock @@ -1591,6 +1591,16 @@ dependencies = [ "libc", ] +[[package]] +name = "crc-fast" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e75b2483e97a5a7da73ac68a05b629f9c53cff58d8ed1c77866079e18b00dba5" +dependencies = [ + "digest 0.10.7", + "spin 0.10.1", +] + [[package]] name = "crc32c" version = "0.6.8" @@ -3475,7 +3485,7 @@ dependencies = [ [[package]] name = "iceberg" version = "0.10.0" -source = "git+https://github.com/mbutrovich/iceberg-rust?rev=f9473d9790fbc6bded1551f846a8603d75f59c7b#f9473d9790fbc6bded1551f846a8603d75f59c7b" +source = "git+https://github.com/mbutrovich/iceberg-rust?rev=07de8fc8d650f7439b251d57a55613f7de693eb8#07de8fc8d650f7439b251d57a55613f7de693eb8" dependencies = [ "aes-gcm", "anyhow", @@ -3532,7 +3542,7 @@ dependencies = [ [[package]] name = "iceberg-storage-opendal" version = "0.10.0" -source = "git+https://github.com/mbutrovich/iceberg-rust?rev=f9473d9790fbc6bded1551f846a8603d75f59c7b#f9473d9790fbc6bded1551f846a8603d75f59c7b" +source = "git+https://github.com/mbutrovich/iceberg-rust?rev=07de8fc8d650f7439b251d57a55613f7de693eb8#07de8fc8d650f7439b251d57a55613f7de693eb8" dependencies = [ "anyhow", "async-trait", @@ -4448,9 +4458,9 @@ dependencies = [ [[package]] name = "object_store_opendal" -version = "0.57.0" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eb12a624a41fce745838d0ef3701ff6c47797c13cd18ad3612fd2a3134fdbd8" +checksum = "88f165780495c17aa3ce86846600504198c3fffd99073521552751c2430fa6ac" dependencies = [ "async-trait", "bytes", @@ -4489,12 +4499,13 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "opendal" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96c9c85ce253ff87225e7669979d877a20c98a06604ec9d6dd5f4473e08f1ae1" +checksum = "4f20562cc7447fcc915fc5c23df305a412ea80a733c9f2fd9e2d267e2815be6d" dependencies = [ "ctor", "opendal-core", + "opendal-http-transport-reqwest", "opendal-layer-concurrent-limit", "opendal-layer-logging", "opendal-layer-retry", @@ -4509,24 +4520,22 @@ dependencies = [ [[package]] name = "opendal-core" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4f8607c90e2c963a91467f50fb49fbc7fb3d573f88cea219ca59ccd3740b309" +checksum = "ec75551ff4cf3e57da98979f6a937aaa9ddb3915bf68cc17d03df733be6646ed" dependencies = [ "anyhow", - "base64 0.22.1", + "base64 0.23.1", "bytes", "futures", "http 1.5.0", - "http-body 1.1.0", "jiff", "log", "md-5 0.11.0", "mea", "percent-encoding", - "quick-xml 0.39.4", + "quick-xml 0.41.0", "reqsign-core", - "reqwest 0.13.4", "serde", "serde_json", "tokio", @@ -4535,11 +4544,25 @@ dependencies = [ "web-time", ] +[[package]] +name = "opendal-http-transport-reqwest" +version = "0.58.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad4d4f19c3ce01126a30611f8e544eaa217104a278c889ac17c9374fe4f9e4ef" +dependencies = [ + "bytes", + "futures", + "http 1.5.0", + "http-body 1.1.0", + "opendal-core", + "reqwest 0.13.4", +] + [[package]] name = "opendal-layer-concurrent-limit" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6f81ba6960e3fae1882f253b114b21d7e444e1534f209c7737a79f6243eb6f" +checksum = "249ac5b0aa5a7a6c3737342d10456067937f9c9a6f3f02544271f7908ab91081" dependencies = [ "futures", "http 1.5.0", @@ -4549,9 +4572,9 @@ dependencies = [ [[package]] name = "opendal-layer-logging" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ada45c6d81d1aa4c9305d0c7d4bc317c59c85866a0908a2d75a7a978aa5ee2" +checksum = "5c75411ab00f77851ff086b686c1e9ca8175ac18c15afa2cb75b9036436cb06c" dependencies = [ "log", "opendal-core", @@ -4559,9 +4582,9 @@ dependencies = [ [[package]] name = "opendal-layer-retry" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b2a25a718afb81fad81cb9a0580a1cb989221fa2317f888c6a37f8dad408eb7" +checksum = "80b7738bd5f233ad8da39af9b9316b9b7a4eaddd91e8e32a1e19b7030688121d" dependencies = [ "backon", "log", @@ -4570,9 +4593,9 @@ dependencies = [ [[package]] name = "opendal-layer-timeout" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e91f731724c213af81e9d03517859c8fc47b4578e64ad61ae4f099f10fe36e3" +checksum = "a704141924500f3803c05ed871b53305d2a2f11cb5ef20160c3ee688a1857f66" dependencies = [ "opendal-core", "tokio", @@ -4580,17 +4603,18 @@ dependencies = [ [[package]] name = "opendal-service-azdls" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dea4908d490143a9b0b7f7a790e139ff829b06a023f670455ed3d44f664b361" +checksum = "2e3c406729935fe214ce574d68681a1ff7e0b322548f14094912bdbfe50e5c53" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "bytes", "http 1.5.0", "log", + "mea", "opendal-core", "opendal-service-azure-common", - "quick-xml 0.39.4", + "quick-xml 0.41.0", "reqsign-azure-storage", "reqsign-core", "reqsign-file-read-tokio", @@ -4600,9 +4624,9 @@ dependencies = [ [[package]] name = "opendal-service-azure-common" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b489f13c42e69d69bdd72952b634356ec43a7881a20259b38b540fcecdf4051" +checksum = "7348c88edf15af435b7be930077746b569fac5e738c1bf6a363b675e7317c9df" dependencies = [ "http 1.5.0", "opendal-core", @@ -4610,9 +4634,9 @@ dependencies = [ [[package]] name = "opendal-service-fs" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e89a665fef0e6bd249cf5ea47fc174b7ba892159bee4b9382528b1ca873a2c" +checksum = "826c4e17a30643b888fe983897f9a4b23b07066e1d069727a923cc8fb419a702" dependencies = [ "bytes", "log", @@ -4624,9 +4648,9 @@ dependencies = [ [[package]] name = "opendal-service-gcs" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48de101aac565ed06af4b47903c24eafd249075553ec1fb18256751c45148d47" +checksum = "007f3fba63c21e516c956b891e96ff9892d8175662bfb781cdada9d3766a11e6" dependencies = [ "async-trait", "bytes", @@ -4634,7 +4658,7 @@ dependencies = [ "log", "opendal-core", "percent-encoding", - "quick-xml 0.39.4", + "quick-xml 0.41.0", "reqsign-core", "reqsign-file-read-tokio", "reqsign-google", @@ -4645,9 +4669,9 @@ dependencies = [ [[package]] name = "opendal-service-hdfs" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb51ce674ce98b8b7d9ac7d2dfc9d7fc8f1bbd1da1a5fb928ecc5f13ba7dc88a" +checksum = "00570d1cc0c3f00db60bc8aaa63aa304e176285264e8674ca11897afaf509629" dependencies = [ "bytes", "futures", @@ -4660,15 +4684,15 @@ dependencies = [ [[package]] name = "opendal-service-oss" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "328fa55e8888cbdfe00826bfea2a79042422b720e8369e9e021e46121dea5ace" +checksum = "cd528ec2d49c5ca69e674ffed7b3e0686fb9cfcfea0596870de381467fda4f1b" dependencies = [ "bytes", "http 1.5.0", "log", "opendal-core", - "quick-xml 0.39.4", + "quick-xml 0.41.0", "reqsign-aliyun-oss", "reqsign-core", "reqsign-file-read-tokio", @@ -4677,18 +4701,18 @@ dependencies = [ [[package]] name = "opendal-service-s3" -version = "0.57.0" +version = "0.58.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "313d46c9f5ae70bca26b7c3e3fbb9b639292625f28af73aa016f47e788af9deb" +checksum = "58e80cdf192d7eff05feed747894d64f81905ac4eaf132edf7ea270abdd2d663" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "bytes", - "crc32c", + "crc-fast", "http 1.5.0", "log", "md-5 0.11.0", "opendal-core", - "quick-xml 0.39.4", + "quick-xml 0.41.0", "reqsign-aws-v4", "reqsign-core", "reqsign-file-read-tokio", diff --git a/native/Cargo.toml b/native/Cargo.toml index 73d0d4dbaeb..11b4fede824 100644 --- a/native/Cargo.toml +++ b/native/Cargo.toml @@ -61,8 +61,8 @@ object_store = { version = "0.13.2", features = ["gcp", "azure", "aws", "http"] url = "2.2" aws-config = "1.8.18" aws-credential-types = "1.2.13" -iceberg = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "f9473d9790fbc6bded1551f846a8603d75f59c7b" } -iceberg-storage-opendal = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "f9473d9790fbc6bded1551f846a8603d75f59c7b", features = ["opendal-memory", "opendal-fs", "opendal-s3", "opendal-gcs", "opendal-oss", "opendal-azdls"] } +iceberg = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "07de8fc8d650f7439b251d57a55613f7de693eb8" } +iceberg-storage-opendal = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "07de8fc8d650f7439b251d57a55613f7de693eb8", features = ["opendal-memory", "opendal-fs", "opendal-s3", "opendal-gcs", "opendal-oss", "opendal-azdls"] } reqsign-core = "3" [profile.release] diff --git a/native/core/src/execution/operators/copy.rs b/native/core/src/execution/operators/copy.rs index 193c385c3ce..46774126221 100644 --- a/native/core/src/execution/operators/copy.rs +++ b/native/core/src/execution/operators/copy.rs @@ -37,7 +37,9 @@ pub(crate) fn copy_array(array: &dyn Array) -> ArrayRef { let mut mutable = MutableArrayData::new(vec![&data], false, capacity); - mutable.extend(0, 0, capacity); + mutable + .try_extend(0, 0, capacity) + .expect("extend failed due to offset overflow"); if matches!(array.data_type(), DataType::Dictionary(_, _)) { let copied_dict = make_array(mutable.freeze()); @@ -50,7 +52,9 @@ pub(crate) fn copy_array(array: &dyn Array) -> ArrayRef { let data = values.to_data(); let mut mutable = MutableArrayData::new(vec![&data], false, values.len()); - mutable.extend(0, 0, values.len()); + mutable + .try_extend(0, 0, values.len()) + .expect("extend failed due to offset overflow"); let copied_dict = ref_copied_dict.with_values(make_array(mutable.freeze())); Arc::new(copied_dict) diff --git a/native/core/src/execution/operators/parquet_writer.rs b/native/core/src/execution/operators/parquet_writer.rs index d6e81b85e11..7668683b3ae 100644 --- a/native/core/src/execution/operators/parquet_writer.rs +++ b/native/core/src/execution/operators/parquet_writer.rs @@ -92,7 +92,7 @@ enum ParquetWriter { /// The opendal::Writer is created lazily on first write #[cfg(feature = "hdfs-opendal")] Remote( - ArrowWriter>>, + Box>>>, Option, Box, String, @@ -342,7 +342,7 @@ impl ParquetWriterExec { // HDFS writer will be created lazily on first write // Use the path from prepare_object_store_with_configs Ok(ParquetWriter::Remote( - arrow_parquet_buffer_writer, + Box::new(arrow_parquet_buffer_writer), None, Box::new(op), object_store_path.to_string(), diff --git a/native/core/src/parquet/parquet_exec.rs b/native/core/src/parquet/parquet_exec.rs index 1308ce97fca..966e64db573 100644 --- a/native/core/src/parquet/parquet_exec.rs +++ b/native/core/src/parquet/parquet_exec.rs @@ -20,7 +20,7 @@ use crate::parquet::eager_page_index_reader_factory::EagerPageIndexReaderFactory use crate::parquet::encryption_support::{CometEncryptionConfig, ENCRYPTION_FACTORY_ID}; use crate::parquet::parquet_support::SparkParquetOptions; use crate::parquet::schema_adapter::SparkPhysicalExprAdapterFactory; -use arrow::datatypes::{Field, SchemaRef}; +use arrow::datatypes::{Field, FieldRef, SchemaRef}; use datafusion::config::{ParquetOptions, TableParquetOptions}; use datafusion::datasource::listing::PartitionedFile; use datafusion::datasource::physical_plan::{ @@ -128,13 +128,14 @@ pub(crate) fn init_datasource_exec( } _ => (Arc::clone(&required_schema), None), }; - let partition_fields: Vec<_> = partition_schema + let partition_fields: Vec = partition_schema .iter() .flat_map(|s| s.fields().iter()) - .map(|f| Arc::new(Field::new(f.name(), f.data_type().clone(), f.is_nullable())) as _) + .map(|f| Arc::new(Field::new(f.name(), f.data_type().clone(), f.is_nullable()))) .collect(); - let table_schema = - TableSchema::from_file_schema(base_schema).with_table_partition_cols(partition_fields); + let table_schema = TableSchema::builder(base_schema) + .with_table_partition_cols(partition_fields) + .build(); let mut parquet_source = ParquetSource::new(table_schema) .with_table_parquet_options(table_parquet_options) diff --git a/native/shuffle/src/writers/shuffle_block_writer.rs b/native/shuffle/src/writers/shuffle_block_writer.rs index 65e7bf4570f..e227d48b37c 100644 --- a/native/shuffle/src/writers/shuffle_block_writer.rs +++ b/native/shuffle/src/writers/shuffle_block_writer.rs @@ -18,7 +18,7 @@ use arrow::array::RecordBatch; use arrow::datatypes::{DataType, Schema, SchemaRef}; use arrow::ipc::writer::{ - write_message, CompressionContext, DictionaryTracker, IpcDataGenerator, IpcWriteOptions, + write_message, DictionaryTracker, IpcDataGenerator, IpcWriteContext, IpcWriteOptions, StreamWriter, }; use arrow::ipc::MetadataVersion; @@ -146,7 +146,7 @@ impl ShuffleBlockWriter { &self, batch: &RecordBatch, out: &mut W, - compression_context: &mut CompressionContext, + compression_context: &mut IpcWriteContext, ) -> Result<()> { let schema_message = match &self.schema_encoding { SchemaEncoding::Fallback(schema) => { @@ -184,7 +184,7 @@ impl ShuffleBlockWriter { &self, batch: &RecordBatch, output: &mut W, - compression_context: &mut CompressionContext, + compression_context: &mut IpcWriteContext, ipc_time: &Time, ) -> Result { if batch.num_rows() == 0 { diff --git a/native/spark-expr/src/array_funcs/array_insert.rs b/native/spark-expr/src/array_funcs/array_insert.rs index e056c108e05..16954f12437 100644 --- a/native/spark-expr/src/array_funcs/array_insert.rs +++ b/native/spark-expr/src/array_funcs/array_insert.rs @@ -266,17 +266,17 @@ fn array_insert( if pos1 <= len + 1 { // In-range insertion (including appending to end) let corrected = pos1 - 1; // 0-based insertion point - mutable_values.extend(0, start, start + corrected); - mutable_values.extend(1, row_index, row_index + 1); - mutable_values.extend(0, start + corrected, end); + mutable_values.try_extend(0, start, start + corrected)?; + mutable_values.try_extend(1, row_index, row_index + 1)?; + mutable_values.try_extend(0, start + corrected, end)?; final_len = len + 1; } else { // Beyond end: pad with nulls then insert let corrected = pos1 - 1; let padding = corrected - len; - mutable_values.extend(0, start, end); - mutable_values.extend_nulls(padding); - mutable_values.extend(1, row_index, row_index + 1); + mutable_values.try_extend(0, start, end)?; + mutable_values.try_extend_nulls(padding)?; + mutable_values.try_extend(1, row_index, row_index + 1)?; final_len = corrected + 1; // equals pos1 } } else { @@ -289,9 +289,9 @@ fn array_insert( // Legacy: -1 behaves like insert before the last element (corrected = len - k) let base_offset = if legacy_mode { 0 } else { 1 }; let corrected = len - k + base_offset; - mutable_values.extend(0, start, start + corrected); - mutable_values.extend(1, row_index, row_index + 1); - mutable_values.extend(0, start + corrected, end); + mutable_values.try_extend(0, start, start + corrected)?; + mutable_values.try_extend(1, row_index, row_index + 1)?; + mutable_values.try_extend(0, start + corrected, end)?; final_len = len + 1; } else { // Negative index beyond the start (Spark-specific behavior): @@ -300,9 +300,9 @@ fn array_insert( let base_offset = if legacy_mode { 1 } else { 0 }; let target_len = k + base_offset; let padding = target_len.saturating_sub(len + 1); - mutable_values.extend(1, row_index, row_index + 1); // insert item first - mutable_values.extend_nulls(padding); // pad nulls - mutable_values.extend(0, start, end); // append original values + mutable_values.try_extend(1, row_index, row_index + 1)?; // insert item first + mutable_values.try_extend_nulls(padding)?; // pad nulls + mutable_values.try_extend(0, start, end)?; // append original values final_len = target_len; } } diff --git a/native/spark-expr/src/array_funcs/array_slice.rs b/native/spark-expr/src/array_funcs/array_slice.rs index e9dc05330be..fcd3b467a6c 100644 --- a/native/spark-expr/src/array_funcs/array_slice.rs +++ b/native/spark-expr/src/array_funcs/array_slice.rs @@ -163,7 +163,7 @@ fn slice_list( } else { let take = std::cmp::min(length_value, arr_len - zero_based_start) as usize; let begin = row_start + zero_based_start as usize; - mutable.extend(0, begin, begin + take); + mutable.try_extend(0, begin, begin + take)?; take }; diff --git a/native/spark-expr/src/array_funcs/arrays_zip.rs b/native/spark-expr/src/array_funcs/arrays_zip.rs index 6f0332d3d86..de4d74bd23d 100644 --- a/native/spark-expr/src/array_funcs/arrays_zip.rs +++ b/native/spark-expr/src/array_funcs/arrays_zip.rs @@ -276,15 +276,15 @@ pub fn arrays_zip_inner(args: &[ArrayRef], names: Vec) -> Result { // Null list entry or None (Null-typed) arg — all nulls. if let Some(builder) = builders[col_idx].as_mut() { - builder.extend_nulls(max_len); + builder.try_extend_nulls(max_len)?; } } } diff --git a/native/spark-expr/src/array_funcs/list_extract.rs b/native/spark-expr/src/array_funcs/list_extract.rs index d68784ca70a..0944abb987f 100644 --- a/native/spark-expr/src/array_funcs/list_extract.rs +++ b/native/spark-expr/src/array_funcs/list_extract.rs @@ -287,10 +287,10 @@ fn list_extract( let len = offset_window[1].as_usize() - start; if list_array.is_null(row) { - mutable.extend_nulls(1); + mutable.try_extend_nulls(1)?; } else if let Some(index) = index { if let Some(i) = adjust_index(index, len)? { - mutable.extend(0, start + i, start + i + 1); + mutable.try_extend(0, start + i, start + i + 1)?; } else if fail_on_error { // Throw appropriate error based on whether this is element_at (one_based=true) // or GetArrayItem (one_based=false) @@ -309,11 +309,11 @@ fn list_extract( }; return Err(error_wrapper(error)); } else { - mutable.extend(1, 0, 1); + mutable.try_extend(1, 0, 1)?; } } else { // index is NULL → result is NULL - mutable.extend_nulls(1); + mutable.try_extend_nulls(1)?; } } diff --git a/native/spark-expr/src/bloom_filter/spark_bit_array.rs b/native/spark-expr/src/bloom_filter/spark_bit_array.rs index 0af1c598b03..b55567402be 100644 --- a/native/spark-expr/src/bloom_filter/spark_bit_array.rs +++ b/native/spark-expr/src/bloom_filter/spark_bit_array.rs @@ -77,7 +77,8 @@ impl SparkBitArray { pub fn merge_be_words(&mut self, incoming: &[u8]) { debug_assert_eq!(self.data.len() * 8, incoming.len()); let mut bit_count: usize = 0; - for (word, chunk) in self.data.iter_mut().zip(incoming.as_chunks::<8>().0) { + let (chunks, _) = incoming.as_chunks::<8>(); + for (word, chunk) in self.data.iter_mut().zip(chunks) { *word |= u64::from_be_bytes(*chunk); bit_count += word.count_ones() as usize; } From 1d92602256afcba500a1e07cf519266a05cf19ab Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Wed, 5 Aug 2026 09:35:01 -0400 Subject: [PATCH 03/16] add spark_sqrt --- native/spark-expr/src/comet_scalar_funcs.rs | 5 ++ native/spark-expr/src/lib.rs | 6 +- native/spark-expr/src/math_funcs/mod.rs | 2 + native/spark-expr/src/math_funcs/sqrt.rs | 90 +++++++++++++++++++ .../apache/comet/serde/QueryPlanSerde.scala | 2 +- .../scala/org/apache/comet/serde/math.scala | 19 +++- 6 files changed, 119 insertions(+), 5 deletions(-) create mode 100644 native/spark-expr/src/math_funcs/sqrt.rs diff --git a/native/spark-expr/src/comet_scalar_funcs.rs b/native/spark-expr/src/comet_scalar_funcs.rs index dcb6b1906ce..2d729c0e7c1 100644 --- a/native/spark-expr/src/comet_scalar_funcs.rs +++ b/native/spark-expr/src/comet_scalar_funcs.rs @@ -23,6 +23,7 @@ use crate::math_funcs::checked_arithmetic::{checked_add, checked_div, checked_mu use crate::math_funcs::log::spark_log; use crate::math_funcs::modulo_expr::spark_modulo; use crate::math_funcs::pow::spark_pow; +use crate::math_funcs::sqrt::spark_sqrt; use crate::{ spark_ceil, spark_day_name, spark_decimal_div, spark_decimal_integral_div, spark_floor, spark_isnan, spark_lpad, spark_make_decimal, spark_month_name, spark_read_side_padding, @@ -213,6 +214,10 @@ pub fn create_comet_physical_fun_with_eval_mode( let func = Arc::new(spark_pow); make_comet_scalar_udf!("pow", func, without data_type) } + "spark_sqrt" => { + let func = Arc::new(spark_sqrt); + make_comet_scalar_udf!("spark_sqrt", func, without data_type) + } "base64" => { let func = Arc::new(crate::string_funcs::spark_base64); make_comet_scalar_udf!("base64", func, without data_type) diff --git a/native/spark-expr/src/lib.rs b/native/spark-expr/src/lib.rs index c396604f7f7..872713042e7 100644 --- a/native/spark-expr/src/lib.rs +++ b/native/spark-expr/src/lib.rs @@ -86,9 +86,9 @@ pub use json_funcs::{FromJson, ToJson}; pub use math_funcs::{ checked_add, checked_div, checked_mul, checked_sub, create_modulo_expr, create_negate_expr, spark_ceil, spark_decimal_div, spark_decimal_integral_div, spark_floor, spark_log, - spark_make_decimal, spark_pow, spark_round, spark_unhex, spark_unscaled_value, CheckOverflow, - DecimalRescaleCheckOverflow, NegativeExpr, NormalizeNaNAndZero, WideDecimalBinaryExpr, - WideDecimalOp, + spark_make_decimal, spark_pow, spark_round, spark_sqrt, spark_unhex, spark_unscaled_value, + CheckOverflow, DecimalRescaleCheckOverflow, NegativeExpr, NormalizeNaNAndZero, + WideDecimalBinaryExpr, WideDecimalOp, }; pub use query_context::{create_query_context_map, QueryContext, QueryContextMap}; pub use string_funcs::*; diff --git a/native/spark-expr/src/math_funcs/mod.rs b/native/spark-expr/src/math_funcs/mod.rs index 56809a01fbc..7a7c6a97539 100644 --- a/native/spark-expr/src/math_funcs/mod.rs +++ b/native/spark-expr/src/math_funcs/mod.rs @@ -26,6 +26,7 @@ pub mod modulo_expr; mod negative; pub(crate) mod pow; mod round; +pub(crate) mod sqrt; pub(crate) mod unhex; mod utils; mod wide_decimal_binary_expr; @@ -41,5 +42,6 @@ pub use modulo_expr::create_modulo_expr; pub use negative::{create_negate_expr, NegativeExpr}; pub use pow::spark_pow; pub use round::spark_round; +pub use sqrt::spark_sqrt; pub use unhex::spark_unhex; pub use wide_decimal_binary_expr::{WideDecimalBinaryExpr, WideDecimalOp}; diff --git a/native/spark-expr/src/math_funcs/sqrt.rs b/native/spark-expr/src/math_funcs/sqrt.rs new file mode 100644 index 00000000000..1397386eb9c --- /dev/null +++ b/native/spark-expr/src/math_funcs/sqrt.rs @@ -0,0 +1,90 @@ +// Licensed to the Apache Software Foundation (ASF) under one +// or more contributor license agreements. See the NOTICE file +// distributed with this work for additional information +// regarding copyright ownership. The ASF licenses this file +// to you under the Apache License, Version 2.0 (the +// "License"); you may not use this file except in compliance +// with the License. You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an +// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +// KIND, either express or implied. See the License for the +// specific language governing permissions and limitations +// under the License. + +use arrow::array::{ArrayRef, AsArray, Float64Array}; +use arrow::datatypes::Float64Type; +use datafusion::common::{DataFusionError, ScalarValue}; +use datafusion::physical_plan::ColumnarValue; +use std::sync::Arc; + +/// Spark-compatible `sqrt`, matching `java.lang.Math.sqrt`: a negative input produces +/// `NaN` rather than an error, unlike DataFusion's own `sqrt`. +pub fn spark_sqrt(args: &[ColumnarValue]) -> Result { + if args.len() != 1 { + return Err(DataFusionError::Internal(format!( + "spark_sqrt requires 1 argument, got {}", + args.len() + ))); + } + + match &args[0] { + ColumnarValue::Array(array) => { + let values = array.as_primitive_opt::().ok_or_else(|| { + DataFusionError::Internal(format!( + "spark_sqrt expected Float64, got {:?}", + array.data_type() + )) + })?; + let result: Float64Array = values.unary(|v| v.sqrt()); + Ok(ColumnarValue::Array(Arc::new(result) as ArrayRef)) + } + ColumnarValue::Scalar(ScalarValue::Float64(v)) => Ok(ColumnarValue::Scalar( + ScalarValue::Float64(v.map(f64::sqrt)), + )), + ColumnarValue::Scalar(other) => Err(DataFusionError::Internal(format!( + "spark_sqrt expected Float64 scalar, got {other:?}", + ))), + } +} + +#[cfg(test)] +mod test { + use super::*; + use arrow::array::{Array, Float64Array}; + + #[test] + fn test_spark_sqrt_negative_is_nan() { + let input = Float64Array::from(vec![Some(4.0), Some(-1.0), Some(0.0), None]); + let result = spark_sqrt(&[ColumnarValue::Array(Arc::new(input))]).unwrap(); + let ColumnarValue::Array(result) = result else { + unreachable!() + }; + let result = result.as_primitive::(); + assert_eq!(result.value(0), 2.0); + assert!(result.value(1).is_nan()); + assert_eq!(result.value(2), 0.0); + assert!(result.is_null(3)); + } + + #[test] + fn test_spark_sqrt_scalar_negative_is_nan() { + let result = + spark_sqrt(&[ColumnarValue::Scalar(ScalarValue::Float64(Some(-1.0)))]).unwrap(); + let ColumnarValue::Scalar(ScalarValue::Float64(Some(result))) = result else { + unreachable!() + }; + assert!(result.is_nan()); + } + + #[test] + fn test_spark_sqrt_scalar_null() { + let result = spark_sqrt(&[ColumnarValue::Scalar(ScalarValue::Float64(None))]).unwrap(); + let ColumnarValue::Scalar(ScalarValue::Float64(None)) = result else { + unreachable!() + }; + } +} diff --git a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala index 6802dfaa646..3953d7f1370 100644 --- a/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala +++ b/spark/src/main/scala/org/apache/comet/serde/QueryPlanSerde.scala @@ -153,7 +153,7 @@ object QueryPlanSerde extends Logging with CometExprShim with CometTypeShim { classOf[Signum] -> CometScalarFunction("signum"), classOf[Sin] -> CometScalarFunction("sin"), classOf[Sinh] -> CometScalarFunction("sinh"), - classOf[Sqrt] -> CometScalarFunction("sqrt"), + classOf[Sqrt] -> CometSqrt, classOf[Subtract] -> CometSubtract, classOf[Tan] -> CometScalarFunction("tan"), classOf[Tanh] -> CometScalarFunction("tanh"), diff --git a/spark/src/main/scala/org/apache/comet/serde/math.scala b/spark/src/main/scala/org/apache/comet/serde/math.scala index a0ea76cc061..c93485eedae 100644 --- a/spark/src/main/scala/org/apache/comet/serde/math.scala +++ b/spark/src/main/scala/org/apache/comet/serde/math.scala @@ -19,7 +19,7 @@ package org.apache.comet.serde -import org.apache.spark.sql.catalyst.expressions.{Abs, Add, Atan2, Attribute, BRound, Ceil, CheckOverflow, Conv, Expression, Floor, Hex, Hypot, If, LessThanOrEqual, Literal, Log, Log10, Log1p, Log2, Logarithm, NaNvl, Pmod, Pow, UnaryPositive, Unhex, WidthBucket} +import org.apache.spark.sql.catalyst.expressions.{Abs, Add, Atan2, Attribute, BRound, Ceil, CheckOverflow, Conv, Expression, Floor, Hex, Hypot, If, LessThanOrEqual, Literal, Log, Log10, Log1p, Log2, Logarithm, NaNvl, Pmod, Pow, Sqrt, UnaryPositive, Unhex, WidthBucket} import org.apache.spark.sql.types.{DecimalType, DoubleType, NumericType} import org.apache.comet.serde.QueryPlanSerde.{exprToProtoInternal, scalarFunctionExprToProto, scalarFunctionExprToProtoWithReturnType, serializeDataType} @@ -216,6 +216,23 @@ object CometPow extends CometExpressionSerde[Pow] { } } +// Uses a custom spark_sqrt UDF because DataFusion's own `sqrt` errors on negative +// input, while Spark's Sqrt (a plain wrapper around java.lang.Math.sqrt) returns NaN. +// spark_sqrt is a Comet-only name with no DataFusion builtin counterpart, so the +// return type must be set explicitly here to skip the session registry lookup that +// scalarFunctionExprToProto would otherwise trigger (see CometLogarithm/spark_log). +object CometSqrt extends CometExpressionSerde[Sqrt] { + override def convert( + expr: Sqrt, + inputs: Seq[Attribute], + binding: Boolean): Option[ExprOuterClass.Expr] = { + val childExpr = exprToProtoInternal(expr.child, inputs, binding) + val optExpr = + scalarFunctionExprToProtoWithReturnType("spark_sqrt", DoubleType, false, childExpr) + optExprWithFallbackReason(optExpr, expr, expr.child) + } +} + sealed trait MathExprBase { protected def nullIfNegative(expression: Expression): Expression = { val zero = Literal.default(expression.dataType) From 4ff5afcb5da49644ac8ac13307805189c7dd743f Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Wed, 5 Aug 2026 11:31:06 -0400 Subject: [PATCH 04/16] try 4g MEMORY_OFFHEAP_SIZE in CometTPCHQuerySuite --- .../test/scala/org/apache/spark/sql/CometTPCHQuerySuite.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spark/src/test/scala/org/apache/spark/sql/CometTPCHQuerySuite.scala b/spark/src/test/scala/org/apache/spark/sql/CometTPCHQuerySuite.scala index 0f942927091..b92ab0d7d94 100644 --- a/spark/src/test/scala/org/apache/spark/sql/CometTPCHQuerySuite.scala +++ b/spark/src/test/scala/org/apache/spark/sql/CometTPCHQuerySuite.scala @@ -91,7 +91,7 @@ class CometTPCHQuerySuite extends QueryTest with TPCBase with ShimCometTPCHQuery conf.set(CometConf.COMET_NATIVE_SCAN_ENABLED.key, "true") conf.set(CometConf.COMET_SHUFFLE_ENABLED.key, "true") conf.set(MEMORY_OFFHEAP_ENABLED.key, "true") - conf.set(MEMORY_OFFHEAP_SIZE.key, "2g") + conf.set(MEMORY_OFFHEAP_SIZE.key, "4g") } protected override def createSparkSession: TestSparkSession = { From bee634f1d695061da5e1ab9d3b244760caf28272 Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Wed, 5 Aug 2026 15:16:23 -0400 Subject: [PATCH 05/16] fix after upmerge --- spark/src/main/scala/org/apache/comet/serde/math.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spark/src/main/scala/org/apache/comet/serde/math.scala b/spark/src/main/scala/org/apache/comet/serde/math.scala index c93485eedae..65e2bf673e9 100644 --- a/spark/src/main/scala/org/apache/comet/serde/math.scala +++ b/spark/src/main/scala/org/apache/comet/serde/math.scala @@ -229,7 +229,7 @@ object CometSqrt extends CometExpressionSerde[Sqrt] { val childExpr = exprToProtoInternal(expr.child, inputs, binding) val optExpr = scalarFunctionExprToProtoWithReturnType("spark_sqrt", DoubleType, false, childExpr) - optExprWithFallbackReason(optExpr, expr, expr.child) + optExpr } } From c495f2cbbac80fd10cede0fb5ab105f1daa45d39 Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Thu, 6 Aug 2026 09:44:22 -0400 Subject: [PATCH 06/16] fix: unwrap CastExpr for pure nested narrowing so DataFusion's leaf-pruning (#24090) applies, closing #4859 --- native/Cargo.lock | 80 +-- native/Cargo.toml | 8 +- native/core/Cargo.toml | 2 +- native/core/src/parquet/schema_adapter.rs | 566 +++++++++++++++++- .../comet/exec/CometNativeReaderSuite.scala | 81 ++- 5 files changed, 688 insertions(+), 49 deletions(-) diff --git a/native/Cargo.lock b/native/Cargo.lock index 2f54b61dac1..6f47ea031a0 100644 --- a/native/Cargo.lock +++ b/native/Cargo.lock @@ -107,9 +107,9 @@ checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android_system_properties" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +checksum = "ae221649c9976a6f6c56ae1facf410f3ddb33cc661c4b7b61020a912d4237fbc" dependencies = [ "libc", ] @@ -1122,9 +1122,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.5" +version = "1.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0aa83c34e62843d924f905e0f5c866eb1dd6545fc4d719e803d9ba6030371fce" +checksum = "76ae7bad254120e9e4c63bafc385310756f90c484eac0e36b8317cf09cb92a77" dependencies = [ "arrayref", "arrayvec", @@ -1849,7 +1849,7 @@ dependencies = [ [[package]] name = "datafusion" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-schema", @@ -1897,7 +1897,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "async-trait", @@ -1921,7 +1921,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "async-trait", @@ -2089,7 +2089,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-ipc", @@ -2115,7 +2115,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "futures", "log", @@ -2125,7 +2125,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "async-compression", @@ -2160,7 +2160,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-ipc", @@ -2183,7 +2183,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "async-trait", @@ -2205,7 +2205,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "async-trait", @@ -2227,7 +2227,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-schema", @@ -2258,12 +2258,12 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" [[package]] name = "datafusion-execution" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-buffer", @@ -2289,7 +2289,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-schema", @@ -2310,7 +2310,7 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2321,7 +2321,7 @@ dependencies = [ [[package]] name = "datafusion-functions" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-buffer", @@ -2352,7 +2352,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2372,7 +2372,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2383,7 +2383,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-ord", @@ -2407,7 +2407,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "async-trait", @@ -2422,7 +2422,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2438,7 +2438,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2447,7 +2447,7 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "datafusion-doc", "quote", @@ -2457,7 +2457,7 @@ dependencies = [ [[package]] name = "datafusion-optimizer" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "chrono", @@ -2475,7 +2475,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2495,7 +2495,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2509,7 +2509,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "chrono", @@ -2525,7 +2525,7 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2543,7 +2543,7 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "arrow-data", @@ -2577,7 +2577,7 @@ dependencies = [ [[package]] name = "datafusion-pruning" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "datafusion-common", @@ -2592,7 +2592,7 @@ dependencies = [ [[package]] name = "datafusion-session" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow-schema", "async-trait", @@ -2606,7 +2606,7 @@ dependencies = [ [[package]] name = "datafusion-spark" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "bigdecimal", @@ -2635,7 +2635,7 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=bc8b1a7a9323f69970fe728c95f3930cfbd5ad41#bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" +source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" dependencies = [ "arrow", "bigdecimal", @@ -7385,18 +7385,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.55" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" +checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.55" +version = "0.8.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" +checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" dependencies = [ "proc-macro2", "quote", diff --git a/native/Cargo.toml b/native/Cargo.toml index 11b4fede824..d86d4b6d7e3 100644 --- a/native/Cargo.toml +++ b/native/Cargo.toml @@ -42,10 +42,10 @@ arrow = { version = "59.1.0", features = ["prettyprint", "ffi", "chrono-tz"] } async-trait = { version = "0.1" } bytes = { version = "1.11.1" } parquet = { version = "59.1.0", default-features = false, features = ["experimental"] } -datafusion = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } -datafusion-datasource = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" } -datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" } -datafusion-spark = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41", features = ["core"] } +datafusion = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } +datafusion-datasource = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11" } +datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11" } +datafusion-spark = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11", features = ["core"] } datafusion-comet-spark-expr = { path = "spark-expr" } datafusion-comet-common = { path = "common" } datafusion-comet-jni-bridge = { path = "jni-bridge" } diff --git a/native/core/Cargo.toml b/native/core/Cargo.toml index e625a2b6b1f..7e5456aaaa3 100644 --- a/native/core/Cargo.toml +++ b/native/core/Cargo.toml @@ -94,7 +94,7 @@ jni = { version = "0.22.4", features = ["invocation"] } lazy_static = "1.4" assertables = "10" hex = "0.4.3" -datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", rev = "bc8b1a7a9323f69970fe728c95f3930cfbd5ad41" } +datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11" } [features] backtrace = ["datafusion/backtrace"] diff --git a/native/core/src/parquet/schema_adapter.rs b/native/core/src/parquet/schema_adapter.rs index c6586b4681e..ab3b9fec30d 100644 --- a/native/core/src/parquet/schema_adapter.rs +++ b/native/core/src/parquet/schema_adapter.rs @@ -18,6 +18,7 @@ use crate::parquet::cast_column::CometCastColumnExpr; use crate::parquet::parquet_support::{spark_parquet_convert, SparkParquetOptions}; use arrow::array::new_empty_array; +use arrow::compute::can_cast_types; use arrow::datatypes::{DataType, Field, FieldRef, Schema, SchemaRef}; use arrow::record_batch::RecordBatch; use datafusion::common::tree_node::{Transformed, TransformedResult, TreeNode}; @@ -76,6 +77,91 @@ fn schema_has_field_ids(schema: &SchemaRef) -> bool { schema.fields().iter().any(|f| parse_field_id(f).is_some()) } +/// Returns true when casting `physical_type` to `target_type` is a *pure* structural +/// narrowing (dropping unrequested struct/list fields, no leaf-level value reinterpretation) +/// that DataFusion's own `datafusion_common::nested_struct::cast_column` already computes +/// identically to Comet's `spark_parquet_convert`. `ColumnarValue::cast_to` (the function a +/// plain, un-swapped `CastExpr` runs at execution time; see +/// datafusion/expr-common/src/columnar_value.rs) routes to that same function whenever +/// `datafusion_common::nested_struct::requires_nested_struct_cast` holds, matching arbitrary +/// struct/list fields by name, null-filling missing target fields, and dropping extra source +/// fields, exactly the shape apache/datafusion-comet#4859 needs pruned. Confirmed +/// byte-identical to `spark_parquet_convert` for the covered shapes by +/// `test::nested_struct_narrowing_cast_matches_datafusion_generic_cast`. +/// +/// When this returns `true`, `replace_with_spark_cast` leaves DataFusion's `CastExpr` in +/// place instead of swapping in `CometCastColumnExpr`, so DataFusion's leaf-pruning +/// (`build_projection_read_plan`'s cast-clipping, apache/datafusion#24090) can see the cast +/// and read only the requested Parquet leaves, instead of falling back to a full-column read +/// because it can't recognize `CometCastColumnExpr`. +/// +/// This is deliberately an allow list, not a deny list: it only recurses through the two +/// container shapes `nested_struct::cast_column` actually implements (Struct, List / +/// LargeList), and requires every leaf it bottoms out at to be an *exact* type match. Pruning +/// (the only case this predicate needs to cover, see apache/datafusion-comet#4859) only +/// changes which struct/list fields are kept, never a leaf's type, so exact-match leaves are +/// sufficient. A deny list here (enumerate every case where Comet's nested cast differs from +/// Arrow's, allow everything else) would fail open: a future addition to +/// `parquet_convert_array` that this predicate does not know to also exclude would silently +/// start producing wrong results instead of just missing an optimization. +fn is_pure_structural_narrowing( + physical_type: &DataType, + target_type: &DataType, + parquet_options: &SparkParquetOptions, +) -> bool { + match (physical_type, target_type) { + (DataType::Struct(source_fields), DataType::Struct(target_fields)) => { + // Comet matches by Parquet field id first when the target carries one; + // DataFusion's generic cast has no field-id concept, so any field-id-bearing + // target field is a potential divergence. + if parquet_options.use_field_id + && target_fields.iter().any(|f| parse_field_id(f).is_some()) + { + return false; + } + target_fields.iter().all(|target_field| { + // Require an *exact* (case-sensitive) name match for every target field. + // `nested_struct::cast_column` always matches by exact name; Comet + // additionally matches case-insensitively when `case_sensitive` is false, + // which could resolve a field DataFusion would instead treat as missing (and + // null-fill). Requiring an exact match sidesteps that divergence regardless + // of the `case_sensitive` setting, and also sidesteps the missing-field + // nullability divergence: DataFusion errors when a non-nullable target field + // is missing from the source, whereas Comet null-fills unconditionally. + source_fields + .iter() + .find(|f| f.name() == target_field.name()) + .is_some_and(|source_field| { + is_pure_structural_narrowing( + source_field.data_type(), + target_field.data_type(), + parquet_options, + ) + }) + }) + } + (DataType::List(source_item), DataType::List(target_item)) + | (DataType::LargeList(source_item), DataType::LargeList(target_item)) => { + is_pure_structural_narrowing( + source_item.data_type(), + target_item.data_type(), + parquet_options, + ) + } + // Map is excluded structurally, not by the equality check below: `replace_with_spark_cast` + // only reaches this predicate after its own top-level `physical_type == target_type` + // check, but `is_pure_structural_narrowing` is tested (and may be called) independently + // of that guard, so an equal Map must not slip through here either. + (DataType::Map(_, _), _) | (_, DataType::Map(_, _)) => false, + // Every other shape, including Dictionary and any leaf-level type change (timestamp + // tz relabeling, `nanosAsLong`, decimal/numeric promotion, and so on), must be an + // exact match. Comet's nested cast handling for those shapes carries Spark-specific + // value or matching semantics that `nested_struct::cast_column` does not replicate, + // and none of them arise from pruning alone. + _ => physical_type == target_type, + } +} + /// Remap physical schema field names to match logical schema field names. Mirrors Spark's /// `clipParquetGroupFields`: prefer ID match for any logical field that carries a /// `PARQUET:field_id`, fall back to case-insensitive name match otherwise. @@ -878,6 +964,39 @@ impl SparkPhysicalExprAdapter { )); } + // Leave DataFusion's `CastExpr` in place for a pure structural narrowing instead + // of swapping in `CometCastColumnExpr` (see `is_pure_structural_narrowing`'s doc + // comment for why that's safe and apache/datafusion-comet#4859 for why it matters). + // + // `ColumnarValue::cast_to` does not always route a `true` result here through + // `nested_struct::cast_column`: for a List wrapping a Struct-free, leaf-unchanged + // interior (e.g. `List(Int32)` differing only in the item field's name or + // nullability, the "read simple ARRAY fields" shape), + // `nested_struct::requires_nested_struct_cast` is false and it falls to Arrow's + // plain `cast_with_options` instead. Both dispatch targets independently implement + // the same "recast values, rewrap with the target field" pattern for List, so they + // agree regardless of which one runs; confirmed by + // `test::list_of_unchanged_leaf_with_differing_item_metadata_matches_columnar_value_cast_to` + // alongside `test::nested_struct_narrowing_cast_matches_datafusion_generic_cast` + // for the Struct-pruning shape that always does route through + // `nested_struct::cast_column`. + if is_pure_structural_narrowing(physical_type, target_type, &self.parquet_options) { + // Not an assertion that `nested_struct::cast_column` specifically runs (it may + // not, see above), only that *some* DataFusion cast path can actually perform + // this pair, so a bug in the predicate surfaces here at plan time instead of + // as an opaque `ArrowError` deep inside a parquet read. + debug_assert!( + datafusion::common::nested_struct::requires_nested_struct_cast( + physical_type, + target_type + ) || can_cast_types(physical_type, target_type), + "is_pure_structural_narrowing({physical_type:?}, {target_type:?}) returned \ + true but neither nested_struct::cast_column nor Arrow's plain cast can \ + perform this pair" + ); + return Ok(Transformed::no(expr)); + } + // Same-shape complex casts, timestamp tz relabel (e.g. Timestamp(us, None) // -> Timestamp(us, Some("UTC")) for INT96 reads), and Timestamp -> Int64 // (Spark's `nanosAsLong`) need spark_parquet_convert: it handles nested @@ -1102,7 +1221,9 @@ impl PhysicalExpr for RejectOnNonEmpty { #[cfg(test)] mod test { use crate::parquet::parquet_support::SparkParquetOptions; - use crate::parquet::schema_adapter::SparkPhysicalExprAdapterFactory; + use crate::parquet::schema_adapter::{ + is_pure_structural_narrowing, SparkPhysicalExprAdapterFactory, + }; use arrow::array::UInt32Array; use arrow::array::{ BinaryArray, Date32Array, Decimal128Array, Float32Array, Float64Array, Int32Array, @@ -1117,12 +1238,13 @@ mod test { use datafusion::datasource::source::DataSourceExec; use datafusion::execution::object_store::ObjectStoreUrl; use datafusion::execution::TaskContext; + use datafusion::physical_expr::PhysicalExpr; use datafusion::physical_plan::ExecutionPlan; use datafusion_comet_spark_expr::test_common::file_util::get_temp_filename; use datafusion_comet_spark_expr::EvalMode; use datafusion_physical_expr_adapter::PhysicalExprAdapterFactory; use futures::StreamExt; - use parquet::arrow::ArrowWriter; + use parquet::arrow::{ArrowWriter, PARQUET_FIELD_ID_META_KEY}; use std::fs::File; use std::sync::Arc; @@ -1775,4 +1897,444 @@ mod test { "Expected duplicate field error, got: {err_msg}" ); } + + /// #4859 investigation: for a pure structural narrowing of a nested column (dropping + /// unrequested struct fields, no leaf-type promotion, no tz relabeling, no field-id + /// matching, case-sensitive), does Comet's `CometCastColumnExpr` (via + /// `spark_parquet_convert`) produce the same result as DataFusion's own + /// `datafusion_common::nested_struct::cast_column`, which is what a plain, un-swapped + /// `CastExpr` would run at execution time (see `ColumnarValue::cast_to` -> + /// `cast_array_by_name` in datafusion/expr-common/src/columnar_value.rs)? If so, that + /// class of cast could be left as DataFusion's own `CastExpr` (like the identity-cast + /// unwrap in #4730) so DataFusion's #24090 leaf-pruning can see it. + #[test] + fn nested_struct_narrowing_cast_matches_datafusion_generic_cast() -> Result<(), DataFusionError> + { + use crate::parquet::parquet_support::spark_parquet_convert; + use arrow::array::{ListArray, StructArray}; + use arrow::buffer::OffsetBuffer; + use arrow::compute::CastOptions; + use arrow::datatypes::Fields; + use datafusion::physical_plan::ColumnarValue; + + // events: array> -> array>, + // mirroring the physical vs. logical (Spark-pruned) schema in the #4859 repro. + let id_array: Arc = + Arc::new(Int64Array::from(vec![1i64, 2, 3, 4])); + let payload_array: Arc = + Arc::new(StringArray::from(vec!["a", "b", "c", "d"])); + let from_struct_fields: Fields = vec![ + Field::new("id", DataType::Int64, true), + Field::new("payload", DataType::Utf8, true), + ] + .into(); + let struct_array = StructArray::new( + from_struct_fields.clone(), + vec![id_array, payload_array], + None, + ); + let from_item_field = Arc::new(Field::new( + "element", + DataType::Struct(from_struct_fields), + true, + )); + let offsets = OffsetBuffer::new(vec![0, 2, 4].into()); + let list_array: Arc = Arc::new(ListArray::new( + Arc::clone(&from_item_field), + offsets, + Arc::new(struct_array), + None, + )); + + let to_struct_fields: Fields = vec![Field::new("id", DataType::Int64, true)].into(); + let to_item_field = Arc::new(Field::new( + "element", + DataType::Struct(to_struct_fields), + true, + )); + let target_type = DataType::List(Arc::clone(&to_item_field)); + + let spark_parquet_options = SparkParquetOptions::new(EvalMode::Legacy, "UTC", false); + let comet_result = spark_parquet_convert( + ColumnarValue::Array(Arc::clone(&list_array)), + &target_type, + &spark_parquet_options, + )?; + let comet_array = match comet_result { + ColumnarValue::Array(a) => a, + _ => panic!("expected array"), + }; + + let df_array = datafusion::common::nested_struct::cast_column( + &list_array, + &target_type, + &CastOptions::default(), + )?; + + assert_eq!( + format!("{comet_array:?}"), + format!("{df_array:?}"), + "Comet's CometCastColumnExpr / spark_parquet_convert and DataFusion's own \ + nested_struct::cast_column disagree for pure struct-narrowing" + ); + Ok(()) + } + + /// #4859 follow-up: `List(Int32)` with an unchanged leaf type but differing item-field + /// metadata (Parquet's inferred "element" name, non-nullable vs. Spark's generic "item" + /// name, nullable) does NOT trigger `requires_nested_struct_cast` (the item type itself, + /// Int32, is not Struct/List), so `ColumnarValue::cast_to` (what a plain `CastExpr` runs + /// at execution time) takes the *other* branch: Arrow's plain `cast_with_options`, not + /// `nested_struct::cast_column`. This is the exact shape from the "read simple ARRAY + /// fields" CometNativeReaderSuite failure. Compares against `ColumnarValue::cast_to` + /// directly (the real call site), not `nested_struct::cast_column`, since that is what + /// actually executes here. + #[test] + fn list_of_unchanged_leaf_with_differing_item_metadata_matches_columnar_value_cast_to( + ) -> Result<(), DataFusionError> { + use crate::parquet::parquet_support::spark_parquet_convert; + use arrow::array::{Int32Array, ListArray}; + use arrow::buffer::OffsetBuffer; + use datafusion::physical_plan::ColumnarValue; + + let values: Arc = Arc::new(Int32Array::from(vec![1, 2, 3, 4])); + let physical_item_field = Arc::new(Field::new("element", DataType::Int32, false)); + let offsets = OffsetBuffer::new(vec![0, 2, 4].into()); + let list_array: Arc = Arc::new(ListArray::new( + Arc::clone(&physical_item_field), + offsets, + values, + None, + )); + + let target_item_field = Arc::new(Field::new("item", DataType::Int32, true)); + let target_type = DataType::List(Arc::clone(&target_item_field)); + + let spark_parquet_options = default_options(); + let comet_result = spark_parquet_convert( + ColumnarValue::Array(Arc::clone(&list_array)), + &target_type, + &spark_parquet_options, + )?; + let comet_array = match comet_result { + ColumnarValue::Array(a) => a, + _ => panic!("expected array"), + }; + + let df_result = + ColumnarValue::Array(Arc::clone(&list_array)).cast_to(&target_type, None)?; + let df_array = match df_result { + ColumnarValue::Array(a) => a, + _ => panic!("expected array"), + }; + + assert_eq!( + format!("{comet_array:?}"), + format!("{df_array:?}"), + "Comet's spark_parquet_convert and DataFusion's ColumnarValue::cast_to disagree \ + for a List whose leaf type is unchanged but whose item field metadata differs" + ); + Ok(()) + } + + fn struct_type(fields: Vec<(&str, DataType)>) -> DataType { + DataType::Struct( + fields + .into_iter() + .map(|(name, dt)| Field::new(name, dt, true)) + .collect(), + ) + } + + fn struct_type_with_field_id(fields: Vec<(&str, DataType, i32)>) -> DataType { + DataType::Struct( + fields + .into_iter() + .map(|(name, dt, id)| { + Field::new(name, dt, true).with_metadata(std::collections::HashMap::from([( + PARQUET_FIELD_ID_META_KEY.to_string(), + id.to_string(), + )])) + }) + .collect(), + ) + } + + fn list_type(item: DataType) -> DataType { + DataType::List(Arc::new(Field::new("element", item, true))) + } + + fn default_options() -> SparkParquetOptions { + SparkParquetOptions::new(EvalMode::Legacy, "UTC", false) + } + + /// Dropping a struct field by exact name, including through nested struct-in-struct and + /// list-of-struct, is the actual #4859 pruning shape and must be allowed. + #[test] + fn is_pure_structural_narrowing_allows_struct_and_list_field_drop() { + let opts = default_options(); + + let physical = struct_type(vec![("id", DataType::Int64), ("payload", DataType::Utf8)]); + let target = struct_type(vec![("id", DataType::Int64)]); + assert!(is_pure_structural_narrowing(&physical, &target, &opts)); + + let physical = list_type(struct_type(vec![ + ("id", DataType::Int64), + ( + "inner", + struct_type(vec![("a", DataType::Int64), ("blob", DataType::Utf8)]), + ), + ])); + let target = list_type(struct_type(vec![( + "inner", + struct_type(vec![("a", DataType::Int64)]), + )])); + assert!(is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// A target field with no exact-name match in the source (here, only a case-insensitive + /// one) must be denied: `nested_struct::cast_column` always matches by exact name and + /// would null-fill this field instead of resolving it the way Comet's case-insensitive + /// matching does. + #[test] + fn is_pure_structural_narrowing_denies_case_insensitive_only_match() { + let opts = default_options(); + let physical = struct_type(vec![("ID", DataType::Int64)]); + let target = struct_type(vec![("id", DataType::Int64)]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// A target field with no name match at all must be denied: DataFusion's + /// `nested_struct::cast_column` null-fills it unconditionally, while Comet's behavior + /// additionally depends on `return_null_struct_if_all_fields_missing` at the struct level. + #[test] + fn is_pure_structural_narrowing_denies_missing_target_field() { + let opts = default_options(); + let physical = struct_type(vec![("id", DataType::Int64)]); + let target = struct_type(vec![("id", DataType::Int64), ("payload", DataType::Utf8)]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// When `use_field_id` is set and the target struct carries Parquet field ids, Comet + /// matches by id first; DataFusion's generic cast has no field-id concept at all, so this + /// must be denied even though the names also happen to match. + #[test] + fn is_pure_structural_narrowing_denies_field_id_matching() { + let mut opts = default_options(); + opts.use_field_id = true; + let physical = struct_type_with_field_id(vec![("id", DataType::Int64, 1)]); + let target = struct_type_with_field_id(vec![("id", DataType::Int64, 1)]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// Map value narrowing has no equivalent in `nested_struct::cast_column` (it has no Map + /// arm), so it must stay on the `CometCastColumnExpr` path regardless of nesting depth. + #[test] + fn is_pure_structural_narrowing_denies_map() { + let opts = default_options(); + let physical = DataType::Map( + Arc::new(Field::new( + "entries", + struct_type(vec![("k", DataType::Int64), ("v", DataType::Utf8)]), + false, + )), + false, + ); + let target = physical.clone(); + // Even a no-op Map "narrowing" (target == physical) must not be routed through this + // predicate; Map is excluded structurally, not by an equality shortcut. + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// A leaf-level type change (timestamp tz relabeling, `nanosAsLong`, decimal promotion, + /// and so on) never arises from pruning alone and must be denied: Comet's nested cast + /// handling for those shapes carries Spark-specific semantics `nested_struct::cast_column` + /// does not replicate. + #[test] + fn is_pure_structural_narrowing_denies_leaf_type_change() { + let opts = default_options(); + let physical = struct_type(vec![("id", DataType::Int32)]); + let target = struct_type(vec![("id", DataType::Int64)]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// NTZ -> LTZ timestamp relabeling (INT96 reads) is a metadata-only reinterpretation + /// Comet applies via a raw `reinterpret_cast`; Arrow's generic timestamp cast performs an + /// actual timezone conversion instead, changing the value. Locked in as its own test + /// because it is the subtlest denial: both sides are "just" Timestamp, so it is exactly + /// the shape a future refactor might accidentally fold into the equality catch-all. + #[test] + fn is_pure_structural_narrowing_denies_timestamp_ntz_to_ltz_relabel() { + use arrow::datatypes::TimeUnit; + let opts = default_options(); + let physical = struct_type(vec![( + "ts", + DataType::Timestamp(TimeUnit::Microsecond, None), + )]); + let target = struct_type(vec![( + "ts", + DataType::Timestamp(TimeUnit::Microsecond, Some("UTC".into())), + )]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// Dictionary-encoded columns get Comet's own dictionary-preserving or + /// dictionary-flattening handling; Arrow's generic cast does not special-case this, so a + /// Dictionary value narrowing must be denied like Map, Timestamp relabeling, and any other + /// leaf-level divergence. + #[test] + fn is_pure_structural_narrowing_denies_dictionary() { + let opts = default_options(); + let physical = struct_type(vec![( + "d", + DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::Utf8)), + )]); + let target = struct_type(vec![( + "d", + DataType::Dictionary(Box::new(DataType::Int32), Box::new(DataType::LargeUtf8)), + )]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// Build a `SparkPhysicalExprAdapter` over a single "events" column and run the real + /// `PhysicalExprAdapter::rewrite` pipeline on a plain `Column` reference to it, mirroring + /// exactly what DataFusion's parquet opener does with the un-adapted projection + /// (`opener/mod.rs`'s `rewriter.rewrite(p)`). Returns the rewritten expression so callers + /// can assert on its concrete type. + fn rewrite_events_column( + physical_type: DataType, + target_type: DataType, + opts: SparkParquetOptions, + ) -> Result, DataFusionError> { + use datafusion::physical_expr::expressions::Column; + + let physical_schema = + Arc::new(Schema::new(vec![Field::new("events", physical_type, true)])); + let logical_schema = Arc::new(Schema::new(vec![Field::new("events", target_type, true)])); + + let factory = SparkPhysicalExprAdapterFactory::new(opts, None); + let adapter = factory.create(Arc::clone(&logical_schema), Arc::clone(&physical_schema))?; + + let col_expr: Arc = Arc::new(Column::new("events", 0)); + adapter.rewrite(col_expr) + } + + /// End-to-end check of the actual wiring, not just the predicate: routing a pure + /// structural narrowing through the real `PhysicalExprAdapter::rewrite` pipeline (the + /// same path DataFusion's opener calls with the plain, un-adapted projection Column) must + /// leave DataFusion's own `CastExpr` in place rather than swapping in + /// `CometCastColumnExpr`, or DataFusion's leaf-pruning (#24090) would never see it. + #[test] + fn replace_with_spark_cast_preserves_cast_expr_for_pure_narrowing( + ) -> Result<(), DataFusionError> { + use crate::parquet::cast_column::CometCastColumnExpr; + use datafusion::physical_expr::expressions::CastExpr; + + let physical_type = struct_type(vec![("id", DataType::Int64), ("payload", DataType::Utf8)]); + let target_type = struct_type(vec![("id", DataType::Int64)]); + let rewritten = rewrite_events_column(physical_type, target_type, default_options())?; + + assert!( + rewritten.downcast_ref::().is_some(), + "expected DataFusion's own CastExpr to survive a pure structural narrowing, got: \ + {rewritten}" + ); + assert!( + rewritten.downcast_ref::().is_none(), + "CometCastColumnExpr should not appear for a pure structural narrowing" + ); + Ok(()) + } + + /// Companion to the previous test: a narrowing the predicate must deny (here, a + /// case-insensitive-only field match) has to still get `CometCastColumnExpr`'s correctness + /// handling through the real pipeline, not just fall through untouched. + #[test] + fn replace_with_spark_cast_wraps_cast_expr_when_not_pure_narrowing( + ) -> Result<(), DataFusionError> { + use crate::parquet::cast_column::CometCastColumnExpr; + + let physical_type = struct_type(vec![("ID", DataType::Int64)]); + let target_type = struct_type(vec![("id", DataType::Int64)]); + let mut opts = default_options(); + opts.case_sensitive = false; + let rewritten = rewrite_events_column(physical_type, target_type, opts)?; + + assert!( + rewritten.downcast_ref::().is_some(), + "expected CometCastColumnExpr for a case-insensitive-only match, got: {rewritten}" + ); + Ok(()) + } + + /// `use_field_id` being enabled session-wide must not deny a struct whose fields simply + /// don't carry Parquet field-id metadata (e.g. a plain Parquet file read with Iceberg + /// field-id matching turned on for the table in general). The field-id bail must key off + /// whether *this* struct's fields actually carry ids, not the config flag alone. + #[test] + fn is_pure_structural_narrowing_allows_use_field_id_enabled_without_field_id_metadata() { + let mut opts = default_options(); + opts.use_field_id = true; + let physical = struct_type(vec![("id", DataType::Int64), ("payload", DataType::Utf8)]); + let target = struct_type(vec![("id", DataType::Int64)]); + assert!(is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// The field-id bail must apply at every nesting level it is reached, not just the + /// outermost struct: an inner struct carrying field ids must deny the whole cast even + /// though the outer struct matches cleanly by name. + #[test] + fn is_pure_structural_narrowing_denies_field_id_matching_at_nested_level() { + let mut opts = default_options(); + opts.use_field_id = true; + let physical = struct_type(vec![( + "outer", + struct_type_with_field_id(vec![("id", DataType::Int64, 1)]), + )]); + let target = struct_type(vec![( + "outer", + struct_type_with_field_id(vec![("id", DataType::Int64, 1)]), + )]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// A target struct with zero field-name overlap against the source is denied, distinct + /// from (and in addition to) the partial-overlap case in + /// `is_pure_structural_narrowing_denies_missing_target_field`: DataFusion's + /// `validate_struct_compatibility` hard-errors on zero overlap, while Comet null-fills + /// every field, governed by `return_null_struct_if_all_fields_missing`. + #[test] + fn is_pure_structural_narrowing_denies_zero_field_overlap() { + let opts = default_options(); + let physical = struct_type(vec![("left", DataType::Int64)]); + let target = struct_type(vec![("right", DataType::Int64)]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// `case_sensitive = true` with an exact-case match must still be allowed: the predicate's + /// exact-name requirement does not depend on the `case_sensitive` flag's value, only on + /// whether the names actually match exactly. + #[test] + fn is_pure_structural_narrowing_allows_case_sensitive_true_with_exact_match() { + let mut opts = default_options(); + opts.case_sensitive = true; + let physical = struct_type(vec![("id", DataType::Int64), ("payload", DataType::Utf8)]); + let target = struct_type(vec![("id", DataType::Int64)]); + assert!(is_pure_structural_narrowing(&physical, &target, &opts)); + } + + /// `case_sensitive = true` with a case-differing name is denied, same as the + /// `case_sensitive = false` case. This is conservative rather than strictly necessary: with + /// `case_sensitive = true`, Comet's own matching would also fail to match "ID" to "id" and + /// null-fill it, agreeing with DataFusion. Denying here only costs a missed optimization, + /// never a wrong result, and keeps the predicate's exact-match rule uniform regardless of + /// `case_sensitive`. + #[test] + fn is_pure_structural_narrowing_denies_case_mismatch_even_when_case_sensitive_true() { + let mut opts = default_options(); + opts.case_sensitive = true; + let physical = struct_type(vec![("ID", DataType::Int64)]); + let target = struct_type(vec![("id", DataType::Int64)]); + assert!(!is_pure_structural_narrowing(&physical, &target, &opts)); + } } diff --git a/spark/src/test/scala/org/apache/comet/exec/CometNativeReaderSuite.scala b/spark/src/test/scala/org/apache/comet/exec/CometNativeReaderSuite.scala index fd7d4ee3f46..4feda01d898 100644 --- a/spark/src/test/scala/org/apache/comet/exec/CometNativeReaderSuite.scala +++ b/spark/src/test/scala/org/apache/comet/exec/CometNativeReaderSuite.scala @@ -29,12 +29,12 @@ import org.apache.parquet.hadoop.api.WriteSupport import org.apache.parquet.hadoop.api.WriteSupport.WriteContext import org.apache.parquet.io.api.RecordConsumer import org.apache.parquet.schema.MessageTypeParser -import org.apache.spark.sql.{CometTestBase, Row} +import org.apache.spark.sql.{CometTestBase, DataFrame, Row} import org.apache.spark.sql.comet.CometNativeScanExec import org.apache.spark.sql.execution.adaptive.AdaptiveSparkPlanHelper import org.apache.spark.sql.functions.{array, col} import org.apache.spark.sql.internal.SQLConf -import org.apache.spark.sql.types.{IntegerType, LongType, NullType, StringType, StructType} +import org.apache.spark.sql.types._ import org.apache.comet.CometConf import org.apache.comet.CometSparkSessionExtensions.isSpark41Plus @@ -794,6 +794,7 @@ class CometNativeReaderSuite extends CometTestBase with AdaptiveSparkPlanHelper class Builder extends ParquetWriter.Builder[RecordConsumer => Unit, Builder](new Path(path)) { override def getWriteSupport(conf: Configuration): WriteSupport[RecordConsumer => Unit] = writeSupport + override def self(): Builder = this } val writer = new Builder().build() @@ -997,6 +998,82 @@ class CometNativeReaderSuite extends CometTestBase with AdaptiveSparkPlanHelper } } } + + /** Runs `df` and returns the summed `bytes_scanned` metric across its native scans. */ + private def bytesScanned(df: DataFrame): Long = { + val (_, cometPlan) = checkSparkAnswerAndOperator(df) + val scans = cometPlan.collect { case n: CometNativeScanExec => n } + assert(scans.nonEmpty, "Expected a CometNativeScanExec") + scans.map(_.metrics("bytes_scanned").value).sum + } + + test("issue #4859: native scan honors pruned nested ReadSchema for array") { + // Regression repro: the native scan pushes only a top-level projection vector into + // DataFusion, so a plain Column("events") ref yields ProjectionMask::roots and the + // whole nested column (all leaves) is read even though Spark's pruned ReadSchema asks + // for a single leaf. Selecting only the small `id` leaf must scan far fewer bytes than + // also selecting the large `payload` leaf; before the fix they are ~equal. + withTempPath { path => + withSQLConf( + SQLConf.LEAF_NODE_DEFAULT_PARALLELISM.key -> "1", + SQLConf.NESTED_SCHEMA_PRUNING_ENABLED.key -> "true") { + // events: array>. `payload` is a distinct, + // high-entropy uuid per row so it dominates the on-disk column size and resists + // compression; `id` is a sequential long that compresses to almost nothing. + spark + .range(0, 20000) + .selectExpr("array(named_struct('id', id, 'payload', uuid())) as events") + .repartition(1) + .write + .mode("overwrite") + .parquet(path.toString) + + val idOnly = + bytesScanned(spark.read.parquet(path.toString).selectExpr("events.id")) + val idAndPayload = + bytesScanned( + spark.read.parquet(path.toString).selectExpr("events.id", "events.payload")) + + assert( + idOnly < idAndPayload / 2, + "native scan read the whole nested column despite pruned ReadSchema " + + s"(bytes_scanned: events.id=$idOnly, events.id+payload=$idAndPayload)") + } + } + } + + test("issue #4859: leaf pruning through array> drops siblings at each level") { + withTempPath { path => + withSQLConf( + SQLConf.LEAF_NODE_DEFAULT_PARALLELISM.key -> "1", + SQLConf.NESTED_SCHEMA_PRUNING_ENABLED.key -> "true") { + // events: array>>. `blob` is the dominant + // high-entropy leaf. Selecting events.inner.a must prune both the top-level + // sibling `id` and the inner sibling `blob`. + spark + .range(0, 20000) + .selectExpr( + "array(named_struct('id', id, 'inner', named_struct('a', id, 'blob', uuid()))) as events") + .repartition(1) + .write + .mode("overwrite") + .parquet(path.toString) + + val aOnly = + bytesScanned(spark.read.parquet(path.toString).selectExpr("events.inner.a")) + val aAndBlob = + bytesScanned( + spark.read + .parquet(path.toString) + .selectExpr("events.inner.a", "events.inner.blob")) + + assert( + aOnly < aAndBlob / 2, + "native scan read unrequested nested leaves through array> " + + s"(bytes_scanned: events.inner.a=$aOnly, events.inner.a+blob=$aAndBlob)") + } + } + } } private class DirectWriteSupport(schema: org.apache.parquet.schema.MessageType) From e65eb6572d5cda3e6655e6366520a6085336cf3a Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Thu, 13 Aug 2026 12:05:10 -0700 Subject: [PATCH 07/16] deps: pin DataFusion to the 55.0.0-rc2 tag, bump arrow/parquet and iceberg-rust Replaces the `apache/datafusion` git rev pin with the `55.0.0-rc2` tag, and moves arrow/parquet to 59.2.0 to match what that tag depends on. object_store stays at 0.13.2, which is also what DataFusion 55 uses. Also switches iceberg/iceberg-storage-opendal off the temporary mbutrovich/iceberg-rust fork and onto apache/iceberg-rust 1b1806cf301dd85455b771d88dc163ef66b6a15b, which builds against arrow/parquet 59.2. Two source changes are needed for DataFusion 55: - `ExecutionPlan::apply_expressions` is now a required trait method. Implemented on all nine Comet execution plans: `ShuffleWriterExec` visits the hash / range-partitioning expressions the way `RepartitionExec` does, `ExpandExec` visits its projections, and the rest hold no expressions of their own. - `parquet::arrow::async_reader::ParquetObjectReader` is deprecated in parquet 59.2. `EagerPageIndexReader` now reads byte ranges straight off the `ObjectStore`, mirroring DataFusion's own `ParquetFileReader`. Behavior is unchanged: `ParquetObjectReader` performed the same `get_range`/`get_ranges` calls inline, and its file-size and footer-size hints only fed its `get_metadata`, which this reader overrides. Bumps the declared `rust-version` to 1.94.0 to match DataFusion 55's MSRV. --- native/Cargo.lock | 249 +++++++++--------- native/Cargo.toml | 18 +- native/core/Cargo.toml | 2 +- native/core/src/debug/debug_batch_stream.rs | 9 + native/core/src/execution/operators/expand.rs | 9 + .../src/execution/operators/iceberg_scan.rs | 10 + .../src/execution/operators/parquet_writer.rs | 10 +- native/core/src/execution/operators/sample.rs | 9 + native/core/src/execution/operators/scan.rs | 8 + .../src/execution/operators/shuffle_scan.rs | 8 + .../eager_page_index_reader_factory.rs | 33 +-- native/shuffle/src/schema_align.rs | 12 +- native/shuffle/src/shuffle_writer.rs | 20 +- 13 files changed, 244 insertions(+), 153 deletions(-) diff --git a/native/Cargo.lock b/native/Cargo.lock index 6f47ea031a0..9b4b40f9cc2 100644 --- a/native/Cargo.lock +++ b/native/Cargo.lock @@ -188,7 +188,7 @@ dependencies = [ "digest 0.10.7", "log", "miniz_oxide", - "num-bigint", + "num-bigint 0.4.8", "quad-rand", "rand 0.9.5", "regex-lite", @@ -232,9 +232,9 @@ checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "arrow" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b952ca5a8046ad741b60f142d6eca4aeebcad615694202bc64c5341f23e32c5b" +checksum = "61d285d16bce7d0be61912f7928342b673067b6b7d7ef6cc179258ba7de1fecf" dependencies = [ "arrow-arith", "arrow-array", @@ -253,9 +253,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a13b8d3008c4e9063c597a08f46446fe3fd5789277127672d6c0bdbb43b1ff" +checksum = "757ef1836251e88222542a7da2623bc1c9cb9e20afefa6db2c41e79991cd91d4" dependencies = [ "arrow-array", "arrow-buffer", @@ -267,9 +267,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9486151b2f0785bafc6fa04fc5c99fcb4495455662e58787ea32eaaed33c4192" +checksum = "bc9a4a4b2b5ecd0e04df03471661cb61f28bed3c7fd50994715129b01b2edb97" dependencies = [ "ahash", "arrow-buffer", @@ -279,6 +279,7 @@ dependencies = [ "chrono-tz", "half", "hashbrown 0.17.1", + "libc", "num-complex", "num-integer", "num-traits", @@ -286,21 +287,21 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4776577a87794bfdf0b4e90e2ea12454fa7738ea2823c4be5b9d1851da7b434" +checksum = "c12b576ef18c1deb80925a248b25ad84f419198d791b8e293fc6aaa60441fe90" dependencies = [ "bytes", "half", - "num-bigint", + "num-bigint 0.5.1", "num-traits", ] [[package]] name = "arrow-cast" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9ad451ce4f98710828a455b96991b8f031deb2e67f5fcad6773f017e4a69c3a" +checksum = "68338a9096a5dc9bc11927c58c43a8526d96bf6abd2012ef6c0c9f505991cc79" dependencies = [ "arrow-array", "arrow-buffer", @@ -309,7 +310,7 @@ dependencies = [ "arrow-schema", "arrow-select", "atoi", - "base64 0.22.1", + "base64 0.23.1", "chrono", "comfy-table", "half", @@ -320,9 +321,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8aa7bf96d6141a7bcca2eed57c7c9767d2a2175281857b8a7b68308992864784" +checksum = "25011b52b346407d497ef0030e12b45e4f2d0cc279efc09c4f3d09106db30e36" dependencies = [ "arrow-array", "arrow-cast", @@ -335,9 +336,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b38fe43e2e8704360f1464e6e8cc4fc381ef02cc4fb0192afa8df1aaa0115c66" +checksum = "723fe4aeed7604e00b9883a465af4ff0a0e6c44c03e41a68c3d1cbc403e0e44d" dependencies = [ "arrow-buffer", "arrow-schema", @@ -348,9 +349,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29dac499fcbc6ba74ee0324057821d381929a48526a3966bd9dffb44aa06d98c" +checksum = "149437b14371f5b9ec60f5ddc751483ae99d7a7072653c0075e5e469156eea7b" dependencies = [ "arrow-array", "arrow-buffer", @@ -358,15 +359,15 @@ dependencies = [ "arrow-schema", "arrow-select", "flatbuffers", - "lz4_flex 0.13.1", + "lz4_flex", "zstd", ] [[package]] name = "arrow-json" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fe05e916ddc50f4c7a363cd69c0ef5894fcee063517e9a0b8582f0c56746af6" +checksum = "f18b9123ccfec418a663f821c9a034af339711678c11ffe00d3ec07da5ff9f7e" dependencies = [ "arrow-array", "arrow-buffer", @@ -389,9 +390,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13dbdc2a9c053c10c7baa6e30faee04a180aa7ce88e471835850ce37abd20b" +checksum = "e6c08dff0686cf23ca4f562803f191ccbeb726dbae6309cd4b4aaf65e0f2c979" dependencies = [ "arrow-array", "arrow-buffer", @@ -402,9 +403,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5a1f8c733d15260b305683472ee8ad89c62cbd706703ca873b90d051b41592" +checksum = "bbec439386df71ad570e6758a946111322b9e9dc8db83b5527321f0b4c9119c2" dependencies = [ "arrow-array", "arrow-buffer", @@ -415,9 +416,9 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9e4969dc350d571766247143ab36a5187d095d3d3690970408bc630d47c69e5" +checksum = "e6fed2ca0d1eade57e811cbe73b98ad50cc08a1183e13b2d2aa43a7df593f40e" dependencies = [ "bitflags 2.13.1", "serde_core", @@ -426,9 +427,9 @@ dependencies = [ [[package]] name = "arrow-select" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "402770dba90865359d98d1ef92ef16e23d75c0cca9c2c880c8a05468b7743bf9" +checksum = "466b19cf75130b891dc1b23a84b343c714c62c64c9c62e365c76aa0ff90a53fb" dependencies = [ "ahash", "arrow-array", @@ -440,9 +441,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2b0afbb8b9016700938291123df30838b89decc3213dba00852021988b170d3" +checksum = "c838a25bb3691e919e0f617616ac51a4ff8517a952e29ca133cf0c22b2ce65b1" dependencies = [ "arrow-array", "arrow-buffer", @@ -1087,7 +1088,7 @@ checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695" dependencies = [ "autocfg", "libm", - "num-bigint", + "num-bigint 0.4.8", "num-integer", "num-traits", "serde", @@ -1848,8 +1849,8 @@ dependencies = [ [[package]] name = "datafusion" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-schema", @@ -1896,8 +1897,8 @@ dependencies = [ [[package]] name = "datafusion-catalog" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "async-trait", @@ -1920,8 +1921,8 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "async-trait", @@ -2053,7 +2054,7 @@ dependencies = [ "itertools 0.15.0", "jni 0.21.1", "log", - "lz4_flex 0.14.0", + "lz4_flex", "parquet", "simd-adler32", "snap", @@ -2088,8 +2089,8 @@ dependencies = [ [[package]] name = "datafusion-common" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-ipc", @@ -2114,8 +2115,8 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "futures", "log", @@ -2124,8 +2125,8 @@ dependencies = [ [[package]] name = "datafusion-datasource" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "async-compression", @@ -2159,8 +2160,8 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-ipc", @@ -2182,8 +2183,8 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "async-trait", @@ -2204,8 +2205,8 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "async-trait", @@ -2226,8 +2227,8 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-schema", @@ -2257,13 +2258,13 @@ dependencies = [ [[package]] name = "datafusion-doc" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" [[package]] name = "datafusion-execution" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-buffer", @@ -2288,8 +2289,8 @@ dependencies = [ [[package]] name = "datafusion-expr" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-schema", @@ -2309,8 +2310,8 @@ dependencies = [ [[package]] name = "datafusion-expr-common" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2320,8 +2321,8 @@ dependencies = [ [[package]] name = "datafusion-functions" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-buffer", @@ -2351,8 +2352,8 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2371,8 +2372,8 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2382,8 +2383,8 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-ord", @@ -2406,8 +2407,8 @@ dependencies = [ [[package]] name = "datafusion-functions-table" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "async-trait", @@ -2421,8 +2422,8 @@ dependencies = [ [[package]] name = "datafusion-functions-window" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2437,8 +2438,8 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2446,8 +2447,8 @@ dependencies = [ [[package]] name = "datafusion-macros" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "datafusion-doc", "quote", @@ -2456,8 +2457,8 @@ dependencies = [ [[package]] name = "datafusion-optimizer" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "chrono", @@ -2474,8 +2475,8 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2494,8 +2495,8 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2508,8 +2509,8 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "chrono", @@ -2524,8 +2525,8 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2542,8 +2543,8 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "arrow-data", @@ -2576,8 +2577,8 @@ dependencies = [ [[package]] name = "datafusion-pruning" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "datafusion-common", @@ -2591,8 +2592,8 @@ dependencies = [ [[package]] name = "datafusion-session" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow-schema", "async-trait", @@ -2605,8 +2606,8 @@ dependencies = [ [[package]] name = "datafusion-spark" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "bigdecimal", @@ -2634,8 +2635,8 @@ dependencies = [ [[package]] name = "datafusion-sql" -version = "54.1.0" -source = "git+https://github.com/apache/datafusion.git?rev=70c26a06716eb552f0fc1d2115957a4089504f11#70c26a06716eb552f0fc1d2115957a4089504f11" +version = "55.0.0" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" dependencies = [ "arrow", "bigdecimal", @@ -3485,7 +3486,7 @@ dependencies = [ [[package]] name = "iceberg" version = "0.10.0" -source = "git+https://github.com/mbutrovich/iceberg-rust?rev=07de8fc8d650f7439b251d57a55613f7de693eb8#07de8fc8d650f7439b251d57a55613f7de693eb8" +source = "git+https://github.com/apache/iceberg-rust?rev=1b1806cf301dd85455b771d88dc163ef66b6a15b#1b1806cf301dd85455b771d88dc163ef66b6a15b" dependencies = [ "aes-gcm", "anyhow", @@ -3542,7 +3543,7 @@ dependencies = [ [[package]] name = "iceberg-storage-opendal" version = "0.10.0" -source = "git+https://github.com/mbutrovich/iceberg-rust?rev=07de8fc8d650f7439b251d57a55613f7de693eb8#07de8fc8d650f7439b251d57a55613f7de693eb8" +source = "git+https://github.com/apache/iceberg-rust?rev=1b1806cf301dd85455b771d88dc163ef66b6a15b#1b1806cf301dd85455b771d88dc163ef66b6a15b" dependencies = [ "anyhow", "async-trait", @@ -4160,15 +4161,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" -[[package]] -name = "lz4_flex" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" -dependencies = [ - "twox-hash", -] - [[package]] name = "lz4_flex" version = "0.14.0" @@ -4307,7 +4299,7 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "num-bigint", + "num-bigint 0.4.8", "num-complex", "num-integer", "num-iter", @@ -4326,6 +4318,16 @@ dependencies = [ "serde", ] +[[package]] +name = "num-bigint" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93e7820bc0a80a0238e650327316f929ba18d5be054b647490a3a6a339f3e7c0" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint-dig" version = "0.8.6" @@ -4392,7 +4394,7 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "num-bigint", + "num-bigint 0.4.8", "num-integer", "num-traits", ] @@ -4791,9 +4793,9 @@ dependencies = [ [[package]] name = "parquet" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5302d4da74d6596a1f11f9928767995b53bca657cbeea1e4e8c5074f8a1157dd" +checksum = "7065842956a20c2a536924ce8e4d9955f7422451511b9eb7500d7bfe5077e59c" dependencies = [ "ahash", "arrow-array", @@ -4802,7 +4804,7 @@ dependencies = [ "arrow-ipc", "arrow-schema", "arrow-select", - "base64 0.22.1", + "base64 0.23.1", "brotli", "bytes", "chrono", @@ -4810,15 +4812,14 @@ dependencies = [ "futures", "half", "hashbrown 0.17.1", - "lz4_flex 0.13.1", - "num-bigint", + "lz4_flex", + "num-bigint 0.5.1", "num-integer", "num-traits", "object_store", "parquet-variant", "parquet-variant-compute", "parquet-variant-json", - "paste", "ring", "seq-macro", "simdutf8", @@ -4830,9 +4831,9 @@ dependencies = [ [[package]] name = "parquet-variant" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57db04c7f8598c9e12c935a7e953a441009189da3f1d504b63c5dc3346a4d59b" +checksum = "3f7e5fff3ed0c07514a7fb8bee3f2ea5a53f36939410ecac4a466620213539a8" dependencies = [ "arrow", "arrow-schema", @@ -4846,9 +4847,9 @@ dependencies = [ [[package]] name = "parquet-variant-compute" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ecebd5a05d4837104ae401977f5d8ad816045e01b367035c416df3c39540613" +checksum = "ba4d3de89dab8d1aaaf601ae8d71bd07ea88cfca9efc1df5815b982c30f631e1" dependencies = [ "arrow", "arrow-schema", @@ -4863,12 +4864,12 @@ dependencies = [ [[package]] name = "parquet-variant-json" -version = "59.1.0" +version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5fc56a025dc3d5537140fc95d80879750fc1aa4324cf2452f3d1471854c2f8d" +checksum = "fb19dfe1bd24c17addd761ba4f7000f615e2fa12525871c7baa835dbb3d7f147" dependencies = [ "arrow-schema", - "base64 0.22.1", + "base64 0.23.1", "chrono", "parquet-variant", "serde_json", diff --git a/native/Cargo.toml b/native/Cargo.toml index d86d4b6d7e3..c24a0c4b0d0 100644 --- a/native/Cargo.toml +++ b/native/Cargo.toml @@ -35,17 +35,17 @@ license = "Apache-2.0" edition = "2021" # Comet uses the same minimum Rust version as DataFusion -rust-version = "1.88" +rust-version = "1.94.0" [workspace.dependencies] -arrow = { version = "59.1.0", features = ["prettyprint", "ffi", "chrono-tz"] } +arrow = { version = "59.2.0", features = ["prettyprint", "ffi", "chrono-tz"] } async-trait = { version = "0.1" } bytes = { version = "1.11.1" } -parquet = { version = "59.1.0", default-features = false, features = ["experimental"] } -datafusion = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } -datafusion-datasource = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11" } -datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11" } -datafusion-spark = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11", features = ["core"] } +parquet = { version = "59.2.0", default-features = false, features = ["experimental"] } +datafusion = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } +datafusion-datasource = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2" } +datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2" } +datafusion-spark = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2", features = ["core"] } datafusion-comet-spark-expr = { path = "spark-expr" } datafusion-comet-common = { path = "common" } datafusion-comet-jni-bridge = { path = "jni-bridge" } @@ -61,8 +61,8 @@ object_store = { version = "0.13.2", features = ["gcp", "azure", "aws", "http"] url = "2.2" aws-config = "1.8.18" aws-credential-types = "1.2.13" -iceberg = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "07de8fc8d650f7439b251d57a55613f7de693eb8" } -iceberg-storage-opendal = { git = "https://github.com/mbutrovich/iceberg-rust", rev = "07de8fc8d650f7439b251d57a55613f7de693eb8", features = ["opendal-memory", "opendal-fs", "opendal-s3", "opendal-gcs", "opendal-oss", "opendal-azdls"] } +iceberg = { git = "https://github.com/apache/iceberg-rust", rev = "1b1806cf301dd85455b771d88dc163ef66b6a15b" } +iceberg-storage-opendal = { git = "https://github.com/apache/iceberg-rust", rev = "1b1806cf301dd85455b771d88dc163ef66b6a15b", features = ["opendal-memory", "opendal-fs", "opendal-s3", "opendal-gcs", "opendal-oss", "opendal-azdls"] } reqsign-core = "3" [profile.release] diff --git a/native/core/Cargo.toml b/native/core/Cargo.toml index 7e5456aaaa3..da8266d3942 100644 --- a/native/core/Cargo.toml +++ b/native/core/Cargo.toml @@ -94,7 +94,7 @@ jni = { version = "0.22.4", features = ["invocation"] } lazy_static = "1.4" assertables = "10" hex = "0.4.3" -datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", rev = "70c26a06716eb552f0fc1d2115957a4089504f11" } +datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2" } [features] backtrace = ["datafusion/backtrace"] diff --git a/native/core/src/debug/debug_batch_stream.rs b/native/core/src/debug/debug_batch_stream.rs index 0c5289b1984..f7ab7228212 100644 --- a/native/core/src/debug/debug_batch_stream.rs +++ b/native/core/src/debug/debug_batch_stream.rs @@ -21,6 +21,7 @@ use std::sync::Arc; use arrow::array::RecordBatch; use arrow::datatypes::{DataType, Schema}; +use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::Result; use datafusion::execution::SendableRecordBatchStream; use datafusion::logical_expr::ColumnarValue; @@ -87,6 +88,14 @@ impl datafusion::physical_plan::ExecutionPlan for DebugExecutionDataStream { fn children(&self) -> Vec<&Arc> { vec![&self.inner] } + /// `inner` is reported as a child, so its expressions are visited by the tree walk. This + /// wrapper owns none of its own. + fn apply_expressions( + &self, + _f: &mut dyn FnMut(&Arc) -> Result, + ) -> Result { + Ok(TreeNodeRecursion::Continue) + } fn with_new_children( self: Arc, children: Vec>, diff --git a/native/core/src/execution/operators/expand.rs b/native/core/src/execution/operators/expand.rs index 28d0c702254..8406529d6fa 100644 --- a/native/core/src/execution/operators/expand.rs +++ b/native/core/src/execution/operators/expand.rs @@ -17,8 +17,10 @@ use arrow::array::RecordBatch; use arrow::datatypes::{Field, Schema, SchemaRef}; +use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::DataFusionError; use datafusion::physical_expr::{EquivalenceProperties, PhysicalExpr}; +use datafusion::physical_plan::apply_expression_roots; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; use datafusion::{ execution::TaskContext, @@ -144,6 +146,13 @@ impl ExecutionPlan for ExpandExec { vec![&self.child] } + fn apply_expressions( + &self, + f: &mut dyn FnMut(&Arc) -> datafusion::common::Result, + ) -> datafusion::common::Result { + apply_expression_roots(self.projections.iter().flatten(), f) + } + fn with_new_children( self: Arc, children: Vec>, diff --git a/native/core/src/execution/operators/iceberg_scan.rs b/native/core/src/execution/operators/iceberg_scan.rs index 4dca1a32983..f9d1ec908ba 100644 --- a/native/core/src/execution/operators/iceberg_scan.rs +++ b/native/core/src/execution/operators/iceberg_scan.rs @@ -25,6 +25,7 @@ use std::task::{Context, Poll}; use arrow::array::{ArrayRef, RecordBatch, RecordBatchOptions}; use arrow::datatypes::SchemaRef; +use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::{DataFusionError, Result as DFResult}; use datafusion::execution::{RecordBatchStream, SendableRecordBatchStream, TaskContext}; use datafusion::physical_expr::expressions::Column; @@ -143,6 +144,15 @@ impl ExecutionPlan for IcebergScanExec { vec![] } + /// The projection expressions are derived per data file inside the stream, not held on the + /// node, so there is nothing to visit here. + fn apply_expressions( + &self, + _f: &mut dyn FnMut(&Arc) -> DFResult, + ) -> DFResult { + Ok(TreeNodeRecursion::Continue) + } + fn with_new_children( self: Arc, _children: Vec>, diff --git a/native/core/src/execution/operators/parquet_writer.rs b/native/core/src/execution/operators/parquet_writer.rs index 7668683b3ae..1c9473e3ce4 100644 --- a/native/core/src/execution/operators/parquet_writer.rs +++ b/native/core/src/execution/operators/parquet_writer.rs @@ -37,9 +37,10 @@ use arrow::datatypes::{Schema, SchemaRef}; use arrow::record_batch::{RecordBatch, RecordBatchOptions}; use async_trait::async_trait; use datafusion::{ + common::tree_node::TreeNodeRecursion, error::{DataFusionError, Result}, execution::context::TaskContext, - physical_expr::EquivalenceProperties, + physical_expr::{EquivalenceProperties, PhysicalExpr}, physical_plan::{ execution_plan::{Boundedness, EmissionType}, metrics::{ExecutionPlanMetricsSet, MetricsSet}, @@ -443,6 +444,13 @@ impl ExecutionPlan for ParquetWriterExec { vec![&self.input] } + fn apply_expressions( + &self, + _f: &mut dyn FnMut(&Arc) -> Result, + ) -> Result { + Ok(TreeNodeRecursion::Continue) + } + fn with_new_children( self: Arc, children: Vec>, diff --git a/native/core/src/execution/operators/sample.rs b/native/core/src/execution/operators/sample.rs index a26bc0d3942..a26d4a5cc30 100644 --- a/native/core/src/execution/operators/sample.rs +++ b/native/core/src/execution/operators/sample.rs @@ -18,8 +18,10 @@ use arrow::array::BooleanArray; use arrow::buffer::BooleanBuffer; use arrow::compute::filter_record_batch; +use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::Result; use datafusion::execution::TaskContext; +use datafusion::physical_expr::PhysicalExpr; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; use datafusion::physical_plan::stream::RecordBatchStreamAdapter; use datafusion::physical_plan::{ @@ -96,6 +98,13 @@ impl ExecutionPlan for SampleExec { vec![&self.input] } + fn apply_expressions( + &self, + _f: &mut dyn FnMut(&Arc) -> Result, + ) -> Result { + Ok(TreeNodeRecursion::Continue) + } + fn with_new_children( self: Arc, children: Vec>, diff --git a/native/core/src/execution/operators/scan.rs b/native/core/src/execution/operators/scan.rs index 409d0642847..f05a703dabc 100644 --- a/native/core/src/execution/operators/scan.rs +++ b/native/core/src/execution/operators/scan.rs @@ -20,6 +20,7 @@ use crate::{errors::CometError, execution::planner::TEST_EXEC_CONTEXT_ID}; use arrow::array::{ArrayRef, RecordBatch, RecordBatchOptions}; use arrow::compute::{cast_with_options, CastOptions}; use arrow::datatypes::{DataType, Field, Schema, SchemaRef}; +use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::{arrow_datafusion_err, DataFusionError, Result as DataFusionResult}; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; use datafusion::physical_plan::metrics::{ @@ -187,6 +188,13 @@ impl ExecutionPlan for ScanExec { vec![] } + fn apply_expressions( + &self, + _f: &mut dyn FnMut(&Arc) -> DataFusionResult, + ) -> DataFusionResult { + Ok(TreeNodeRecursion::Continue) + } + fn with_new_children( self: Arc, _: Vec>, diff --git a/native/core/src/execution/operators/shuffle_scan.rs b/native/core/src/execution/operators/shuffle_scan.rs index e2c4a37e2ad..8f285a5f99d 100644 --- a/native/core/src/execution/operators/shuffle_scan.rs +++ b/native/core/src/execution/operators/shuffle_scan.rs @@ -24,6 +24,7 @@ use crate::{ }; use arrow::array::ArrayRef; use arrow::datatypes::{DataType, Field, Schema, SchemaRef}; +use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::Result as DataFusionResult; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; use datafusion::physical_plan::metrics::{ @@ -229,6 +230,13 @@ impl ExecutionPlan for ShuffleScanExec { vec![] } + fn apply_expressions( + &self, + _f: &mut dyn FnMut(&Arc) -> DataFusionResult, + ) -> DataFusionResult { + Ok(TreeNodeRecursion::Continue) + } + fn with_new_children( self: Arc, _: Vec>, diff --git a/native/core/src/parquet/eager_page_index_reader_factory.rs b/native/core/src/parquet/eager_page_index_reader_factory.rs index d3c854093c5..22a94d04a19 100644 --- a/native/core/src/parquet/eager_page_index_reader_factory.rs +++ b/native/core/src/parquet/eager_page_index_reader_factory.rs @@ -56,10 +56,11 @@ use datafusion::execution::cache::cache_manager::FileMetadataCache; use datafusion::physical_plan::metrics::ExecutionPlanMetricsSet; use datafusion_datasource::PartitionedFile; use futures::future::BoxFuture; -use futures::FutureExt; -use object_store::ObjectStore; +use futures::{FutureExt, TryFutureExt}; +use object_store::{ObjectStore, ObjectStoreExt}; use parquet::arrow::arrow_reader::ArrowReaderOptions; -use parquet::arrow::async_reader::{AsyncFileReader, ParquetObjectReader}; +use parquet::arrow::async_reader::AsyncFileReader; +use parquet::errors::ParquetError; use parquet::file::metadata::{PageIndexPolicy, ParquetMetaData}; use std::fmt::Debug; use std::ops::Range; @@ -93,19 +94,10 @@ impl ParquetFileReaderFactory for EagerPageIndexReaderFactory { partitioned_file.object_meta.location.as_ref(), metrics, ); - let mut inner = ParquetObjectReader::new( - Arc::clone(&self.store), - partitioned_file.object_meta.location.clone(), - ) - .with_file_size(partitioned_file.object_meta.size); - if let Some(hint) = metadata_size_hint { - inner = inner.with_footer_size_hint(hint); - } Ok(Box::new(EagerPageIndexReader { file_metrics, store: Arc::clone(&self.store), - inner, partitioned_file, metadata_cache: Arc::clone(&self.metadata_cache), metadata_size_hint, @@ -113,10 +105,12 @@ impl ParquetFileReaderFactory for EagerPageIndexReaderFactory { } } +/// Reads bytes straight off the `ObjectStore`, the same way DataFusion's own `ParquetFileReader` +/// does, and overrides only the metadata fetch. `ParquetFileReader::new` is crate-private, so the +/// byte-range plumbing is duplicated here rather than delegated. struct EagerPageIndexReader { file_metrics: ParquetFileMetrics, store: Arc, - inner: ParquetObjectReader, partitioned_file: PartitionedFile, metadata_cache: Arc, metadata_size_hint: Option, @@ -126,7 +120,10 @@ impl AsyncFileReader for EagerPageIndexReader { fn get_bytes(&mut self, range: Range) -> BoxFuture<'_, parquet::errors::Result> { let bytes_scanned = range.end - range.start; self.file_metrics.bytes_scanned.add(bytes_scanned as usize); - self.inner.get_bytes(range) + self.store + .get_range(&self.partitioned_file.object_meta.location, range) + .map_err(|e| ParquetError::External(Box::new(e))) + .boxed() } fn get_byte_ranges( @@ -138,7 +135,13 @@ impl AsyncFileReader for EagerPageIndexReader { { let total: u64 = ranges.iter().map(|r| r.end - r.start).sum(); self.file_metrics.bytes_scanned.add(total as usize); - self.inner.get_byte_ranges(ranges) + async move { + self.store + .get_ranges(&self.partitioned_file.object_meta.location, &ranges) + .await + .map_err(|e| ParquetError::External(Box::new(e))) + } + .boxed() } fn get_metadata<'a>( diff --git a/native/shuffle/src/schema_align.rs b/native/shuffle/src/schema_align.rs index 33ce490b69a..e07e92e5820 100644 --- a/native/shuffle/src/schema_align.rs +++ b/native/shuffle/src/schema_align.rs @@ -36,8 +36,9 @@ use arrow::array::RecordBatch; use arrow::datatypes::{Field, Schema, SchemaRef}; +use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::DataFusionError; -use datafusion::physical_expr::EquivalenceProperties; +use datafusion::physical_expr::{EquivalenceProperties, PhysicalExpr}; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; use datafusion::{ execution::TaskContext, @@ -175,6 +176,15 @@ impl ExecutionPlan for SchemaAlignExec { vec![&self.child] } + /// The per-column casts are described by `column_actions`, not by `PhysicalExpr`s, so there is + /// nothing to visit here. + fn apply_expressions( + &self, + _f: &mut dyn FnMut(&Arc) -> datafusion::common::Result, + ) -> datafusion::common::Result { + Ok(TreeNodeRecursion::Continue) + } + fn with_new_children( self: Arc, children: Vec>, diff --git a/native/shuffle/src/shuffle_writer.rs b/native/shuffle/src/shuffle_writer.rs index 46d3b592bc9..a170eae5601 100644 --- a/native/shuffle/src/shuffle_writer.rs +++ b/native/shuffle/src/shuffle_writer.rs @@ -26,9 +26,10 @@ use crate::writers::LocalPartitionWriter; use crate::{CometPartitioning, CompressionCodec, ShuffleBlockWriter}; use async_trait::async_trait; use datafusion::common::exec_datafusion_err; -use datafusion::physical_expr::{EquivalenceProperties, Partitioning}; +use datafusion::common::tree_node::TreeNodeRecursion; +use datafusion::physical_expr::{EquivalenceProperties, Partitioning, PhysicalExpr}; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; -use datafusion::physical_plan::EmptyRecordBatchStream; +use datafusion::physical_plan::{apply_expression_roots, EmptyRecordBatchStream}; use datafusion::{ arrow::datatypes::SchemaRef, error::Result, @@ -144,6 +145,21 @@ impl ExecutionPlan for ShuffleWriterExec { vec![&self.input] } + fn apply_expressions( + &self, + f: &mut dyn FnMut(&Arc) -> Result, + ) -> Result { + match &self.partitioning { + CometPartitioning::Hash(exprs, _) => apply_expression_roots(exprs, f), + CometPartitioning::RangePartitioning(ordering, _, _, _) => { + apply_expression_roots(ordering.iter().map(|sort_expr| &sort_expr.expr), f) + } + CometPartitioning::SinglePartition | CometPartitioning::RoundRobin(_, _) => { + Ok(TreeNodeRecursion::Continue) + } + } + } + fn with_new_children( self: Arc, children: Vec>, From 844436ee1596a97bee97abd3517ce0c17b5b04fa Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Sat, 15 Aug 2026 11:01:03 -0600 Subject: [PATCH 08/16] deps: bump DataFusion to the 55.0.0-rc3 tag rc3 adds five bugfix backports over rc2 (array inner-field fixes in array_slice and array_append/prepend/replace, a TopK row-group re-read fix, and a runtime-pruning fix for live page-index RowSelections) with no API surface changes, so no source changes are needed. iceberg-rust stays on 1b1806cf: the iceberg and iceberg-storage-opendal crates Comet depends on have no datafusion dependency of their own, and their arrow/parquet 59.2 already matches what rc3 pins. --- native/Cargo.lock | 64 +++++++++++++++++++++--------------------- native/Cargo.toml | 8 +++--- native/core/Cargo.toml | 2 +- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/native/Cargo.lock b/native/Cargo.lock index 9b4b40f9cc2..62ed792f039 100644 --- a/native/Cargo.lock +++ b/native/Cargo.lock @@ -1850,7 +1850,7 @@ dependencies = [ [[package]] name = "datafusion" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-schema", @@ -1898,7 +1898,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "async-trait", @@ -1922,7 +1922,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "async-trait", @@ -2090,7 +2090,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-ipc", @@ -2116,7 +2116,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "futures", "log", @@ -2126,7 +2126,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "async-compression", @@ -2161,7 +2161,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-ipc", @@ -2184,7 +2184,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "async-trait", @@ -2206,7 +2206,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "async-trait", @@ -2228,7 +2228,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-schema", @@ -2259,12 +2259,12 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" [[package]] name = "datafusion-execution" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-buffer", @@ -2290,7 +2290,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-schema", @@ -2311,7 +2311,7 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2322,7 +2322,7 @@ dependencies = [ [[package]] name = "datafusion-functions" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-buffer", @@ -2353,7 +2353,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2373,7 +2373,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2384,7 +2384,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-ord", @@ -2408,7 +2408,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "async-trait", @@ -2423,7 +2423,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2439,7 +2439,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2448,7 +2448,7 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "datafusion-doc", "quote", @@ -2458,7 +2458,7 @@ dependencies = [ [[package]] name = "datafusion-optimizer" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "chrono", @@ -2476,7 +2476,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2496,7 +2496,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2510,7 +2510,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "chrono", @@ -2526,7 +2526,7 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2544,7 +2544,7 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "arrow-data", @@ -2578,7 +2578,7 @@ dependencies = [ [[package]] name = "datafusion-pruning" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "datafusion-common", @@ -2593,7 +2593,7 @@ dependencies = [ [[package]] name = "datafusion-session" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow-schema", "async-trait", @@ -2607,7 +2607,7 @@ dependencies = [ [[package]] name = "datafusion-spark" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "bigdecimal", @@ -2636,7 +2636,7 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc2#209fd9406890d97d48c0fc396ce37a5e363270b4" +source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" dependencies = [ "arrow", "bigdecimal", diff --git a/native/Cargo.toml b/native/Cargo.toml index c24a0c4b0d0..d2b76d02297 100644 --- a/native/Cargo.toml +++ b/native/Cargo.toml @@ -42,10 +42,10 @@ arrow = { version = "59.2.0", features = ["prettyprint", "ffi", "chrono-tz"] } async-trait = { version = "0.1" } bytes = { version = "1.11.1" } parquet = { version = "59.2.0", default-features = false, features = ["experimental"] } -datafusion = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } -datafusion-datasource = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2" } -datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2" } -datafusion-spark = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2", features = ["core"] } +datafusion = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } +datafusion-datasource = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" } +datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" } +datafusion-spark = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3", features = ["core"] } datafusion-comet-spark-expr = { path = "spark-expr" } datafusion-comet-common = { path = "common" } datafusion-comet-jni-bridge = { path = "jni-bridge" } diff --git a/native/core/Cargo.toml b/native/core/Cargo.toml index da8266d3942..19a397dfa45 100644 --- a/native/core/Cargo.toml +++ b/native/core/Cargo.toml @@ -94,7 +94,7 @@ jni = { version = "0.22.4", features = ["invocation"] } lazy_static = "1.4" assertables = "10" hex = "0.4.3" -datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc2" } +datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" } [features] backtrace = ["datafusion/backtrace"] From 776bdca11af6c4d046fef7e6d8b407973c93ad0d Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Tue, 4 Aug 2026 18:31:15 -0400 Subject: [PATCH 09/16] bump to datafusion apache/main latest commit, use temp iceberg-rust --- native/Cargo.toml | 8 ++++---- native/core/Cargo.toml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/native/Cargo.toml b/native/Cargo.toml index d2b76d02297..e62147e1a58 100644 --- a/native/Cargo.toml +++ b/native/Cargo.toml @@ -42,10 +42,10 @@ arrow = { version = "59.2.0", features = ["prettyprint", "ffi", "chrono-tz"] } async-trait = { version = "0.1" } bytes = { version = "1.11.1" } parquet = { version = "59.2.0", default-features = false, features = ["experimental"] } -datafusion = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } -datafusion-datasource = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" } -datafusion-physical-expr-adapter = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" } -datafusion-spark = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3", features = ["core"] } +datafusion = { version = "55.0.0", default-features = false, features = ["unicode_expressions", "crypto_expressions", "nested_expressions", "parquet"] } +datafusion-datasource = { version = "55.0.0" } +datafusion-physical-expr-adapter = { version = "55.0.0" } +datafusion-spark = { version = "55.0.0", features = ["core"] } datafusion-comet-spark-expr = { path = "spark-expr" } datafusion-comet-common = { path = "common" } datafusion-comet-jni-bridge = { path = "jni-bridge" } diff --git a/native/core/Cargo.toml b/native/core/Cargo.toml index 19a397dfa45..108665082c3 100644 --- a/native/core/Cargo.toml +++ b/native/core/Cargo.toml @@ -94,7 +94,7 @@ jni = { version = "0.22.4", features = ["invocation"] } lazy_static = "1.4" assertables = "10" hex = "0.4.3" -datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" } +datafusion-functions-nested = { version = "55.0.0" } [features] backtrace = ["datafusion/backtrace"] From ac55a3df9b8d51e6891ae2cc67b50829c7b31b49 Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Tue, 4 Aug 2026 19:39:18 -0400 Subject: [PATCH 10/16] fix clippy, bump iceberg-rust commit and opendal deps --- native/shuffle/src/writers/shuffle_block_writer.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/native/shuffle/src/writers/shuffle_block_writer.rs b/native/shuffle/src/writers/shuffle_block_writer.rs index e227d48b37c..0ef7a4521ed 100644 --- a/native/shuffle/src/writers/shuffle_block_writer.rs +++ b/native/shuffle/src/writers/shuffle_block_writer.rs @@ -164,6 +164,7 @@ impl ShuffleBlockWriter { // Fast path: reuse the pre-encoded schema message and write the record batch manually. let data_gen = IpcDataGenerator::default(); let mut dictionary_tracker = DictionaryTracker::new(true); + let mut compression_context = IpcWriteContext::default(); let (encoded_dictionaries, encoded_batch) = data_gen.encode( batch, &mut dictionary_tracker, From e267b8fe7c0fb2844030e200be36233452fc8ead Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Wed, 5 Aug 2026 09:35:01 -0400 Subject: [PATCH 11/16] add spark_sqrt --- .../scala/org/apache/comet/serde/math.scala | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/spark/src/main/scala/org/apache/comet/serde/math.scala b/spark/src/main/scala/org/apache/comet/serde/math.scala index 65e2bf673e9..f8af506a7bc 100644 --- a/spark/src/main/scala/org/apache/comet/serde/math.scala +++ b/spark/src/main/scala/org/apache/comet/serde/math.scala @@ -233,6 +233,23 @@ object CometSqrt extends CometExpressionSerde[Sqrt] { } } +// Uses a custom spark_sqrt UDF because DataFusion's own `sqrt` errors on negative +// input, while Spark's Sqrt (a plain wrapper around java.lang.Math.sqrt) returns NaN. +// spark_sqrt is a Comet-only name with no DataFusion builtin counterpart, so the +// return type must be set explicitly here to skip the session registry lookup that +// scalarFunctionExprToProto would otherwise trigger (see CometLogarithm/spark_log). +object CometSqrt extends CometExpressionSerde[Sqrt] { + override def convert( + expr: Sqrt, + inputs: Seq[Attribute], + binding: Boolean): Option[ExprOuterClass.Expr] = { + val childExpr = exprToProtoInternal(expr.child, inputs, binding) + val optExpr = + scalarFunctionExprToProtoWithReturnType("spark_sqrt", DoubleType, false, childExpr) + optExprWithFallbackReason(optExpr, expr, expr.child) + } +} + sealed trait MathExprBase { protected def nullIfNegative(expression: Expression): Expression = { val zero = Literal.default(expression.dataType) From 2d2022b6222a18ea8f8672cf9d43ef4eba97b1e3 Mon Sep 17 00:00:00 2001 From: Matt Butrovich Date: Wed, 5 Aug 2026 15:16:23 -0400 Subject: [PATCH 12/16] fix after upmerge --- spark/src/main/scala/org/apache/comet/serde/math.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spark/src/main/scala/org/apache/comet/serde/math.scala b/spark/src/main/scala/org/apache/comet/serde/math.scala index f8af506a7bc..70d36d31d4c 100644 --- a/spark/src/main/scala/org/apache/comet/serde/math.scala +++ b/spark/src/main/scala/org/apache/comet/serde/math.scala @@ -246,7 +246,7 @@ object CometSqrt extends CometExpressionSerde[Sqrt] { val childExpr = exprToProtoInternal(expr.child, inputs, binding) val optExpr = scalarFunctionExprToProtoWithReturnType("spark_sqrt", DoubleType, false, childExpr) - optExprWithFallbackReason(optExpr, expr, expr.child) + optExpr } } From e53966d394ff9892ec67a823949f0df3f2e942ce Mon Sep 17 00:00:00 2001 From: Andy Grove Date: Thu, 13 Aug 2026 12:05:10 -0700 Subject: [PATCH 13/16] deps: pin DataFusion to the 55.0.0-rc2 tag, bump arrow/parquet and iceberg-rust Replaces the `apache/datafusion` git rev pin with the `55.0.0-rc2` tag, and moves arrow/parquet to 59.2.0 to match what that tag depends on. object_store stays at 0.13.2, which is also what DataFusion 55 uses. Also switches iceberg/iceberg-storage-opendal off the temporary mbutrovich/iceberg-rust fork and onto apache/iceberg-rust 1b1806cf301dd85455b771d88dc163ef66b6a15b, which builds against arrow/parquet 59.2. Two source changes are needed for DataFusion 55: - `ExecutionPlan::apply_expressions` is now a required trait method. Implemented on all nine Comet execution plans: `ShuffleWriterExec` visits the hash / range-partitioning expressions the way `RepartitionExec` does, `ExpandExec` visits its projections, and the rest hold no expressions of their own. - `parquet::arrow::async_reader::ParquetObjectReader` is deprecated in parquet 59.2. `EagerPageIndexReader` now reads byte ranges straight off the `ObjectStore`, mirroring DataFusion's own `ParquetFileReader`. Behavior is unchanged: `ParquetObjectReader` performed the same `get_range`/`get_ranges` calls inline, and its file-size and footer-size hints only fed its `get_metadata`, which this reader overrides. Bumps the declared `rust-version` to 1.94.0 to match DataFusion 55's MSRV. --- native/core/src/execution/operators/expand.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/native/core/src/execution/operators/expand.rs b/native/core/src/execution/operators/expand.rs index 8406529d6fa..72112238e38 100644 --- a/native/core/src/execution/operators/expand.rs +++ b/native/core/src/execution/operators/expand.rs @@ -15,8 +15,8 @@ // specific language governing permissions and limitations // under the License. -use arrow::array::RecordBatch; -use arrow::datatypes::{Field, Schema, SchemaRef}; +use arrow::array::{RecordBatch, RecordBatchOptions}; +use arrow::datatypes::SchemaRef; use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::DataFusionError; use datafusion::physical_expr::{EquivalenceProperties, PhysicalExpr}; From b60bd4078cd755028ff01fe16c15b3b57531be07 Mon Sep 17 00:00:00 2001 From: comphead Date: Tue, 25 Aug 2026 14:26:40 -0700 Subject: [PATCH 14/16] df55 --- native/Cargo.lock | 1673 +++++++++++++---- native/core/src/execution/operators/expand.rs | 4 +- .../src/execution/operators/shuffle_scan.rs | 6 +- native/shuffle/benches/shuffle_writer.rs | 6 +- native/shuffle/src/shuffle_writer.rs | 6 +- native/shuffle/src/spark_unsafe/row.rs | 4 +- .../shuffle/src/writers/buf_batch_writer.rs | 18 +- native/shuffle/src/writers/local/spill.rs | 8 +- .../src/writers/shuffle_block_writer.rs | 1 - 9 files changed, 1327 insertions(+), 399 deletions(-) diff --git a/native/Cargo.lock b/native/Cargo.lock index 62ed792f039..8d04ecc7067 100644 --- a/native/Cargo.lock +++ b/native/Cargo.lock @@ -230,25 +230,60 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" +[[package]] +name = "arrow" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6cfdd0833e32a9874d2b55089333ad310c0be208aafa277385ce2461dec90be3" +dependencies = [ + "arrow-arith 58.4.0", + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-cast 58.4.0", + "arrow-csv 58.4.0", + "arrow-data 58.4.0", + "arrow-ipc 58.4.0", + "arrow-json 58.4.0", + "arrow-ord 58.4.0", + "arrow-row 58.4.0", + "arrow-schema 58.4.0", + "arrow-select 58.4.0", + "arrow-string 58.4.0", +] + [[package]] name = "arrow" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61d285d16bce7d0be61912f7928342b673067b6b7d7ef6cc179258ba7de1fecf" dependencies = [ - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-csv", - "arrow-data", - "arrow-ipc", - "arrow-json", - "arrow-ord", - "arrow-row", - "arrow-schema", - "arrow-select", - "arrow-string", + "arrow-arith 59.2.0", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-cast 59.2.0", + "arrow-csv 59.2.0", + "arrow-data 59.2.0", + "arrow-ipc 59.2.0", + "arrow-json 59.2.0", + "arrow-ord 59.2.0", + "arrow-row 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", + "arrow-string 59.2.0", +] + +[[package]] +name = "arrow-arith" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a41203398f0eaa6f7ec8e62c0da742a21abf282c148fc157f6c35c90e29981a" +dependencies = [ + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-schema 58.4.0", + "chrono", + "num-traits", ] [[package]] @@ -257,11 +292,30 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "757ef1836251e88222542a7da2623bc1c9cb9e20afefa6db2c41e79991cd91d4" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-schema 59.2.0", + "chrono", + "num-traits", +] + +[[package]] +name = "arrow-array" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae33dad492b7df00a217563a7b0ef2874df68a0deea1b1a3acf628152f7f7a69" +dependencies = [ + "ahash", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-schema 58.4.0", "chrono", + "chrono-tz", + "half", + "hashbrown 0.17.1", + "num-complex", + "num-integer", "num-traits", ] @@ -272,9 +326,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc9a4a4b2b5ecd0e04df03471661cb61f28bed3c7fd50994715129b01b2edb97" dependencies = [ "ahash", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-schema 59.2.0", "chrono", "chrono-tz", "half", @@ -285,6 +339,18 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arrow-buffer" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9552f96391c005e6ab449fa941420935e7e062489b12b8b1b08879b2163f5b5" +dependencies = [ + "bytes", + "half", + "num-bigint 0.4.8", + "num-traits", +] + [[package]] name = "arrow-buffer" version = "59.2.0" @@ -297,18 +363,40 @@ dependencies = [ "num-traits", ] +[[package]] +name = "arrow-cast" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a8a327c9649f30d8406995f27642b68df354713cca3baaaf100f076f18d5f34" +dependencies = [ + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-ord 58.4.0", + "arrow-schema 58.4.0", + "arrow-select 58.4.0", + "atoi", + "base64 0.22.1", + "chrono", + "comfy-table", + "half", + "lexical-core", + "num-traits", + "ryu", +] + [[package]] name = "arrow-cast" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68338a9096a5dc9bc11927c58c43a8526d96bf6abd2012ef6c0c9f505991cc79" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-ord", - "arrow-schema", - "arrow-select", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-ord 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", "atoi", "base64 0.23.1", "chrono", @@ -319,62 +407,131 @@ dependencies = [ "ryu", ] +[[package]] +name = "arrow-csv" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "af0dd6d90d1955e9f9a014c1e563ee8aeffc21909085d25623e1da44d96eca26" +dependencies = [ + "arrow-array 58.4.0", + "arrow-cast 58.4.0", + "arrow-schema 58.4.0", + "chrono", + "csv", + "csv-core", + "regex", +] + [[package]] name = "arrow-csv" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25011b52b346407d497ef0030e12b45e4f2d0cc279efc09c4f3d09106db30e36" dependencies = [ - "arrow-array", - "arrow-cast", - "arrow-schema", + "arrow-array 59.2.0", + "arrow-cast 59.2.0", + "arrow-schema 59.2.0", "chrono", "csv", "csv-core", "regex", ] +[[package]] +name = "arrow-data" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b24852db04738907e06c04ea61e42fe7fda962a34513022dc0d0e754fb7976b" +dependencies = [ + "arrow-buffer 58.4.0", + "arrow-schema 58.4.0", + "half", + "num-integer", + "num-traits", +] + [[package]] name = "arrow-data" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "723fe4aeed7604e00b9883a465af4ff0a0e6c44c03e41a68c3d1cbc403e0e44d" dependencies = [ - "arrow-buffer", - "arrow-schema", + "arrow-buffer 59.2.0", + "arrow-schema 59.2.0", "half", "num-integer", "num-traits", ] +[[package]] +name = "arrow-ipc" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29a908a11fcfb3fb2f6730f4ac15e367bc644e419155e96238f68cf3adde572b" +dependencies = [ + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-schema 58.4.0", + "arrow-select 58.4.0", + "flatbuffers", + "lz4_flex 0.13.1", + "zstd", +] + [[package]] name = "arrow-ipc" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "149437b14371f5b9ec60f5ddc751483ae99d7a7072653c0075e5e469156eea7b" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", "flatbuffers", - "lz4_flex", + "lz4_flex 0.14.0", "zstd", ] +[[package]] +name = "arrow-json" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8a96aed3931c076adee39ec2a40d8219fc7f09e79bcdaca1df16272993e1e14" +dependencies = [ + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-cast 58.4.0", + "arrow-ord 58.4.0", + "arrow-schema 58.4.0", + "arrow-select 58.4.0", + "chrono", + "half", + "indexmap 2.14.0", + "itoa", + "lexical-core", + "memchr", + "num-traits", + "ryu", + "serde_core", + "serde_json", + "simdutf8", +] + [[package]] name = "arrow-json" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f18b9123ccfec418a663f821c9a034af339711678c11ffe00d3ec07da5ff9f7e" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-ord", - "arrow-schema", - "arrow-select", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-cast 59.2.0", + "arrow-ord 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", "chrono", "half", "indexmap 2.14.0", @@ -388,17 +545,43 @@ dependencies = [ "simdutf8", ] +[[package]] +name = "arrow-ord" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63a083ec750f5c043f02946b4baf05fcdbb55f4560a3277055caca5cc99f3eb0" +dependencies = [ + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-schema 58.4.0", + "arrow-select 58.4.0", +] + [[package]] name = "arrow-ord" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c08dff0686cf23ca4f562803f191ccbeb726dbae6309cd4b4aaf65e0f2c979" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", +] + +[[package]] +name = "arrow-row" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "514ba0ef0d4c5896202dae736251ce415abb43a950bed570fb7981b8716c0e4c" +dependencies = [ + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-schema 58.4.0", + "half", ] [[package]] @@ -407,13 +590,23 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbec439386df71ad570e6758a946111322b9e9dc8db83b5527321f0b4c9119c2" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-schema 59.2.0", "half", ] +[[package]] +name = "arrow-schema" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ca356ad6425cecb6eb7b28e4f659f1ee7880fbb1a16127de7dd62901efee9e" +dependencies = [ + "serde_core", + "serde_json", +] + [[package]] name = "arrow-schema" version = "59.2.0" @@ -425,6 +618,20 @@ dependencies = [ "serde_json", ] +[[package]] +name = "arrow-select" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c58da39eb3d8350ad4a549e5c2bc49284dac554016c69829310350f1731b0aad" +dependencies = [ + "ahash", + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-schema 58.4.0", + "num-traits", +] + [[package]] name = "arrow-select" version = "59.2.0" @@ -432,11 +639,28 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "466b19cf75130b891dc1b23a84b343c714c62c64c9c62e365c76aa0ff90a53fb" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-schema 59.2.0", + "num-traits", +] + +[[package]] +name = "arrow-string" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6789b388467525e3271326b6b4915666ecfdf5142aef09779445c954b67543c" +dependencies = [ + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-schema 58.4.0", + "arrow-select 58.4.0", + "memchr", "num-traits", + "regex", + "regex-syntax", ] [[package]] @@ -445,11 +669,11 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c838a25bb3691e919e0f617616ac51a4ff8517a952e29ca133cf0c22b2ce65b1" dependencies = [ - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-schema", - "arrow-select", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", "memchr", "num-traits", "regex", @@ -1471,6 +1695,14 @@ dependencies = [ "memchr", ] +[[package]] +name = "comet-contrib-delta" +version = "0.18.0" +dependencies = [ + "datafusion 54.1.0", + "datafusion-comet-proto", +] + [[package]] name = "comfy-table" version = "7.2.2" @@ -1847,39 +2079,86 @@ dependencies = [ "parking_lot_core", ] +[[package]] +name = "datafusion" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "754ef4e8f073922a26f5b23133b9db4829342362b09be0bc94309cf261c2f098" +dependencies = [ + "arrow 58.4.0", + "arrow-schema 58.4.0", + "async-trait", + "chrono", + "datafusion-catalog 54.1.0", + "datafusion-catalog-listing 54.1.0", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-datasource-arrow 54.1.0", + "datafusion-datasource-csv 54.1.0", + "datafusion-datasource-json 54.1.0", + "datafusion-datasource-parquet 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-functions 54.1.0", + "datafusion-functions-aggregate 54.1.0", + "datafusion-functions-table 54.1.0", + "datafusion-functions-window 54.1.0", + "datafusion-optimizer 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-adapter 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-optimizer 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-session 54.1.0", + "futures", + "indexmap 2.14.0", + "itertools 0.14.0", + "log", + "object_store", + "parking_lot", + "parquet 58.4.0", + "tempfile", + "tokio", + "url", + "uuid", +] + [[package]] name = "datafusion" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96f76f0167ed0842b29a3d1e41be3c034c0a46409a3a703cc4cc84ee8c24abf4" dependencies = [ - "arrow", - "arrow-schema", + "arrow 59.2.0", + "arrow-schema 59.2.0", "async-trait", "chrono", - "datafusion-catalog", - "datafusion-catalog-listing", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-datasource-arrow", - "datafusion-datasource-csv", - "datafusion-datasource-json", - "datafusion-datasource-parquet", - "datafusion-execution", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-functions", - "datafusion-functions-aggregate", + "datafusion-catalog 55.0.0", + "datafusion-catalog-listing 55.0.0", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-datasource-arrow 55.0.0", + "datafusion-datasource-csv 55.0.0", + "datafusion-datasource-json 55.0.0", + "datafusion-datasource-parquet 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-functions 55.0.0", + "datafusion-functions-aggregate 55.0.0", "datafusion-functions-nested", - "datafusion-functions-table", - "datafusion-functions-window", - "datafusion-optimizer", - "datafusion-physical-expr", - "datafusion-physical-expr-adapter", - "datafusion-physical-expr-common", - "datafusion-physical-optimizer", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-functions-table 55.0.0", + "datafusion-functions-window 55.0.0", + "datafusion-optimizer 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-adapter 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-optimizer 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-session 55.0.0", "datafusion-sql", "futures", "indexmap 2.14.0", @@ -1887,7 +2166,7 @@ dependencies = [ "log", "object_store", "parking_lot", - "parquet", + "parquet 59.2.0", "sqlparser", "tempfile", "tokio", @@ -1895,22 +2174,48 @@ dependencies = [ "uuid", ] +[[package]] +name = "datafusion-catalog" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06afd1e38dd27bbb1258685a1fc6524df6aff4e07b25b393a47de59635178d99" +dependencies = [ + "arrow 58.4.0", + "async-trait", + "dashmap", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-session 54.1.0", + "futures", + "itertools 0.14.0", + "log", + "object_store", + "parking_lot", + "tokio", +] + [[package]] name = "datafusion-catalog" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d79ec3460f6ed5c58f9b3f2d873fbc77748b82653bff1b4cdaf06de33bb4e05f" dependencies = [ - "arrow", + "arrow 59.2.0", "async-trait", "dashmap", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-session 55.0.0", "futures", "itertools 0.15.0", "log", @@ -1919,22 +2224,46 @@ dependencies = [ "tokio", ] +[[package]] +name = "datafusion-catalog-listing" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f0668fb32c12065ec242be0e5b4bc62bd7a06a0be3ecd83791ef877e4be67e02" +dependencies = [ + "arrow 58.4.0", + "async-trait", + "datafusion-catalog 54.1.0", + "datafusion-common 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-adapter 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "futures", + "itertools 0.14.0", + "log", + "object_store", +] + [[package]] name = "datafusion-catalog-listing" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b48cef241e2efcfd496fe05ae4d0d5de20793451862faefe406c397a467e12d4" dependencies = [ - "arrow", + "arrow 59.2.0", "async-trait", - "datafusion-catalog", - "datafusion-common", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-adapter", - "datafusion-physical-expr-common", - "datafusion-physical-plan", + "datafusion-catalog 55.0.0", + "datafusion-common 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-adapter 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", "futures", "itertools 0.15.0", "log", @@ -1946,22 +2275,23 @@ dependencies = [ name = "datafusion-comet" version = "1.1.0" dependencies = [ - "arrow", + "arrow 59.2.0", "assertables", "async-trait", "aws-config", "aws-credential-types", "bytes", + "comet-contrib-delta", "criterion", - "datafusion", + "datafusion 55.0.0", "datafusion-comet-common", "datafusion-comet-jni-bridge", "datafusion-comet-proto", "datafusion-comet-shuffle", "datafusion-comet-spark-expr", - "datafusion-datasource", + "datafusion-datasource 55.0.0", "datafusion-functions-nested", - "datafusion-physical-expr-adapter", + "datafusion-physical-expr-adapter 55.0.0", "datafusion-spark", "futures", "hdfs-sys", @@ -1981,7 +2311,7 @@ dependencies = [ "once_cell", "opendal", "parking_lot", - "parquet", + "parquet 59.2.0", "paste", "pprof", "procfs", @@ -2002,8 +2332,8 @@ dependencies = [ name = "datafusion-comet-common" version = "1.1.0" dependencies = [ - "arrow", - "datafusion", + "arrow 59.2.0", + "datafusion 55.0.0", "serde", "serde_json", "thiserror 2.0.19", @@ -2013,14 +2343,14 @@ dependencies = [ name = "datafusion-comet-jni-bridge" version = "1.1.0" dependencies = [ - "arrow", + "arrow 59.2.0", "assertables", - "datafusion", + "datafusion 55.0.0", "datafusion-comet-common", "jni 0.22.4", "lazy_static", "once_cell", - "parquet", + "parquet 59.2.0", "paste", "prost", "regex", @@ -2039,14 +2369,14 @@ dependencies = [ name = "datafusion-comet-shuffle" version = "1.1.0" dependencies = [ - "arrow", + "arrow 59.2.0", "async-trait", "bytes", "clap", "crc32c", "crc32fast", "criterion", - "datafusion", + "datafusion 55.0.0", "datafusion-comet-common", "datafusion-comet-jni-bridge", "datafusion-comet-spark-expr", @@ -2054,8 +2384,8 @@ dependencies = [ "itertools 0.15.0", "jni 0.21.1", "log", - "lz4_flex", - "parquet", + "lz4_flex 0.14.0", + "parquet 59.2.0", "simd-adler32", "snap", "tempfile", @@ -2067,13 +2397,14 @@ dependencies = [ name = "datafusion-comet-spark-expr" version = "1.1.0" dependencies = [ - "arrow", + "arrow 59.2.0", "base64 0.23.1", "chrono", "criterion", - "datafusion", + "datafusion 55.0.0", "datafusion-comet-common", "datafusion-comet-jni-bridge", + "datafusion-spark", "futures", "jni 0.22.4", "num", @@ -2087,14 +2418,39 @@ dependencies = [ "uuid", ] +[[package]] +name = "datafusion-common" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca43b263cdff57042cfa8fb817fb3469f4878933380dccff25f5e793580abbf9" +dependencies = [ + "arrow 58.4.0", + "arrow-ipc 58.4.0", + "arrow-schema 58.4.0", + "chrono", + "foldhash 0.2.0", + "half", + "hashbrown 0.17.1", + "indexmap 2.14.0", + "itertools 0.14.0", + "libc", + "log", + "object_store", + "parquet 58.4.0", + "tokio", + "uuid", + "web-time", +] + [[package]] name = "datafusion-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f72810485975c258f1b4d00baab31728470676c60c5546f366ebd0d99f05ab6" dependencies = [ - "arrow", - "arrow-ipc", - "arrow-schema", + "arrow 59.2.0", + "arrow-ipc 59.2.0", + "arrow-schema 59.2.0", "chrono", "foldhash 0.2.0", "half", @@ -2106,43 +2462,86 @@ dependencies = [ "log", "num-traits", "object_store", - "parquet", + "parquet 59.2.0", "sqlparser", "tokio", "uuid", "web-time", ] +[[package]] +name = "datafusion-common-runtime" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f0ba2b864792bdca4d76c59a1de0ab6e1b61946596b9936888dbd6360035f2" +dependencies = [ + "futures", + "log", + "tokio", +] + [[package]] name = "datafusion-common-runtime" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "533c28e75dba52f41bde187d23a1cb24ab91c7c097966824fa471e67b60320ea" +dependencies = [ + "futures", + "log", + "tokio", +] + +[[package]] +name = "datafusion-datasource" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b840a8bce0bcbf5afad02946d438591e7c373f7afccaf3d874c04485772514dd" dependencies = [ + "arrow 58.4.0", + "async-trait", + "bytes", + "chrono", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-adapter 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-session 54.1.0", "futures", + "glob", + "itertools 0.14.0", "log", + "object_store", + "parking_lot", + "rand 0.9.5", "tokio", + "url", ] [[package]] name = "datafusion-datasource" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5b00a1fa0da26f6087136a82fea7f13c76a672cbab452d4086952a7cf770a19b" dependencies = [ - "arrow", + "arrow 59.2.0", "async-compression", "async-trait", "bytes", "bzip2", "chrono", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-expr-adapter", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-adapter 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-session 55.0.0", "flate2", "futures", "glob", @@ -2158,45 +2557,94 @@ dependencies = [ "zstd", ] +[[package]] +name = "datafusion-datasource-arrow" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24cc0b9cf6e367f27f27406eff13abf48a11b72446aaa40b3105c0ded5c17d9" +dependencies = [ + "arrow 58.4.0", + "arrow-ipc 58.4.0", + "async-trait", + "bytes", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-session 54.1.0", + "futures", + "itertools 0.14.0", + "object_store", + "tokio", +] + [[package]] name = "datafusion-datasource-arrow" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ad17ec881bff2ed7768b4bfe971d3efbf3473f2fd1f9d365447bccbdf908678" dependencies = [ - "arrow", - "arrow-ipc", + "arrow 59.2.0", + "arrow-ipc 59.2.0", "async-trait", "bytes", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-session 55.0.0", "futures", "itertools 0.15.0", "object_store", "tokio", ] +[[package]] +name = "datafusion-datasource-csv" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1abe56b2a7a2d1d6de5117dd1a203181e267f28529faa5da546947621b697d7" +dependencies = [ + "arrow 58.4.0", + "async-trait", + "bytes", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-session 54.1.0", + "futures", + "object_store", + "regex", + "tokio", +] + [[package]] name = "datafusion-datasource-csv" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b5345285b0c3eaab412e7539b706973c083bd7e5bce575de5e0a3da488d08d1d" dependencies = [ - "arrow", + "arrow 59.2.0", "async-trait", "bytes", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-session 55.0.0", "futures", "object_store", "regex", @@ -2204,81 +2652,167 @@ dependencies = [ ] [[package]] -name = "datafusion-datasource-json" -version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +name = "datafusion-datasource-json" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c3e467f0611ad7bdd5aad17c63c9bb6182d04e5282e5496d897ea2b49c024ba" +dependencies = [ + "arrow 58.4.0", + "async-trait", + "bytes", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-session 54.1.0", + "futures", + "object_store", + "tokio", + "tokio-stream", +] + +[[package]] +name = "datafusion-datasource-json" +version = "55.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da02fb9324f56bd8c53f1ee2e949547425cb66f76adc6832b10d44f80a1221d2" +dependencies = [ + "arrow 59.2.0", + "async-trait", + "bytes", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-session 55.0.0", + "futures", + "object_store", + "tokio", + "tokio-stream", +] + +[[package]] +name = "datafusion-datasource-parquet" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cc35b92cd560082155e80d9c826929c852d3c51543f4affd3a51c464a0aab3a" dependencies = [ - "arrow", + "arrow 58.4.0", "async-trait", "bytes", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-session", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-functions 54.1.0", + "datafusion-functions-aggregate-common 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-adapter 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-pruning 54.1.0", + "datafusion-session 54.1.0", "futures", + "itertools 0.14.0", + "log", "object_store", + "parking_lot", + "parquet 58.4.0", "tokio", - "tokio-stream", ] [[package]] name = "datafusion-datasource-parquet" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c0b0dc1453952952fd5c69ad1c7f6042176e69ed233011d47e07cf74ed0949e" dependencies = [ - "arrow", - "arrow-schema", + "arrow 59.2.0", + "arrow-schema 59.2.0", "async-trait", "bytes", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-datasource", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions", - "datafusion-functions-aggregate-common", - "datafusion-physical-expr", - "datafusion-physical-expr-adapter", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-pruning", - "datafusion-session", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-functions 55.0.0", + "datafusion-functions-aggregate-common 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-adapter 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-pruning 55.0.0", + "datafusion-session 55.0.0", "futures", "itertools 0.15.0", "log", "object_store", "parking_lot", - "parquet", + "parquet 59.2.0", "tokio", ] +[[package]] +name = "datafusion-doc" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d69bb69d8769e34f76839c960dbde24c1ac0c885a79b6c3c2287bdc56ec67891" + [[package]] name = "datafusion-doc" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a88fd985bc0550c36f557db69543cc9d6393b1509783520b30e902f23c555da6" + +[[package]] +name = "datafusion-execution" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8eac0a09bc8d263f52025cad9e001da4d8138d633fa288edda4d06b1772eae6" +dependencies = [ + "arrow 58.4.0", + "arrow-buffer 58.4.0", + "async-trait", + "dashmap", + "datafusion-common 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "futures", + "log", + "object_store", + "parking_lot", + "rand 0.9.5", + "tempfile", + "url", +] [[package]] name = "datafusion-execution" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a98f1052f91b4991f0bf2ce1e4e36dfbdcda454a956b8c8d562c7c845e8fce1d" dependencies = [ - "arrow", - "arrow-buffer", + "arrow 59.2.0", + "arrow-buffer 59.2.0", "async-trait", "bytes", "dashmap", - "datafusion-common", - "datafusion-expr", - "datafusion-physical-expr-common", + "datafusion-common 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", "futures", "log", "object_store", "parking_lot", - "parquet", + "parquet 59.2.0", "pin-project-lite", "rand 0.9.5", "tempfile", @@ -2287,57 +2821,121 @@ dependencies = [ "url", ] +[[package]] +name = "datafusion-expr" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eeb14d374767ee0fc62dc79a5ba8bcf8a63c14e993c7d992d0e63adfa23d77d3" +dependencies = [ + "arrow 58.4.0", + "arrow-schema 58.4.0", + "async-trait", + "chrono", + "datafusion-common 54.1.0", + "datafusion-doc 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-functions-aggregate-common 54.1.0", + "datafusion-functions-window-common 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "indexmap 2.14.0", + "itertools 0.14.0", + "serde_json", +] + [[package]] name = "datafusion-expr" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "464625a1f0e4b9df552d894fafcc8aac953ebbc8b0fa0acdaf20975fd615040e" dependencies = [ - "arrow", - "arrow-schema", + "arrow 59.2.0", + "arrow-schema 59.2.0", "async-trait", "chrono", - "datafusion-common", - "datafusion-doc", - "datafusion-expr-common", - "datafusion-functions-aggregate-common", - "datafusion-functions-window-common", - "datafusion-physical-expr-common", + "datafusion-common 55.0.0", + "datafusion-doc 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-functions-aggregate-common 55.0.0", + "datafusion-functions-window-common 55.0.0", + "datafusion-physical-expr-common 55.0.0", "indexmap 2.14.0", "itertools 0.15.0", "serde_json", "sqlparser", ] +[[package]] +name = "datafusion-expr-common" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7b19a8c95522bee8cbb313d74263b85e355d2b52f42e67ef5694bf5de9e9356" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "indexmap 2.14.0", + "itertools 0.14.0", +] + [[package]] name = "datafusion-expr-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2604994999d5aeca1d1df645ffc98bc787447aaff05dde27aad0342b48fc1fe0" dependencies = [ - "arrow", - "datafusion-common", + "arrow 59.2.0", + "datafusion-common 55.0.0", "indexmap 2.14.0", "itertools 0.15.0", ] +[[package]] +name = "datafusion-functions" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f64c983bbbdcb729d921a2b2ac3375598719b5cc0c30345ad664936f3176fc7" +dependencies = [ + "arrow 58.4.0", + "arrow-buffer 58.4.0", + "base64 0.22.1", + "chrono", + "chrono-tz", + "datafusion-common 54.1.0", + "datafusion-doc 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-macros 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "hex", + "itertools 0.14.0", + "log", + "memchr", + "num-traits", + "rand 0.9.5", + "regex", + "uuid", +] + [[package]] name = "datafusion-functions" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "051e97533e6af53e4aa0a0667cadc886abcaf36c4a5925019c55c0aa4c218fde" dependencies = [ - "arrow", - "arrow-buffer", + "arrow 59.2.0", + "arrow-buffer 59.2.0", "base64 0.23.1", "blake2", "blake3", "chrono", "chrono-tz", - "datafusion-common", - "datafusion-doc", - "datafusion-execution", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-macros", - "datafusion-physical-expr-common", + "datafusion-common 55.0.0", + "datafusion-doc 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-macros 55.0.0", + "datafusion-physical-expr-common 55.0.0", "hex", "itertools 0.15.0", "log", @@ -2350,54 +2948,90 @@ dependencies = [ "uuid", ] +[[package]] +name = "datafusion-functions-aggregate" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89bc17041e424a47ed062f43df24d84aab8b57c4c3221e5c1a5eef46d6c5718b" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "datafusion-doc 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-functions-aggregate-common 54.1.0", + "datafusion-macros 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "foldhash 0.2.0", + "half", + "log", + "num-traits", +] + [[package]] name = "datafusion-functions-aggregate" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-doc", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions-aggregate-common", - "datafusion-macros", - "datafusion-physical-expr", - "datafusion-physical-expr-common", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d0f1bb166d3572b6ed40e1afb2faaacade962abc08c2fcf04babee74681c56b" +dependencies = [ + "arrow 59.2.0", + "datafusion-common 55.0.0", + "datafusion-doc 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-functions-aggregate-common 55.0.0", + "datafusion-macros 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", "half", "hashbrown 0.17.1", "log", "num-traits", ] +[[package]] +name = "datafusion-functions-aggregate-common" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97dd2a9e865c6108059f5b37b77934f84b50bfb108f837bd0e5c9536e03f0545" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-physical-expr-common 54.1.0", +] + [[package]] name = "datafusion-functions-aggregate-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ed756770f5f98369e181d692fd5ee6b1127ffd7322caba92f3730f9f5c92333" dependencies = [ - "arrow", - "datafusion-common", - "datafusion-expr-common", - "datafusion-physical-expr-common", + "arrow 59.2.0", + "datafusion-common 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-physical-expr-common 55.0.0", ] [[package]] name = "datafusion-functions-nested" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" -dependencies = [ - "arrow", - "arrow-ord", - "datafusion-common", - "datafusion-doc", - "datafusion-execution", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-functions", - "datafusion-functions-aggregate", - "datafusion-functions-aggregate-common", - "datafusion-macros", - "datafusion-physical-expr-common", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91173fdb5c0ff2a41169a8ffa1b385b8844f18728747bb0a37e35ad7d5772a4f" +dependencies = [ + "arrow 59.2.0", + "arrow-ord 59.2.0", + "datafusion-common 55.0.0", + "datafusion-doc 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-functions 55.0.0", + "datafusion-functions-aggregate 55.0.0", + "datafusion-functions-aggregate-common 55.0.0", + "datafusion-macros 55.0.0", + "datafusion-physical-expr-common 55.0.0", "hashbrown 0.17.1", "itertools 0.15.0", "itoa", @@ -2405,67 +3039,145 @@ dependencies = [ "memchr", ] +[[package]] +name = "datafusion-functions-table" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4e4941673c917819616877e9993da4503e4f4739812be0bc32c5356184c6383" +dependencies = [ + "arrow 58.4.0", + "async-trait", + "datafusion-catalog 54.1.0", + "datafusion-common 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-plan 54.1.0", + "parking_lot", +] + [[package]] name = "datafusion-functions-table" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1bcdfb286a745461b126719c32700777e83df4f17cc44db5d71ebce5731e840" dependencies = [ - "arrow", + "arrow 59.2.0", "async-trait", - "datafusion-catalog", - "datafusion-common", - "datafusion-expr", - "datafusion-physical-expr", - "datafusion-physical-plan", + "datafusion-catalog 55.0.0", + "datafusion-common 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-plan 55.0.0", "parking_lot", ] +[[package]] +name = "datafusion-functions-window" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12dd2e16c12b84b6f6b41b19f55b366dd1c46876bb35b86896c6349067379e8d" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "datafusion-doc 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-functions-window-common 54.1.0", + "datafusion-macros 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "log", +] + [[package]] name = "datafusion-functions-window" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-doc", - "datafusion-expr", - "datafusion-functions-window-common", - "datafusion-macros", - "datafusion-physical-expr", - "datafusion-physical-expr-common", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ec4b508f1f93f00038ba3e737e894ec6c775528b4369413386655ae6125f0fc" +dependencies = [ + "arrow 59.2.0", + "datafusion-common 55.0.0", + "datafusion-doc 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-functions-window-common 55.0.0", + "datafusion-macros 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", "log", ] +[[package]] +name = "datafusion-functions-window-common" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cdc5e4b6f8b6ef823cc1c761f85088ad4c884fe8df64df3cbcc6b2b84698441" +dependencies = [ + "datafusion-common 54.1.0", + "datafusion-physical-expr-common 54.1.0", +] + [[package]] name = "datafusion-functions-window-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b352020834140073fbf5b46ee0ceb926e5074a9d0bcae1dbd91d0586d999cde" +dependencies = [ + "datafusion-common 55.0.0", + "datafusion-physical-expr-common 55.0.0", +] + +[[package]] +name = "datafusion-macros" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a3614234dd93578c92428cb4f408e020874f0d2b7e6c90c928d9d28b5df2ceb" dependencies = [ - "datafusion-common", - "datafusion-physical-expr-common", + "datafusion-doc 54.1.0", + "quote", + "syn 2.0.119", ] [[package]] name = "datafusion-macros" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "15192effab05d38cce10e92a6fb48c967b5f166b27b7195a165a72b232569c58" dependencies = [ - "datafusion-doc", + "datafusion-doc 55.0.0", "quote", "syn 3.0.3", ] +[[package]] +name = "datafusion-optimizer" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0635620b050b81bb92764e99250868f654e2cd5ad1bece413283b3f73c83179" +dependencies = [ + "arrow 58.4.0", + "chrono", + "datafusion-common 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-physical-expr 54.1.0", + "indexmap 2.14.0", + "itertools 0.14.0", + "log", + "regex", + "regex-syntax", +] + [[package]] name = "datafusion-optimizer" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854445d9f7847e1e46089cf61b8d341a64382f14484e912c83a0f23b31216896" dependencies = [ - "arrow", + "arrow 59.2.0", "chrono", - "datafusion-common", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-physical-expr", + "datafusion-common 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-physical-expr 55.0.0", "indexmap 2.14.0", "itertools 0.15.0", "log", @@ -2473,17 +3185,39 @@ dependencies = [ "regex-syntax", ] +[[package]] +name = "datafusion-physical-expr" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8cabf7a86eb70b816729e33c81bf7767c936ee1226f607a114f5dac2decac8d0" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-functions-aggregate-common 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "half", + "hashbrown 0.17.1", + "indexmap 2.14.0", + "itertools 0.14.0", + "parking_lot", + "petgraph", + "tokio", +] + [[package]] name = "datafusion-physical-expr" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-functions-aggregate-common", - "datafusion-physical-expr-common", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "671558dad1d2aa253c39c0a4c52515958b99eb91abf649f4b88d5e69cc55282f" +dependencies = [ + "arrow 59.2.0", + "datafusion-common 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-functions-aggregate-common 55.0.0", + "datafusion-physical-expr-common 55.0.0", "half", "hashbrown 0.17.1", "indexmap 2.14.0", @@ -2493,29 +3227,63 @@ dependencies = [ "tokio", ] +[[package]] +name = "datafusion-physical-expr-adapter" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de222e04f7e6744501555a54ab0abe26bfdfebee380af79a9bdc175704246859" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-functions 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "itertools 0.14.0", +] + [[package]] name = "datafusion-physical-expr-adapter" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-expr", - "datafusion-functions", - "datafusion-physical-expr", - "datafusion-physical-expr-common", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ffae3d78c2da80ecc829cb58536cc5aca2e99cf1365eda694fc75bfe288861e0" +dependencies = [ + "arrow 59.2.0", + "datafusion-common 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-functions 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", "itertools 0.15.0", ] +[[package]] +name = "datafusion-physical-expr-common" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72d0d0057fc5a502d45c870cb6d47c66eb7bdd5edb1bd71ad6f3f724975ac2a8" +dependencies = [ + "arrow 58.4.0", + "chrono", + "datafusion-common 54.1.0", + "datafusion-expr-common 54.1.0", + "hashbrown 0.17.1", + "indexmap 2.14.0", + "itertools 0.14.0", + "parking_lot", + "pin-project", +] + [[package]] name = "datafusion-physical-expr-common" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d9092ed15e7203fbd0903215172f7c9d18f10d94cba35137f3b3836f7c46f16" dependencies = [ - "arrow", + "arrow 59.2.0", "chrono", - "datafusion-common", - "datafusion-expr-common", + "datafusion-common 55.0.0", + "datafusion-expr-common 55.0.0", "hashbrown 0.17.1", "indexmap 2.14.0", "itertools 0.15.0", @@ -2523,45 +3291,98 @@ dependencies = [ "pin-project", ] +[[package]] +name = "datafusion-physical-optimizer" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86046eed10950c5f9aaed9acfd148e9bd2e1dfdfe4f9aef607d1447b271e4183" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "datafusion-pruning 54.1.0", + "itertools 0.14.0", +] + [[package]] name = "datafusion-physical-optimizer" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-expr-common", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", - "datafusion-pruning", - "datafusion-session", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9005b6cf50b57b72d476c6ed4662b04be7ca6be5320ba9127c6d0b7e4218095b" +dependencies = [ + "arrow 59.2.0", + "datafusion-common 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", + "datafusion-pruning 55.0.0", + "datafusion-session 55.0.0", "itertools 0.15.0", ] +[[package]] +name = "datafusion-physical-plan" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bc84da934c903407ba297971ebcc020c4c1a38aafd765d6c144c76eff3fa6a1" +dependencies = [ + "arrow 58.4.0", + "arrow-data 58.4.0", + "arrow-ipc 58.4.0", + "arrow-ord 58.4.0", + "arrow-schema 58.4.0", + "async-trait", + "datafusion-common 54.1.0", + "datafusion-common-runtime 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-functions 54.1.0", + "datafusion-functions-aggregate-common 54.1.0", + "datafusion-functions-window-common 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "futures", + "half", + "hashbrown 0.17.1", + "indexmap 2.14.0", + "itertools 0.14.0", + "log", + "num-traits", + "parking_lot", + "pin-project-lite", + "tokio", +] + [[package]] name = "datafusion-physical-plan" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5787e4fcff4adc4fce8948441103a99705018b49c8dff0720b650bd7a15da112" dependencies = [ - "arrow", - "arrow-data", - "arrow-ipc", - "arrow-ord", - "arrow-schema", + "arrow 59.2.0", + "arrow-data 59.2.0", + "arrow-ipc 59.2.0", + "arrow-ord 59.2.0", + "arrow-schema 59.2.0", "async-trait", "bytes", - "datafusion-common", - "datafusion-common-runtime", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions", - "datafusion-functions-aggregate-common", - "datafusion-functions-window-common", - "datafusion-physical-expr", - "datafusion-physical-expr-common", + "datafusion-common 55.0.0", + "datafusion-common-runtime 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-functions 55.0.0", + "datafusion-functions-aggregate-common 55.0.0", + "datafusion-functions-window-common 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", "futures", "half", "hashbrown 0.17.1", @@ -2575,52 +3396,85 @@ dependencies = [ "tokio", ] +[[package]] +name = "datafusion-pruning" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb63eeac6de19be40f487b65dd84e546195f783c5a9928618e0c4f2a3569b0d7" +dependencies = [ + "arrow 58.4.0", + "datafusion-common 54.1.0", + "datafusion-datasource 54.1.0", + "datafusion-expr-common 54.1.0", + "datafusion-physical-expr 54.1.0", + "datafusion-physical-expr-common 54.1.0", + "datafusion-physical-plan 54.1.0", + "log", +] + [[package]] name = "datafusion-pruning" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" -dependencies = [ - "arrow", - "datafusion-common", - "datafusion-datasource", - "datafusion-expr-common", - "datafusion-physical-expr", - "datafusion-physical-expr-common", - "datafusion-physical-plan", +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e651c8df0b90daed6a7be5921ec0ee379e6909705f063eeff70fd4e35010e4c" +dependencies = [ + "arrow 59.2.0", + "datafusion-common 55.0.0", + "datafusion-datasource 55.0.0", + "datafusion-expr-common 55.0.0", + "datafusion-physical-expr 55.0.0", + "datafusion-physical-expr-common 55.0.0", + "datafusion-physical-plan 55.0.0", "log", ] +[[package]] +name = "datafusion-session" +version = "54.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f961d209177f91bd014db5cbb2c33b7d28a2597b9003e77f17aeb712964315a" +dependencies = [ + "async-trait", + "datafusion-common 54.1.0", + "datafusion-execution 54.1.0", + "datafusion-expr 54.1.0", + "datafusion-physical-plan 54.1.0", + "parking_lot", +] + [[package]] name = "datafusion-session" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb56667ee38217efab19b895d9a936052cfb47ed438a19663351bdc42a6214a1" dependencies = [ - "arrow-schema", + "arrow-schema 59.2.0", "async-trait", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-physical-plan", + "datafusion-common 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-physical-plan 55.0.0", "parking_lot", ] [[package]] name = "datafusion-spark" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "992dd0b954f24cb576cbeee3555c3083b9cf7a5a5f2448ea25f7a437d444163f" dependencies = [ - "arrow", + "arrow 59.2.0", "bigdecimal", "chrono", "crc32fast", - "datafusion", - "datafusion-catalog", - "datafusion-common", - "datafusion-execution", - "datafusion-expr", - "datafusion-functions", - "datafusion-functions-aggregate", - "datafusion-functions-aggregate-common", + "datafusion 55.0.0", + "datafusion-catalog 55.0.0", + "datafusion-common 55.0.0", + "datafusion-execution 55.0.0", + "datafusion-expr 55.0.0", + "datafusion-functions 55.0.0", + "datafusion-functions-aggregate 55.0.0", + "datafusion-functions-aggregate-common 55.0.0", "datafusion-functions-nested", "log", "num-traits", @@ -2636,13 +3490,14 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "55.0.0" -source = "git+https://github.com/apache/datafusion.git?tag=55.0.0-rc3#d5552342012888b7d1a3ab88d92e3d292fc0cde0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c29067cb9d32f8e603c45e15d61ea18f1069f96ceafeceb4e18466b8e5b31d9" dependencies = [ - "arrow", + "arrow 59.2.0", "bigdecimal", "chrono", - "datafusion-common", - "datafusion-expr", + "datafusion-common 55.0.0", + "datafusion-expr 55.0.0", "datafusion-functions-nested", "indexmap 2.14.0", "log", @@ -3492,14 +4347,14 @@ dependencies = [ "anyhow", "apache-avro", "array-init", - "arrow-arith", - "arrow-array", - "arrow-buffer", - "arrow-cast", - "arrow-ord", - "arrow-schema", - "arrow-select", - "arrow-string", + "arrow-arith 59.2.0", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-cast 59.2.0", + "arrow-ord 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", + "arrow-string 59.2.0", "as-any", "async-trait", "backon", @@ -3519,7 +4374,7 @@ dependencies = [ "murmur3", "once_cell", "ordered-float 4.6.0", - "parquet", + "parquet 59.2.0", "rand 0.9.5", "reqwest 0.12.28", "roaring", @@ -3719,6 +4574,12 @@ dependencies = [ "generic-array", ] +[[package]] +name = "integer-encoding" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" + [[package]] name = "inventory" version = "0.3.24" @@ -4161,6 +5022,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" +[[package]] +name = "lz4_flex" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" +dependencies = [ + "twox-hash", +] + [[package]] name = "lz4_flex" version = "0.14.0" @@ -4791,6 +5661,42 @@ dependencies = [ "windows-link", ] +[[package]] +name = "parquet" +version = "58.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d298093b2dec60289dce0684c986d0f7679e9dd15771c2c65406e1aaf604a704" +dependencies = [ + "ahash", + "arrow-array 58.4.0", + "arrow-buffer 58.4.0", + "arrow-data 58.4.0", + "arrow-ipc 58.4.0", + "arrow-schema 58.4.0", + "arrow-select 58.4.0", + "base64 0.22.1", + "brotli", + "bytes", + "chrono", + "flate2", + "futures", + "half", + "hashbrown 0.17.1", + "lz4_flex 0.13.1", + "num-bigint 0.4.8", + "num-integer", + "num-traits", + "object_store", + "paste", + "seq-macro", + "simdutf8", + "snap", + "thrift", + "tokio", + "twox-hash", + "zstd", +] + [[package]] name = "parquet" version = "59.2.0" @@ -4798,12 +5704,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7065842956a20c2a536924ce8e4d9955f7422451511b9eb7500d7bfe5077e59c" dependencies = [ "ahash", - "arrow-array", - "arrow-buffer", - "arrow-data", - "arrow-ipc", - "arrow-schema", - "arrow-select", + "arrow-array 59.2.0", + "arrow-buffer 59.2.0", + "arrow-data 59.2.0", + "arrow-ipc 59.2.0", + "arrow-schema 59.2.0", + "arrow-select 59.2.0", "base64 0.23.1", "brotli", "bytes", @@ -4812,7 +5718,7 @@ dependencies = [ "futures", "half", "hashbrown 0.17.1", - "lz4_flex", + "lz4_flex 0.14.0", "num-bigint 0.5.1", "num-integer", "num-traits", @@ -4835,8 +5741,8 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f7e5fff3ed0c07514a7fb8bee3f2ea5a53f36939410ecac4a466620213539a8" dependencies = [ - "arrow", - "arrow-schema", + "arrow 59.2.0", + "arrow-schema 59.2.0", "chrono", "half", "indexmap 2.14.0", @@ -4851,8 +5757,8 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba4d3de89dab8d1aaaf601ae8d71bd07ea88cfca9efc1df5815b982c30f631e1" dependencies = [ - "arrow", - "arrow-schema", + "arrow 59.2.0", + "arrow-schema 59.2.0", "chrono", "half", "indexmap 2.14.0", @@ -4868,7 +5774,7 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb19dfe1bd24c17addd761ba4f7000f615e2fa12525871c7baa835dbb3d7f147" dependencies = [ - "arrow-schema", + "arrow-schema 59.2.0", "base64 0.23.1", "chrono", "parquet-variant", @@ -6512,6 +7418,17 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "thrift" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" +dependencies = [ + "byteorder", + "integer-encoding", + "ordered-float 2.10.1", +] + [[package]] name = "tikv-jemalloc-ctl" version = "0.6.1" diff --git a/native/core/src/execution/operators/expand.rs b/native/core/src/execution/operators/expand.rs index 72112238e38..8406529d6fa 100644 --- a/native/core/src/execution/operators/expand.rs +++ b/native/core/src/execution/operators/expand.rs @@ -15,8 +15,8 @@ // specific language governing permissions and limitations // under the License. -use arrow::array::{RecordBatch, RecordBatchOptions}; -use arrow::datatypes::SchemaRef; +use arrow::array::RecordBatch; +use arrow::datatypes::{Field, Schema, SchemaRef}; use datafusion::common::tree_node::TreeNodeRecursion; use datafusion::common::DataFusionError; use datafusion::physical_expr::{EquivalenceProperties, PhysicalExpr}; diff --git a/native/core/src/execution/operators/shuffle_scan.rs b/native/core/src/execution/operators/shuffle_scan.rs index 8f285a5f99d..9e1f9dccb50 100644 --- a/native/core/src/execution/operators/shuffle_scan.rs +++ b/native/core/src/execution/operators/shuffle_scan.rs @@ -360,7 +360,7 @@ mod tests { use crate::execution::shuffle::{CompressionCodec, ShuffleBlockWriter}; use arrow::array::{Int32Array, StringArray}; use arrow::datatypes::{DataType, Field, Schema}; - use arrow::ipc::writer::CompressionContext; + use arrow::ipc::writer::IpcWriteContext; use arrow::record_batch::RecordBatch; use datafusion::physical_plan::metrics::Time; use std::io::Cursor; @@ -393,7 +393,7 @@ mod tests { .write_batch( &batch, &mut buf, - &mut CompressionContext::default(), + &mut IpcWriteContext::default(), &ipc_time, ) .unwrap(); @@ -465,7 +465,7 @@ mod tests { .write_batch( &dict_batch, &mut buf, - &mut CompressionContext::default(), + &mut IpcWriteContext::default(), &ipc_time, ) .unwrap(); diff --git a/native/shuffle/benches/shuffle_writer.rs b/native/shuffle/benches/shuffle_writer.rs index 2e82f6fc532..9df5f112213 100644 --- a/native/shuffle/benches/shuffle_writer.rs +++ b/native/shuffle/benches/shuffle_writer.rs @@ -18,7 +18,7 @@ use arrow::array::builder::{Date32Builder, Decimal128Builder, Int32Builder}; use arrow::array::{builder::StringBuilder, Array, Int32Array, RecordBatch}; use arrow::datatypes::{DataType, Field, Schema}; -use arrow::ipc::writer::CompressionContext; +use arrow::ipc::writer::IpcWriteContext; use arrow::row::{RowConverter, SortField}; use criterion::{criterion_group, criterion_main, Criterion}; use datafusion::datasource::memory::MemorySourceConfig; @@ -54,7 +54,7 @@ fn criterion_benchmark(c: &mut Criterion) { let ipc_time = Time::default(); let w = ShuffleBlockWriter::try_new(&batch.schema(), compression_codec.clone()).unwrap(); - let mut compression_context = CompressionContext::default(); + let mut compression_context = IpcWriteContext::default(); b.iter(|| { buffer.clear(); let mut cursor = Cursor::new(&mut buffer); @@ -256,7 +256,7 @@ fn schema_encoding_benchmark(c: &mut Criterion) { let writer = ShuffleBlockWriter::try_new(batch.schema().as_ref(), CompressionCodec::None).unwrap(); let ipc_time = Time::default(); - let mut compression_context = CompressionContext::default(); + let mut compression_context = IpcWriteContext::default(); group.bench_function(format!("write_batch ({name} schema)"), |b| { let mut buffer = vec![]; b.iter(|| { diff --git a/native/shuffle/src/shuffle_writer.rs b/native/shuffle/src/shuffle_writer.rs index a170eae5601..8bf65975776 100644 --- a/native/shuffle/src/shuffle_writer.rs +++ b/native/shuffle/src/shuffle_writer.rs @@ -288,7 +288,7 @@ mod test { use crate::{read_ipc_compressed, ShuffleBlockWriter}; use arrow::array::{Array, Int64Array, StringArray, StringBuilder}; use arrow::datatypes::{DataType, Field, Schema}; - use arrow::ipc::writer::CompressionContext; + use arrow::ipc::writer::IpcWriteContext; use arrow::record_batch::RecordBatch; use arrow::row::{RowConverter, SortField}; use datafusion::datasource::memory::MemorySourceConfig; @@ -318,7 +318,7 @@ mod test { let mut cursor = Cursor::new(&mut output); let writer = ShuffleBlockWriter::try_new(batch.schema().as_ref(), codec.clone()).unwrap(); - let mut compression_context = CompressionContext::default(); + let mut compression_context = IpcWriteContext::default(); let length = writer .write_batch( &batch, @@ -364,7 +364,7 @@ mod test { let mut output = vec![]; let mut cursor = Cursor::new(&mut output); let writer = ShuffleBlockWriter::try_new(schema.as_ref(), codec.clone()).unwrap(); - let mut compression_context = CompressionContext::default(); + let mut compression_context = IpcWriteContext::default(); writer .write_batch( &batch, diff --git a/native/shuffle/src/spark_unsafe/row.rs b/native/shuffle/src/spark_unsafe/row.rs index 77e44024fbf..a3f3b3d36fc 100644 --- a/native/shuffle/src/spark_unsafe/row.rs +++ b/native/shuffle/src/spark_unsafe/row.rs @@ -38,7 +38,7 @@ use arrow::array::{ use arrow::compute::cast; use arrow::datatypes::{DataType, Field, Schema, TimeUnit}; use arrow::error::ArrowError; -use arrow::ipc::writer::CompressionContext; +use arrow::ipc::writer::IpcWriteContext; use datafusion::physical_plan::metrics::Time; use datafusion_comet_jni_bridge::errors::CometError; use jni::sys::{jint, jlong}; @@ -1388,7 +1388,7 @@ pub fn process_sorted_row_partition( // Single ipc_time accumulates encode + compression time across all batches. let ipc_time = Time::default(); - let mut compression_context = CompressionContext::default(); + let mut compression_context = IpcWriteContext::default(); while current_row < row_num { let n = std::cmp::min(batch_size, row_num - current_row); diff --git a/native/shuffle/src/writers/buf_batch_writer.rs b/native/shuffle/src/writers/buf_batch_writer.rs index 55d88a4ba48..23fa0c72141 100644 --- a/native/shuffle/src/writers/buf_batch_writer.rs +++ b/native/shuffle/src/writers/buf_batch_writer.rs @@ -18,7 +18,7 @@ use super::ShuffleBlockWriter; use arrow::array::RecordBatch; use arrow::compute::kernels::coalesce::BatchCoalescer; -use arrow::ipc::writer::CompressionContext; +use arrow::ipc::writer::IpcWriteContext; use datafusion::physical_plan::metrics::Time; use std::borrow::Borrow; use std::io::{Cursor, Seek, SeekFrom, Write}; @@ -38,12 +38,15 @@ pub(crate) struct BufBatchWriter, W: Write> { writer: W, buffer: Vec, buffer_max_size: usize, - compression_context: CompressionContext, + compression_context: IpcWriteContext, /// Coalesces small batches into target_batch_size before serialization. /// Lazily initialized on first write to capture the schema. coalescer: Option, /// Target batch size for coalescing batch_size: usize, + /// Running total of bytes serialized through this writer, used to report spilled bytes when + /// the underlying writer does not implement [`Seek`] (e.g. a `Box`). + total_bytes_written: u64, } impl, W: Write> BufBatchWriter { @@ -58,9 +61,10 @@ impl, W: Write> BufBatchWriter { writer, buffer: vec![], buffer_max_size, - compression_context: CompressionContext::default(), + compression_context: IpcWriteContext::default(), coalescer: None, batch_size, + total_bytes_written: 0, } } @@ -123,6 +127,7 @@ impl, W: Write> BufBatchWriter { write_timer.stop(); self.buffer.clear(); } + self.total_bytes_written += bytes_written as u64; Ok(bytes_written) } @@ -153,6 +158,13 @@ impl, W: Write> BufBatchWriter { self.buffer.clear(); Ok(()) } + + /// Total number of bytes serialized through this writer since it was created. Unlike + /// [`Self::writer_stream_position`], this does not require the underlying writer to implement + /// [`Seek`], so it is used to report spilled bytes when writing to a `Box`. + pub(crate) fn bytes_written(&self) -> u64 { + self.total_bytes_written + } } impl, W: Write + Seek> BufBatchWriter { diff --git a/native/shuffle/src/writers/local/spill.rs b/native/shuffle/src/writers/local/spill.rs index babdc938663..4f336c6da4e 100644 --- a/native/shuffle/src/writers/local/spill.rs +++ b/native/shuffle/src/writers/local/spill.rs @@ -19,6 +19,7 @@ use crate::metrics::ShufflePartitionerMetrics; use crate::writers::BufBatchWriter; use crate::ShuffleBlockWriter; use arrow::record_batch::RecordBatch; +use datafusion::common::DataFusionError; use datafusion::execution::runtime_env::RuntimeEnv; use datafusion::execution::SpillFile as DfSpillFile; use datafusion::execution::SpillWriter as DfSpillWriter; @@ -66,16 +67,15 @@ impl SpillWriter { self.write_buffer_size, self.batch_size, ); - let initial_position = buf_batch_writer.writer_stream_position()?; buf_batch_writer.write(&batch?, &metrics.encode_time, &metrics.write_time)?; for batch in iter.by_ref() { let batch = batch?; buf_batch_writer.write(&batch, &metrics.encode_time, &metrics.write_time)?; } buf_batch_writer.flush(&metrics.encode_time, &metrics.write_time)?; - let bytes_written = buf_batch_writer - .writer_stream_position()? - .saturating_sub(initial_position); + // `SpillWriter` is not `Seek`, so bytes are tracked by the writer itself rather + // than measured via stream position. + let bytes_written = buf_batch_writer.bytes_written(); usize::try_from(bytes_written).map_err(|_| { DataFusionError::Execution(format!( "Spill file byte count exceeds platform capacity: {bytes_written}" diff --git a/native/shuffle/src/writers/shuffle_block_writer.rs b/native/shuffle/src/writers/shuffle_block_writer.rs index 0ef7a4521ed..e227d48b37c 100644 --- a/native/shuffle/src/writers/shuffle_block_writer.rs +++ b/native/shuffle/src/writers/shuffle_block_writer.rs @@ -164,7 +164,6 @@ impl ShuffleBlockWriter { // Fast path: reuse the pre-encoded schema message and write the record batch manually. let data_gen = IpcDataGenerator::default(); let mut dictionary_tracker = DictionaryTracker::new(true); - let mut compression_context = IpcWriteContext::default(); let (encoded_dictionaries, encoded_batch) = data_gen.encode( batch, &mut dictionary_tracker, From 3fd6db2a63955b9014be112dd1811a7b72644757 Mon Sep 17 00:00:00 2001 From: comphead Date: Tue, 25 Aug 2026 14:41:10 -0700 Subject: [PATCH 15/16] df55 --- .../src/execution/operators/shuffle_scan.rs | 7 +------ .../scala/org/apache/comet/serde/math.scala | 17 ----------------- 2 files changed, 1 insertion(+), 23 deletions(-) diff --git a/native/core/src/execution/operators/shuffle_scan.rs b/native/core/src/execution/operators/shuffle_scan.rs index 9e1f9dccb50..c4de3a6145f 100644 --- a/native/core/src/execution/operators/shuffle_scan.rs +++ b/native/core/src/execution/operators/shuffle_scan.rs @@ -390,12 +390,7 @@ mod tests { let mut buf = Cursor::new(Vec::new()); let ipc_time = Time::new(); writer - .write_batch( - &batch, - &mut buf, - &mut IpcWriteContext::default(), - &ipc_time, - ) + .write_batch(&batch, &mut buf, &mut IpcWriteContext::default(), &ipc_time) .unwrap(); // Read back (skip 16-byte header: 8 compressed_length + 8 field_count) diff --git a/spark/src/main/scala/org/apache/comet/serde/math.scala b/spark/src/main/scala/org/apache/comet/serde/math.scala index 70d36d31d4c..65e2bf673e9 100644 --- a/spark/src/main/scala/org/apache/comet/serde/math.scala +++ b/spark/src/main/scala/org/apache/comet/serde/math.scala @@ -233,23 +233,6 @@ object CometSqrt extends CometExpressionSerde[Sqrt] { } } -// Uses a custom spark_sqrt UDF because DataFusion's own `sqrt` errors on negative -// input, while Spark's Sqrt (a plain wrapper around java.lang.Math.sqrt) returns NaN. -// spark_sqrt is a Comet-only name with no DataFusion builtin counterpart, so the -// return type must be set explicitly here to skip the session registry lookup that -// scalarFunctionExprToProto would otherwise trigger (see CometLogarithm/spark_log). -object CometSqrt extends CometExpressionSerde[Sqrt] { - override def convert( - expr: Sqrt, - inputs: Seq[Attribute], - binding: Boolean): Option[ExprOuterClass.Expr] = { - val childExpr = exprToProtoInternal(expr.child, inputs, binding) - val optExpr = - scalarFunctionExprToProtoWithReturnType("spark_sqrt", DoubleType, false, childExpr) - optExpr - } -} - sealed trait MathExprBase { protected def nullIfNegative(expression: Expression): Expression = { val zero = Literal.default(expression.dataType) From 4460b59a1eac9190e29214987293d19a9f977dab Mon Sep 17 00:00:00 2001 From: comphead Date: Wed, 26 Aug 2026 17:35:03 -0700 Subject: [PATCH 16/16] df55 --- contrib/delta/native/Cargo.toml | 2 +- native/Cargo.lock | 2087 +++++------------ .../src/execution/operators/parquet_writer.rs | 1 + .../writers/local/local_partition_writer.rs | 1 + 4 files changed, 634 insertions(+), 1457 deletions(-) diff --git a/contrib/delta/native/Cargo.toml b/contrib/delta/native/Cargo.toml index 4d1551b6add..23f6c539eca 100644 --- a/contrib/delta/native/Cargo.toml +++ b/contrib/delta/native/Cargo.toml @@ -47,4 +47,4 @@ crate-type = ["rlib"] datafusion-comet-proto = { path = "../../../native/proto" } # For `ExecutionPlan` (return type), `SchemaRef` (the shim hands these in), and `DataFusionError` # (the not-implemented error). Versions/features mirror core so the shared lockfile resolves cleanly. -datafusion = { version = "54.0.0", default-features = false, features = ["parquet"] } +datafusion = { version = "55.0.0", default-features = false, features = ["parquet"] } diff --git a/native/Cargo.lock b/native/Cargo.lock index 8d04ecc7067..c29b027cb3b 100644 --- a/native/Cargo.lock +++ b/native/Cargo.lock @@ -198,7 +198,7 @@ dependencies = [ "snap", "strum", "strum_macros", - "thiserror 2.0.19", + "thiserror 2.0.20", "uuid", "zstd", ] @@ -218,72 +218,31 @@ version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d62b7694a562cdf5a74227903507c56ab2cc8bdd1f781ed5cb4cf9c9f810bfc" -[[package]] -name = "arrayref" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" - [[package]] name = "arrayvec" version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" -[[package]] -name = "arrow" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfdd0833e32a9874d2b55089333ad310c0be208aafa277385ce2461dec90be3" -dependencies = [ - "arrow-arith 58.4.0", - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-cast 58.4.0", - "arrow-csv 58.4.0", - "arrow-data 58.4.0", - "arrow-ipc 58.4.0", - "arrow-json 58.4.0", - "arrow-ord 58.4.0", - "arrow-row 58.4.0", - "arrow-schema 58.4.0", - "arrow-select 58.4.0", - "arrow-string 58.4.0", -] - [[package]] name = "arrow" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61d285d16bce7d0be61912f7928342b673067b6b7d7ef6cc179258ba7de1fecf" dependencies = [ - "arrow-arith 59.2.0", - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-cast 59.2.0", - "arrow-csv 59.2.0", - "arrow-data 59.2.0", - "arrow-ipc 59.2.0", - "arrow-json 59.2.0", - "arrow-ord 59.2.0", - "arrow-row 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", - "arrow-string 59.2.0", -] - -[[package]] -name = "arrow-arith" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a41203398f0eaa6f7ec8e62c0da742a21abf282c148fc157f6c35c90e29981a" -dependencies = [ - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-schema 58.4.0", - "chrono", - "num-traits", + "arrow-arith", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-csv", + "arrow-data", + "arrow-ipc", + "arrow-json", + "arrow-ord", + "arrow-row", + "arrow-schema", + "arrow-select", + "arrow-string", ] [[package]] @@ -292,30 +251,11 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "757ef1836251e88222542a7da2623bc1c9cb9e20afefa6db2c41e79991cd91d4" dependencies = [ - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-schema 59.2.0", - "chrono", - "num-traits", -] - -[[package]] -name = "arrow-array" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae33dad492b7df00a217563a7b0ef2874df68a0deea1b1a3acf628152f7f7a69" -dependencies = [ - "ahash", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-schema 58.4.0", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", "chrono", - "chrono-tz", - "half", - "hashbrown 0.17.1", - "num-complex", - "num-integer", "num-traits", ] @@ -326,9 +266,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc9a4a4b2b5ecd0e04df03471661cb61f28bed3c7fd50994715129b01b2edb97" dependencies = [ "ahash", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-schema 59.2.0", + "arrow-buffer", + "arrow-data", + "arrow-schema", "chrono", "chrono-tz", "half", @@ -339,18 +279,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "arrow-buffer" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9552f96391c005e6ab449fa941420935e7e062489b12b8b1b08879b2163f5b5" -dependencies = [ - "bytes", - "half", - "num-bigint 0.4.8", - "num-traits", -] - [[package]] name = "arrow-buffer" version = "59.2.0" @@ -363,40 +291,18 @@ dependencies = [ "num-traits", ] -[[package]] -name = "arrow-cast" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8a327c9649f30d8406995f27642b68df354713cca3baaaf100f076f18d5f34" -dependencies = [ - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-ord 58.4.0", - "arrow-schema 58.4.0", - "arrow-select 58.4.0", - "atoi", - "base64 0.22.1", - "chrono", - "comfy-table", - "half", - "lexical-core", - "num-traits", - "ryu", -] - [[package]] name = "arrow-cast" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68338a9096a5dc9bc11927c58c43a8526d96bf6abd2012ef6c0c9f505991cc79" dependencies = [ - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-ord 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-ord", + "arrow-schema", + "arrow-select", "atoi", "base64 0.23.1", "chrono", @@ -407,131 +313,62 @@ dependencies = [ "ryu", ] -[[package]] -name = "arrow-csv" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af0dd6d90d1955e9f9a014c1e563ee8aeffc21909085d25623e1da44d96eca26" -dependencies = [ - "arrow-array 58.4.0", - "arrow-cast 58.4.0", - "arrow-schema 58.4.0", - "chrono", - "csv", - "csv-core", - "regex", -] - [[package]] name = "arrow-csv" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "25011b52b346407d497ef0030e12b45e4f2d0cc279efc09c4f3d09106db30e36" dependencies = [ - "arrow-array 59.2.0", - "arrow-cast 59.2.0", - "arrow-schema 59.2.0", + "arrow-array", + "arrow-cast", + "arrow-schema", "chrono", "csv", "csv-core", "regex", ] -[[package]] -name = "arrow-data" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b24852db04738907e06c04ea61e42fe7fda962a34513022dc0d0e754fb7976b" -dependencies = [ - "arrow-buffer 58.4.0", - "arrow-schema 58.4.0", - "half", - "num-integer", - "num-traits", -] - [[package]] name = "arrow-data" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "723fe4aeed7604e00b9883a465af4ff0a0e6c44c03e41a68c3d1cbc403e0e44d" dependencies = [ - "arrow-buffer 59.2.0", - "arrow-schema 59.2.0", + "arrow-buffer", + "arrow-schema", "half", "num-integer", "num-traits", ] -[[package]] -name = "arrow-ipc" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a908a11fcfb3fb2f6730f4ac15e367bc644e419155e96238f68cf3adde572b" -dependencies = [ - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-schema 58.4.0", - "arrow-select 58.4.0", - "flatbuffers", - "lz4_flex 0.13.1", - "zstd", -] - [[package]] name = "arrow-ipc" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "149437b14371f5b9ec60f5ddc751483ae99d7a7072653c0075e5e469156eea7b" dependencies = [ - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", "flatbuffers", - "lz4_flex 0.14.0", + "lz4_flex", "zstd", ] -[[package]] -name = "arrow-json" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a96aed3931c076adee39ec2a40d8219fc7f09e79bcdaca1df16272993e1e14" -dependencies = [ - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-cast 58.4.0", - "arrow-ord 58.4.0", - "arrow-schema 58.4.0", - "arrow-select 58.4.0", - "chrono", - "half", - "indexmap 2.14.0", - "itoa", - "lexical-core", - "memchr", - "num-traits", - "ryu", - "serde_core", - "serde_json", - "simdutf8", -] - [[package]] name = "arrow-json" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f18b9123ccfec418a663f821c9a034af339711678c11ffe00d3ec07da5ff9f7e" dependencies = [ - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-cast 59.2.0", - "arrow-ord 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-ord", + "arrow-schema", + "arrow-select", "chrono", "half", "indexmap 2.14.0", @@ -545,43 +382,17 @@ dependencies = [ "simdutf8", ] -[[package]] -name = "arrow-ord" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63a083ec750f5c043f02946b4baf05fcdbb55f4560a3277055caca5cc99f3eb0" -dependencies = [ - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-schema 58.4.0", - "arrow-select 58.4.0", -] - [[package]] name = "arrow-ord" version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c08dff0686cf23ca4f562803f191ccbeb726dbae6309cd4b4aaf65e0f2c979" dependencies = [ - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", -] - -[[package]] -name = "arrow-row" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514ba0ef0d4c5896202dae736251ce415abb43a950bed570fb7981b8716c0e4c" -dependencies = [ - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-schema 58.4.0", - "half", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", ] [[package]] @@ -590,23 +401,13 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbec439386df71ad570e6758a946111322b9e9dc8db83b5527321f0b4c9119c2" dependencies = [ - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-schema 59.2.0", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", "half", ] -[[package]] -name = "arrow-schema" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ca356ad6425cecb6eb7b28e4f659f1ee7880fbb1a16127de7dd62901efee9e" -dependencies = [ - "serde_core", - "serde_json", -] - [[package]] name = "arrow-schema" version = "59.2.0" @@ -618,20 +419,6 @@ dependencies = [ "serde_json", ] -[[package]] -name = "arrow-select" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58da39eb3d8350ad4a549e5c2bc49284dac554016c69829310350f1731b0aad" -dependencies = [ - "ahash", - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-schema 58.4.0", - "num-traits", -] - [[package]] name = "arrow-select" version = "59.2.0" @@ -639,28 +426,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "466b19cf75130b891dc1b23a84b343c714c62c64c9c62e365c76aa0ff90a53fb" dependencies = [ "ahash", - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-schema 59.2.0", - "num-traits", -] - -[[package]] -name = "arrow-string" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6789b388467525e3271326b6b4915666ecfdf5142aef09779445c954b67543c" -dependencies = [ - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-schema 58.4.0", - "arrow-select 58.4.0", - "memchr", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", "num-traits", - "regex", - "regex-syntax", ] [[package]] @@ -669,11 +439,11 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c838a25bb3691e919e0f617616ac51a4ff8517a952e29ca133cf0c22b2ce65b1" dependencies = [ - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", "memchr", "num-traits", "regex", @@ -823,13 +593,23 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.91" +version = "0.1.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" +checksum = "82f6aeea286b8eb4dd3431a1be1b59d290ace00f5bfd8e2a159bc2a05e2c1667" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", +] + +[[package]] +name = "asyncband" +version = "0.6.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94a214ba60d6231afd0e805e3c27c45a1626d9debaa5a5061c45a1ea1b2f1ed0" +dependencies = [ + "hashbrown 0.17.1", + "slab", ] [[package]] @@ -855,9 +635,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "aws-config" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b180a3c8b55960db3426d8964b8745e652466a1a49fe1a2eda828046d30b5e4" +checksum = "a767267da9e2c2e189b2f9df8b5657e850ecf5352644734ba130d4a57095cf1b" dependencies = [ "aws-credential-types", "aws-runtime", @@ -898,9 +678,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.17.3" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00bdb5da18dac48ca2cc7cd4a98e533e8635a58e2361d13a1a4ee3888e0d72f1" +checksum = "ce2b2dcc879c3bae0d371e77c99f2238400ef24ec001394befa67b6e543add9e" dependencies = [ "aws-lc-sys", "zeroize", @@ -908,9 +688,9 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.43.0" +version = "0.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43103168cc76fe62678a375e722fc9cb3a0146159ac5828bc4f0dfd755c2224c" +checksum = "f09fae7be8bb3174e05c6afdb34199e6dc0c7c04ba9fa237b1967adfbde27483" dependencies = [ "cc", "cmake", @@ -946,9 +726,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.105.0" +version = "1.108.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffd0fbe7873cb548a7aa60f9573c268fff94155397fd4f14dc9f1ecaaab8516" +checksum = "c15301b04372832947916607983b114b3374b9db0be058a00fb7513800de1f05" dependencies = [ "arc-swap", "aws-credential-types", @@ -972,9 +752,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.107.0" +version = "1.110.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175763eb222a46377df7aa257a3bca980ab3e96703fefc8f4d0b8da6ad2e254c" +checksum = "72cc2c205cb27108183cf1856333f7d584c2ba0f505421b4209ca5828f9ea899" dependencies = [ "arc-swap", "aws-credential-types", @@ -998,9 +778,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.110.0" +version = "1.113.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b14781dfbff48984017d57167b6ea0b6471c6920ec52b44a2677c7feb3c13" +checksum = "68182ecb449f7537db0f4d5d25917789cf41e32074a9fe47b6a0b847fe1d2032" dependencies = [ "arc-swap", "aws-credential-types", @@ -1079,9 +859,9 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "635d23afda0a6ab48d666c4d447c4873e8d1e83518a2be2093122397e50b838e" +checksum = "ebfd138fac0337cee7516c352757ea73b9f2266e57d0bcb5bc70e9547e45aef1" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -1136,9 +916,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.12.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07505b34e8f4b3591a4fa69e9792b52289b95488dbbc68c3c0075b7bedb245e1" +checksum = "b82e438d30e02a825d363bd639a9efaed68a8089d86101054b0081e7e0d3e606" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -1162,9 +942,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b98f2e1fd67ec06618f9c291e5e495a468e60519e44c9c1979cd0521f3affdb" +checksum = "954c563ce84507722d2679f07a35d21b9c6466b3872d513020d0281fc8112ac9" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api-macros", @@ -1202,9 +982,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.6.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6dc683efb34b9e755675b37fedbe0103141e5b6df7bdc9eb6967756a8c167d8" +checksum = "fce83ce9abbb198d25bc7131e468d0f9fe1257125e58c39f3f9fc9f5098c9647" dependencies = [ "base64-simd", "bytes", @@ -1347,11 +1127,10 @@ dependencies = [ [[package]] name = "blake3" -version = "1.8.6" +version = "1.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76ae7bad254120e9e4c63bafc385310756f90c484eac0e36b8317cf09cb92a77" +checksum = "6d9e454fc11f76977dc803893aff6304ed33d6a26efae8696573bea74baa27ae" dependencies = [ - "arrayref", "arrayvec", "cc", "cfg-if", @@ -1388,9 +1167,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +checksum = "a70e4329df6cb94385eed412ec92375c3cdd8a6e502493d1229b6414e4036dfa" dependencies = [ "async-channel 2.5.0", "async-task", @@ -1411,27 +1190,25 @@ dependencies = [ [[package]] name = "bon" -version = "3.9.3" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a602c73c7b0148ec6d12af6fd5cc7a46e2eacc8878271a999abac56eed12f561" +checksum = "9e3fac94a66da67200398458a25412bcc3f9b6443b5119a6cad9cf3ccfcd8cc6" dependencies = [ "bon-macros", - "rustversion", ] [[package]] name = "bon-macros" -version = "3.9.3" +version = "3.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dee98b0db6a962de883bf5d20362dee4d7ca0d12fe39a7c6c73c844e1cd7c1f" +checksum = "d4654961ad0494e4774c5c60b4cb4cd0ae9b9d92d039d901638b1dba97ebebf5" dependencies = [ - "darling 0.23.0", + "darling 0.24.1", "ident_case", - "prettyplease", + "prettyplease 0.3.0", "proc-macro2", "quote", - "rustversion", - "syn 2.0.119", + "syn 3.0.4", ] [[package]] @@ -1524,9 +1301,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.4.0" +version = "1.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" +checksum = "0ad534f4357a5264cce5019c989cf66a4f0dc4e0d1b1d15f8aacec0ff7360273" dependencies = [ "find-msvc-tools", "jobserver", @@ -1626,9 +1403,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.5" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf" +checksum = "473c7e07f409a8d772161724aa8db6a765a2532a70f9667eeb7b49d3d02fbdca" dependencies = [ "clap_builder", "clap_derive", @@ -1636,9 +1413,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.5" +version = "4.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078" +checksum = "7b48fea5a88e9ae728a2dcbedbfc0e730f7d60da42e1cb049a83c9fb8b789889" dependencies = [ "anstream", "anstyle", @@ -1655,7 +1432,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -1687,9 +1464,9 @@ checksum = "1d07550c9036bf2ae0c684c4297d503f838287c83c53686d05370d0e139ae570" [[package]] name = "combine" -version = "4.6.7" +version = "4.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" +checksum = "cfc320937d09e6de266b31b9afb480f197d7a861be86be7cb2ea7e5d1bfffc5e" dependencies = [ "bytes", "memchr", @@ -1699,7 +1476,7 @@ dependencies = [ name = "comet-contrib-delta" version = "0.18.0" dependencies = [ - "datafusion 54.1.0", + "datafusion", "datafusion-comet-proto", ] @@ -1845,9 +1622,9 @@ dependencies = [ [[package]] name = "crc32fast" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +checksum = "8498c871161e1742aaa9d52551b2d6ebdd4c3d45a3be423e3728f33b955be550" dependencies = [ "cfg-if", ] @@ -1970,9 +1747,9 @@ dependencies = [ [[package]] name = "ctor" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d83cb7e7a873830708d6b02a78cd36a592c6fa14bf267b68725103b85c0d77f" +checksum = "914a755b7c2d4af2bdcff7ce1739e2db9a1b81a9b07123d8015786ae03c0980d" dependencies = [ "link-section", "linktime-proc-macro", @@ -2016,6 +1793,16 @@ dependencies = [ "darling_macro 0.23.0", ] +[[package]] +name = "darling" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" +dependencies = [ + "darling_core 0.24.1", + "darling_macro 0.24.1", +] + [[package]] name = "darling_core" version = "0.20.11" @@ -2043,6 +1830,19 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "darling_core" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" +dependencies = [ + "ident_case", + "proc-macro2", + "quote", + "strsim", + "syn 3.0.4", +] + [[package]] name = "darling_macro" version = "0.20.11" @@ -2065,6 +1865,17 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "darling_macro" +version = "0.24.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" +dependencies = [ + "darling_core 0.24.1", + "quote", + "syn 3.0.4", +] + [[package]] name = "dashmap" version = "6.2.1" @@ -2079,86 +1890,40 @@ dependencies = [ "parking_lot_core", ] -[[package]] -name = "datafusion" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754ef4e8f073922a26f5b23133b9db4829342362b09be0bc94309cf261c2f098" -dependencies = [ - "arrow 58.4.0", - "arrow-schema 58.4.0", - "async-trait", - "chrono", - "datafusion-catalog 54.1.0", - "datafusion-catalog-listing 54.1.0", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-datasource-arrow 54.1.0", - "datafusion-datasource-csv 54.1.0", - "datafusion-datasource-json 54.1.0", - "datafusion-datasource-parquet 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-functions 54.1.0", - "datafusion-functions-aggregate 54.1.0", - "datafusion-functions-table 54.1.0", - "datafusion-functions-window 54.1.0", - "datafusion-optimizer 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-adapter 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-optimizer 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-session 54.1.0", - "futures", - "indexmap 2.14.0", - "itertools 0.14.0", - "log", - "object_store", - "parking_lot", - "parquet 58.4.0", - "tempfile", - "tokio", - "url", - "uuid", -] - [[package]] name = "datafusion" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96f76f0167ed0842b29a3d1e41be3c034c0a46409a3a703cc4cc84ee8c24abf4" dependencies = [ - "arrow 59.2.0", - "arrow-schema 59.2.0", + "arrow", + "arrow-schema", "async-trait", "chrono", - "datafusion-catalog 55.0.0", - "datafusion-catalog-listing 55.0.0", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-datasource-arrow 55.0.0", - "datafusion-datasource-csv 55.0.0", - "datafusion-datasource-json 55.0.0", - "datafusion-datasource-parquet 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-functions 55.0.0", - "datafusion-functions-aggregate 55.0.0", + "datafusion-catalog", + "datafusion-catalog-listing", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-datasource-arrow", + "datafusion-datasource-csv", + "datafusion-datasource-json", + "datafusion-datasource-parquet", + "datafusion-execution", + "datafusion-expr", + "datafusion-expr-common", + "datafusion-functions", + "datafusion-functions-aggregate", "datafusion-functions-nested", - "datafusion-functions-table 55.0.0", - "datafusion-functions-window 55.0.0", - "datafusion-optimizer 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-adapter 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-optimizer 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-session 55.0.0", + "datafusion-functions-table", + "datafusion-functions-window", + "datafusion-optimizer", + "datafusion-physical-expr", + "datafusion-physical-expr-adapter", + "datafusion-physical-expr-common", + "datafusion-physical-optimizer", + "datafusion-physical-plan", + "datafusion-session", "datafusion-sql", "futures", "indexmap 2.14.0", @@ -2166,7 +1931,7 @@ dependencies = [ "log", "object_store", "parking_lot", - "parquet 59.2.0", + "parquet", "sqlparser", "tempfile", "tokio", @@ -2174,48 +1939,23 @@ dependencies = [ "uuid", ] -[[package]] -name = "datafusion-catalog" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06afd1e38dd27bbb1258685a1fc6524df6aff4e07b25b393a47de59635178d99" -dependencies = [ - "arrow 58.4.0", - "async-trait", - "dashmap", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-session 54.1.0", - "futures", - "itertools 0.14.0", - "log", - "object_store", - "parking_lot", - "tokio", -] - [[package]] name = "datafusion-catalog" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d79ec3460f6ed5c58f9b3f2d873fbc77748b82653bff1b4cdaf06de33bb4e05f" dependencies = [ - "arrow 59.2.0", + "arrow", "async-trait", "dashmap", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-session 55.0.0", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-plan", + "datafusion-session", "futures", "itertools 0.15.0", "log", @@ -2224,46 +1964,23 @@ dependencies = [ "tokio", ] -[[package]] -name = "datafusion-catalog-listing" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0668fb32c12065ec242be0e5b4bc62bd7a06a0be3ecd83791ef877e4be67e02" -dependencies = [ - "arrow 58.4.0", - "async-trait", - "datafusion-catalog 54.1.0", - "datafusion-common 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-adapter 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "futures", - "itertools 0.14.0", - "log", - "object_store", -] - [[package]] name = "datafusion-catalog-listing" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b48cef241e2efcfd496fe05ae4d0d5de20793451862faefe406c397a467e12d4" dependencies = [ - "arrow 59.2.0", + "arrow", "async-trait", - "datafusion-catalog 55.0.0", - "datafusion-common 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-adapter 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", + "datafusion-catalog", + "datafusion-common", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-expr-adapter", + "datafusion-physical-expr-common", + "datafusion-physical-plan", "futures", "itertools 0.15.0", "log", @@ -2275,7 +1992,7 @@ dependencies = [ name = "datafusion-comet" version = "1.1.0" dependencies = [ - "arrow 59.2.0", + "arrow", "assertables", "async-trait", "aws-config", @@ -2283,15 +2000,15 @@ dependencies = [ "bytes", "comet-contrib-delta", "criterion", - "datafusion 55.0.0", + "datafusion", "datafusion-comet-common", "datafusion-comet-jni-bridge", "datafusion-comet-proto", "datafusion-comet-shuffle", "datafusion-comet-spark-expr", - "datafusion-datasource 55.0.0", + "datafusion-datasource", "datafusion-functions-nested", - "datafusion-physical-expr-adapter 55.0.0", + "datafusion-physical-expr-adapter", "datafusion-spark", "futures", "hdfs-sys", @@ -2311,7 +2028,7 @@ dependencies = [ "once_cell", "opendal", "parking_lot", - "parquet 59.2.0", + "parquet", "paste", "pprof", "procfs", @@ -2332,29 +2049,29 @@ dependencies = [ name = "datafusion-comet-common" version = "1.1.0" dependencies = [ - "arrow 59.2.0", - "datafusion 55.0.0", + "arrow", + "datafusion", "serde", "serde_json", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] name = "datafusion-comet-jni-bridge" version = "1.1.0" dependencies = [ - "arrow 59.2.0", + "arrow", "assertables", - "datafusion 55.0.0", + "datafusion", "datafusion-comet-common", "jni 0.22.4", "lazy_static", "once_cell", - "parquet 59.2.0", + "parquet", "paste", "prost", "regex", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -2369,14 +2086,14 @@ dependencies = [ name = "datafusion-comet-shuffle" version = "1.1.0" dependencies = [ - "arrow 59.2.0", + "arrow", "async-trait", "bytes", "clap", "crc32c", "crc32fast", "criterion", - "datafusion 55.0.0", + "datafusion", "datafusion-comet-common", "datafusion-comet-jni-bridge", "datafusion-comet-spark-expr", @@ -2384,8 +2101,8 @@ dependencies = [ "itertools 0.15.0", "jni 0.21.1", "log", - "lz4_flex 0.14.0", - "parquet 59.2.0", + "lz4_flex", + "parquet", "simd-adler32", "snap", "tempfile", @@ -2397,11 +2114,11 @@ dependencies = [ name = "datafusion-comet-spark-expr" version = "1.1.0" dependencies = [ - "arrow 59.2.0", + "arrow", "base64 0.23.1", "chrono", "criterion", - "datafusion 55.0.0", + "datafusion", "datafusion-comet-common", "datafusion-comet-jni-bridge", "datafusion-spark", @@ -2418,39 +2135,15 @@ dependencies = [ "uuid", ] -[[package]] -name = "datafusion-common" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca43b263cdff57042cfa8fb817fb3469f4878933380dccff25f5e793580abbf9" -dependencies = [ - "arrow 58.4.0", - "arrow-ipc 58.4.0", - "arrow-schema 58.4.0", - "chrono", - "foldhash 0.2.0", - "half", - "hashbrown 0.17.1", - "indexmap 2.14.0", - "itertools 0.14.0", - "libc", - "log", - "object_store", - "parquet 58.4.0", - "tokio", - "uuid", - "web-time", -] - [[package]] name = "datafusion-common" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f72810485975c258f1b4d00baab31728470676c60c5546f366ebd0d99f05ab6" dependencies = [ - "arrow 59.2.0", - "arrow-ipc 59.2.0", - "arrow-schema 59.2.0", + "arrow", + "arrow-ipc", + "arrow-schema", "chrono", "foldhash 0.2.0", "half", @@ -2462,24 +2155,13 @@ dependencies = [ "log", "num-traits", "object_store", - "parquet 59.2.0", + "parquet", "sqlparser", "tokio", "uuid", "web-time", ] -[[package]] -name = "datafusion-common-runtime" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f0ba2b864792bdca4d76c59a1de0ab6e1b61946596b9936888dbd6360035f2" -dependencies = [ - "futures", - "log", - "tokio", -] - [[package]] name = "datafusion-common-runtime" version = "55.0.0" @@ -2491,57 +2173,27 @@ dependencies = [ "tokio", ] -[[package]] -name = "datafusion-datasource" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b840a8bce0bcbf5afad02946d438591e7c373f7afccaf3d874c04485772514dd" -dependencies = [ - "arrow 58.4.0", - "async-trait", - "bytes", - "chrono", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-adapter 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-session 54.1.0", - "futures", - "glob", - "itertools 0.14.0", - "log", - "object_store", - "parking_lot", - "rand 0.9.5", - "tokio", - "url", -] - [[package]] name = "datafusion-datasource" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b00a1fa0da26f6087136a82fea7f13c76a672cbab452d4086952a7cf770a19b" dependencies = [ - "arrow 59.2.0", + "arrow", "async-compression", "async-trait", "bytes", "bzip2", "chrono", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-adapter 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-session 55.0.0", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-expr-adapter", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", "flate2", "futures", "glob", @@ -2557,289 +2209,139 @@ dependencies = [ "zstd", ] -[[package]] -name = "datafusion-datasource-arrow" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24cc0b9cf6e367f27f27406eff13abf48a11b72446aaa40b3105c0ded5c17d9" -dependencies = [ - "arrow 58.4.0", - "arrow-ipc 58.4.0", - "async-trait", - "bytes", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-session 54.1.0", - "futures", - "itertools 0.14.0", - "object_store", - "tokio", -] - [[package]] name = "datafusion-datasource-arrow" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5ad17ec881bff2ed7768b4bfe971d3efbf3473f2fd1f9d365447bccbdf908678" dependencies = [ - "arrow 59.2.0", - "arrow-ipc 59.2.0", + "arrow", + "arrow-ipc", "async-trait", "bytes", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-session 55.0.0", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", "futures", "itertools 0.15.0", "object_store", "tokio", ] -[[package]] -name = "datafusion-datasource-csv" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1abe56b2a7a2d1d6de5117dd1a203181e267f28529faa5da546947621b697d7" -dependencies = [ - "arrow 58.4.0", - "async-trait", - "bytes", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-session 54.1.0", - "futures", - "object_store", - "regex", - "tokio", -] - [[package]] name = "datafusion-datasource-csv" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5345285b0c3eaab412e7539b706973c083bd7e5bce575de5e0a3da488d08d1d" dependencies = [ - "arrow 59.2.0", + "arrow", "async-trait", "bytes", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-session 55.0.0", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", "futures", "object_store", "regex", "tokio", ] -[[package]] -name = "datafusion-datasource-json" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3e467f0611ad7bdd5aad17c63c9bb6182d04e5282e5496d897ea2b49c024ba" -dependencies = [ - "arrow 58.4.0", - "async-trait", - "bytes", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-session 54.1.0", - "futures", - "object_store", - "tokio", - "tokio-stream", -] - [[package]] name = "datafusion-datasource-json" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da02fb9324f56bd8c53f1ee2e949547425cb66f76adc6832b10d44f80a1221d2" dependencies = [ - "arrow 59.2.0", + "arrow", "async-trait", "bytes", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-session 55.0.0", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", "futures", "object_store", "tokio", "tokio-stream", ] -[[package]] -name = "datafusion-datasource-parquet" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc35b92cd560082155e80d9c826929c852d3c51543f4affd3a51c464a0aab3a" -dependencies = [ - "arrow 58.4.0", - "async-trait", - "bytes", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-functions 54.1.0", - "datafusion-functions-aggregate-common 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-adapter 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-pruning 54.1.0", - "datafusion-session 54.1.0", - "futures", - "itertools 0.14.0", - "log", - "object_store", - "parking_lot", - "parquet 58.4.0", - "tokio", -] - [[package]] name = "datafusion-datasource-parquet" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c0b0dc1453952952fd5c69ad1c7f6042176e69ed233011d47e07cf74ed0949e" dependencies = [ - "arrow 59.2.0", - "arrow-schema 59.2.0", + "arrow", + "arrow-schema", "async-trait", "bytes", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-functions 55.0.0", - "datafusion-functions-aggregate-common 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-adapter 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-pruning 55.0.0", - "datafusion-session 55.0.0", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-functions", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr", + "datafusion-physical-expr-adapter", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-pruning", + "datafusion-session", "futures", "itertools 0.15.0", "log", "object_store", "parking_lot", - "parquet 59.2.0", + "parquet", "tokio", ] -[[package]] -name = "datafusion-doc" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69bb69d8769e34f76839c960dbde24c1ac0c885a79b6c3c2287bdc56ec67891" - [[package]] name = "datafusion-doc" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a88fd985bc0550c36f557db69543cc9d6393b1509783520b30e902f23c555da6" -[[package]] -name = "datafusion-execution" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8eac0a09bc8d263f52025cad9e001da4d8138d633fa288edda4d06b1772eae6" -dependencies = [ - "arrow 58.4.0", - "arrow-buffer 58.4.0", - "async-trait", - "dashmap", - "datafusion-common 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "futures", - "log", - "object_store", - "parking_lot", - "rand 0.9.5", - "tempfile", - "url", -] - [[package]] name = "datafusion-execution" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a98f1052f91b4991f0bf2ce1e4e36dfbdcda454a956b8c8d562c7c845e8fce1d" dependencies = [ - "arrow 59.2.0", - "arrow-buffer 59.2.0", + "arrow", + "arrow-buffer", "async-trait", "bytes", "dashmap", - "datafusion-common 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "datafusion-common", + "datafusion-expr", + "datafusion-physical-expr-common", "futures", "log", "object_store", "parking_lot", - "parquet 59.2.0", + "parquet", "pin-project-lite", - "rand 0.9.5", - "tempfile", - "tokio", - "tokio-util", - "url", -] - -[[package]] -name = "datafusion-expr" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb14d374767ee0fc62dc79a5ba8bcf8a63c14e993c7d992d0e63adfa23d77d3" -dependencies = [ - "arrow 58.4.0", - "arrow-schema 58.4.0", - "async-trait", - "chrono", - "datafusion-common 54.1.0", - "datafusion-doc 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-functions-aggregate-common 54.1.0", - "datafusion-functions-window-common 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "indexmap 2.14.0", - "itertools 0.14.0", - "serde_json", + "rand 0.9.5", + "tempfile", + "tokio", + "tokio-util", + "url", ] [[package]] @@ -2848,94 +2350,54 @@ version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "464625a1f0e4b9df552d894fafcc8aac953ebbc8b0fa0acdaf20975fd615040e" dependencies = [ - "arrow 59.2.0", - "arrow-schema 59.2.0", + "arrow", + "arrow-schema", "async-trait", "chrono", - "datafusion-common 55.0.0", - "datafusion-doc 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-functions-aggregate-common 55.0.0", - "datafusion-functions-window-common 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "datafusion-common", + "datafusion-doc", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", + "datafusion-functions-window-common", + "datafusion-physical-expr-common", "indexmap 2.14.0", "itertools 0.15.0", "serde_json", "sqlparser", ] -[[package]] -name = "datafusion-expr-common" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b19a8c95522bee8cbb313d74263b85e355d2b52f42e67ef5694bf5de9e9356" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "indexmap 2.14.0", - "itertools 0.14.0", -] - [[package]] name = "datafusion-expr-common" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2604994999d5aeca1d1df645ffc98bc787447aaff05dde27aad0342b48fc1fe0" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", + "arrow", + "datafusion-common", "indexmap 2.14.0", "itertools 0.15.0", ] -[[package]] -name = "datafusion-functions" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f64c983bbbdcb729d921a2b2ac3375598719b5cc0c30345ad664936f3176fc7" -dependencies = [ - "arrow 58.4.0", - "arrow-buffer 58.4.0", - "base64 0.22.1", - "chrono", - "chrono-tz", - "datafusion-common 54.1.0", - "datafusion-doc 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-macros 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "hex", - "itertools 0.14.0", - "log", - "memchr", - "num-traits", - "rand 0.9.5", - "regex", - "uuid", -] - [[package]] name = "datafusion-functions" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "051e97533e6af53e4aa0a0667cadc886abcaf36c4a5925019c55c0aa4c218fde" dependencies = [ - "arrow 59.2.0", - "arrow-buffer 59.2.0", + "arrow", + "arrow-buffer", "base64 0.23.1", "blake2", "blake3", "chrono", "chrono-tz", - "datafusion-common 55.0.0", - "datafusion-doc 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-macros 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "datafusion-common", + "datafusion-doc", + "datafusion-execution", + "datafusion-expr", + "datafusion-expr-common", + "datafusion-macros", + "datafusion-physical-expr-common", "hex", "itertools 0.15.0", "log", @@ -2948,70 +2410,37 @@ dependencies = [ "uuid", ] -[[package]] -name = "datafusion-functions-aggregate" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89bc17041e424a47ed062f43df24d84aab8b57c4c3221e5c1a5eef46d6c5718b" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "datafusion-doc 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-functions-aggregate-common 54.1.0", - "datafusion-macros 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "foldhash 0.2.0", - "half", - "log", - "num-traits", -] - [[package]] name = "datafusion-functions-aggregate" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d0f1bb166d3572b6ed40e1afb2faaacade962abc08c2fcf04babee74681c56b" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", - "datafusion-doc 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-functions-aggregate-common 55.0.0", - "datafusion-macros 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "arrow", + "datafusion-common", + "datafusion-doc", + "datafusion-execution", + "datafusion-expr", + "datafusion-functions-aggregate-common", + "datafusion-macros", + "datafusion-physical-expr", + "datafusion-physical-expr-common", "half", "hashbrown 0.17.1", "log", "num-traits", ] -[[package]] -name = "datafusion-functions-aggregate-common" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dd2a9e865c6108059f5b37b77934f84b50bfb108f837bd0e5c9536e03f0545" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-physical-expr-common 54.1.0", -] - [[package]] name = "datafusion-functions-aggregate-common" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ed756770f5f98369e181d692fd5ee6b1127ffd7322caba92f3730f9f5c92333" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "arrow", + "datafusion-common", + "datafusion-expr-common", + "datafusion-physical-expr-common", ] [[package]] @@ -3020,18 +2449,18 @@ version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91173fdb5c0ff2a41169a8ffa1b385b8844f18728747bb0a37e35ad7d5772a4f" dependencies = [ - "arrow 59.2.0", - "arrow-ord 59.2.0", - "datafusion-common 55.0.0", - "datafusion-doc 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-functions 55.0.0", - "datafusion-functions-aggregate 55.0.0", - "datafusion-functions-aggregate-common 55.0.0", - "datafusion-macros 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "arrow", + "arrow-ord", + "datafusion-common", + "datafusion-doc", + "datafusion-execution", + "datafusion-expr", + "datafusion-expr-common", + "datafusion-functions", + "datafusion-functions-aggregate", + "datafusion-functions-aggregate-common", + "datafusion-macros", + "datafusion-physical-expr-common", "hashbrown 0.17.1", "itertools 0.15.0", "itoa", @@ -3039,101 +2468,47 @@ dependencies = [ "memchr", ] -[[package]] -name = "datafusion-functions-table" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e4941673c917819616877e9993da4503e4f4739812be0bc32c5356184c6383" -dependencies = [ - "arrow 58.4.0", - "async-trait", - "datafusion-catalog 54.1.0", - "datafusion-common 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-plan 54.1.0", - "parking_lot", -] - [[package]] name = "datafusion-functions-table" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b1bcdfb286a745461b126719c32700777e83df4f17cc44db5d71ebce5731e840" dependencies = [ - "arrow 59.2.0", + "arrow", "async-trait", - "datafusion-catalog 55.0.0", - "datafusion-common 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-plan 55.0.0", + "datafusion-catalog", + "datafusion-common", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-plan", "parking_lot", ] -[[package]] -name = "datafusion-functions-window" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dd2e16c12b84b6f6b41b19f55b366dd1c46876bb35b86896c6349067379e8d" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "datafusion-doc 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-functions-window-common 54.1.0", - "datafusion-macros 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "log", -] - [[package]] name = "datafusion-functions-window" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ec4b508f1f93f00038ba3e737e894ec6c775528b4369413386655ae6125f0fc" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", - "datafusion-doc 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-functions-window-common 55.0.0", - "datafusion-macros 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "arrow", + "datafusion-common", + "datafusion-doc", + "datafusion-expr", + "datafusion-functions-window-common", + "datafusion-macros", + "datafusion-physical-expr", + "datafusion-physical-expr-common", "log", ] -[[package]] -name = "datafusion-functions-window-common" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cdc5e4b6f8b6ef823cc1c761f85088ad4c884fe8df64df3cbcc6b2b84698441" -dependencies = [ - "datafusion-common 54.1.0", - "datafusion-physical-expr-common 54.1.0", -] - [[package]] name = "datafusion-functions-window-common" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b352020834140073fbf5b46ee0ceb926e5074a9d0bcae1dbd91d0586d999cde" dependencies = [ - "datafusion-common 55.0.0", - "datafusion-physical-expr-common 55.0.0", -] - -[[package]] -name = "datafusion-macros" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3614234dd93578c92428cb4f408e020874f0d2b7e6c90c928d9d28b5df2ceb" -dependencies = [ - "datafusion-doc 54.1.0", - "quote", - "syn 2.0.119", + "datafusion-common", + "datafusion-physical-expr-common", ] [[package]] @@ -3142,28 +2517,9 @@ version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "15192effab05d38cce10e92a6fb48c967b5f166b27b7195a165a72b232569c58" dependencies = [ - "datafusion-doc 55.0.0", + "datafusion-doc", "quote", - "syn 3.0.3", -] - -[[package]] -name = "datafusion-optimizer" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0635620b050b81bb92764e99250868f654e2cd5ad1bece413283b3f73c83179" -dependencies = [ - "arrow 58.4.0", - "chrono", - "datafusion-common 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-physical-expr 54.1.0", - "indexmap 2.14.0", - "itertools 0.14.0", - "log", - "regex", - "regex-syntax", + "syn 3.0.4", ] [[package]] @@ -3172,12 +2528,12 @@ version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "854445d9f7847e1e46089cf61b8d341a64382f14484e912c83a0f23b31216896" dependencies = [ - "arrow 59.2.0", + "arrow", "chrono", - "datafusion-common 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-physical-expr 55.0.0", + "datafusion-common", + "datafusion-expr", + "datafusion-expr-common", + "datafusion-physical-expr", "indexmap 2.14.0", "itertools 0.15.0", "log", @@ -3185,39 +2541,18 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "datafusion-physical-expr" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cabf7a86eb70b816729e33c81bf7767c936ee1226f607a114f5dac2decac8d0" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-functions-aggregate-common 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "half", - "hashbrown 0.17.1", - "indexmap 2.14.0", - "itertools 0.14.0", - "parking_lot", - "petgraph", - "tokio", -] - [[package]] name = "datafusion-physical-expr" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "671558dad1d2aa253c39c0a4c52515958b99eb91abf649f4b88d5e69cc55282f" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-functions-aggregate-common 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "arrow", + "datafusion-common", + "datafusion-expr", + "datafusion-expr-common", + "datafusion-functions-aggregate-common", + "datafusion-physical-expr-common", "half", "hashbrown 0.17.1", "indexmap 2.14.0", @@ -3227,63 +2562,31 @@ dependencies = [ "tokio", ] -[[package]] -name = "datafusion-physical-expr-adapter" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de222e04f7e6744501555a54ab0abe26bfdfebee380af79a9bdc175704246859" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-functions 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "itertools 0.14.0", -] - [[package]] name = "datafusion-physical-expr-adapter" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffae3d78c2da80ecc829cb58536cc5aca2e99cf1365eda694fc75bfe288861e0" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-functions 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "arrow", + "datafusion-common", + "datafusion-expr", + "datafusion-functions", + "datafusion-physical-expr", + "datafusion-physical-expr-common", "itertools 0.15.0", ] -[[package]] -name = "datafusion-physical-expr-common" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d0d0057fc5a502d45c870cb6d47c66eb7bdd5edb1bd71ad6f3f724975ac2a8" -dependencies = [ - "arrow 58.4.0", - "chrono", - "datafusion-common 54.1.0", - "datafusion-expr-common 54.1.0", - "hashbrown 0.17.1", - "indexmap 2.14.0", - "itertools 0.14.0", - "parking_lot", - "pin-project", -] - [[package]] name = "datafusion-physical-expr-common" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d9092ed15e7203fbd0903215172f7c9d18f10d94cba35137f3b3836f7c46f16" dependencies = [ - "arrow 59.2.0", + "arrow", "chrono", - "datafusion-common 55.0.0", - "datafusion-expr-common 55.0.0", + "datafusion-common", + "datafusion-expr-common", "hashbrown 0.17.1", "indexmap 2.14.0", "itertools 0.15.0", @@ -3291,98 +2594,47 @@ dependencies = [ "pin-project", ] -[[package]] -name = "datafusion-physical-optimizer" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86046eed10950c5f9aaed9acfd148e9bd2e1dfdfe4f9aef607d1447b271e4183" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "datafusion-pruning 54.1.0", - "itertools 0.14.0", -] - [[package]] name = "datafusion-physical-optimizer" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9005b6cf50b57b72d476c6ed4662b04be7ca6be5320ba9127c6d0b7e4218095b" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", - "datafusion-pruning 55.0.0", - "datafusion-session 55.0.0", + "arrow", + "datafusion-common", + "datafusion-execution", + "datafusion-expr", + "datafusion-expr-common", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-pruning", + "datafusion-session", "itertools 0.15.0", ] -[[package]] -name = "datafusion-physical-plan" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bc84da934c903407ba297971ebcc020c4c1a38aafd765d6c144c76eff3fa6a1" -dependencies = [ - "arrow 58.4.0", - "arrow-data 58.4.0", - "arrow-ipc 58.4.0", - "arrow-ord 58.4.0", - "arrow-schema 58.4.0", - "async-trait", - "datafusion-common 54.1.0", - "datafusion-common-runtime 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-functions 54.1.0", - "datafusion-functions-aggregate-common 54.1.0", - "datafusion-functions-window-common 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "futures", - "half", - "hashbrown 0.17.1", - "indexmap 2.14.0", - "itertools 0.14.0", - "log", - "num-traits", - "parking_lot", - "pin-project-lite", - "tokio", -] - [[package]] name = "datafusion-physical-plan" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5787e4fcff4adc4fce8948441103a99705018b49c8dff0720b650bd7a15da112" dependencies = [ - "arrow 59.2.0", - "arrow-data 59.2.0", - "arrow-ipc 59.2.0", - "arrow-ord 59.2.0", - "arrow-schema 59.2.0", + "arrow", + "arrow-data", + "arrow-ipc", + "arrow-ord", + "arrow-schema", "async-trait", "bytes", - "datafusion-common 55.0.0", - "datafusion-common-runtime 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-functions 55.0.0", - "datafusion-functions-aggregate-common 55.0.0", - "datafusion-functions-window-common 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-execution", + "datafusion-expr", + "datafusion-functions", + "datafusion-functions-aggregate-common", + "datafusion-functions-window-common", + "datafusion-physical-expr", + "datafusion-physical-expr-common", "futures", "half", "hashbrown 0.17.1", @@ -3396,64 +2648,34 @@ dependencies = [ "tokio", ] -[[package]] -name = "datafusion-pruning" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb63eeac6de19be40f487b65dd84e546195f783c5a9928618e0c4f2a3569b0d7" -dependencies = [ - "arrow 58.4.0", - "datafusion-common 54.1.0", - "datafusion-datasource 54.1.0", - "datafusion-expr-common 54.1.0", - "datafusion-physical-expr 54.1.0", - "datafusion-physical-expr-common 54.1.0", - "datafusion-physical-plan 54.1.0", - "log", -] - [[package]] name = "datafusion-pruning" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e651c8df0b90daed6a7be5921ec0ee379e6909705f063eeff70fd4e35010e4c" dependencies = [ - "arrow 59.2.0", - "datafusion-common 55.0.0", - "datafusion-datasource 55.0.0", - "datafusion-expr-common 55.0.0", - "datafusion-physical-expr 55.0.0", - "datafusion-physical-expr-common 55.0.0", - "datafusion-physical-plan 55.0.0", + "arrow", + "datafusion-common", + "datafusion-datasource", + "datafusion-expr-common", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", "log", ] -[[package]] -name = "datafusion-session" -version = "54.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f961d209177f91bd014db5cbb2c33b7d28a2597b9003e77f17aeb712964315a" -dependencies = [ - "async-trait", - "datafusion-common 54.1.0", - "datafusion-execution 54.1.0", - "datafusion-expr 54.1.0", - "datafusion-physical-plan 54.1.0", - "parking_lot", -] - [[package]] name = "datafusion-session" version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb56667ee38217efab19b895d9a936052cfb47ed438a19663351bdc42a6214a1" dependencies = [ - "arrow-schema 59.2.0", + "arrow-schema", "async-trait", - "datafusion-common 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-physical-plan 55.0.0", + "datafusion-common", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-plan", "parking_lot", ] @@ -3463,18 +2685,18 @@ version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "992dd0b954f24cb576cbeee3555c3083b9cf7a5a5f2448ea25f7a437d444163f" dependencies = [ - "arrow 59.2.0", + "arrow", "bigdecimal", "chrono", "crc32fast", - "datafusion 55.0.0", - "datafusion-catalog 55.0.0", - "datafusion-common 55.0.0", - "datafusion-execution 55.0.0", - "datafusion-expr 55.0.0", - "datafusion-functions 55.0.0", - "datafusion-functions-aggregate 55.0.0", - "datafusion-functions-aggregate-common 55.0.0", + "datafusion", + "datafusion-catalog", + "datafusion-common", + "datafusion-execution", + "datafusion-expr", + "datafusion-functions", + "datafusion-functions-aggregate", + "datafusion-functions-aggregate-common", "datafusion-functions-nested", "log", "num-traits", @@ -3493,11 +2715,11 @@ version = "55.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c29067cb9d32f8e603c45e15d61ea18f1069f96ceafeceb4e18466b8e5b31d9" dependencies = [ - "arrow 59.2.0", + "arrow", "bigdecimal", "chrono", - "datafusion-common 55.0.0", - "datafusion-expr 55.0.0", + "datafusion-common", + "datafusion-expr", "datafusion-functions-nested", "indexmap 2.14.0", "log", @@ -3542,7 +2764,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "10d60334b3b2e7c9d91ef8150abfb6fa4c1c39ebbcf4a81c2e346aad939fee3e" dependencies = [ - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -3656,7 +2878,7 @@ checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -3688,9 +2910,9 @@ checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] name = "either" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" +checksum = "252afb9ae5eaa683babdc6a068b3f5726eb19e05070c731f9b2a23a7c3e8ed34" [[package]] name = "equator" @@ -3795,9 +3017,9 @@ checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" -version = "0.1.9" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +checksum = "d45db016d36b838f563236e9193d0ee6ce38f3f68b6c94e914b4929c96bbb890" [[package]] name = "findshlibs" @@ -3873,9 +3095,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218" +checksum = "9a31d2a3fbaaeb2af2368bbdd904aa8e812d3c04a1ee10d3171f52d556e5d0a3" dependencies = [ "futures-channel", "futures-core", @@ -3888,9 +3110,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" +checksum = "b1f9e3d69d39e4862ffed03ed071a76f9a13ba1d9109d355b0f0aa6b15e393c4" dependencies = [ "futures-core", "futures-sink", @@ -3898,15 +3120,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" +checksum = "92d699e522242e69e3003b94ecc1f960f3a5e015aa7c5d7486e65ad01dd94f5e" [[package]] name = "futures-executor" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" +checksum = "031b47cf1a3c6cc8bc2fc76cd437f521619387907d469316e7c0bc278f1f5432" dependencies = [ "futures-core", "futures-task", @@ -3915,9 +3137,9 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" +checksum = "53c0fa8157de1303bfffdaa1cc2a673bfffb60102f76b0ef4441659124373fed" [[package]] name = "futures-lite" @@ -3934,32 +3156,32 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" +checksum = "9fb9654ba8355388abeb8dcb4fc62f511300867002afc858860463bdd9fe0c44" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.4", ] [[package]] name = "futures-sink" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" +checksum = "1944426bf7d03f1d14f708785e4b33efd750b36d48a157b836b3efc15ede8e1d" [[package]] name = "futures-task" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" +checksum = "cd417de3d1d015fc3bfd2b1ea46dfc7bab72ef86f1cc7cc9c78e728b34a6d1fd" [[package]] name = "futures-util" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" +checksum = "0d50a92467f8ba5dd6e3ee5d4bd04d73ab2e4e1c44474a0674821dfce14b79bc" dependencies = [ "futures-channel", "futures-core", @@ -4057,9 +3279,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.15" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" +checksum = "ef8e5e5a340588f4452631496976cf8636d4a7ecf600239fdc27615d2530bc16" dependencies = [ "atomic-waker", "bytes", @@ -4222,9 +3444,9 @@ dependencies = [ [[package]] name = "http-body-util" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" +checksum = "23169fe34a5fbcdd3f3862e78fb9b6fccd5f02a6dc6f732547005d45631ce71c" dependencies = [ "bytes", "futures-core", @@ -4347,14 +3569,14 @@ dependencies = [ "anyhow", "apache-avro", "array-init", - "arrow-arith 59.2.0", - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-cast 59.2.0", - "arrow-ord 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", - "arrow-string 59.2.0", + "arrow-arith", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-ord", + "arrow-schema", + "arrow-select", + "arrow-string", "as-any", "async-trait", "backon", @@ -4374,7 +3596,7 @@ dependencies = [ "murmur3", "once_cell", "ordered-float 4.6.0", - "parquet 59.2.0", + "parquet", "rand 0.9.5", "reqwest 0.12.28", "roaring", @@ -4416,9 +3638,9 @@ dependencies = [ [[package]] name = "icu_collections" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" +checksum = "fa68d21081c4a05d5a901a1c62add574c77048b6a1c67be3b50ce0b60d4ca513" dependencies = [ "displaydoc", "potential_utf", @@ -4430,9 +3652,9 @@ dependencies = [ [[package]] name = "icu_locale_core" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" +checksum = "d56e28588da92eee5c3201a6eff33fabdd49b62269c8938d4ff050ce4d900deb" dependencies = [ "displaydoc", "litemap", @@ -4443,9 +3665,9 @@ dependencies = [ [[package]] name = "icu_normalizer" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" +checksum = "12f9cf5f235641ed274641dd81c3f28d870e276763d0797aeeab72317b1c646f" dependencies = [ "icu_collections", "icu_normalizer_data", @@ -4457,16 +3679,17 @@ dependencies = [ [[package]] name = "icu_normalizer_data" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" +checksum = "1563da1ed3e0b3bf3d74c9b85917ac9c56464d2f57242270c09c9e752f8021a0" [[package]] name = "icu_properties" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" +checksum = "7e7ca276ad3145661a65914e6daf131ca5120cd3dcee8f8f3214b8875184a148" dependencies = [ + "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", @@ -4477,15 +3700,15 @@ dependencies = [ [[package]] name = "icu_properties_data" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" +checksum = "e590f038c1464a96894fd6d10127e90a8be4509f56ff7ecef851b15cee0b7caa" [[package]] name = "icu_provider" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" +checksum = "d27bbb9d3abbefac45d55f647c9de1d44aafcd1186eb91879afef17c396c3e73" dependencies = [ "displaydoc", "icu_locale_core", @@ -4574,12 +3797,6 @@ dependencies = [ "generic-array", ] -[[package]] -name = "integer-encoding" -version = "3.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" - [[package]] name = "inventory" version = "0.3.24" @@ -4739,7 +3956,7 @@ dependencies = [ "libloading", "log", "simd_cesu8", - "thiserror 2.0.19", + "thiserror 2.0.20", "walkdir", "windows-link", ] @@ -4797,9 +4014,9 @@ dependencies = [ [[package]] name = "js-sys" -version = "0.3.103" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" +checksum = "0e0c1080212aad755ea003d18543e8768dd432c48819efd73a7bf1e39b7a5a3a" dependencies = [ "cfg-if", "futures-util", @@ -4905,18 +4122,18 @@ dependencies = [ [[package]] name = "liblzma" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45aec2360b3933207e27908049d8e4df4e476b58180afb1e56b2a4fb72efe4ba" +checksum = "2fe0a34ca854fd4f20c07f696fc8675aec78f87d88d29f5e10257a7490a1b2e1" dependencies = [ "liblzma-sys", ] [[package]] name = "liblzma-sys" -version = "0.4.7" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a046c7f353ba30f810545151e04f63545833803f5b86ee3ddf1517247fe560a5" +checksum = "a0dad045e4b1b7b170be4b60b54b780cafb4490165461bac7d1cf7b703f61d5f" dependencies = [ "cc", "libc", @@ -4940,15 +4157,15 @@ dependencies = [ [[package]] name = "link-section" -version = "0.19.2" +version = "0.19.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ee1a0d6e252afe82e7bc2db42fba60e02ddf3b1accaf8cb21d96e34ba61f3d4" +checksum = "39c29a617ce3df32c08497bdc1ab6e2376e0b17948ac166a2fbe5977c5954cd9" [[package]] name = "linktime-proc-macro" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348d0075b1fc163b26d72a7f75fc5141daf2fd1bdf128d873cbaf6785d495bdf" +checksum = "7e57c38c1e860fd37c604281cdfb1dd2216977fd76a50f85ba2f388ef3219616" [[package]] name = "linux-raw-sys" @@ -4958,9 +4175,9 @@ checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" [[package]] name = "litemap" -version = "0.8.2" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" +checksum = "47d9d19d1d6efa0109d2f65ff4c85cddd50bd572e5a00127ab10987290bcefae" [[package]] name = "lock_api" @@ -4973,9 +4190,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.33" +version = "0.4.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" +checksum = "f9f8bd3e56ce4dfc153cf470fffbfa98c7620958b312ca5c3a4b8d5181fd13c6" dependencies = [ "serde_core", "value-bag", @@ -5009,7 +4226,7 @@ dependencies = [ "serde-value", "serde_json", "serde_yaml", - "thiserror 2.0.19", + "thiserror 2.0.20", "thread-id", "typemap-ors", "unicode-segmentation", @@ -5022,15 +4239,6 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" -[[package]] -name = "lz4_flex" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef0d4ed8669f8f8826eb00dc878084aa8f253506c4fd5e8f58f5bce72ddb97e" -dependencies = [ - "twox-hash", -] - [[package]] name = "lz4_flex" version = "0.14.0" @@ -5062,10 +4270,11 @@ dependencies = [ [[package]] name = "mea" -version = "0.6.5" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31fc7d159de0085ab6dd7ff145a9819442cfd3d098f783263120503c3f3e58b0" +checksum = "c709842c4ce65cb91e2666ad5319dfc1efc3af0d34f02075eddca9000d9f8afb" dependencies = [ + "hashbrown 0.17.1", "slab", ] @@ -5122,9 +4331,9 @@ checksum = "9bb517913cfcfb9eeda59f36020269075a152701a01606c612f547e4890be399" [[package]] name = "moka" -version = "0.12.15" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "957228ad12042ee839f93c8f257b62b4c0ab5eaae1d4fa60de53b27c9d7c5046" +checksum = "4293f18e7567a1caf3c584855554377025c65e0aa445344d04171f5ad63d19b9" dependencies = [ "async-lock", "crossbeam-channel", @@ -5209,7 +4418,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.7", + "rand 0.8.8", "smallvec", "zeroize", ] @@ -5241,9 +4450,9 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.46" +version = "0.1.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" +checksum = "7ce2d95d4b3734dc35aa2f45e1aa22cd416814592a4f9d9205e11affd5b8e10b" dependencies = [ "num-traits", ] @@ -5319,7 +4528,7 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tracing", "url", @@ -5371,9 +4580,9 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "opendal" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f20562cc7447fcc915fc5c23df305a412ea80a733c9f2fd9e2d267e2815be6d" +checksum = "33dbff14cc9bb085224256d6a81289d2f3202e85b06f408d42534b42162a4231" dependencies = [ "ctor", "opendal-core", @@ -5392,11 +4601,12 @@ dependencies = [ [[package]] name = "opendal-core" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec75551ff4cf3e57da98979f6a937aaa9ddb3915bf68cc17d03df733be6646ed" +checksum = "48dbcef97d3eb7591db2c18d5cae95c836bcce07359b98d98dd6f4e861eb77b7" dependencies = [ "anyhow", + "asyncband", "base64 0.23.1", "bytes", "futures", @@ -5404,7 +4614,6 @@ dependencies = [ "jiff", "log", "md-5 0.11.0", - "mea", "percent-encoding", "quick-xml 0.41.0", "reqsign-core", @@ -5418,9 +4627,9 @@ dependencies = [ [[package]] name = "opendal-http-transport-reqwest" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad4d4f19c3ce01126a30611f8e544eaa217104a278c889ac17c9374fe4f9e4ef" +checksum = "85663452ea32bbc17e8f79ab29788c846d116ec7de31451be9c787e462dcb36c" dependencies = [ "bytes", "futures", @@ -5432,21 +4641,21 @@ dependencies = [ [[package]] name = "opendal-layer-concurrent-limit" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "249ac5b0aa5a7a6c3737342d10456067937f9c9a6f3f02544271f7908ab91081" +checksum = "03f9e144b5228d741c3763ade8711d9b72e5fb6d998e779f2d7a09da0b5a3eba" dependencies = [ + "asyncband", "futures", "http 1.5.0", - "mea", "opendal-core", ] [[package]] name = "opendal-layer-logging" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c75411ab00f77851ff086b686c1e9ca8175ac18c15afa2cb75b9036436cb06c" +checksum = "c2de17c61cd32e9d8d7d8efb91795e714dbccbafbc3c4e219e1542f4d6324161" dependencies = [ "log", "opendal-core", @@ -5454,9 +4663,9 @@ dependencies = [ [[package]] name = "opendal-layer-retry" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80b7738bd5f233ad8da39af9b9316b9b7a4eaddd91e8e32a1e19b7030688121d" +checksum = "e94db301964a25366090484d61e6da16d5979cc8faf02c3e12210dc74fafed38" dependencies = [ "backon", "log", @@ -5465,9 +4674,9 @@ dependencies = [ [[package]] name = "opendal-layer-timeout" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a704141924500f3803c05ed871b53305d2a2f11cb5ef20160c3ee688a1857f66" +checksum = "08956ddda07465449bfd48825f4f0f25e0351278ac974eaa659895d9d74f2c80" dependencies = [ "opendal-core", "tokio", @@ -5475,15 +4684,15 @@ dependencies = [ [[package]] name = "opendal-service-azdls" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e3c406729935fe214ce574d68681a1ff7e0b322548f14094912bdbfe50e5c53" +checksum = "2d564484a8f7d091827e825cfc91ed45bd48e64d262451ee041fe843db81bd8a" dependencies = [ + "asyncband", "base64 0.23.1", "bytes", "http 1.5.0", "log", - "mea", "opendal-core", "opendal-service-azure-common", "quick-xml 0.41.0", @@ -5496,9 +4705,9 @@ dependencies = [ [[package]] name = "opendal-service-azure-common" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7348c88edf15af435b7be930077746b569fac5e738c1bf6a363b675e7317c9df" +checksum = "cfcc1bfdac4f54d9018c462dd32ad9e2f68fdf584f825c811550c8ffc87894cd" dependencies = [ "http 1.5.0", "opendal-core", @@ -5506,9 +4715,9 @@ dependencies = [ [[package]] name = "opendal-service-fs" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "826c4e17a30643b888fe983897f9a4b23b07066e1d069727a923cc8fb419a702" +checksum = "c7ef1e1c45f3f89282a59073897e0d685e51385fed0aea771714789525cff996" dependencies = [ "bytes", "log", @@ -5520,9 +4729,9 @@ dependencies = [ [[package]] name = "opendal-service-gcs" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "007f3fba63c21e516c956b891e96ff9892d8175662bfb781cdada9d3766a11e6" +checksum = "da1f2a8c975fd22fea01f0409bcb8774f1ac02ad79863a3490098203121555d3" dependencies = [ "async-trait", "bytes", @@ -5541,9 +4750,9 @@ dependencies = [ [[package]] name = "opendal-service-hdfs" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00570d1cc0c3f00db60bc8aaa63aa304e176285264e8674ca11897afaf509629" +checksum = "760241a471d795bb4cdc784b341667539c4544d8f13fc4c079506be86a0e8c61" dependencies = [ "bytes", "futures", @@ -5556,9 +4765,9 @@ dependencies = [ [[package]] name = "opendal-service-oss" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd528ec2d49c5ca69e674ffed7b3e0686fb9cfcfea0596870de381467fda4f1b" +checksum = "8e3ce7a2ceb925e0f28f545b169eb57d04cec6116aae94b8584d2bdbe7d456c6" dependencies = [ "bytes", "http 1.5.0", @@ -5573,9 +4782,9 @@ dependencies = [ [[package]] name = "opendal-service-s3" -version = "0.58.1" +version = "0.58.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58e80cdf192d7eff05feed747894d64f81905ac4eaf132edf7ea270abdd2d663" +checksum = "c64335f9f24ccb62ac36f1d976342b48611a75ba61979813a4f78a4ebd94de42" dependencies = [ "base64 0.23.1", "bytes", @@ -5661,42 +4870,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "parquet" -version = "58.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d298093b2dec60289dce0684c986d0f7679e9dd15771c2c65406e1aaf604a704" -dependencies = [ - "ahash", - "arrow-array 58.4.0", - "arrow-buffer 58.4.0", - "arrow-data 58.4.0", - "arrow-ipc 58.4.0", - "arrow-schema 58.4.0", - "arrow-select 58.4.0", - "base64 0.22.1", - "brotli", - "bytes", - "chrono", - "flate2", - "futures", - "half", - "hashbrown 0.17.1", - "lz4_flex 0.13.1", - "num-bigint 0.4.8", - "num-integer", - "num-traits", - "object_store", - "paste", - "seq-macro", - "simdutf8", - "snap", - "thrift", - "tokio", - "twox-hash", - "zstd", -] - [[package]] name = "parquet" version = "59.2.0" @@ -5704,12 +4877,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7065842956a20c2a536924ce8e4d9955f7422451511b9eb7500d7bfe5077e59c" dependencies = [ "ahash", - "arrow-array 59.2.0", - "arrow-buffer 59.2.0", - "arrow-data 59.2.0", - "arrow-ipc 59.2.0", - "arrow-schema 59.2.0", - "arrow-select 59.2.0", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-ipc", + "arrow-schema", + "arrow-select", "base64 0.23.1", "brotli", "bytes", @@ -5718,7 +4891,7 @@ dependencies = [ "futures", "half", "hashbrown 0.17.1", - "lz4_flex 0.14.0", + "lz4_flex", "num-bigint 0.5.1", "num-integer", "num-traits", @@ -5741,8 +4914,8 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f7e5fff3ed0c07514a7fb8bee3f2ea5a53f36939410ecac4a466620213539a8" dependencies = [ - "arrow 59.2.0", - "arrow-schema 59.2.0", + "arrow", + "arrow-schema", "chrono", "half", "indexmap 2.14.0", @@ -5757,8 +4930,8 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba4d3de89dab8d1aaaf601ae8d71bd07ea88cfca9efc1df5815b982c30f631e1" dependencies = [ - "arrow 59.2.0", - "arrow-schema 59.2.0", + "arrow", + "arrow-schema", "chrono", "half", "indexmap 2.14.0", @@ -5774,7 +4947,7 @@ version = "59.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fb19dfe1bd24c17addd761ba4f7000f615e2fa12525871c7baa835dbb3d7f147" dependencies = [ - "arrow-schema 59.2.0", + "arrow-schema", "base64 0.23.1", "chrono", "parquet-variant", @@ -5800,11 +4973,11 @@ dependencies = [ [[package]] name = "pem" -version = "3.0.6" +version = "4.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" +checksum = "d354a98a3d1251555de99e8fdd8afda05573c31b82f59063a7b0a29b5527f120" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "serde_core", ] @@ -5936,9 +5109,9 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.33" +version = "0.3.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19f132c84eca552bf34cab8ec81f1c1dcc229b811638f9d283dceabe58c5569e" +checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" [[package]] name = "plotters" @@ -5996,9 +5169,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d20d5497ef88037a52ff98267d066e7f11fcc5e99bbfbd58a42336193aacec3" +checksum = "05c8b63e8d9609db387f0324918f81d68fe27748f084ef092fb35954d0539a85" [[package]] name = "portable-atomic-util" @@ -6011,9 +5184,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" +checksum = "d83eb9bc6d8e5cf568e7a1101d60ee05e81ed50ea106026f3d18deeb046d7661" dependencies = [ "zerovec", ] @@ -6043,7 +5216,7 @@ dependencies = [ "spin 0.10.1", "symbolic-demangle", "tempfile", - "thiserror 2.0.19", + "thiserror 2.0.20", ] [[package]] @@ -6065,6 +5238,16 @@ dependencies = [ "syn 2.0.119", ] +[[package]] +name = "prettyplease" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2bfe0f4c752e450fc2faf62654f1c134747922825d5b04ca717b8874f41a40c0" +dependencies = [ + "proc-macro2", + "syn 3.0.4", +] + [[package]] name = "proc-macro2" version = "1.0.107" @@ -6119,7 +5302,7 @@ dependencies = [ "log", "multimap", "petgraph", - "prettyplease", + "prettyplease 0.2.37", "prost", "prost-types", "regex", @@ -6198,7 +5381,7 @@ dependencies = [ "rustc-hash", "rustls", "socket2", - "thiserror 2.0.19", + "thiserror 2.0.20", "tokio", "tracing", "web-time", @@ -6206,9 +5389,9 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.16" +version = "0.11.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" +checksum = "04759210543be93709136e28212294a659ef5001836ff4eab4d663e4529bba83" dependencies = [ "aws-lc-rs", "bytes", @@ -6221,7 +5404,7 @@ dependencies = [ "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.19", + "thiserror 2.0.20", "tinyvec", "tracing", "web-time", @@ -6264,9 +5447,9 @@ checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" [[package]] name = "rand" -version = "0.8.7" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22f6172bdec972074665ed81ed53b71da00bfc44b65a753cfde883ec4c702a1a" +checksum = "e058c7de0b26af77780c769414d6257830bb240f3c38477dbc2c16e5f54d6d4c" dependencies = [ "rand_chacha 0.3.1", "rand_core 0.6.4", @@ -6377,22 +5560,22 @@ dependencies = [ [[package]] name = "ref-cast" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216e8f773d7923bcba9ceb86a86c93cabb3903a11872fc3f138c49630e50b96d" +checksum = "7e440fb4e4b4147295338efb76001ab9e4efc0e5839df2c47fc5ac2381d365c3" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.26" +version = "1.0.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c9283685feec7d69af75fb0e858d5e7378f33fe4fc699383b2916ab9273e03c" +checksum = "92ecd8964f8453721699a1ed72037b0db49ce2f5a5138486ee89bed6f67cdf3a" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -6432,9 +5615,9 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "reqsign-aliyun-oss" -version = "3.1.3" +version = "3.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e6d659fcdbca6fe2d7ef109c2e28499b7be80501f1bb86c10caf5ec8ac1219" +checksum = "10909dbc9fcb78f913014d78a5c9d1d51c477f491b1006fd1baba4fd286181df" dependencies = [ "anyhow", "form_urlencoded", @@ -6449,9 +5632,9 @@ dependencies = [ [[package]] name = "reqsign-aws-core" -version = "3.0.3" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4af084e1f3cbf3e67e0c972765399bce54ecec804cceba46b39a8331f3c1bff" +checksum = "bac4749b7dfa7bfaccd01eb03e9dc795ed37e3f20d6f0f38e2c67ee85ad6bc86" dependencies = [ "bytes", "form_urlencoded", @@ -6470,9 +5653,9 @@ dependencies = [ [[package]] name = "reqsign-aws-v4" -version = "3.1.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac5b3b7cefa28933792b439186459f77f19f9b6edbeab41b8b187150361a206" +checksum = "ff250f0fd0b913fbd565e405acc553da0f13bde30bfb5403178c9d0313cdc15f" dependencies = [ "bytes", "http 1.5.0", @@ -6485,9 +5668,9 @@ dependencies = [ [[package]] name = "reqsign-azure-storage" -version = "3.1.2" +version = "3.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2824e7da3c2cc42ac3406c674eb57c89127fdcd97f3a73c608cfc680505ea134" +checksum = "c3f1fbc9add082f54e51e3bd9730f18d850a1f09d246baff5cd612c74ae4290e" dependencies = [ "anyhow", "base64 0.23.1", @@ -6506,9 +5689,9 @@ dependencies = [ [[package]] name = "reqsign-core" -version = "3.2.1" +version = "3.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c07dd510b1e1b9b241883e483358147fb2ed2d497a7b39b065ba61eb93deceb0" +checksum = "ff052daffb0599681c50f85c59e7236438976efe991ab864edd9f3b235501a0f" dependencies = [ "anyhow", "base64 0.23.1", @@ -6519,6 +5702,7 @@ dependencies = [ "http 1.5.0", "jiff", "log", + "mea", "percent-encoding", "rsa", "serde", @@ -6530,9 +5714,9 @@ dependencies = [ [[package]] name = "reqsign-file-read-tokio" -version = "3.0.4" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "663d9d55abd0df0830ef0ae43708297cc1371cf4e8ca91f3ac813c309cca8c98" +checksum = "b3235df90a6bca681aa47dd86f2393d122a6d77042aa8a7c81e218cd45c5bfc0" dependencies = [ "anyhow", "reqsign-core", @@ -6541,10 +5725,11 @@ dependencies = [ [[package]] name = "reqsign-google" -version = "3.0.4" +version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4080a227f82a09f68540ecd028622065d7ac4c0bcb8727a25bdcfc0526235792" +checksum = "272a5813571885c1455ffe106f0c768577e6ce69313446d4476e8d41dcf6ac5a" dependencies = [ + "bytes", "form_urlencoded", "http 1.5.0", "log", @@ -6662,9 +5847,9 @@ dependencies = [ [[package]] name = "roaring" -version = "0.11.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dedc5658c6ecb3bdb5ef5f3295bb9253f42dcf3fd1402c03f6b1f7659c3c4a9" +checksum = "18bd8a37d17a58532776dcdf6041ce64929adca78e8489d5cacbafe99229d3e1" dependencies = [ "bytemuck", "byteorder", @@ -6801,9 +5986,9 @@ checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" [[package]] name = "rustls-webpki" -version = "0.103.13" +version = "0.103.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61c429a8649f110dddef65e2a5ad240f747e85f7758a6bccc7e5777bd33f756e" +checksum = "f3c3cf1d8b1e7d4927e2d154c3fcb02979afb9939629c62cd9048d4f07b60ac2" dependencies = [ "aws-lc-rs", "ring", @@ -6982,7 +6167,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -7007,7 +6192,7 @@ checksum = "8d3b1629de253c70a0508c3899572da79ca359fdab27c7920ff00406df418906" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -7024,9 +6209,9 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" +checksum = "ee78f1fbe43ac4a0e47aadb3dbd357b69eb0d3793e948624cd03dd2750ab1c0a" dependencies = [ "base64 0.22.1", "bs58", @@ -7034,6 +6219,7 @@ dependencies = [ "hex", "indexmap 1.9.3", "indexmap 2.14.0", + "jiff", "schemars 0.9.0", "schemars 1.2.2", "serde_core", @@ -7044,9 +6230,9 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.21.0" +version = "3.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84d57bc0c8b9a17920c178daa6bb924850d54a9c97ab45194bb8c17ad66bb660" +checksum = "8705578779c2b6bd90d84d66eb2e206b708b1a4d7b9f17641b293545bf1c7e46" dependencies = [ "darling 0.23.0", "proc-macro2", @@ -7320,9 +6506,9 @@ dependencies = [ [[package]] name = "syn" -version = "3.0.3" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" +checksum = "e6275cddf4610d1775e6d1fe9469b2e77d0f39fd98fb7450901b821e0c53649f" dependencies = [ "proc-macro2", "quote", @@ -7379,11 +6565,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.19" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" +checksum = "ec86235f5fcc2a73650310756d2ac5b138a5780bbbdfae3eeccec992c435ba4f" dependencies = [ - "thiserror-impl 2.0.19", + "thiserror-impl 2.0.20", ] [[package]] @@ -7399,13 +6585,13 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.19" +version = "2.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" +checksum = "bc04cd3e1236dd4a98afca4569f2deb3f120e5422a4023be2cb683f8486292af" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -7418,17 +6604,6 @@ dependencies = [ "windows-sys 0.61.2", ] -[[package]] -name = "thrift" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" -dependencies = [ - "byteorder", - "integer-encoding", - "ordered-float 2.10.1", -] - [[package]] name = "tikv-jemalloc-ctl" version = "0.6.1" @@ -7501,9 +6676,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" +checksum = "b1e27c91459209c2986af3dcf603a5a74a4368754ce37414f59acc971167f643" dependencies = [ "displaydoc", "zerovec", @@ -7558,7 +6733,7 @@ checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -7750,7 +6925,7 @@ checksum = "f153acc4e99a5f2a5aefa09fb078be54e26271b2813f6041200b224c098d8328" dependencies = [ "proc-macro2", "quote", - "syn 3.0.3", + "syn 3.0.4", ] [[package]] @@ -7840,9 +7015,9 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.24.0" +version = "1.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" +checksum = "b5772d71c9be8a8a6ac2117d949c5b224c1b72241bb611d9a3012edcf8af7812" dependencies = [ "getrandom 0.4.3", "js-sys", @@ -7904,9 +7079,9 @@ dependencies = [ [[package]] name = "wasm-bindgen" -version = "0.2.126" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" +checksum = "1b70935747edd64d89de3efa29d73789b806c15798f8e7dca4d8ac356b50ce70" dependencies = [ "cfg-if", "once_cell", @@ -7917,9 +7092,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.76" +version = "0.4.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" +checksum = "6b7777d5cc23d0e91404e53ce2d5e8ec7acae3026b16233dba62cd3246457950" dependencies = [ "js-sys", "wasm-bindgen", @@ -7927,9 +7102,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.126" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" +checksum = "77775f8f3f7217702089053b94958f8f54061a3f663417df76e19cbdcca29bc1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -7937,9 +7112,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.126" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" +checksum = "e11d33f857dc2fb11b8bc75aee111aa9cbeb12cd9f25efd3d4c2a3dd4e235284" dependencies = [ "bumpalo", "proc-macro2", @@ -7950,9 +7125,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.126" +version = "0.2.127" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" +checksum = "7ef64dbcc55df09c7e5a46182d181c2cfa3e925f3da937ea764728b4bbb9dcbf" dependencies = [ "unicode-ident", ] @@ -7985,9 +7160,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.103" +version = "0.3.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" +checksum = "c435338968042f4f59a557f690a253676d47ce13ceb55d70100e7facf6620a30" dependencies = [ "js-sys", "wasm-bindgen", @@ -8258,9 +7433,9 @@ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "writeable" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" +checksum = "3ad82d2a33cdc9674dc7465672f271e096168fcdbe0f799d9e6db8c5892679dc" [[package]] name = "xattr" @@ -8350,9 +7525,9 @@ checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" +checksum = "4ea269c3bd32f0a32c321907a2ae912ba6f4649bb0fc764a15627e99a7095a3f" dependencies = [ "displaydoc", "yoke", @@ -8361,9 +7536,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.6" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" +checksum = "bb0464e17806c1d976d5cba29399c7f08e516e279e2ba493f63123b5fca67dd8" dependencies = [ "yoke", "zerofrom", @@ -8372,13 +7547,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.11.3" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" +checksum = "34df6fc39dbd26ddc9c10e6a2984476e13acce22e64e4487636ef494369225da" dependencies = [ "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.4", ] [[package]] diff --git a/native/core/src/execution/operators/parquet_writer.rs b/native/core/src/execution/operators/parquet_writer.rs index 1c9473e3ce4..85b76489218 100644 --- a/native/core/src/execution/operators/parquet_writer.rs +++ b/native/core/src/execution/operators/parquet_writer.rs @@ -84,6 +84,7 @@ impl ParquetCompression { } /// Enum representing different types of Arrow writers based on storage backend +#[allow(clippy::large_enum_variant)] enum ParquetWriter { /// Writer for local file system LocalFile(ArrowWriter), diff --git a/native/shuffle/src/writers/local/local_partition_writer.rs b/native/shuffle/src/writers/local/local_partition_writer.rs index 3a9a6484dba..0f54a72226f 100644 --- a/native/shuffle/src/writers/local/local_partition_writer.rs +++ b/native/shuffle/src/writers/local/local_partition_writer.rs @@ -40,6 +40,7 @@ use std::sync::Arc; /// [`PartitionWriter::finish_partition`], each with its own short-lived /// `BufBatchWriter`, so coalescing intentionally does not cross partition /// boundaries. They hold the raw output writer and block writer directly. +#[allow(clippy::large_enum_variant)] enum DataOutput { /// Single-partition output: one long-lived writer streams all batches. Single(BufBatchWriter),