From 3f202bbdb0814d491bdebf4c94f7575cada9f37b Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Tue, 29 Sep 2026 17:56:01 -0700 Subject: [PATCH 01/12] build: move to DataFusion 55.1 and arrow 59 DataFusion 54 -> 55.1.0, arrow/parquet 58 -> 59. pyo3 0.28 -> 0.29, the version arrow 59's pyarrow support links (the python bindings otherwise pull a second libpython link). serde_arrow's dev-dependency feature arrow-58 -> arrow-59, so the tests build one arrow. --- Cargo.toml | 30 +++++++++++++++--------------- crates/iceberg/Cargo.toml | 2 +- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index d245af2e21..0d0a0c0635 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -46,15 +46,15 @@ aes-gcm = "0.10" anyhow = "1.0.72" apache-avro = { version = "0.21", features = ["snappy", "zstandard"] } array-init = "2" -arrow = "58" -arrow-arith = "58" -arrow-array = "58" -arrow-buffer = "58" -arrow-cast = "58" -arrow-ord = "58" -arrow-schema = "58" -arrow-select = "58" -arrow-string = "58" +arrow = "59" +arrow-arith = "59" +arrow-array = "59" +arrow-buffer = "59" +arrow-cast = "59" +arrow-ord = "59" +arrow-schema = "59" +arrow-select = "59" +arrow-string = "59" as-any = "0.3.2" async-trait = "0.1.89" aws-config = "1.8.7" @@ -77,10 +77,10 @@ cfg-if = "1" chrono = "0.4.41" clap = { version = "4.5.48", features = ["derive", "cargo"] } dashmap = "6" -datafusion = "54.0.0" -datafusion-cli = "54.0.0" -datafusion-ffi = "54.0.0" -datafusion-sqllogictest = "54.0.0" +datafusion = "55.1.0" +datafusion-cli = "55.1.0" +datafusion-ffi = "55.1.0" +datafusion-sqllogictest = "55.1.0" derive_builder = "0.20" dirs = "6" enum-ordinalize = "4.3.0" @@ -121,10 +121,10 @@ murmur3 = "0.5.2" once_cell = "1.20" opendal = "0.57" ordered-float = "4" -parquet = "58" +parquet = "59" pilota = "0.11.10" pretty_assertions = "1.4" -pyo3 = "0.28" +pyo3 = "0.29" rand = "0.9.3" regex = "1.11.3" reqwest = { version = "0.13", default-features = false, features = [ diff --git a/crates/iceberg/Cargo.toml b/crates/iceberg/Cargo.toml index 07f8282f81..d11df995f6 100644 --- a/crates/iceberg/Cargo.toml +++ b/crates/iceberg/Cargo.toml @@ -92,7 +92,7 @@ mockall = { workspace = true } pretty_assertions = { workspace = true } rand = { workspace = true } regex = { workspace = true } -serde_arrow = { version = "0.14", features = ["arrow-58"] } +serde_arrow = { version = "0.14.2", features = ["arrow-59"] } tempfile = { workspace = true } [package.metadata.cargo-machete] From f3b2fde904a47f18fad4526f7c07eeff8c99071a Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Tue, 29 Sep 2026 17:56:02 -0700 Subject: [PATCH 02/12] refactor(datafusion): migrate to the DataFusion 55 APIs - TableReference is imported from datafusion::common. - CreateExternalTable.location became locations; an iceberg external table takes exactly one metadata file and returns an error otherwise. - ExecutionPlan::apply_expressions: none of the scan/write/commit/metadata nodes holds a PhysicalExpr (filters are iceberg predicates), so they return Continue. --- .../datafusion/src/physical_plan/commit.rs | 24 +++++++++++++++++++ .../src/physical_plan/metadata_scan.rs | 12 ++++++++++ .../datafusion/src/physical_plan/scan.rs | 12 ++++++++++ .../datafusion/src/physical_plan/write.rs | 24 +++++++++++++++++++ .../src/table/table_provider_factory.rs | 19 ++++++++++----- 5 files changed, 85 insertions(+), 6 deletions(-) diff --git a/crates/integrations/datafusion/src/physical_plan/commit.rs b/crates/integrations/datafusion/src/physical_plan/commit.rs index 9ae8b845ce..144ad1fe65 100644 --- a/crates/integrations/datafusion/src/physical_plan/commit.rs +++ b/crates/integrations/datafusion/src/physical_plan/commit.rs @@ -124,6 +124,18 @@ impl DisplayAs for IcebergCommitExec { } impl ExecutionPlan for IcebergCommitExec { + fn apply_expressions( + &self, + _f: &mut dyn FnMut( + &Arc, + ) -> datafusion::common::Result< + datafusion::common::tree_node::TreeNodeRecursion, + >, + ) -> datafusion::common::Result { + // Holds no physical expressions (filters are iceberg predicates). + Ok(datafusion::common::tree_node::TreeNodeRecursion::Continue) + } + fn name(&self) -> &str { "IcebergCommitExec" } @@ -322,6 +334,18 @@ mod tests { } impl ExecutionPlan for MockWriteExec { + fn apply_expressions( + &self, + _f: &mut dyn FnMut( + &Arc, + ) -> datafusion::common::Result< + datafusion::common::tree_node::TreeNodeRecursion, + >, + ) -> datafusion::common::Result { + // Holds no physical expressions (filters are iceberg predicates). + Ok(datafusion::common::tree_node::TreeNodeRecursion::Continue) + } + fn name(&self) -> &str { "MockWriteExec" } diff --git a/crates/integrations/datafusion/src/physical_plan/metadata_scan.rs b/crates/integrations/datafusion/src/physical_plan/metadata_scan.rs index 340af9ba7e..e33346272a 100644 --- a/crates/integrations/datafusion/src/physical_plan/metadata_scan.rs +++ b/crates/integrations/datafusion/src/physical_plan/metadata_scan.rs @@ -58,6 +58,18 @@ impl DisplayAs for IcebergMetadataScan { } impl ExecutionPlan for IcebergMetadataScan { + fn apply_expressions( + &self, + _f: &mut dyn FnMut( + &Arc, + ) -> datafusion::common::Result< + datafusion::common::tree_node::TreeNodeRecursion, + >, + ) -> datafusion::common::Result { + // Holds no physical expressions (filters are iceberg predicates). + Ok(datafusion::common::tree_node::TreeNodeRecursion::Continue) + } + fn name(&self) -> &str { "IcebergMetadataScan" } diff --git a/crates/integrations/datafusion/src/physical_plan/scan.rs b/crates/integrations/datafusion/src/physical_plan/scan.rs index 77ddad3412..b13cd5c080 100644 --- a/crates/integrations/datafusion/src/physical_plan/scan.rs +++ b/crates/integrations/datafusion/src/physical_plan/scan.rs @@ -180,6 +180,18 @@ impl IcebergTableScan { } impl ExecutionPlan for IcebergTableScan { + fn apply_expressions( + &self, + _f: &mut dyn FnMut( + &Arc, + ) -> datafusion::common::Result< + datafusion::common::tree_node::TreeNodeRecursion, + >, + ) -> datafusion::common::Result { + // Holds no physical expressions (filters are iceberg predicates). + Ok(datafusion::common::tree_node::TreeNodeRecursion::Continue) + } + fn name(&self) -> &str { "IcebergTableScan" } diff --git a/crates/integrations/datafusion/src/physical_plan/write.rs b/crates/integrations/datafusion/src/physical_plan/write.rs index a7d771ec1b..fe10117b1a 100644 --- a/crates/integrations/datafusion/src/physical_plan/write.rs +++ b/crates/integrations/datafusion/src/physical_plan/write.rs @@ -133,6 +133,18 @@ impl DisplayAs for IcebergWriteExec { } impl ExecutionPlan for IcebergWriteExec { + fn apply_expressions( + &self, + _f: &mut dyn FnMut( + &Arc, + ) -> datafusion::common::Result< + datafusion::common::tree_node::TreeNodeRecursion, + >, + ) -> datafusion::common::Result { + // Holds no physical expressions (filters are iceberg predicates). + Ok(datafusion::common::tree_node::TreeNodeRecursion::Continue) + } + fn name(&self) -> &str { "IcebergWriteExec" } @@ -370,6 +382,18 @@ mod tests { } impl ExecutionPlan for MockExecutionPlan { + fn apply_expressions( + &self, + _f: &mut dyn FnMut( + &Arc, + ) -> datafusion::common::Result< + datafusion::common::tree_node::TreeNodeRecursion, + >, + ) -> datafusion::common::Result { + // Holds no physical expressions (filters are iceberg predicates). + Ok(datafusion::common::tree_node::TreeNodeRecursion::Continue) + } + fn name(&self) -> &str { "MockExecutionPlan" } diff --git a/crates/integrations/datafusion/src/table/table_provider_factory.rs b/crates/integrations/datafusion/src/table/table_provider_factory.rs index 9692340cac..6ba93237f9 100644 --- a/crates/integrations/datafusion/src/table/table_provider_factory.rs +++ b/crates/integrations/datafusion/src/table/table_provider_factory.rs @@ -21,9 +21,9 @@ use std::sync::Arc; use async_trait::async_trait; use datafusion::catalog::{Session, TableProvider, TableProviderFactory}; +use datafusion::common::TableReference; use datafusion::error::Result as DFResult; use datafusion::logical_expr::CreateExternalTable; -use datafusion::sql::TableReference; use iceberg::io::{FileIOBuilder, LocalFsStorageFactory, StorageFactory}; use iceberg::table::StaticTable; use iceberg::{Error, ErrorKind, Result, TableIdent}; @@ -41,9 +41,9 @@ use crate::to_datafusion_error; /// ``` /// use std::sync::Arc; /// +/// use datafusion::common::TableReference; /// use datafusion::execution::session_state::SessionStateBuilder; /// use datafusion::prelude::*; -/// use datafusion::sql::TableReference; /// use iceberg_datafusion::IcebergTableProviderFactory; /// /// #[tokio::main] @@ -126,7 +126,15 @@ impl TableProviderFactory for IcebergTableProviderFactory { check_cmd(cmd).map_err(to_datafusion_error)?; let table_name = &cmd.name; - let metadata_file_path = &cmd.location; + let [metadata_file_path] = cmd.locations.as_slice() else { + return Err(to_datafusion_error(Error::new( + ErrorKind::DataInvalid, + format!( + "An iceberg external table takes exactly one metadata file location, got {}", + cmd.locations.len() + ), + ))); + }; let options = &cmd.options; let table_name_with_ns = complement_namespace_if_necessary(table_name); @@ -218,12 +226,11 @@ mod tests { use datafusion::arrow::datatypes::{DataType, Field, Schema}; use datafusion::catalog::TableProviderFactory; - use datafusion::common::{Constraints, DFSchema}; + use datafusion::common::{Constraints, DFSchema, TableReference}; use datafusion::execution::session_state::SessionStateBuilder; use datafusion::logical_expr::CreateExternalTable; use datafusion::parquet::arrow::PARQUET_FIELD_ID_META_KEY; use datafusion::prelude::SessionContext; - use datafusion::sql::TableReference; use super::*; @@ -257,7 +264,7 @@ mod tests { CreateExternalTable { name: TableReference::partial("static_ns", "static_table"), - location: metadata_file_path, + locations: vec![metadata_file_path], schema: Arc::new(DFSchema::empty()), file_type: "iceberg".to_string(), options: Default::default(), From a41d209beb2e25e418837559566f881e6318eff3 Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Tue, 29 Sep 2026 22:35:58 -0700 Subject: [PATCH 03/12] build: regenerate Cargo.lock against the pushed fork revisions --- Cargo.lock | 595 +++++++++++++++++++++++++++++------------------------ 1 file changed, 324 insertions(+), 271 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 4e3a88ceb7..c90a80036b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -189,7 +189,7 @@ dependencies = [ "digest 0.10.7", "log", "miniz_oxide", - "num-bigint", + "num-bigint 0.4.6", "quad-rand", "rand 0.9.4", "regex-lite", @@ -251,9 +251,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6cfdd0833e32a9874d2b55089333ad310c0be208aafa277385ce2461dec90be3" +checksum = "7c14b3d39f306bc28fd639d59f06e17a0f377d0021e1b7e9054e4d6fedc98774" dependencies = [ "arrow-arith", "arrow-array", @@ -273,9 +273,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a41203398f0eaa6f7ec8e62c0da742a21abf282c148fc157f6c35c90e29981a" +checksum = "ce2961626677665b2195eb59242af4c7befe7b8737ca2050295389362380104e" dependencies = [ "arrow-array", "arrow-buffer", @@ -287,9 +287,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae33dad492b7df00a217563a7b0ef2874df68a0deea1b1a3acf628152f7f7a69" +checksum = "1e5f6adeffdf587d7a31db5d2266189624b526730cd3627f9ff9fedae97ad584" dependencies = [ "ahash", "arrow-buffer", @@ -299,6 +299,7 @@ dependencies = [ "chrono-tz", "half", "hashbrown 0.17.1", + "libc", "num-complex", "num-integer", "num-traits", @@ -306,9 +307,9 @@ dependencies = [ [[package]] name = "arrow-avro" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8108cbcae32141577bc55ab490449944c63cfc93d47384906b475d13d89d43d" +checksum = "9145b685d586482102e4fe3d40349fe00086c0b219d51cae9daaead4698849ea" dependencies = [ "arrow-array", "arrow-buffer", @@ -330,21 +331,21 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9552f96391c005e6ab449fa941420935e7e062489b12b8b1b08879b2163f5b5" +checksum = "097d193003ce7995d5d087089069ec2a6e0187faf5a6f8c9f38af2645d987182" dependencies = [ "bytes", "half", - "num-bigint", + "num-bigint 0.5.1", "num-traits", ] [[package]] name = "arrow-cast" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a8a327c9649f30d8406995f27642b68df354713cca3baaaf100f076f18d5f34" +checksum = "635c9c635668ad26adf76cce8fb276c4be7cf06e63bd516de7da514f9680ee53" dependencies = [ "arrow-array", "arrow-buffer", @@ -353,7 +354,7 @@ dependencies = [ "arrow-schema", "arrow-select", "atoi", - "base64", + "base64 0.23.1", "chrono", "comfy-table", "half", @@ -364,9 +365,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af0dd6d90d1955e9f9a014c1e563ee8aeffc21909085d25623e1da44d96eca26" +checksum = "4c2ebf8d631e79b02c16cf5ae860561272c26024ec88fce389a56aaddd558e86" dependencies = [ "arrow-array", "arrow-cast", @@ -379,9 +380,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b24852db04738907e06c04ea61e42fe7fda962a34513022dc0d0e754fb7976b" +checksum = "9ba2f832eaeca24b8f26143dba750e42ee4ab51cf7d65e701ca9607cfda9f358" dependencies = [ "arrow-buffer", "arrow-schema", @@ -392,9 +393,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29a908a11fcfb3fb2f6730f4ac15e367bc644e419155e96238f68cf3adde572b" +checksum = "dcc41681ea80f521df14c36725b74d4c60702c47f0793af2be469c04527e2599" dependencies = [ "arrow-array", "arrow-buffer", @@ -402,15 +403,15 @@ dependencies = [ "arrow-schema", "arrow-select", "flatbuffers", - "lz4_flex", + "lz4_flex 0.14.0", "zstd", ] [[package]] name = "arrow-json" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a96aed3931c076adee39ec2a40d8219fc7f09e79bcdaca1df16272993e1e14" +checksum = "a2f57d7a81969f24ccf80809587b76c09897e6f829d2d65a5976bfb3218851f1" dependencies = [ "arrow-array", "arrow-buffer", @@ -433,9 +434,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63a083ec750f5c043f02946b4baf05fcdbb55f4560a3277055caca5cc99f3eb0" +checksum = "2c900759f3bd8354fd4196bc4403eee846894dc2adf66b4225472006a0bf18c5" dependencies = [ "arrow-array", "arrow-buffer", @@ -446,9 +447,9 @@ dependencies = [ [[package]] name = "arrow-pyarrow" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ffb9be5a873590f825aef50df20e0f8dff5fd42a77058e28bbe7bd44bb53dec" +checksum = "801aed7e607dbcc60ed6359025383b27a490327d4282ba87a9a3b78e25959c9a" dependencies = [ "arrow-array", "arrow-data", @@ -458,9 +459,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514ba0ef0d4c5896202dae736251ce415abb43a950bed570fb7981b8716c0e4c" +checksum = "f4c6425032e28266e3fc4ff680805e57e670d6ea92473043f3e65b7ed6ac79f2" dependencies = [ "arrow-array", "arrow-buffer", @@ -471,9 +472,9 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21ca356ad6425cecb6eb7b28e4f659f1ee7880fbb1a16127de7dd62901efee9e" +checksum = "10fab8d4563491417ba801fab29d205104d20d4bdf37bda6cd1cf425cff598cd" dependencies = [ "bitflags", "serde_core", @@ -482,9 +483,9 @@ dependencies = [ [[package]] name = "arrow-select" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c58da39eb3d8350ad4a549e5c2bc49284dac554016c69829310350f1731b0aad" +checksum = "fc58569193c2525915f3cc6310edba3792f1200f65d6e9ed330aa33e691493b8" dependencies = [ "ahash", "arrow-array", @@ -496,9 +497,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6789b388467525e3271326b6b4915666ecfdf5142aef09779445c954b67543c" +checksum = "2e0813f3c35c1cfea65e14c20a953440f7783c088b7ad2d0db162ccdeefcec14" dependencies = [ "arrow-array", "arrow-buffer", @@ -576,7 +577,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -587,7 +588,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -986,7 +987,7 @@ checksum = "221eaa237ddf1ca79b60d1372aad77e47f9c0ea5b3ce5099da8c61d027dc77b3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1067,6 +1068,12 @@ version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +[[package]] +name = "base64" +version = "0.23.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" + [[package]] name = "base64-simd" version = "0.8.0" @@ -1091,7 +1098,7 @@ checksum = "4d6867f1565b3aad85681f1015055b087fcfd840d6aeee6eee7f2da317603695" dependencies = [ "autocfg", "libm", - "num-bigint", + "num-bigint 0.4.6", "num-integer", "num-traits", "serde", @@ -1194,7 +1201,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn", + "syn 2.0.117", ] [[package]] @@ -1261,7 +1268,7 @@ checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1350,9 +1357,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.44" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c673075a2e0e5f4a1dde27ce9dee1ea4558c7ffe648f576438a20ca1d2acc4b0" +checksum = "1aa79e62e7697b8e29b513a68abacf485adcd1fe8284a4316c5ae868e6633327" dependencies = [ "iana-time-zone", "js-sys", @@ -1413,7 +1420,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1817,7 +1824,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.117", ] [[package]] @@ -1830,7 +1837,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.117", ] [[package]] @@ -1841,7 +1848,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core 0.20.11", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1852,7 +1859,7 @@ checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" dependencies = [ "darling_core 0.23.0", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -1871,9 +1878,9 @@ dependencies = [ [[package]] name = "datafusion" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "754ef4e8f073922a26f5b23133b9db4829342362b09be0bc94309cf261c2f098" +checksum = "14313430439ef858ed5f52ca9c840e9eea9844da34d3716d05a476449634da5d" dependencies = [ "arrow", "arrow-schema", @@ -1909,7 +1916,7 @@ dependencies = [ "flate2", "futures", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "liblzma", "log", "object_store", @@ -1925,9 +1932,9 @@ dependencies = [ [[package]] name = "datafusion-catalog" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06afd1e38dd27bbb1258685a1fc6524df6aff4e07b25b393a47de59635178d99" +checksum = "2c0756ebc770bcebae366dfd273dad50935f6103b4d212253cb17e2e53c5427f" dependencies = [ "arrow", "async-trait", @@ -1941,7 +1948,7 @@ dependencies = [ "datafusion-physical-plan", "datafusion-session", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", "parking_lot", @@ -1950,9 +1957,9 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0668fb32c12065ec242be0e5b4bc62bd7a06a0be3ecd83791ef877e4be67e02" +checksum = "bbde2961698705d8402f0f382f08876fc6f1126ffde790ef17833cf0ab87cd59" dependencies = [ "arrow", "async-trait", @@ -1966,16 +1973,17 @@ dependencies = [ "datafusion-physical-expr-common", "datafusion-physical-plan", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", + "percent-encoding", ] [[package]] name = "datafusion-cli" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f652cbc0854d1e24c8038e2c7be53ef395768b8713fceaaa00789ae6134a5ee" +checksum = "ffb9833a102f01a257994de966c73fbf7441d8347207d8676c821b7318c03ee6" dependencies = [ "arrow", "async-trait", @@ -2001,9 +2009,9 @@ dependencies = [ [[package]] name = "datafusion-common" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca43b263cdff57042cfa8fb817fb3469f4878933380dccff25f5e793580abbf9" +checksum = "a6e06fe711ff815c8cf3143158547aea599702fd43f76f5866c70d5a5b3693a0" dependencies = [ "arrow", "arrow-ipc", @@ -2014,9 +2022,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", "recursive", @@ -2028,9 +2037,9 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05f0ba2b864792bdca4d76c59a1de0ab6e1b61946596b9936888dbd6360035f2" +checksum = "f7a5107acff4e3ed50a7732acec06bba40e74ab49df021397ed250d60f04e42a" dependencies = [ "futures", "log", @@ -2039,9 +2048,9 @@ dependencies = [ [[package]] name = "datafusion-datasource" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b840a8bce0bcbf5afad02946d438591e7c373f7afccaf3d874c04485772514dd" +checksum = "f69f45d2d700785be8df9d4b44410e1c8e4a856f10cc728b418a1066c0b594fb" dependencies = [ "arrow", "async-compression", @@ -2057,11 +2066,12 @@ dependencies = [ "datafusion-physical-expr-adapter", "datafusion-physical-expr-common", "datafusion-physical-plan", + "datafusion-proto-models", "datafusion-session", "flate2", "futures", "glob", - "itertools 0.14.0", + "itertools 0.15.0", "liblzma", "log", "object_store", @@ -2075,9 +2085,9 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a24cc0b9cf6e367f27f27406eff13abf48a11b72446aaa40b3105c0ded5c17d9" +checksum = "81650af64894ef34b46d2ef818ef244b40a81d90818f3bc642bf8fbf6758f8e0" dependencies = [ "arrow", "arrow-ipc", @@ -2090,18 +2100,19 @@ dependencies = [ "datafusion-expr", "datafusion-physical-expr-common", "datafusion-physical-plan", + "datafusion-proto-models", "datafusion-session", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "object_store", "tokio", ] [[package]] name = "datafusion-datasource-avro" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26a312bb06528c17b4bb86b798b0c4321e7656d85e0ef65c2e9adf07b0a518d" +checksum = "fb356522bbfe0a309201b24c7a3fb30199870f2513ffb524e7cf6f716331ea8a" dependencies = [ "arrow", "arrow-avro", @@ -2118,9 +2129,9 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1abe56b2a7a2d1d6de5117dd1a203181e267f28529faa5da546947621b697d7" +checksum = "b5e2519bed59a6907c79298b9c21fe807bbc34e4ff8414577d699b0741083593" dependencies = [ "arrow", "async-trait", @@ -2132,6 +2143,7 @@ dependencies = [ "datafusion-expr", "datafusion-physical-expr-common", "datafusion-physical-plan", + "datafusion-proto-models", "datafusion-session", "futures", "object_store", @@ -2141,9 +2153,9 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3e467f0611ad7bdd5aad17c63c9bb6182d04e5282e5496d897ea2b49c024ba" +checksum = "635e61290e171597f6e50427e0cb486eda468ab47e880fa24d15bbb0fa24ac7e" dependencies = [ "arrow", "async-trait", @@ -2155,6 +2167,7 @@ dependencies = [ "datafusion-expr", "datafusion-physical-expr-common", "datafusion-physical-plan", + "datafusion-proto-models", "datafusion-session", "futures", "object_store", @@ -2164,11 +2177,12 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cc35b92cd560082155e80d9c826929c852d3c51543f4affd3a51c464a0aab3a" +checksum = "07cd518f85b3a027d913047b4ab0811111a2b734fdf84a51b78234455f10d8fa" dependencies = [ "arrow", + "arrow-schema", "async-trait", "bytes", "datafusion-common", @@ -2182,10 +2196,11 @@ dependencies = [ "datafusion-physical-expr-adapter", "datafusion-physical-expr-common", "datafusion-physical-plan", + "datafusion-proto-models", "datafusion-pruning", "datafusion-session", "futures", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", "parking_lot", @@ -2195,19 +2210,20 @@ dependencies = [ [[package]] name = "datafusion-doc" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d69bb69d8769e34f76839c960dbde24c1ac0c885a79b6c3c2287bdc56ec67891" +checksum = "d44c5919b560862dd1cb20a5c75b3e48c3d9e49719c91d78da5c38eaad5495c4" [[package]] name = "datafusion-execution" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8eac0a09bc8d263f52025cad9e001da4d8138d633fa288edda4d06b1772eae6" +checksum = "7620ad535af8730186bdec05d720e40d9a4584b40c7eb75f72c43aa7978e5484" dependencies = [ "arrow", "arrow-buffer", "async-trait", + "bytes", "dashmap", "datafusion-common", "datafusion-expr", @@ -2217,16 +2233,19 @@ dependencies = [ "object_store", "parking_lot", "parquet", + "pin-project-lite", "rand 0.9.4", "tempfile", + "tokio", + "tokio-util", "url", ] [[package]] name = "datafusion-expr" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeb14d374767ee0fc62dc79a5ba8bcf8a63c14e993c7d992d0e63adfa23d77d3" +checksum = "ea229af8b73e566fc6ebb1c8dd42ab250f8855c5304bd173f4b50ead78b64304" dependencies = [ "arrow", "arrow-schema", @@ -2238,8 +2257,10 @@ dependencies = [ "datafusion-functions-aggregate-common", "datafusion-functions-window-common", "datafusion-physical-expr-common", + "datafusion-proto-common", + "datafusion-proto-models", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "recursive", "serde_json", "sqlparser", @@ -2247,21 +2268,21 @@ dependencies = [ [[package]] name = "datafusion-expr-common" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b19a8c95522bee8cbb313d74263b85e355d2b52f42e67ef5694bf5de9e9356" +checksum = "6a18baa840f77760dcc9eaad281329bc57536c5c39e65e8649596f2a51216be7" dependencies = [ "arrow", "datafusion-common", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", ] [[package]] name = "datafusion-ffi" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9a4a09f24f1387408810acca070207a9cf6c7fc2368122982a8e7671f643d1e" +checksum = "77a9e527ab3fd2cea1c216efb81c40684a54490489d4ee6cd5719b17f8442f35" dependencies = [ "arrow", "arrow-schema", @@ -2292,13 +2313,13 @@ dependencies = [ [[package]] name = "datafusion-functions" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f64c983bbbdcb729d921a2b2ac3375598719b5cc0c30345ad664936f3176fc7" +checksum = "763bbfeec40b55a8a961d7349c0fcfcec4f3f66cc234d6295250b95371b85e34" dependencies = [ "arrow", "arrow-buffer", - "base64", + "base64 0.23.1", "blake2", "blake3", "chrono", @@ -2311,7 +2332,7 @@ dependencies = [ "datafusion-macros", "datafusion-physical-expr-common", "hex", - "itertools 0.14.0", + "itertools 0.15.0", "log", "md-5 0.11.0", "memchr", @@ -2324,9 +2345,9 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89bc17041e424a47ed062f43df24d84aab8b57c4c3221e5c1a5eef46d6c5718b" +checksum = "46c0c2b2e856883ecf6a4fa8b23e7c6041183af8a68d0583dc95d1d21e4eaee0" dependencies = [ "arrow", "datafusion-common", @@ -2337,17 +2358,17 @@ dependencies = [ "datafusion-macros", "datafusion-physical-expr", "datafusion-physical-expr-common", - "foldhash 0.2.0", "half", + "hashbrown 0.17.1", "log", "num-traits", ] [[package]] name = "datafusion-functions-aggregate-common" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97dd2a9e865c6108059f5b37b77934f84b50bfb108f837bd0e5c9536e03f0545" +checksum = "e35e42c87dfbff06934ea0e99cfed3440ac614c3f3bfb8c33be35ca0587d4140" dependencies = [ "arrow", "datafusion-common", @@ -2357,9 +2378,9 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f0bdfeef16d96417b9632ef855645376b242e9006a126dfd0bedfc54a93f5f" +checksum = "08079b0604cdcc43c7d6cf006cfd5d3ed9c235ade0c1ebe91085a62f875603df" dependencies = [ "arrow", "arrow-ord", @@ -2374,7 +2395,7 @@ dependencies = [ "datafusion-macros", "datafusion-physical-expr-common", "hashbrown 0.17.1", - "itertools 0.14.0", + "itertools 0.15.0", "itoa", "log", "memchr", @@ -2382,9 +2403,9 @@ dependencies = [ [[package]] name = "datafusion-functions-table" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4e4941673c917819616877e9993da4503e4f4739812be0bc32c5356184c6383" +checksum = "fe2070ecf5638a93c81c8babc7858339ef52165a9f54da1411afd69adf7d85ce" dependencies = [ "arrow", "async-trait", @@ -2398,9 +2419,9 @@ dependencies = [ [[package]] name = "datafusion-functions-window" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12dd2e16c12b84b6f6b41b19f55b366dd1c46876bb35b86896c6349067379e8d" +checksum = "0e9a164ebe1998c5c3f9e15c9a0c4e6b599a0c8739b5471bfb089752441963f1" dependencies = [ "arrow", "datafusion-common", @@ -2415,9 +2436,9 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cdc5e4b6f8b6ef823cc1c761f85088ad4c884fe8df64df3cbcc6b2b84698441" +checksum = "98965b183f92201c16798994820ae032649c4821e089c4c80e7d0f4485d41df5" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2425,20 +2446,20 @@ dependencies = [ [[package]] name = "datafusion-macros" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a3614234dd93578c92428cb4f408e020874f0d2b7e6c90c928d9d28b5df2ceb" +checksum = "3a711bd5a06ec85d9683e142d28a98ad0679a7220669f5c1b8589e57e9b29e46" dependencies = [ "datafusion-doc", "quote", - "syn", + "syn 3.0.6", ] [[package]] name = "datafusion-optimizer" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0635620b050b81bb92764e99250868f654e2cd5ad1bece413283b3f73c83179" +checksum = "ff3256b62ff44616ec83c7f04741d21124970833bb377ed56d9abc5ec6f707ec" dependencies = [ "arrow", "chrono", @@ -2447,7 +2468,7 @@ dependencies = [ "datafusion-expr-common", "datafusion-physical-expr", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "log", "recursive", "regex", @@ -2456,20 +2477,22 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cabf7a86eb70b816729e33c81bf7767c936ee1226f607a114f5dac2decac8d0" +checksum = "c1e37a25b5aa1f3a1db114f0ee3605bf01639b83a831dcde35119ee61f0b11d6" dependencies = [ "arrow", + "arrow-schema", "datafusion-common", "datafusion-expr", "datafusion-expr-common", "datafusion-functions-aggregate-common", "datafusion-physical-expr-common", + "datafusion-proto-models", "half", "hashbrown 0.17.1", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "parking_lot", "petgraph", "recursive", @@ -2478,9 +2501,9 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de222e04f7e6744501555a54ab0abe26bfdfebee380af79a9bdc175704246859" +checksum = "3a4d12787d42e88b26b0d3ec006192fa23ceb832ef2a9e87439ce820a8e038cc" dependencies = [ "arrow", "datafusion-common", @@ -2488,31 +2511,32 @@ 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" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72d0d0057fc5a502d45c870cb6d47c66eb7bdd5edb1bd71ad6f3f724975ac2a8" +checksum = "d13bf7f50fd902f5afc46d50759f5185b5620c40b24054f80f7c648897d3e5a6" dependencies = [ "arrow", "chrono", "datafusion-common", "datafusion-expr-common", + "datafusion-proto-models", "hashbrown 0.17.1", "indexmap 2.14.0", - "itertools 0.14.0", + "itertools 0.15.0", "parking_lot", "pin-project", ] [[package]] name = "datafusion-physical-optimizer" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86046eed10950c5f9aaed9acfd148e9bd2e1dfdfe4f9aef607d1447b271e4183" +checksum = "11fbe7e6665072957d44ed9587676e17a1f9ab3acfadfc287dac23750585f18a" dependencies = [ "arrow", "datafusion-common", @@ -2523,15 +2547,16 @@ dependencies = [ "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-pruning", - "itertools 0.14.0", + "datafusion-session", + "itertools 0.15.0", "recursive", ] [[package]] name = "datafusion-physical-plan" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9bc84da934c903407ba297971ebcc020c4c1a38aafd765d6c144c76eff3fa6a1" +checksum = "1265d58e5bce07d154e642a51ff43033b576a6ae40d50a29ac2b9f311004eb52" dependencies = [ "arrow", "arrow-data", @@ -2539,6 +2564,7 @@ dependencies = [ "arrow-ord", "arrow-schema", "async-trait", + "bytes", "datafusion-common", "datafusion-common-runtime", "datafusion-execution", @@ -2548,26 +2574,28 @@ dependencies = [ "datafusion-functions-window-common", "datafusion-physical-expr", "datafusion-physical-expr-common", + "datafusion-proto-common", + "datafusion-proto-models", "futures", "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-proto" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67791dcfacd142a9d95f8f73c2a161094cc936d231d80c235f5017dacf24e84e" +checksum = "0f85dee73fa4bab473854d5715ab49b122f2236862291e3c5da582b44e0fd5f9" dependencies = [ "arrow", - "chrono", "datafusion-catalog", "datafusion-catalog-listing", "datafusion-common", @@ -2583,26 +2611,38 @@ dependencies = [ "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-proto-common", + "datafusion-proto-models", "object_store", "prost", ] [[package]] name = "datafusion-proto-common" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8cd9e80d637891645d074db0f6c650b591117367247deb313fdfb78dff559cb" +checksum = "57901d70c724dab7cb604fea579f5324332244e3c400ff2d7c9b5fc065051437" dependencies = [ "arrow", "datafusion-common", "prost", ] +[[package]] +name = "datafusion-proto-models" +version = "55.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9a574908455152a11abea49c7916cc8a504de946e5302c7e40bab632cbbcb9b2" +dependencies = [ + "datafusion-common", + "datafusion-proto-common", + "prost", +] + [[package]] name = "datafusion-pruning" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb63eeac6de19be40f487b65dd84e546195f783c5a9928618e0c4f2a3569b0d7" +checksum = "74b06b333405c05015836ed36cea02cc29d1e2ee8fb414a77532d8346fb56492" dependencies = [ "arrow", "datafusion-common", @@ -2616,10 +2656,11 @@ dependencies = [ [[package]] name = "datafusion-session" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f961d209177f91bd014db5cbb2c33b7d28a2597b9003e77f17aeb712964315a" +checksum = "e7616b17b1d2fee3e9b13c651eac91b768d153265e6ba88e06e0b4af7883f69c" dependencies = [ + "arrow-schema", "async-trait", "datafusion-common", "datafusion-execution", @@ -2630,9 +2671,9 @@ dependencies = [ [[package]] name = "datafusion-spark" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ccd16a6949503e56c084df1b90c8889db826ec9347d2f0f51a7837d6fa011e" +checksum = "f7809ecefb16fcb950c6b22ee3df99cb412dca6fae72c329d64c938ae53254f9" dependencies = [ "arrow", "bigdecimal", @@ -2660,9 +2701,9 @@ dependencies = [ [[package]] name = "datafusion-sql" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d71cb454da682b2af7488e1fc1ddd72ee1b28f19297b8ccad73f0a21ee9a69" +checksum = "5b4848be66dd008d55adbe1dbc8cbd6a2502588ad0c0b8483bab0f43fd4495d0" dependencies = [ "arrow", "bigdecimal", @@ -2675,13 +2716,14 @@ dependencies = [ "recursive", "regex", "sqlparser", + "stacker", ] [[package]] name = "datafusion-sqllogictest" -version = "54.1.0" +version = "55.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d11faf3e95b017819a10800dc6d612c1f003696dea201700796b9268704f591" +checksum = "d408561adfed7077e110911c9945de623551f4101367e1ef55dc5eda7729afb4" dependencies = [ "arrow", "async-trait", @@ -2692,7 +2734,7 @@ dependencies = [ "futures", "half", "indicatif", - "itertools 0.14.0", + "itertools 0.15.0", "log", "object_store", "sqllogictest", @@ -2759,7 +2801,7 @@ dependencies = [ "darling 0.20.11", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2769,7 +2811,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn", + "syn 2.0.117", ] [[package]] @@ -2831,7 +2873,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2897,7 +2939,7 @@ dependencies = [ "enum-ordinalize", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -2938,7 +2980,7 @@ checksum = "42e528e2d34ba8a67a1a650b86beae8ef69fc5fdb638016f386b973226590432" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3234,7 +3276,7 @@ checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3361,7 +3403,7 @@ checksum = "53010ccb100b96a67bc32c0175f0ed1426b31b655d562898e57325f81c023ac0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -3679,7 +3721,7 @@ version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96547c2556ec9d12fb1578c4eaf448b04993e7fb79cbaad930a656880a6bdfa0" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "futures-channel", "futures-util", @@ -3741,7 +3783,7 @@ dependencies = [ "as-any", "async-trait", "backon", - "base64", + "base64 0.22.1", "bimap", "bytes", "chrono", @@ -4189,12 +4231,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 = "integer-encoding" version = "4.1.0" @@ -4254,6 +4290,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b4baf93f58d4425749ca49a51c50ebab072c5df6994d08fed93541c331481dc" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.18" @@ -4285,7 +4330,7 @@ checksum = "2a8c8b344124222efd714b73bb41f8b5120b27a7cc1c75593a6ff768d9d05aa4" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4330,7 +4375,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn", + "syn 2.0.117", ] [[package]] @@ -4349,7 +4394,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4379,7 +4424,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0529410abe238729a60b108898784df8984c87f6054c9c4fcacc47e4803c1ce1" dependencies = [ "aws-lc-rs", - "base64", + "base64 0.22.1", "getrandom 0.2.17", "js-sys", "pem", @@ -4642,11 +4687,20 @@ dependencies = [ "twox-hash", ] +[[package]] +name = "lz4_flex" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecbdfe44b1bd960b68170b417450a628c43f7cf56bb3c5317e61cb230ee7f226" +dependencies = [ + "twox-hash", +] + [[package]] name = "marrow" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5240d6977234968ff9ad254bfa73aa397fb51e41dcb22b1eb85835e9295485b" +checksum = "48b7541d9bd6781e25b0dfe7d638e5a8aa7950d5cdbf86f97537b5672768f7c4" dependencies = [ "arrow-array", "arrow-buffer", @@ -4697,9 +4751,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.0" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8ca58f447f06ed17d5fc4043ce1b10dd205e060fb3ce5b979b8ed8e59ff3f79" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "memo-map" @@ -4792,7 +4846,7 @@ dependencies = [ "cfg-if 1.0.4", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4866,7 +4920,7 @@ checksum = "b40e46c845ac234bcba19db7ab252bc2778cbadd516a466d2f12b1580852d136" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4886,7 +4940,7 @@ checksum = "4568f25ccbd45ab5d5603dc34318c1ec56b117531781260002151b8530a9f931" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -4964,6 +5018,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" @@ -5054,7 +5118,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5101,7 +5165,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "622acbc9100d3c10e2ee15804b0caa40e55c933d5aa53814cd520805b7958a49" dependencies = [ "async-trait", - "base64", + "base64 0.22.1", "bytes", "chrono", "form_urlencoded", @@ -5184,7 +5248,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4f8607c90e2c963a91467f50fb49fbc7fb3d573f88cea219ca59ccd3740b309" dependencies = [ "anyhow", - "base64", + "base64 0.22.1", "bytes", "futures", "http 1.4.0", @@ -5254,7 +5318,7 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6dea4908d490143a9b0b7f7a790e139ff829b06a023f670455ed3d44f664b361" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "http 1.4.0", "log", @@ -5353,7 +5417,7 @@ version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "313d46c9f5ae70bca26b7c3e3fbb9b639292625f28af73aa016f47e788af9deb" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "crc32c", "http 1.4.0", @@ -5462,9 +5526,9 @@ dependencies = [ [[package]] name = "parquet" -version = "58.4.0" +version = "59.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d298093b2dec60289dce0684c986d0f7679e9dd15771c2c65406e1aaf604a704" +checksum = "ff322f54b1a0f9288e614ed1f2d329b380af5476420db19f46ffb865e1163d73" dependencies = [ "ahash", "arrow-array", @@ -5473,7 +5537,7 @@ dependencies = [ "arrow-ipc", "arrow-schema", "arrow-select", - "base64", + "base64 0.23.1", "brotli", "bytes", "chrono", @@ -5481,17 +5545,15 @@ dependencies = [ "futures", "half", "hashbrown 0.17.1", - "lz4_flex", - "num-bigint", + "lz4_flex 0.14.0", + "num-bigint 0.5.1", "num-integer", "num-traits", "object_store", - "paste", "ring", "seq-macro", "simdutf8", "snap", - "thrift", "tokio", "twox-hash", "zstd", @@ -5519,7 +5581,7 @@ version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d30c53c26bc5b31a98cd02d20f25a7c8567146caf63ed593a9d87b2775291be" dependencies = [ - "base64", + "base64 0.22.1", "serde_core", ] @@ -5579,7 +5641,7 @@ dependencies = [ "async-recursion", "bytes", "faststr", - "integer-encoding 4.1.0", + "integer-encoding", "lazy_static", "linkedbytes", "ordered-float 4.6.0", @@ -5607,7 +5669,7 @@ checksum = "d9b20ed30f105399776b9c883e68e536ef602a16ae6f596d2c473591d6ad64c6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5766,7 +5828,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.117", ] [[package]] @@ -5807,7 +5869,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5837,7 +5899,7 @@ checksum = "7347867d0a7e1208d93b46767be83e2b8f978c3dad35f775ac8d8847551d6fe1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -5855,9 +5917,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.28.3" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fd8e38a3b50ed1167fb981cd6fd60147e091784c427b8f7183a7ee32c31c12" +checksum = "4688ddedf473e32662b9b067670129a8afb8c18e351482c70d62ba4a88171e8b" dependencies = [ "libc", "once_cell", @@ -5869,18 +5931,18 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.28.3" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e368e7ddfdeb98c9bca7f8383be1648fd84ab466bf2bc015e94008db6d35611e" +checksum = "f41027e41b4bd03f6e60f9f417fe24a6341a6bb744edd62b6f709f2a52ea30e9" dependencies = [ "target-lexicon", ] [[package]] name = "pyo3-ffi" -version = "0.28.3" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f29e10af80b1f7ccaf7f69eace800a03ecd13e883acfacc1e5d0988605f651e" +checksum = "e591a95526fead067432c3b3a33fc74770b87b1e04e73671090d9c2055a2b327" dependencies = [ "libc", "pyo3-build-config", @@ -5888,27 +5950,26 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.28.3" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df6e520eff47c45997d2fc7dd8214b25dd1310918bbb2642156ef66a67f29813" +checksum = "73225868fc1cd84eef2c3c230ddb91273bf1de46aeb8a4248da76d32a0924a1c" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn", + "syn 2.0.117", ] [[package]] name = "pyo3-macros-backend" -version = "0.28.3" +version = "0.29.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cdc218d835738f81c2338f822078af45b4afdf8b2e33cbb5916f108b813acb" +checksum = "571575aa3749fa6216757dd47d2a3e7ef360f329a40f0666a9fbd14889024952" dependencies = [ "heck", "proc-macro2", - "pyo3-build-config", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6118,7 +6179,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6176,7 +6237,7 @@ checksum = "b7186006dcb21920990093f30e3dea63b7d6e977bf1256be20c3563a5db070da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6271,7 +6332,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a321980405d596bd34aaf95c4722a3de4128a67fd19e74a81a83aa3fdf082e6" dependencies = [ "anyhow", - "base64", + "base64 0.22.1", "bytes", "form_urlencoded", "http 1.4.0", @@ -6293,7 +6354,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b10302cf0a7d7e7352ba211fc92c3c5bebf1286153e49cc5aa87348078a8e102" dependencies = [ "anyhow", - "base64", + "base64 0.22.1", "bytes", "form_urlencoded", "futures", @@ -6345,7 +6406,7 @@ version = "0.12.28" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eddd3ca559203180a307f12d114c268abf583f59b03cb906fd0b3ff8646c1147" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "futures-core", "futures-util", @@ -6387,7 +6448,7 @@ version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "62e0021ea2c22aed41653bc7e1419abb2c97e038ff2c33d0e1309e49a97deec0" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "futures-core", "futures-util", @@ -6477,7 +6538,7 @@ checksum = "5d2ed0b54125315fb36bd021e82d314d1c126548f871634b483f46b31d13cac6" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6536,7 +6597,7 @@ dependencies = [ "regex", "relative-path", "rustc_version", - "syn", + "syn 2.0.117", "unicode-ident", ] @@ -6820,9 +6881,9 @@ dependencies = [ [[package]] name = "serde_arrow" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2784e59a0315568e850cb01ddadf458f8c09e28d8cfc4880c2cc08f5dc3444e0" +checksum = "4f7168b019016101c432501f4cffb94869bed2ba1083ca9df06e90e10bd6f998" dependencies = [ "arrow-array", "arrow-schema", @@ -6860,7 +6921,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6869,6 +6930,7 @@ version = "1.0.149" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "83fc039473c5595ace860d8c4fafa220ff474b3fc6bfdb4293327f1a37e94d86" dependencies = [ + "indexmap 2.14.0", "itoa", "memchr", "serde", @@ -6884,7 +6946,7 @@ checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -6914,7 +6976,7 @@ version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76a5c54c7310e7b8b9577c286d7e399ddd876c3e12b3ed917a8aabc4b96e9e8c" dependencies = [ - "base64", + "base64 0.22.1", "bs58", "chrono", "hex", @@ -6937,7 +6999,7 @@ dependencies = [ "darling 0.23.0", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7080,7 +7142,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0d585997b0ac10be3c5ee635f1bab02d512760d14b7c468801ac8a01d9ae5f1d" dependencies = [ - "num-bigint", + "num-bigint 0.4.6", "num-traits", "thiserror 2.0.18", "time", @@ -7234,7 +7296,7 @@ checksum = "a6dd45d8fc1c79299bfbb7190e42ccbbdf6a5f52e4a6ad98d92357ea965bd289" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7256,7 +7318,7 @@ version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ - "base64", + "base64 0.22.1", "bytes", "crc", "crossbeam-queue", @@ -7296,7 +7358,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn", + "syn 2.0.117", ] [[package]] @@ -7317,7 +7379,7 @@ dependencies = [ "sha2 0.10.9", "sqlx-core", "sqlx-sqlite", - "syn", + "syn 2.0.117", "tokio", "url", ] @@ -7329,7 +7391,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", - "base64", + "base64 0.22.1", "bitflags", "byteorder", "bytes", @@ -7370,7 +7432,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", - "base64", + "base64 0.22.1", "bitflags", "byteorder", "crc", @@ -7455,7 +7517,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7466,15 +7528,15 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stacker" -version = "0.1.23" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d74a23609d509411d10e2176dc2a4346e3b4aea2e7b1869f19fdedbc71c013" +checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" dependencies = [ "cc", "cfg-if 1.0.4", "libc", "psm", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -7528,7 +7590,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7540,7 +7602,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7576,6 +7638,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn" +version = "3.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8593e8e72159ed2257d083c7a454a85cbf854f37a0966d8d483aff8c8a3ebcee" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + [[package]] name = "sync_wrapper" version = "1.0.2" @@ -7593,7 +7666,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7688,7 +7761,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7699,7 +7772,7 @@ checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -7711,17 +7784,6 @@ dependencies = [ "cfg-if 1.0.4", ] -[[package]] -name = "thrift" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" -dependencies = [ - "byteorder", - "integer-encoding 3.0.4", - "ordered-float 2.10.1", -] - [[package]] name = "time" version = "0.3.47" @@ -7812,7 +7874,7 @@ checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -8010,7 +8072,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -8097,7 +8159,7 @@ checksum = "3c36781cc0e46a83726d9879608e4cf6c2505237e263a8eb8c24502989cfdb28" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -8133,7 +8195,7 @@ checksum = "27a7a9b72ba121f6f1f6c3632b85604cac41aedb5ddc70accbebb6cac83de846" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -8456,7 +8518,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wasm-bindgen-shared", ] @@ -8683,7 +8745,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -8694,7 +8756,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -8760,15 +8822,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -9008,7 +9061,7 @@ checksum = "a2b8b99d4cdbf36b239a9532e31fe4fb8acc38d1897c1761e161550a7dc78e6a" dependencies = [ "assert-json-diff", "async-trait", - "base64", + "base64 0.22.1", "deadpool", "futures", "http 1.4.0", @@ -9054,7 +9107,7 @@ dependencies = [ "heck", "indexmap 2.14.0", "prettyplease", - "syn", + "syn 2.0.117", "wasm-metadata", "wit-bindgen-core", "wit-component", @@ -9070,7 +9123,7 @@ dependencies = [ "prettyplease", "proc-macro2", "quote", - "syn", + "syn 2.0.117", "wit-bindgen-core", "wit-bindgen-rust", ] @@ -9136,7 +9189,7 @@ checksum = "3e1e496dcbe6a09017acdfaf48e1a646735e7ff5b2a49e2c7e081cca77a59bc8" dependencies = [ "anyhow", "async-trait", - "base64", + "base64 0.22.1", "bytes", "clap", "crc32fast", @@ -9173,7 +9226,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb838aa8eb67d730af301584cf003caad407487606058292a6750711b603fbee" dependencies = [ "async-trait", - "base64", + "base64 0.22.1", "blake3", "bytemuck", "bytes", @@ -9186,7 +9239,7 @@ dependencies = [ "heapify", "itertools 0.14.0", "lazy_static", - "lz4_flex", + "lz4_flex 0.13.0", "more-asserts", "rand 0.10.1", "regex", @@ -9306,7 +9359,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -9327,7 +9380,7 @@ checksum = "0e8bc7269b54418e7aeeef514aa68f8690b8c0489a06b0136e5f57c4c5ccab89" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] @@ -9347,7 +9400,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", "synstructure", ] @@ -9387,7 +9440,7 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.117", ] [[package]] From 92b1810b2a98de9bab7d47bdbcabc67476f43064 Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Wed, 30 Sep 2026 05:07:49 -0700 Subject: [PATCH 04/12] style: taplo fmt the workspace Cargo.toml aws-sdk-s3tables sat after aws-sigv4, so taplo 0.9.3 (the version CI's lint job installs) fails `taplo fmt --check` on reorder_keys. --- Cargo.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 0d0a0c0635..9ae622ae40 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -63,12 +63,12 @@ aws-sdk-glue = { version = "1.85", default-features = false, features = [ "default-https-client", "rt-tokio", ] } -aws-sdk-sts = "1.63" -aws-sigv4 = { version = "1.2", features = ["sign-http"] } aws-sdk-s3tables = { version = "1.28", default-features = false, features = [ "default-https-client", "rt-tokio", ] } +aws-sdk-sts = "1.63" +aws-sigv4 = { version = "1.2", features = ["sign-http"] } backon = "1.5.1" base64 = "0.22.1" bimap = "0.6" From 12b8abb108f57bbed465ba49d89e9221da84584d Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Wed, 30 Sep 2026 05:09:12 -0700 Subject: [PATCH 05/12] build: run the tests against the Spice arrow-rs and DataFusion forks Spice links iceberg-rust against spiceai/arrow-rs spiceai-59-patches and spiceai/datafusion spiceai-55-patches, while this workspace resolved stock crates.io arrow 59.3.0 and DataFusion 55.1.0, so its tests never exercised the code Spice ships. Patch every arrow/parquet crate (db730b42) and DataFusion crate (75759ff7) in the graph to those forks, and regenerate Cargo.lock. --- Cargo.lock | 174 +++++++++++++++++++---------------------------------- Cargo.toml | 63 +++++++++++++++++++ 2 files changed, 125 insertions(+), 112 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c90a80036b..193ee71699 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -252,8 +252,7 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c14b3d39f306bc28fd639d59f06e17a0f377d0021e1b7e9054e4d6fedc98774" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-arith", "arrow-array", @@ -274,8 +273,7 @@ dependencies = [ [[package]] name = "arrow-arith" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce2961626677665b2195eb59242af4c7befe7b8737ca2050295389362380104e" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -288,8 +286,7 @@ dependencies = [ [[package]] name = "arrow-array" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e5f6adeffdf587d7a31db5d2266189624b526730cd3627f9ff9fedae97ad584" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "ahash", "arrow-buffer", @@ -308,8 +305,7 @@ dependencies = [ [[package]] name = "arrow-avro" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9145b685d586482102e4fe3d40349fe00086c0b219d51cae9daaead4698849ea" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -332,8 +328,7 @@ dependencies = [ [[package]] name = "arrow-buffer" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "097d193003ce7995d5d087089069ec2a6e0187faf5a6f8c9f38af2645d987182" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "bytes", "half", @@ -344,8 +339,7 @@ dependencies = [ [[package]] name = "arrow-cast" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "635c9c635668ad26adf76cce8fb276c4be7cf06e63bd516de7da514f9680ee53" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -366,8 +360,7 @@ dependencies = [ [[package]] name = "arrow-csv" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2ebf8d631e79b02c16cf5ae860561272c26024ec88fce389a56aaddd558e86" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-cast", @@ -381,8 +374,7 @@ dependencies = [ [[package]] name = "arrow-data" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba2f832eaeca24b8f26143dba750e42ee4ab51cf7d65e701ca9607cfda9f358" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-buffer", "arrow-schema", @@ -394,8 +386,7 @@ dependencies = [ [[package]] name = "arrow-ipc" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc41681ea80f521df14c36725b74d4c60702c47f0793af2be469c04527e2599" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -410,8 +401,7 @@ dependencies = [ [[package]] name = "arrow-json" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2f57d7a81969f24ccf80809587b76c09897e6f829d2d65a5976bfb3218851f1" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -435,8 +425,7 @@ dependencies = [ [[package]] name = "arrow-ord" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c900759f3bd8354fd4196bc4403eee846894dc2adf66b4225472006a0bf18c5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -448,8 +437,7 @@ dependencies = [ [[package]] name = "arrow-pyarrow" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "801aed7e607dbcc60ed6359025383b27a490327d4282ba87a9a3b78e25959c9a" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-data", @@ -460,8 +448,7 @@ dependencies = [ [[package]] name = "arrow-row" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4c6425032e28266e3fc4ff680805e57e670d6ea92473043f3e65b7ed6ac79f2" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -473,8 +460,7 @@ dependencies = [ [[package]] name = "arrow-schema" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10fab8d4563491417ba801fab29d205104d20d4bdf37bda6cd1cf425cff598cd" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "bitflags", "serde_core", @@ -484,8 +470,7 @@ dependencies = [ [[package]] name = "arrow-select" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc58569193c2525915f3cc6310edba3792f1200f65d6e9ed330aa33e691493b8" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "ahash", "arrow-array", @@ -498,8 +483,7 @@ dependencies = [ [[package]] name = "arrow-string" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e0813f3c35c1cfea65e14c20a953440f7783c088b7ad2d0db162ccdeefcec14" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "arrow-array", "arrow-buffer", @@ -1879,8 +1863,7 @@ dependencies = [ [[package]] name = "datafusion" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14313430439ef858ed5f52ca9c840e9eea9844da34d3716d05a476449634da5d" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-schema", @@ -1933,8 +1916,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c0756ebc770bcebae366dfd273dad50935f6103b4d212253cb17e2e53c5427f" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-trait", @@ -1958,8 +1940,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbde2961698705d8402f0f382f08876fc6f1126ffde790ef17833cf0ab87cd59" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-trait", @@ -1976,14 +1957,15 @@ dependencies = [ "itertools 0.15.0", "log", "object_store", + "parquet", "percent-encoding", + "tokio", ] [[package]] name = "datafusion-cli" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffb9833a102f01a257994de966c73fbf7441d8347207d8676c821b7318c03ee6" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-trait", @@ -2010,8 +1992,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6e06fe711ff815c8cf3143158547aea599702fd43f76f5866c70d5a5b3693a0" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-ipc", @@ -2038,8 +2019,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7a5107acff4e3ed50a7732acec06bba40e74ab49df021397ed250d60f04e42a" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "futures", "log", @@ -2049,8 +2029,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f69f45d2d700785be8df9d4b44410e1c8e4a856f10cc728b418a1066c0b594fb" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-compression", @@ -2076,7 +2055,9 @@ dependencies = [ "log", "object_store", "parking_lot", + "parquet", "rand 0.9.4", + "tempfile", "tokio", "tokio-util", "url", @@ -2086,8 +2067,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81650af64894ef34b46d2ef818ef244b40a81d90818f3bc642bf8fbf6758f8e0" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-ipc", @@ -2111,8 +2091,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-avro" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb356522bbfe0a309201b24c7a3fb30199870f2513ffb524e7cf6f716331ea8a" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-avro", @@ -2130,8 +2109,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e2519bed59a6907c79298b9c21fe807bbc34e4ff8414577d699b0741083593" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-trait", @@ -2154,8 +2132,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "635e61290e171597f6e50427e0cb486eda468ab47e880fa24d15bbb0fa24ac7e" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-trait", @@ -2178,8 +2155,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07cd518f85b3a027d913047b4ab0811111a2b734fdf84a51b78234455f10d8fa" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-schema", @@ -2211,14 +2187,12 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d44c5919b560862dd1cb20a5c75b3e48c3d9e49719c91d78da5c38eaad5495c4" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" [[package]] name = "datafusion-execution" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7620ad535af8730186bdec05d720e40d9a4584b40c7eb75f72c43aa7978e5484" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-buffer", @@ -2244,8 +2218,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea229af8b73e566fc6ebb1c8dd42ab250f8855c5304bd173f4b50ead78b64304" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-schema", @@ -2269,8 +2242,7 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a18baa840f77760dcc9eaad281329bc57536c5c39e65e8649596f2a51216be7" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", @@ -2281,8 +2253,7 @@ dependencies = [ [[package]] name = "datafusion-ffi" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a9e527ab3fd2cea1c216efb81c40684a54490489d4ee6cd5719b17f8442f35" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-schema", @@ -2314,8 +2285,7 @@ dependencies = [ [[package]] name = "datafusion-functions" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "763bbfeec40b55a8a961d7349c0fcfcec4f3f66cc234d6295250b95371b85e34" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-buffer", @@ -2346,8 +2316,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c0c2b2e856883ecf6a4fa8b23e7c6041183af8a68d0583dc95d1d21e4eaee0" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", @@ -2367,8 +2336,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e35e42c87dfbff06934ea0e99cfed3440ac614c3f3bfb8c33be35ca0587d4140" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", @@ -2379,8 +2347,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08079b0604cdcc43c7d6cf006cfd5d3ed9c235ade0c1ebe91085a62f875603df" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-ord", @@ -2404,8 +2371,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe2070ecf5638a93c81c8babc7858339ef52165a9f54da1411afd69adf7d85ce" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-trait", @@ -2420,8 +2386,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e9a164ebe1998c5c3f9e15c9a0c4e6b599a0c8739b5471bfb089752441963f1" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", @@ -2437,8 +2402,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98965b183f92201c16798994820ae032649c4821e089c4c80e7d0f4485d41df5" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2447,8 +2411,7 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a711bd5a06ec85d9683e142d28a98ad0679a7220669f5c1b8589e57e9b29e46" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "datafusion-doc", "quote", @@ -2458,8 +2421,7 @@ dependencies = [ [[package]] name = "datafusion-optimizer" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff3256b62ff44616ec83c7f04741d21124970833bb377ed56d9abc5ec6f707ec" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "chrono", @@ -2478,8 +2440,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1e37a25b5aa1f3a1db114f0ee3605bf01639b83a831dcde35119ee61f0b11d6" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-schema", @@ -2502,8 +2463,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a4d12787d42e88b26b0d3ec006192fa23ceb832ef2a9e87439ce820a8e038cc" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", @@ -2517,8 +2477,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d13bf7f50fd902f5afc46d50759f5185b5620c40b24054f80f7c648897d3e5a6" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "chrono", @@ -2535,28 +2494,28 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11fbe7e6665072957d44ed9587676e17a1f9ab3acfadfc287dac23750585f18a" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", "datafusion-execution", "datafusion-expr", "datafusion-expr-common", + "datafusion-functions-aggregate", "datafusion-physical-expr", "datafusion-physical-expr-common", "datafusion-physical-plan", "datafusion-pruning", "datafusion-session", "itertools 0.15.0", + "log", "recursive", ] [[package]] name = "datafusion-physical-plan" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1265d58e5bce07d154e642a51ff43033b576a6ae40d50a29ac2b9f311004eb52" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "arrow-data", @@ -2592,8 +2551,7 @@ dependencies = [ [[package]] name = "datafusion-proto" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f85dee73fa4bab473854d5715ab49b122f2236862291e3c5da582b44e0fd5f9" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-catalog", @@ -2619,8 +2577,7 @@ dependencies = [ [[package]] name = "datafusion-proto-common" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57901d70c724dab7cb604fea579f5324332244e3c400ff2d7c9b5fc065051437" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", @@ -2630,8 +2587,7 @@ dependencies = [ [[package]] name = "datafusion-proto-models" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a574908455152a11abea49c7916cc8a504de946e5302c7e40bab632cbbcb9b2" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "datafusion-common", "datafusion-proto-common", @@ -2641,8 +2597,7 @@ dependencies = [ [[package]] name = "datafusion-pruning" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74b06b333405c05015836ed36cea02cc29d1e2ee8fb414a77532d8346fb56492" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "datafusion-common", @@ -2657,8 +2612,7 @@ dependencies = [ [[package]] name = "datafusion-session" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7616b17b1d2fee3e9b13c651eac91b768d153265e6ba88e06e0b4af7883f69c" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow-schema", "async-trait", @@ -2672,8 +2626,7 @@ dependencies = [ [[package]] name = "datafusion-spark" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7809ecefb16fcb950c6b22ee3df99cb412dca6fae72c329d64c938ae53254f9" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "bigdecimal", @@ -2702,8 +2655,7 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b4848be66dd008d55adbe1dbc8cbd6a2502588ad0c0b8483bab0f43fd4495d0" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "bigdecimal", @@ -2722,8 +2674,7 @@ dependencies = [ [[package]] name = "datafusion-sqllogictest" version = "55.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d408561adfed7077e110911c9945de623551f4101367e1ef55dc5eda7729afb4" +source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" dependencies = [ "arrow", "async-trait", @@ -5527,8 +5478,7 @@ dependencies = [ [[package]] name = "parquet" version = "59.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff322f54b1a0f9288e614ed1f2d329b380af5476420db19f46ffb865e1163d73" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" dependencies = [ "ahash", "arrow-array", diff --git a/Cargo.toml b/Cargo.toml index 9ae622ae40..c07148cb32 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -162,3 +162,66 @@ volo = "0.10.6" volo-thrift = "0.10.8" zeroize = "1.7" zstd = "0.13.3" + +# Spice links iceberg-rust against its arrow-rs and DataFusion forks, so the tests here run +# against the same forks. +[patch.crates-io] +# arrow-rs 59.3.0 with Spice patches — branch: spiceai-59-patches +arrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-arith = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-array = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-avro = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-buffer = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-cast = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-csv = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-data = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-ipc = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-json = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-ord = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-pyarrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-row = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-schema = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-select = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow-string = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } + +# DataFusion 55.1.0 with Spice patches — branch: spiceai-55-patches +datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-catalog = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-catalog-listing = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-cli = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-common-runtime = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-datasource = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-datasource-arrow = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-datasource-avro = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-datasource-csv = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-datasource-json = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-datasource-parquet = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-doc = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-execution = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-ffi = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-functions = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-functions-aggregate = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-functions-aggregate-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-functions-nested = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-functions-table = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-functions-window = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-functions-window-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-macros = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-physical-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-physical-expr-adapter = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-physical-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-physical-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-physical-plan = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-proto = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-proto-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-proto-models = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-pruning = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-session = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-spark = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-sql = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion-sqllogictest = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } From 4a01ad4044d483212a90eb4dc433a97b8011cc0a Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Wed, 30 Sep 2026 05:12:17 -0700 Subject: [PATCH 06/12] fix(python): build the DataFusion table-provider capsule with PyCapsule::new_with_value pyo3 0.29 deprecates PyCapsule::new, which fails `make check-clippy` under -D warnings. new_with_value takes the name as a &'static CStr, so the capsule name becomes a c-string literal and the CString allocation (and its unwrap) goes away. Both store the value at the start of the capsule's allocation and drop it when the capsule is destroyed. --- bindings/python/src/datafusion_table_provider.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/bindings/python/src/datafusion_table_provider.rs b/bindings/python/src/datafusion_table_provider.rs index 2f4745fa7a..4ed59c06bb 100644 --- a/bindings/python/src/datafusion_table_provider.rs +++ b/bindings/python/src/datafusion_table_provider.rs @@ -16,7 +16,7 @@ // under the License. use std::collections::HashMap; -use std::ffi::{CStr, CString}; +use std::ffi::CStr; use std::sync::Arc; use datafusion_ffi::proto::logical_extension_codec::FFI_LogicalExtensionCodec; @@ -121,8 +121,6 @@ impl PyIcebergDataFusionTable { py: Python<'py>, session: Bound<'py, PyAny>, ) -> PyResult> { - let capsule_name = CString::new("datafusion_table_provider").unwrap(); - let logical_codec = ffi_logical_codec_from_pycapsule(session)?; let ffi_provider = FFI_TableProvider::new_with_ffi_codec( @@ -132,7 +130,7 @@ impl PyIcebergDataFusionTable { logical_codec, ); - PyCapsule::new(py, ffi_provider, Some(capsule_name)) + PyCapsule::new_with_value(py, ffi_provider, c"datafusion_table_provider") } } From 460d702d6902185dee8777c7577ac30c8ec07d07 Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Wed, 30 Sep 2026 05:48:56 -0700 Subject: [PATCH 07/12] chore: regenerate the public API snapshots `make check-public-api` failed for iceberg and iceberg-datafusion: the Spice additions (FileScanTask::limit, TableScanBuilder::with_limit, TableScan::to_arrow_from_tasks, Transaction::row_delta, the snapshot-pinned IcebergTableProvider and IcebergTableScan constructors) were never recorded, and DataFusion 55 moves the TableProvider, TableProviderFactory and CatalogProvider traits these types implement to datafusion_catalog. Regenerated with `make generate-public-api`. --- crates/iceberg/public-api.txt | 8 ++- crates/integrations/datafusion/public-api.txt | 57 ++++++++++--------- 2 files changed, 37 insertions(+), 28 deletions(-) diff --git a/crates/iceberg/public-api.txt b/crates/iceberg/public-api.txt index 41d4d7691b..82acab9744 100644 --- a/crates/iceberg/public-api.txt +++ b/crates/iceberg/public-api.txt @@ -1226,6 +1226,7 @@ pub iceberg::scan::FileScanTask::data_file_path: alloc::string::String pub iceberg::scan::FileScanTask::deletes: alloc::vec::Vec pub iceberg::scan::FileScanTask::file_size_in_bytes: u64 pub iceberg::scan::FileScanTask::length: u64 +pub iceberg::scan::FileScanTask::limit: core::option::Option pub iceberg::scan::FileScanTask::name_mapping: core::option::Option> pub iceberg::scan::FileScanTask::partition: core::option::Option pub iceberg::scan::FileScanTask::partition_spec: core::option::Option> @@ -1248,7 +1249,7 @@ impl core::fmt::Debug for iceberg::scan::FileScanTask pub fn iceberg::scan::FileScanTask::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result impl core::marker::StructuralPartialEq for iceberg::scan::FileScanTask impl iceberg::scan::FileScanTask -pub fn iceberg::scan::FileScanTask::builder() -> FileScanTaskBuilder<((), (), (), (), (), (), (), (), (), (), (), (), (), ())> +pub fn iceberg::scan::FileScanTask::builder() -> FileScanTaskBuilder<((), (), (), (), (), (), (), (), (), (), (), (), (), (), ())> impl serde_core::ser::Serialize for iceberg::scan::FileScanTask pub fn iceberg::scan::FileScanTask::serialize<__S>(&self, __serializer: __S) -> core::result::Result<<__S as serde_core::ser::Serializer>::Ok, <__S as serde_core::ser::Serializer>::Error> where __S: serde_core::ser::Serializer impl<'de> serde_core::de::Deserialize<'de> for iceberg::scan::FileScanTask @@ -1289,6 +1290,7 @@ pub fn iceberg::scan::TableScan::column_names(&self) -> core::option::Option<&[a pub async fn iceberg::scan::TableScan::plan_files(&self) -> iceberg::Result pub fn iceberg::scan::TableScan::snapshot(&self) -> core::option::Option<&iceberg::spec::SnapshotRef> pub async fn iceberg::scan::TableScan::to_arrow(&self) -> iceberg::Result +pub fn iceberg::scan::TableScan::to_arrow_from_tasks(&self, tasks: iceberg::scan::FileScanTaskStream) -> iceberg::Result impl core::fmt::Debug for iceberg::scan::TableScan pub fn iceberg::scan::TableScan::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result pub struct iceberg::scan::TableScanBuilder<'a> @@ -1303,6 +1305,7 @@ pub fn iceberg::scan::TableScanBuilder<'a>::with_case_sensitive(self, case_sensi pub fn iceberg::scan::TableScanBuilder<'a>::with_concurrency_limit(self, limit: usize) -> Self pub fn iceberg::scan::TableScanBuilder<'a>::with_data_file_concurrency_limit(self, limit: usize) -> Self pub fn iceberg::scan::TableScanBuilder<'a>::with_filter(self, predicate: iceberg::expr::Predicate) -> Self +pub fn iceberg::scan::TableScanBuilder<'a>::with_limit(self, limit: core::option::Option) -> Self pub fn iceberg::scan::TableScanBuilder<'a>::with_manifest_entry_concurrency_limit(self, limit: usize) -> Self pub fn iceberg::scan::TableScanBuilder<'a>::with_row_group_filtering_enabled(self, row_group_filtering_enabled: bool) -> Self pub fn iceberg::scan::TableScanBuilder<'a>::with_row_selection_enabled(self, row_selection_enabled: bool) -> Self @@ -3082,6 +3085,7 @@ pub fn iceberg::transaction::Transaction::expire_snapshots(&self) -> iceberg::tr pub fn iceberg::transaction::Transaction::fast_append(&self) -> iceberg::transaction::append::FastAppendAction pub fn iceberg::transaction::Transaction::new(table: &iceberg::table::Table) -> Self pub fn iceberg::transaction::Transaction::replace_sort_order(&self) -> iceberg::transaction::sort_order::ReplaceSortOrderAction +pub fn iceberg::transaction::Transaction::row_delta(&self) -> iceberg::transaction::row_delta::RowDeltaAction pub fn iceberg::transaction::Transaction::update_location(&self) -> iceberg::transaction::update_location::UpdateLocationAction pub fn iceberg::transaction::Transaction::update_schema(&self) -> iceberg::transaction::update_schema::UpdateSchemaAction pub fn iceberg::transaction::Transaction::update_statistics(&self) -> iceberg::transaction::update_statistics::UpdateStatisticsAction @@ -3468,6 +3472,8 @@ impl core::convert::From for iceberg::Error pub fn iceberg::Error::from(v: parquet::errors::ParquetError) -> Self impl core::convert::From for iceberg::Error pub fn iceberg::Error::from(v: reqwest::error::Error) -> Self +impl core::convert::From for iceberg::Error +pub fn iceberg::Error::from(v: reqwest_middleware::error::Error) -> Self impl core::convert::From for iceberg::Error pub fn iceberg::Error::from(v: serde_json::error::Error) -> Self impl core::convert::From for iceberg::Error diff --git a/crates/integrations/datafusion/public-api.txt b/crates/integrations/datafusion/public-api.txt index d24bd9fc9e..565bfa265c 100644 --- a/crates/integrations/datafusion/public-api.txt +++ b/crates/integrations/datafusion/public-api.txt @@ -7,15 +7,17 @@ impl core::clone::Clone for iceberg_datafusion::metadata_table::IcebergMetadataT pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::clone(&self) -> iceberg_datafusion::metadata_table::IcebergMetadataTableProvider impl core::fmt::Debug for iceberg_datafusion::metadata_table::IcebergMetadataTableProvider pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProvider for iceberg_datafusion::metadata_table::IcebergMetadataTableProvider -pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::as_any(&self) -> &dyn core::any::Any +impl datafusion_session::table::TableProvider for iceberg_datafusion::metadata_table::IcebergMetadataTableProvider pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, _projection: core::option::Option<&'life2 alloc::vec::Vec>, _filters: &'life3 [datafusion_expr::expr::Expr], _limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::schema(&self) -> arrow_schema::schema::SchemaRef pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::table_type(&self) -> datafusion_expr::table_source::TableType pub mod iceberg_datafusion::physical_plan pub struct iceberg_datafusion::physical_plan::IcebergTableScan impl iceberg_datafusion::physical_plan::IcebergTableScan +pub fn iceberg_datafusion::physical_plan::IcebergTableScan::buckets(&self) -> &[alloc::vec::Vec] pub fn iceberg_datafusion::physical_plan::IcebergTableScan::limit(&self) -> core::option::Option +pub fn iceberg_datafusion::physical_plan::IcebergTableScan::new(table: iceberg::table::Table, snapshot_id: core::option::Option, schema: arrow_schema::schema::SchemaRef, projection: core::option::Option<&alloc::vec::Vec>, filters: &[datafusion_expr::expr::Expr], limit: core::option::Option) -> Self +pub fn iceberg_datafusion::physical_plan::IcebergTableScan::new_with_tasks(table: iceberg::table::Table, snapshot_id: core::option::Option, schema: arrow_schema::schema::SchemaRef, projection: core::option::Option<&alloc::vec::Vec>, filters: &[datafusion_expr::expr::Expr], limit: core::option::Option, buckets: alloc::vec::Vec>, partitioning: datafusion_physical_expr::partitioning::Partitioning) -> Self pub fn iceberg_datafusion::physical_plan::IcebergTableScan::predicates(&self) -> core::option::Option<&iceberg::expr::predicate::Predicate> pub fn iceberg_datafusion::physical_plan::IcebergTableScan::projection(&self) -> core::option::Option<&[alloc::string::String]> pub fn iceberg_datafusion::physical_plan::IcebergTableScan::snapshot_id(&self) -> core::option::Option @@ -25,13 +27,12 @@ pub fn iceberg_datafusion::physical_plan::IcebergTableScan::fmt(&self, f: &mut c impl datafusion_physical_plan::display::DisplayAs for iceberg_datafusion::physical_plan::IcebergTableScan pub fn iceberg_datafusion::physical_plan::IcebergTableScan::fmt_as(&self, _t: datafusion_physical_plan::display::DisplayFormatType, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result impl datafusion_physical_plan::execution_plan::ExecutionPlan for iceberg_datafusion::physical_plan::IcebergTableScan -pub fn iceberg_datafusion::physical_plan::IcebergTableScan::as_any(&self) -> &dyn core::any::Any +pub fn iceberg_datafusion::physical_plan::IcebergTableScan::apply_expressions(&self, _f: &mut dyn core::ops::function::FnMut(&alloc::sync::Arc) -> datafusion_common::error::Result) -> datafusion_common::error::Result pub fn iceberg_datafusion::physical_plan::IcebergTableScan::children(&self) -> alloc::vec::Vec<&alloc::sync::Arc<(dyn datafusion_physical_plan::execution_plan::ExecutionPlan + 'static)>> -pub fn iceberg_datafusion::physical_plan::IcebergTableScan::execute(&self, _partition: usize, _context: alloc::sync::Arc) -> datafusion_common::error::Result +pub fn iceberg_datafusion::physical_plan::IcebergTableScan::execute(&self, partition: usize, _context: alloc::sync::Arc) -> datafusion_common::error::Result pub fn iceberg_datafusion::physical_plan::IcebergTableScan::name(&self) -> &str pub fn iceberg_datafusion::physical_plan::IcebergTableScan::properties(&self) -> &alloc::sync::Arc -pub fn iceberg_datafusion::physical_plan::IcebergTableScan::with_new_children(self: alloc::sync::Arc, _children: alloc::vec::Vec>) -> datafusion_common::error::Result> -pub fn iceberg_datafusion::physical_plan::convert_filters_to_predicate(filters: &[datafusion_expr::expr::Expr]) -> core::option::Option +pub fn iceberg_datafusion::physical_plan::IcebergTableScan::with_new_children(self: alloc::sync::Arc, children: alloc::vec::Vec>) -> datafusion_common::error::Result> pub fn iceberg_datafusion::physical_plan::project_with_partition(input: alloc::sync::Arc, table: &iceberg::table::Table) -> datafusion_common::error::Result> pub mod iceberg_datafusion::table pub mod iceberg_datafusion::table::metadata_table @@ -42,8 +43,7 @@ impl core::clone::Clone for iceberg_datafusion::metadata_table::IcebergMetadataT pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::clone(&self) -> iceberg_datafusion::metadata_table::IcebergMetadataTableProvider impl core::fmt::Debug for iceberg_datafusion::metadata_table::IcebergMetadataTableProvider pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProvider for iceberg_datafusion::metadata_table::IcebergMetadataTableProvider -pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::as_any(&self) -> &dyn core::any::Any +impl datafusion_session::table::TableProvider for iceberg_datafusion::metadata_table::IcebergMetadataTableProvider pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, _projection: core::option::Option<&'life2 alloc::vec::Vec>, _filters: &'life3 [datafusion_expr::expr::Expr], _limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::schema(&self) -> arrow_schema::schema::SchemaRef pub fn iceberg_datafusion::metadata_table::IcebergMetadataTableProvider::table_type(&self) -> datafusion_expr::table_source::TableType @@ -56,8 +56,8 @@ impl core::default::Default for iceberg_datafusion::table_provider_factory::Iceb pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::default() -> iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory impl core::fmt::Debug for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProviderFactory for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory -pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::create<'life0, 'life1, 'life2, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, cmd: &'life2 datafusion_expr::logical_plan::ddl::CreateExternalTable) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait +impl datafusion_session::table::TableProviderFactory for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory +pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::create<'life0, 'life1, 'life2, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, cmd: &'life2 datafusion_expr::logical_plan::ddl::CreateExternalTable) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait pub struct iceberg_datafusion::table::IcebergStaticTableProvider impl iceberg_datafusion::IcebergStaticTableProvider pub async fn iceberg_datafusion::IcebergStaticTableProvider::try_new_from_table(table: iceberg::table::Table) -> iceberg::error::Result @@ -66,22 +66,24 @@ impl core::clone::Clone for iceberg_datafusion::IcebergStaticTableProvider pub fn iceberg_datafusion::IcebergStaticTableProvider::clone(&self) -> iceberg_datafusion::IcebergStaticTableProvider impl core::fmt::Debug for iceberg_datafusion::IcebergStaticTableProvider pub fn iceberg_datafusion::IcebergStaticTableProvider::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProvider for iceberg_datafusion::IcebergStaticTableProvider -pub fn iceberg_datafusion::IcebergStaticTableProvider::as_any(&self) -> &dyn core::any::Any +impl datafusion_session::table::TableProvider for iceberg_datafusion::IcebergStaticTableProvider pub fn iceberg_datafusion::IcebergStaticTableProvider::insert_into<'life0, 'life1, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, _input: alloc::sync::Arc, _insert_op: datafusion_expr::logical_plan::dml::InsertOp) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait pub fn iceberg_datafusion::IcebergStaticTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, projection: core::option::Option<&'life2 alloc::vec::Vec>, filters: &'life3 [datafusion_expr::expr::Expr], limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait pub fn iceberg_datafusion::IcebergStaticTableProvider::schema(&self) -> arrow_schema::schema::SchemaRef pub fn iceberg_datafusion::IcebergStaticTableProvider::supports_filters_pushdown(&self, filters: &[&datafusion_expr::expr::Expr]) -> datafusion_common::error::Result> pub fn iceberg_datafusion::IcebergStaticTableProvider::table_type(&self) -> datafusion_expr::table_source::TableType pub struct iceberg_datafusion::table::IcebergTableProvider +impl iceberg_datafusion::IcebergTableProvider +pub fn iceberg_datafusion::IcebergTableProvider::snapshot_id(&self) -> core::option::Option +pub async fn iceberg_datafusion::IcebergTableProvider::try_new(catalog: alloc::sync::Arc, namespace: iceberg::catalog::NamespaceIdent, name: impl core::convert::Into) -> iceberg::error::Result +pub fn iceberg_datafusion::IcebergTableProvider::with_snapshot_id(self, snapshot_id: core::option::Option) -> Self impl core::clone::Clone for iceberg_datafusion::IcebergTableProvider pub fn iceberg_datafusion::IcebergTableProvider::clone(&self) -> iceberg_datafusion::IcebergTableProvider impl core::fmt::Debug for iceberg_datafusion::IcebergTableProvider pub fn iceberg_datafusion::IcebergTableProvider::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProvider for iceberg_datafusion::IcebergTableProvider -pub fn iceberg_datafusion::IcebergTableProvider::as_any(&self) -> &dyn core::any::Any +impl datafusion_session::table::TableProvider for iceberg_datafusion::IcebergTableProvider pub fn iceberg_datafusion::IcebergTableProvider::insert_into<'life0, 'life1, 'async_trait>(&'life0 self, state: &'life1 dyn datafusion_session::session::Session, input: alloc::sync::Arc, _insert_op: datafusion_expr::logical_plan::dml::InsertOp) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait -pub fn iceberg_datafusion::IcebergTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, projection: core::option::Option<&'life2 alloc::vec::Vec>, filters: &'life3 [datafusion_expr::expr::Expr], limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait +pub fn iceberg_datafusion::IcebergTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, state: &'life1 dyn datafusion_session::session::Session, projection: core::option::Option<&'life2 alloc::vec::Vec>, filters: &'life3 [datafusion_expr::expr::Expr], limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait pub fn iceberg_datafusion::IcebergTableProvider::schema(&self) -> arrow_schema::schema::SchemaRef pub fn iceberg_datafusion::IcebergTableProvider::supports_filters_pushdown(&self, filters: &[&datafusion_expr::expr::Expr]) -> datafusion_common::error::Result> pub fn iceberg_datafusion::IcebergTableProvider::table_type(&self) -> datafusion_expr::table_source::TableType @@ -94,16 +96,15 @@ impl core::default::Default for iceberg_datafusion::table_provider_factory::Iceb pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::default() -> iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory impl core::fmt::Debug for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProviderFactory for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory -pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::create<'life0, 'life1, 'life2, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, cmd: &'life2 datafusion_expr::logical_plan::ddl::CreateExternalTable) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait +impl datafusion_session::table::TableProviderFactory for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory +pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::create<'life0, 'life1, 'life2, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, cmd: &'life2 datafusion_expr::logical_plan::ddl::CreateExternalTable) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait pub struct iceberg_datafusion::IcebergCatalogProvider impl iceberg_datafusion::IcebergCatalogProvider pub async fn iceberg_datafusion::IcebergCatalogProvider::try_new(client: alloc::sync::Arc) -> iceberg::error::Result impl core::fmt::Debug for iceberg_datafusion::IcebergCatalogProvider pub fn iceberg_datafusion::IcebergCatalogProvider::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::catalog::CatalogProvider for iceberg_datafusion::IcebergCatalogProvider -pub fn iceberg_datafusion::IcebergCatalogProvider::as_any(&self) -> &dyn core::any::Any -pub fn iceberg_datafusion::IcebergCatalogProvider::schema(&self, name: &str) -> core::option::Option> +impl datafusion_session::catalog::CatalogProvider for iceberg_datafusion::IcebergCatalogProvider +pub fn iceberg_datafusion::IcebergCatalogProvider::schema(&self, name: &str) -> core::option::Option> pub fn iceberg_datafusion::IcebergCatalogProvider::schema_names(&self) -> alloc::vec::Vec pub struct iceberg_datafusion::IcebergStaticTableProvider impl iceberg_datafusion::IcebergStaticTableProvider @@ -113,22 +114,24 @@ impl core::clone::Clone for iceberg_datafusion::IcebergStaticTableProvider pub fn iceberg_datafusion::IcebergStaticTableProvider::clone(&self) -> iceberg_datafusion::IcebergStaticTableProvider impl core::fmt::Debug for iceberg_datafusion::IcebergStaticTableProvider pub fn iceberg_datafusion::IcebergStaticTableProvider::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProvider for iceberg_datafusion::IcebergStaticTableProvider -pub fn iceberg_datafusion::IcebergStaticTableProvider::as_any(&self) -> &dyn core::any::Any +impl datafusion_session::table::TableProvider for iceberg_datafusion::IcebergStaticTableProvider pub fn iceberg_datafusion::IcebergStaticTableProvider::insert_into<'life0, 'life1, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, _input: alloc::sync::Arc, _insert_op: datafusion_expr::logical_plan::dml::InsertOp) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait pub fn iceberg_datafusion::IcebergStaticTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, projection: core::option::Option<&'life2 alloc::vec::Vec>, filters: &'life3 [datafusion_expr::expr::Expr], limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait pub fn iceberg_datafusion::IcebergStaticTableProvider::schema(&self) -> arrow_schema::schema::SchemaRef pub fn iceberg_datafusion::IcebergStaticTableProvider::supports_filters_pushdown(&self, filters: &[&datafusion_expr::expr::Expr]) -> datafusion_common::error::Result> pub fn iceberg_datafusion::IcebergStaticTableProvider::table_type(&self) -> datafusion_expr::table_source::TableType pub struct iceberg_datafusion::IcebergTableProvider +impl iceberg_datafusion::IcebergTableProvider +pub fn iceberg_datafusion::IcebergTableProvider::snapshot_id(&self) -> core::option::Option +pub async fn iceberg_datafusion::IcebergTableProvider::try_new(catalog: alloc::sync::Arc, namespace: iceberg::catalog::NamespaceIdent, name: impl core::convert::Into) -> iceberg::error::Result +pub fn iceberg_datafusion::IcebergTableProvider::with_snapshot_id(self, snapshot_id: core::option::Option) -> Self impl core::clone::Clone for iceberg_datafusion::IcebergTableProvider pub fn iceberg_datafusion::IcebergTableProvider::clone(&self) -> iceberg_datafusion::IcebergTableProvider impl core::fmt::Debug for iceberg_datafusion::IcebergTableProvider pub fn iceberg_datafusion::IcebergTableProvider::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProvider for iceberg_datafusion::IcebergTableProvider -pub fn iceberg_datafusion::IcebergTableProvider::as_any(&self) -> &dyn core::any::Any +impl datafusion_session::table::TableProvider for iceberg_datafusion::IcebergTableProvider pub fn iceberg_datafusion::IcebergTableProvider::insert_into<'life0, 'life1, 'async_trait>(&'life0 self, state: &'life1 dyn datafusion_session::session::Session, input: alloc::sync::Arc, _insert_op: datafusion_expr::logical_plan::dml::InsertOp) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait -pub fn iceberg_datafusion::IcebergTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, projection: core::option::Option<&'life2 alloc::vec::Vec>, filters: &'life3 [datafusion_expr::expr::Expr], limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait +pub fn iceberg_datafusion::IcebergTableProvider::scan<'life0, 'life1, 'life2, 'life3, 'async_trait>(&'life0 self, state: &'life1 dyn datafusion_session::session::Session, projection: core::option::Option<&'life2 alloc::vec::Vec>, filters: &'life3 [datafusion_expr::expr::Expr], limit: core::option::Option) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait, 'life3: 'async_trait pub fn iceberg_datafusion::IcebergTableProvider::schema(&self) -> arrow_schema::schema::SchemaRef pub fn iceberg_datafusion::IcebergTableProvider::supports_filters_pushdown(&self, filters: &[&datafusion_expr::expr::Expr]) -> datafusion_common::error::Result> pub fn iceberg_datafusion::IcebergTableProvider::table_type(&self) -> datafusion_expr::table_source::TableType @@ -140,7 +143,7 @@ impl core::default::Default for iceberg_datafusion::table_provider_factory::Iceb pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::default() -> iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory impl core::fmt::Debug for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result -impl datafusion_catalog::table::TableProviderFactory for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory -pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::create<'life0, 'life1, 'life2, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, cmd: &'life2 datafusion_expr::logical_plan::ddl::CreateExternalTable) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait +impl datafusion_session::table::TableProviderFactory for iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory +pub fn iceberg_datafusion::table_provider_factory::IcebergTableProviderFactory::create<'life0, 'life1, 'life2, 'async_trait>(&'life0 self, _state: &'life1 dyn datafusion_session::session::Session, cmd: &'life2 datafusion_expr::logical_plan::ddl::CreateExternalTable) -> core::pin::Pin>> + core::marker::Send + 'async_trait)>> where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait, 'life2: 'async_trait pub fn iceberg_datafusion::from_datafusion_error(error: datafusion_common::error::DataFusionError) -> iceberg::error::Error pub fn iceberg_datafusion::to_datafusion_error(error: iceberg::error::Error) -> datafusion_common::error::DataFusionError From 575d81a1a83fb1fb4aef59ba023308df7a0ab245 Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Wed, 30 Sep 2026 06:27:56 -0700 Subject: [PATCH 08/12] build: pin DataFusion at d98ae645 (spiceai-55-patches, MSRV fix in the unparser) --- Cargo.lock | 78 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 78 +++++++++++++++++++++++++++--------------------------- 2 files changed, 78 insertions(+), 78 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 193ee71699..d55455bd04 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1863,7 +1863,7 @@ dependencies = [ [[package]] name = "datafusion" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-schema", @@ -1916,7 +1916,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-trait", @@ -1940,7 +1940,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-trait", @@ -1965,7 +1965,7 @@ dependencies = [ [[package]] name = "datafusion-cli" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-trait", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-ipc", @@ -2019,7 +2019,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "futures", "log", @@ -2029,7 +2029,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-compression", @@ -2067,7 +2067,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-ipc", @@ -2091,7 +2091,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-avro" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-avro", @@ -2109,7 +2109,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-trait", @@ -2132,7 +2132,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-trait", @@ -2155,7 +2155,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-schema", @@ -2187,12 +2187,12 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" [[package]] name = "datafusion-execution" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-buffer", @@ -2218,7 +2218,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-schema", @@ -2242,7 +2242,7 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2253,7 +2253,7 @@ dependencies = [ [[package]] name = "datafusion-ffi" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-schema", @@ -2285,7 +2285,7 @@ dependencies = [ [[package]] name = "datafusion-functions" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-buffer", @@ -2316,7 +2316,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2336,7 +2336,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2347,7 +2347,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-ord", @@ -2371,7 +2371,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-trait", @@ -2386,7 +2386,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2402,7 +2402,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2411,7 +2411,7 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "datafusion-doc", "quote", @@ -2421,7 +2421,7 @@ dependencies = [ [[package]] name = "datafusion-optimizer" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "chrono", @@ -2440,7 +2440,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-schema", @@ -2463,7 +2463,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2477,7 +2477,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "chrono", @@ -2494,7 +2494,7 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2515,7 +2515,7 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "arrow-data", @@ -2551,7 +2551,7 @@ dependencies = [ [[package]] name = "datafusion-proto" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-catalog", @@ -2577,7 +2577,7 @@ dependencies = [ [[package]] name = "datafusion-proto-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2587,7 +2587,7 @@ dependencies = [ [[package]] name = "datafusion-proto-models" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "datafusion-common", "datafusion-proto-common", @@ -2597,7 +2597,7 @@ dependencies = [ [[package]] name = "datafusion-pruning" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "datafusion-common", @@ -2612,7 +2612,7 @@ dependencies = [ [[package]] name = "datafusion-session" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow-schema", "async-trait", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "datafusion-spark" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "bigdecimal", @@ -2655,7 +2655,7 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "bigdecimal", @@ -2674,7 +2674,7 @@ dependencies = [ [[package]] name = "datafusion-sqllogictest" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=75759ff7604903944a6f145100c56efd8b2f6591#75759ff7604903944a6f145100c56efd8b2f6591" +source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" dependencies = [ "arrow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index c07148cb32..15496ef9f6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -186,42 +186,42 @@ arrow-string = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b4 parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } # DataFusion 55.1.0 with Spice patches — branch: spiceai-55-patches -datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-catalog = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-catalog-listing = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-cli = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-common-runtime = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-datasource = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-datasource-arrow = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-datasource-avro = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-datasource-csv = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-datasource-json = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-datasource-parquet = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-doc = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-execution = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-ffi = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-functions = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-functions-aggregate = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-functions-aggregate-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-functions-nested = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-functions-table = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-functions-window = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-functions-window-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-macros = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-physical-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-physical-expr-adapter = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-physical-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-physical-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-physical-plan = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-proto = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-proto-common = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-proto-models = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-pruning = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-session = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-spark = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-sql = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } -datafusion-sqllogictest = { git = "https://github.com/spiceai/datafusion.git", rev = "75759ff7604903944a6f145100c56efd8b2f6591" } +datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-catalog = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-catalog-listing = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-cli = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-common-runtime = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-datasource = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-datasource-arrow = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-datasource-avro = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-datasource-csv = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-datasource-json = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-datasource-parquet = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-doc = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-execution = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-ffi = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-functions = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-functions-aggregate = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-functions-aggregate-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-functions-nested = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-functions-table = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-functions-window = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-functions-window-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-macros = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-physical-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-physical-expr-adapter = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-physical-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-physical-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-physical-plan = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-proto = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-proto-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-proto-models = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-pruning = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-session = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-spark = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-sql = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion-sqllogictest = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } From 50e982dc42dd895c1c798c22dcba9d64fee07bc3 Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Thu, 1 Oct 2026 11:20:21 -0700 Subject: [PATCH 09/12] ci: unbreak docker-up (backport #3273 RustFS swap and #3174 HMS jar ADD) (#51) * ci: replace MinIO with RustFS for integration tests Backport of apache/iceberg-rust#3273 (119fad92). Docker Hub no longer serves minio/mc or minio/minio, and quay.io/minio no longer allows anonymous pulls, so `make docker-up` fails before any integration test runs. Conflict in dev/docker-compose.yaml resolved to the RustFS services, keeping this line's REST fixture CATALOG_URI. (cherry picked from commit 119fad92c891c95a7819d87e4195407b3f7c0578) * fix: Fix CI failure due to integration test's Hive install (#3174) Install Hive directly Signed-off-by: Jannik Steinmann (cherry picked from commit 4687d265374bf5dc7bd8cd461f3bd46a23864761) --------- Signed-off-by: Jannik Steinmann Co-authored-by: Jannik Steinmann --- Makefile | 2 +- crates/catalog/hms/tests/hms_catalog_test.rs | 6 +- crates/catalog/loader/tests/common/mod.rs | 11 ++-- crates/integration_tests/src/lib.rs | 6 +- .../storage/opendal/tests/file_io_s3_test.rs | 20 +++---- .../opendal/tests/resolving_storage_test.rs | 16 ++--- crates/test_utils/src/lib.rs | 14 ++--- dev/docker-compose.yaml | 58 ++++++++----------- dev/hms/Dockerfile | 10 ++-- dev/hms/core-site.xml | 2 +- dev/spark/spark-defaults.conf | 2 +- website/src/reference/container-runtimes.md | 2 +- 12 files changed, 71 insertions(+), 78 deletions(-) diff --git a/Makefile b/Makefile index c5748718a4..ae6947c51e 100644 --- a/Makefile +++ b/Makefile @@ -107,7 +107,7 @@ site: install-mdbook # Docker targets for integration tests docker-up: - docker compose -f dev/docker-compose.yaml up -d --build --wait + docker compose -f dev/docker-compose.yaml up -d --build --wait --remove-orphans docker-down: docker compose -f dev/docker-compose.yaml down -v --remove-orphans --timeout 0 diff --git a/crates/catalog/hms/tests/hms_catalog_test.rs b/crates/catalog/hms/tests/hms_catalog_test.rs index d0e6486ad8..b64184ce77 100644 --- a/crates/catalog/hms/tests/hms_catalog_test.rs +++ b/crates/catalog/hms/tests/hms_catalog_test.rs @@ -33,7 +33,7 @@ use iceberg_catalog_hms::{ HmsCatalog, HmsCatalogBuilder, THRIFT_TRANSPORT_BUFFERED, }; use iceberg_storage_opendal::OpenDalStorageFactory; -use iceberg_test_utils::{get_hms_endpoint, get_minio_endpoint, set_up}; +use iceberg_test_utils::{get_hms_endpoint, get_object_store_endpoint, set_up}; use tokio::time::sleep; use tracing::info; @@ -43,7 +43,7 @@ async fn get_catalog() -> HmsCatalog { set_up(); let hms_endpoint = get_hms_endpoint(); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); let props = HashMap::from([ (HMS_CATALOG_PROP_URI.to_string(), hms_endpoint), @@ -55,7 +55,7 @@ async fn get_catalog() -> HmsCatalog { HMS_CATALOG_PROP_WAREHOUSE.to_string(), "s3a://warehouse/hive".to_string(), ), - (S3_ENDPOINT.to_string(), minio_endpoint), + (S3_ENDPOINT.to_string(), object_store_endpoint), (S3_ACCESS_KEY_ID.to_string(), "admin".to_string()), (S3_SECRET_ACCESS_KEY.to_string(), "password".to_string()), (S3_REGION.to_string(), "us-east-1".to_string()), diff --git a/crates/catalog/loader/tests/common/mod.rs b/crates/catalog/loader/tests/common/mod.rs index 1d40fef357..30fb441b9a 100644 --- a/crates/catalog/loader/tests/common/mod.rs +++ b/crates/catalog/loader/tests/common/mod.rs @@ -49,7 +49,8 @@ use iceberg_catalog_sql::{ }; use iceberg_storage_opendal::OpenDalStorageFactory; use iceberg_test_utils::{ - get_glue_endpoint, get_hms_endpoint, get_minio_endpoint, get_rest_catalog_endpoint, set_up, + get_glue_endpoint, get_hms_endpoint, get_object_store_endpoint, get_rest_catalog_endpoint, + set_up, }; use sqlx::migrate::MigrateDatabase; use tempfile::TempDir; @@ -216,7 +217,7 @@ async fn rest_catalog() -> RestCatalog { async fn glue_catalog() -> GlueCatalog { let glue_endpoint = get_glue_endpoint(); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); let props = HashMap::from([ (AWS_ACCESS_KEY_ID.to_string(), "my_access_id".to_string()), @@ -225,7 +226,7 @@ async fn glue_catalog() -> GlueCatalog { "my_secret_key".to_string(), ), (AWS_REGION_NAME.to_string(), "us-east-1".to_string()), - (S3_ENDPOINT.to_string(), minio_endpoint), + (S3_ENDPOINT.to_string(), object_store_endpoint), (S3_ACCESS_KEY_ID.to_string(), "admin".to_string()), (S3_SECRET_ACCESS_KEY.to_string(), "password".to_string()), (S3_REGION.to_string(), "us-east-1".to_string()), @@ -264,7 +265,7 @@ async fn glue_catalog() -> GlueCatalog { async fn hms_catalog() -> HmsCatalog { let hms_endpoint = get_hms_endpoint(); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); let props = HashMap::from([ (HMS_CATALOG_PROP_URI.to_string(), hms_endpoint), @@ -276,7 +277,7 @@ async fn hms_catalog() -> HmsCatalog { HMS_CATALOG_PROP_WAREHOUSE.to_string(), "s3a://warehouse/hive".to_string(), ), - (S3_ENDPOINT.to_string(), minio_endpoint), + (S3_ENDPOINT.to_string(), object_store_endpoint), (S3_ACCESS_KEY_ID.to_string(), "admin".to_string()), (S3_SECRET_ACCESS_KEY.to_string(), "password".to_string()), (S3_REGION.to_string(), "us-east-1".to_string()), diff --git a/crates/integration_tests/src/lib.rs b/crates/integration_tests/src/lib.rs index feafa3ae9f..c137b46f86 100644 --- a/crates/integration_tests/src/lib.rs +++ b/crates/integration_tests/src/lib.rs @@ -22,7 +22,7 @@ use iceberg::io::{ S3_ACCESS_KEY_ID, S3_ENDPOINT, S3_PATH_STYLE_ACCESS, S3_REGION, S3_SECRET_ACCESS_KEY, }; use iceberg_catalog_rest::REST_CATALOG_PROP_URI; -use iceberg_test_utils::{get_minio_endpoint, get_rest_catalog_endpoint, set_up}; +use iceberg_test_utils::{get_object_store_endpoint, get_rest_catalog_endpoint, set_up}; /// Global test fixture that uses environment-based configuration. /// This assumes Docker containers are started externally (e.g., via `make docker-up`). @@ -39,11 +39,11 @@ impl GlobalTestFixture { set_up(); let rest_endpoint = get_rest_catalog_endpoint(); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); let catalog_config = HashMap::from([ (REST_CATALOG_PROP_URI.to_string(), rest_endpoint), - (S3_ENDPOINT.to_string(), minio_endpoint), + (S3_ENDPOINT.to_string(), object_store_endpoint), (S3_ACCESS_KEY_ID.to_string(), "admin".to_string()), (S3_SECRET_ACCESS_KEY.to_string(), "password".to_string()), (S3_REGION.to_string(), "us-east-1".to_string()), diff --git a/crates/storage/opendal/tests/file_io_s3_test.rs b/crates/storage/opendal/tests/file_io_s3_test.rs index d5858e18f4..e3331b429b 100644 --- a/crates/storage/opendal/tests/file_io_s3_test.rs +++ b/crates/storage/opendal/tests/file_io_s3_test.rs @@ -31,19 +31,19 @@ mod tests { use iceberg_storage_opendal::{ AwsCredential, CustomAwsCredentialLoader, OpenDalStorageFactory, ProvideCredential, }; - use iceberg_test_utils::{get_minio_endpoint, normalize_test_name_with_parts, set_up}; + use iceberg_test_utils::{get_object_store_endpoint, normalize_test_name_with_parts, set_up}; use reqsign_core::Context; async fn get_file_io() -> FileIO { set_up(); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); FileIOBuilder::new(Arc::new(OpenDalStorageFactory::S3 { customized_credential_load: None, })) .with_props(vec![ - (S3_ENDPOINT, minio_endpoint), + (S3_ENDPOINT, object_store_endpoint), (S3_ACCESS_KEY_ID, "admin".to_string()), (S3_SECRET_ACCESS_KEY, "password".to_string()), (S3_REGION, "us-east-1".to_string()), @@ -109,7 +109,7 @@ mod tests { Self { credential } } - fn new_minio() -> Self { + fn new_object_store() -> Self { Self::new(Some(AwsCredential { access_key_id: "admin".to_string(), secret_access_key: "password".to_string(), @@ -133,7 +133,7 @@ mod tests { #[test] fn test_custom_aws_credential_loader_instantiation() { // Test creating CustomAwsCredentialLoader with mock loader - let mock_loader = MockCredentialLoader::new_minio(); + let mock_loader = MockCredentialLoader::new_object_store(); let custom_loader = CustomAwsCredentialLoader::new(mock_loader); // Test that the loader can be used in FileIOBuilder with OpenDalStorageFactory @@ -153,17 +153,17 @@ mod tests { let _file_io = get_file_io().await; // Create a mock credential loader - let mock_loader = MockCredentialLoader::new_minio(); + let mock_loader = MockCredentialLoader::new_object_store(); let custom_loader = CustomAwsCredentialLoader::new(mock_loader); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); // Build FileIO with custom credential loader via OpenDalStorageFactory let file_io_with_custom_creds = FileIOBuilder::new(Arc::new(OpenDalStorageFactory::S3 { customized_credential_load: Some(custom_loader), })) .with_props(vec![ - (S3_ENDPOINT, minio_endpoint), + (S3_ENDPOINT, object_store_endpoint), (S3_REGION, "us-east-1".to_string()), (S3_PATH_STYLE_ACCESS, "true".to_string()), ]) @@ -184,14 +184,14 @@ mod tests { let mock_loader = MockCredentialLoader::new(None); let custom_loader = CustomAwsCredentialLoader::new(mock_loader); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); // Build FileIO with custom credential loader via OpenDalStorageFactory let file_io_with_custom_creds = FileIOBuilder::new(Arc::new(OpenDalStorageFactory::S3 { customized_credential_load: Some(custom_loader), })) .with_props(vec![ - (S3_ENDPOINT, minio_endpoint), + (S3_ENDPOINT, object_store_endpoint), (S3_REGION, "us-east-1".to_string()), (S3_PATH_STYLE_ACCESS, "true".to_string()), ]) diff --git a/crates/storage/opendal/tests/resolving_storage_test.rs b/crates/storage/opendal/tests/resolving_storage_test.rs index 1853a796dd..c11f783fdc 100644 --- a/crates/storage/opendal/tests/resolving_storage_test.rs +++ b/crates/storage/opendal/tests/resolving_storage_test.rs @@ -33,16 +33,16 @@ mod tests { S3_SECRET_ACCESS_KEY, }; use iceberg_storage_opendal::OpenDalResolvingStorageFactory; - use iceberg_test_utils::{get_minio_endpoint, normalize_test_name_with_parts, set_up}; + use iceberg_test_utils::{get_object_store_endpoint, normalize_test_name_with_parts, set_up}; fn get_resolving_file_io() -> iceberg::io::FileIO { set_up(); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); FileIOBuilder::new(Arc::new(OpenDalResolvingStorageFactory::new())) .with_props(vec![ - (S3_ENDPOINT, minio_endpoint), + (S3_ENDPOINT, object_store_endpoint), (S3_ACCESS_KEY_ID, "admin".to_string()), (S3_SECRET_ACCESS_KEY, "password".to_string()), (S3_REGION, "us-east-1".to_string()), @@ -263,9 +263,9 @@ mod tests { use reqsign_core::Context; #[derive(Debug)] - struct MinioCredentialLoader; + struct ObjectStoreCredentialLoader; - impl ProvideCredential for MinioCredentialLoader { + impl ProvideCredential for ObjectStoreCredentialLoader { type Credential = AwsCredential; async fn provide_credential( @@ -282,14 +282,14 @@ mod tests { } set_up(); - let minio_endpoint = get_minio_endpoint(); + let object_store_endpoint = get_object_store_endpoint(); let factory = OpenDalResolvingStorageFactory::new() - .with_s3_credential_loader(CustomAwsCredentialLoader::new(MinioCredentialLoader)); + .with_s3_credential_loader(CustomAwsCredentialLoader::new(ObjectStoreCredentialLoader)); let file_io = FileIOBuilder::new(Arc::new(factory)) .with_props(vec![ - (S3_ENDPOINT, minio_endpoint), + (S3_ENDPOINT, object_store_endpoint), (S3_REGION, "us-east-1".to_string()), (S3_PATH_STYLE_ACCESS, "true".to_string()), ]) diff --git a/crates/test_utils/src/lib.rs b/crates/test_utils/src/lib.rs index e44d96c385..b64e462696 100644 --- a/crates/test_utils/src/lib.rs +++ b/crates/test_utils/src/lib.rs @@ -37,24 +37,24 @@ mod common { } // Environment variable names for service endpoints - pub const ENV_MINIO_ENDPOINT: &str = "ICEBERG_TEST_MINIO_ENDPOINT"; + pub const ENV_OBJECT_STORE_ENDPOINT: &str = "ICEBERG_TEST_OBJECT_STORE_ENDPOINT"; pub const ENV_REST_CATALOG_ENDPOINT: &str = "ICEBERG_TEST_REST_ENDPOINT"; pub const ENV_HMS_ENDPOINT: &str = "ICEBERG_TEST_HMS_ENDPOINT"; pub const ENV_GLUE_ENDPOINT: &str = "ICEBERG_TEST_GLUE_ENDPOINT"; pub const ENV_GCS_ENDPOINT: &str = "ICEBERG_TEST_GCS_ENDPOINT"; // Default ports matching dev/docker-compose.yaml - pub const DEFAULT_MINIO_PORT: u16 = 9000; + pub const DEFAULT_OBJECT_STORE_PORT: u16 = 9000; pub const DEFAULT_REST_CATALOG_PORT: u16 = 8181; pub const DEFAULT_HMS_PORT: u16 = 9083; pub const DEFAULT_GLUE_PORT: u16 = 5001; pub const DEFAULT_GCS_PORT: u16 = 4443; - /// Returns the MinIO S3-compatible endpoint. - /// Checks ICEBERG_TEST_MINIO_ENDPOINT env var, otherwise returns localhost default. - pub fn get_minio_endpoint() -> String { - std::env::var(ENV_MINIO_ENDPOINT) - .unwrap_or_else(|_| format!("http://localhost:{DEFAULT_MINIO_PORT}")) + /// Returns the S3-compatible object store endpoint. + /// Checks ICEBERG_TEST_OBJECT_STORE_ENDPOINT env var, otherwise returns localhost default. + pub fn get_object_store_endpoint() -> String { + std::env::var(ENV_OBJECT_STORE_ENDPOINT) + .unwrap_or_else(|_| format!("http://localhost:{DEFAULT_OBJECT_STORE_PORT}")) } /// Returns the REST catalog endpoint. diff --git a/dev/docker-compose.yaml b/dev/docker-compose.yaml index 9d288580df..d5b72bd1d6 100644 --- a/dev/docker-compose.yaml +++ b/dev/docker-compose.yaml @@ -25,53 +25,43 @@ networks: services: # ============================================================================= - # MinIO - S3-compatible storage (shared by all tests) + # Object store - S3-compatible storage backed by RustFS (shared by all tests) # ============================================================================= - minio: - image: minio/minio:RELEASE.2025-05-24T17-08-30Z + object-store: + image: rustfs/rustfs:1.0.0 environment: - - MINIO_ROOT_USER=admin - - MINIO_ROOT_PASSWORD=password - - MINIO_DOMAIN=minio - hostname: minio + - RUSTFS_ACCESS_KEY=admin + - RUSTFS_SECRET_KEY=password + - RUSTFS_SERVER_DOMAINS=object-store + hostname: object-store networks: iceberg_test: # Add aliases for virtual-hosted style bucket access aliases: - - icebergdata.minio - - warehouse.minio - - bucket1.minio + - icebergdata.object-store + - warehouse.object-store + - bucket1.object-store ports: - "9000:9000" - "9001:9001" - command: ["server", "/data", "--console-address", ":9001"] healthcheck: - test: ["CMD", "mc", "ready", "local"] + test: ["CMD", "curl", "-f", "http://localhost:9000/health/ready"] interval: 5s timeout: 5s retries: 5 - # MinIO client - creates buckets for tests - mc: + # One-shot job that creates buckets for tests. Re-creating an existing bucket + # returns 200, so this is safe to re-run. + create-buckets: depends_on: - minio: + object-store: condition: service_healthy - image: minio/mc:RELEASE.2025-05-21T01-59-54Z - environment: - - AWS_ACCESS_KEY_ID=admin - - AWS_SECRET_ACCESS_KEY=password - - AWS_REGION=us-east-1 + image: rustfs/rustfs:1.0.0 entrypoint: > /bin/sh -c " - /usr/bin/mc alias set minio http://minio:9000 admin password; - /usr/bin/mc mb --ignore-existing minio/icebergdata; - /usr/bin/mc mb --ignore-existing minio/warehouse; - /usr/bin/mc mb --ignore-existing minio/bucket1; - /usr/bin/mc policy set public minio/icebergdata; - /usr/bin/mc policy set public minio/warehouse; - /usr/bin/mc policy set public minio/bucket1; - echo 'Buckets created successfully'; - tail -f /dev/null + curl -fsS --aws-sigv4 aws:amz:us-east-1:s3 -u admin:password -X PUT http://object-store:9000/icebergdata && + curl -fsS --aws-sigv4 aws:amz:us-east-1:s3 -u admin:password -X PUT http://object-store:9000/warehouse && + curl -fsS --aws-sigv4 aws:amz:us-east-1:s3 -u admin:password -X PUT http://object-store:9000/bucket1 " networks: iceberg_test: @@ -89,9 +79,9 @@ services: - CATALOG_URI=jdbc:sqlite:file:/tmp/iceberg_rest_mode=memory - CATALOG_WAREHOUSE=s3://icebergdata/demo - CATALOG_IO__IMPL=org.apache.iceberg.aws.s3.S3FileIO - - CATALOG_S3_ENDPOINT=http://minio:9000 + - CATALOG_S3_ENDPOINT=http://object-store:9000 depends_on: - minio: + object-store: condition: service_healthy networks: iceberg_test: @@ -113,7 +103,7 @@ services: dockerfile: Dockerfile platform: ${DOCKER_DEFAULT_PLATFORM:-linux/amd64} depends_on: - minio: + object-store: condition: service_healthy networks: iceberg_test: @@ -170,8 +160,8 @@ services: depends_on: rest: condition: service_healthy - minio: - condition: service_healthy + create-buckets: + condition: service_completed_successfully environment: - AWS_ACCESS_KEY_ID=admin - AWS_SECRET_ACCESS_KEY=password diff --git a/dev/hms/Dockerfile b/dev/hms/Dockerfile index 65ebc3d6d5..dff5606bdc 100644 --- a/dev/hms/Dockerfile +++ b/dev/hms/Dockerfile @@ -20,10 +20,12 @@ ENV HADOOP_VERSION=3.1.0 USER root -RUN apt-get update -qq && apt-get -qq -y install curl && \ - curl https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/${HADOOP_VERSION}/hadoop-aws-${HADOOP_VERSION}.jar -Lo /opt/hive/lib/hadoop-aws-${HADOOP_VERSION}.jar && \ - curl https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.271/aws-java-sdk-bundle-1.11.271.jar -Lo /opt/hive/lib/aws-java-sdk-bundle-1.11.271.jar && \ - apt-get clean && rm -rf /var/lib/apt/lists/* +ADD --chmod=644 --checksum=sha256:a18508b9348af095ea41301e439354dbd449e304ac44c6885b2b4fe78de88126 \ + https://repo1.maven.org/maven2/org/apache/hadoop/hadoop-aws/${HADOOP_VERSION}/hadoop-aws-${HADOOP_VERSION}.jar \ + /opt/hive/lib/hadoop-aws-${HADOOP_VERSION}.jar +ADD --chmod=644 --checksum=sha256:faf78ac4880f56cf52791d84ec1068ce7c66acc4295d580a726104b734c01fcd \ + https://repo1.maven.org/maven2/com/amazonaws/aws-java-sdk-bundle/1.11.271/aws-java-sdk-bundle-1.11.271.jar \ + /opt/hive/lib/aws-java-sdk-bundle-1.11.271.jar COPY core-site.xml /opt/hadoop/etc/hadoop/core-site.xml diff --git a/dev/hms/core-site.xml b/dev/hms/core-site.xml index f23efa8885..d88ef93570 100644 --- a/dev/hms/core-site.xml +++ b/dev/hms/core-site.xml @@ -30,7 +30,7 @@ fs.s3a.endpoint - http://minio:9000 + http://object-store:9000 fs.s3a.access.key diff --git a/dev/spark/spark-defaults.conf b/dev/spark/spark-defaults.conf index b576f624b9..a02640bbdd 100644 --- a/dev/spark/spark-defaults.conf +++ b/dev/spark/spark-defaults.conf @@ -23,7 +23,7 @@ spark.sql.catalog.rest.type rest spark.sql.catalog.rest.uri http://rest:8181 spark.sql.catalog.rest.io-impl org.apache.iceberg.aws.s3.S3FileIO spark.sql.catalog.rest.warehouse s3://warehouse/rest/ -spark.sql.catalog.rest.s3.endpoint http://minio:9000 +spark.sql.catalog.rest.s3.endpoint http://object-store:9000 spark.sql.catalog.rest.cache-enabled false spark.sql.defaultCatalog rest diff --git a/website/src/reference/container-runtimes.md b/website/src/reference/container-runtimes.md index 7b4ac38511..412aa70053 100644 --- a/website/src/reference/container-runtimes.md +++ b/website/src/reference/container-runtimes.md @@ -19,7 +19,7 @@ # Container Runtimes -Iceberg-rust uses containers for integration tests, where `docker` and `docker compose` start containers for MinIO and various catalogs. You can use any of the following container runtimes. +Iceberg-rust uses containers for integration tests, where `docker` and `docker compose` start containers for an S3-compatible object store (RustFS) and various catalogs. You can use any of the following container runtimes. ## Docker Desktop From 0284be3d66ea8dd91e6fa450bf73ccd85699a9dd Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Thu, 1 Oct 2026 18:45:55 -0700 Subject: [PATCH 10/12] build: pin arrow-rs at 2e2cc330, the merge of spiceai/arrow-rs#29 into spiceai-59 (#52) --- Cargo.lock | 34 +++++++++++++++++----------------- Cargo.toml | 34 +++++++++++++++++----------------- 2 files changed, 34 insertions(+), 34 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d55455bd04..870bae9e30 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -252,7 +252,7 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-arith", "arrow-array", @@ -273,7 +273,7 @@ dependencies = [ [[package]] name = "arrow-arith" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -286,7 +286,7 @@ dependencies = [ [[package]] name = "arrow-array" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "ahash", "arrow-buffer", @@ -305,7 +305,7 @@ dependencies = [ [[package]] name = "arrow-avro" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -328,7 +328,7 @@ dependencies = [ [[package]] name = "arrow-buffer" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "bytes", "half", @@ -339,7 +339,7 @@ dependencies = [ [[package]] name = "arrow-cast" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -360,7 +360,7 @@ dependencies = [ [[package]] name = "arrow-csv" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-cast", @@ -374,7 +374,7 @@ dependencies = [ [[package]] name = "arrow-data" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-buffer", "arrow-schema", @@ -386,7 +386,7 @@ dependencies = [ [[package]] name = "arrow-ipc" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -401,7 +401,7 @@ dependencies = [ [[package]] name = "arrow-json" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -425,7 +425,7 @@ dependencies = [ [[package]] name = "arrow-ord" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -437,7 +437,7 @@ dependencies = [ [[package]] name = "arrow-pyarrow" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-data", @@ -448,7 +448,7 @@ dependencies = [ [[package]] name = "arrow-row" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -460,7 +460,7 @@ dependencies = [ [[package]] name = "arrow-schema" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "bitflags", "serde_core", @@ -470,7 +470,7 @@ dependencies = [ [[package]] name = "arrow-select" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "ahash", "arrow-array", @@ -483,7 +483,7 @@ dependencies = [ [[package]] name = "arrow-string" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "arrow-array", "arrow-buffer", @@ -5478,7 +5478,7 @@ dependencies = [ [[package]] name = "parquet" version = "59.3.0" -source = "git+https://github.com/spiceai/arrow-rs.git?rev=db730b42c4b84ef47c4a00800de35fff363874e5#db730b42c4b84ef47c4a00800de35fff363874e5" +source = "git+https://github.com/spiceai/arrow-rs.git?rev=2e2cc330c64ac8a9e44d2a5f2da171b391f775b8#2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" dependencies = [ "ahash", "arrow-array", diff --git a/Cargo.toml b/Cargo.toml index 15496ef9f6..bb9046c0f4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -167,23 +167,23 @@ zstd = "0.13.3" # against the same forks. [patch.crates-io] # arrow-rs 59.3.0 with Spice patches — branch: spiceai-59-patches -arrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-arith = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-array = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-avro = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-buffer = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-cast = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-csv = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-data = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-ipc = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-json = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-ord = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-pyarrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-row = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-schema = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-select = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -arrow-string = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } -parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "db730b42c4b84ef47c4a00800de35fff363874e5" } +arrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-arith = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-array = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-avro = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-buffer = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-cast = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-csv = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-data = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-ipc = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-json = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-ord = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-pyarrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-row = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-schema = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-select = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +arrow-string = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } +parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } # DataFusion 55.1.0 with Spice patches — branch: spiceai-55-patches datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } From a0bd6b04cf11ad34dfc103043bba4cfce072bf45 Mon Sep 17 00:00:00 2001 From: Viktor Yershov Date: Thu, 1 Oct 2026 20:54:10 -0700 Subject: [PATCH 11/12] build: pin DataFusion at 02550cf9, the merge of spiceai/datafusion#243 into spiceai-55 (#53) --- Cargo.lock | 78 +++++++++++++++++++++++++++--------------------------- Cargo.toml | 78 +++++++++++++++++++++++++++--------------------------- 2 files changed, 78 insertions(+), 78 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 870bae9e30..45281998b6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1863,7 +1863,7 @@ dependencies = [ [[package]] name = "datafusion" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-schema", @@ -1916,7 +1916,7 @@ dependencies = [ [[package]] name = "datafusion-catalog" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-trait", @@ -1940,7 +1940,7 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-trait", @@ -1965,7 +1965,7 @@ dependencies = [ [[package]] name = "datafusion-cli" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-trait", @@ -1992,7 +1992,7 @@ dependencies = [ [[package]] name = "datafusion-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-ipc", @@ -2019,7 +2019,7 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "futures", "log", @@ -2029,7 +2029,7 @@ dependencies = [ [[package]] name = "datafusion-datasource" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-compression", @@ -2067,7 +2067,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-arrow" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-ipc", @@ -2091,7 +2091,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-avro" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-avro", @@ -2109,7 +2109,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-trait", @@ -2132,7 +2132,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-trait", @@ -2155,7 +2155,7 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-schema", @@ -2187,12 +2187,12 @@ dependencies = [ [[package]] name = "datafusion-doc" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" [[package]] name = "datafusion-execution" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-buffer", @@ -2218,7 +2218,7 @@ dependencies = [ [[package]] name = "datafusion-expr" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-schema", @@ -2242,7 +2242,7 @@ dependencies = [ [[package]] name = "datafusion-expr-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2253,7 +2253,7 @@ dependencies = [ [[package]] name = "datafusion-ffi" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-schema", @@ -2285,7 +2285,7 @@ dependencies = [ [[package]] name = "datafusion-functions" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-buffer", @@ -2316,7 +2316,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2336,7 +2336,7 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2347,7 +2347,7 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-ord", @@ -2371,7 +2371,7 @@ dependencies = [ [[package]] name = "datafusion-functions-table" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-trait", @@ -2386,7 +2386,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2402,7 +2402,7 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -2411,7 +2411,7 @@ dependencies = [ [[package]] name = "datafusion-macros" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "datafusion-doc", "quote", @@ -2421,7 +2421,7 @@ dependencies = [ [[package]] name = "datafusion-optimizer" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "chrono", @@ -2440,7 +2440,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-schema", @@ -2463,7 +2463,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-adapter" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2477,7 +2477,7 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "chrono", @@ -2494,7 +2494,7 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2515,7 +2515,7 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "arrow-data", @@ -2551,7 +2551,7 @@ dependencies = [ [[package]] name = "datafusion-proto" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-catalog", @@ -2577,7 +2577,7 @@ dependencies = [ [[package]] name = "datafusion-proto-common" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2587,7 +2587,7 @@ dependencies = [ [[package]] name = "datafusion-proto-models" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "datafusion-common", "datafusion-proto-common", @@ -2597,7 +2597,7 @@ dependencies = [ [[package]] name = "datafusion-pruning" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "datafusion-common", @@ -2612,7 +2612,7 @@ dependencies = [ [[package]] name = "datafusion-session" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow-schema", "async-trait", @@ -2626,7 +2626,7 @@ dependencies = [ [[package]] name = "datafusion-spark" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "bigdecimal", @@ -2655,7 +2655,7 @@ dependencies = [ [[package]] name = "datafusion-sql" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "bigdecimal", @@ -2674,7 +2674,7 @@ dependencies = [ [[package]] name = "datafusion-sqllogictest" version = "55.1.0" -source = "git+https://github.com/spiceai/datafusion.git?rev=d98ae645fd4206f098f959831820276a4629de26#d98ae645fd4206f098f959831820276a4629de26" +source = "git+https://github.com/spiceai/datafusion.git?rev=02550cf9462b9f56506b6b1cd07eabf08c46e200#02550cf9462b9f56506b6b1cd07eabf08c46e200" dependencies = [ "arrow", "async-trait", diff --git a/Cargo.toml b/Cargo.toml index bb9046c0f4..882298a09d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -186,42 +186,42 @@ arrow-string = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc33 parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } # DataFusion 55.1.0 with Spice patches — branch: spiceai-55-patches -datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-catalog = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-catalog-listing = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-cli = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-common-runtime = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-datasource = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-datasource-arrow = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-datasource-avro = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-datasource-csv = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-datasource-json = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-datasource-parquet = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-doc = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-execution = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-ffi = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-functions = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-functions-aggregate = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-functions-aggregate-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-functions-nested = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-functions-table = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-functions-window = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-functions-window-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-macros = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-physical-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-physical-expr-adapter = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-physical-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-physical-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-physical-plan = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-proto = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-proto-common = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-proto-models = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-pruning = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-session = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-spark = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-sql = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } -datafusion-sqllogictest = { git = "https://github.com/spiceai/datafusion.git", rev = "d98ae645fd4206f098f959831820276a4629de26" } +datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-catalog = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-catalog-listing = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-cli = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-common = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-common-runtime = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-datasource = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-datasource-arrow = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-datasource-avro = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-datasource-csv = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-datasource-json = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-datasource-parquet = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-doc = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-execution = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-ffi = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-functions = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-functions-aggregate = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-functions-aggregate-common = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-functions-nested = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-functions-table = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-functions-window = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-functions-window-common = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-macros = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-physical-expr = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-physical-expr-adapter = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-physical-expr-common = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-physical-optimizer = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-physical-plan = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-proto = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-proto-common = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-proto-models = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-pruning = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-session = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-spark = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-sql = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } +datafusion-sqllogictest = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } From 6e688764fbf583d80da1e6aba72903c9dfed8488 Mon Sep 17 00:00:00 2001 From: Luke Kim <80174+lukekim@users.noreply.github.com> Date: Fri, 2 Oct 2026 21:17:17 -0700 Subject: [PATCH 12/12] test(datafusion): cover the factory's one-location check; fix fork branch notes (#54) The DataFusion 55 port rejects CREATE EXTERNAL TABLE commands that carry zero or several locations, but only the one-location path was tested. Add a test for each case. The arrow-rs and DataFusion pins are the heads of spiceai-59 and spiceai-55, not of the -patches branches the comments named. --- Cargo.toml | 4 +- .../src/table/table_provider_factory.rs | 46 +++++++++++++++++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 882298a09d..ff8a401cde 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -166,7 +166,7 @@ zstd = "0.13.3" # Spice links iceberg-rust against its arrow-rs and DataFusion forks, so the tests here run # against the same forks. [patch.crates-io] -# arrow-rs 59.3.0 with Spice patches — branch: spiceai-59-patches +# arrow-rs 59.3.0 with Spice patches — branch: spiceai-59 arrow = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } arrow-arith = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } arrow-array = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } @@ -185,7 +185,7 @@ arrow-select = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc33 arrow-string = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } parquet = { git = "https://github.com/spiceai/arrow-rs.git", rev = "2e2cc330c64ac8a9e44d2a5f2da171b391f775b8" } -# DataFusion 55.1.0 with Spice patches — branch: spiceai-55-patches +# DataFusion 55.1.0 with Spice patches — branch: spiceai-55 datafusion = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } datafusion-catalog = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } datafusion-catalog-listing = { git = "https://github.com/spiceai/datafusion.git", rev = "02550cf9462b9f56506b6b1cd07eabf08c46e200" } diff --git a/crates/integrations/datafusion/src/table/table_provider_factory.rs b/crates/integrations/datafusion/src/table/table_provider_factory.rs index 6ba93237f9..6b5c10cad4 100644 --- a/crates/integrations/datafusion/src/table/table_provider_factory.rs +++ b/crates/integrations/datafusion/src/table/table_provider_factory.rs @@ -298,6 +298,52 @@ mod tests { assert_eq!(actual_schema.as_ref(), &expected_schema); } + #[tokio::test] + async fn test_create_rejects_zero_locations() { + let factory = IcebergTableProviderFactory::new(); + + let state = SessionStateBuilder::new().build(); + let cmd = CreateExternalTable { + locations: vec![], + ..create_external_table_cmd() + }; + + let error = factory + .create(&state, &cmd) + .await + .expect_err("a command without a location should be rejected"); + + assert!( + error + .to_string() + .contains("exactly one metadata file location, got 0"), + "unexpected error: {error}" + ); + } + + #[tokio::test] + async fn test_create_rejects_multiple_locations() { + let factory = IcebergTableProviderFactory::new(); + + let state = SessionStateBuilder::new().build(); + let cmd = CreateExternalTable { + locations: vec![table_metadata_location(), table_metadata_location()], + ..create_external_table_cmd() + }; + + let error = factory + .create(&state, &cmd) + .await + .expect_err("a command with several locations should be rejected"); + + assert!( + error + .to_string() + .contains("exactly one metadata file location, got 2"), + "unexpected error: {error}" + ); + } + #[tokio::test] async fn test_schema_of_created_external_table_sql() { let mut state = SessionStateBuilder::new().with_default_features().build();