diff --git a/Cargo.lock b/Cargo.lock index 5167813..f10473b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -236,6 +236,7 @@ dependencies = [ "arrow-schema", "flatbuffers", "lz4_flex", + "zstd", ] [[package]] @@ -333,7 +334,7 @@ version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06575e6a9673580f52661c92107baabffbf41e2141373441cbcdc47cb733003c" dependencies = [ - "bzip2", + "bzip2 0.5.2", "flate2", "futures-core", "memchr", @@ -564,6 +565,15 @@ dependencies = [ "bzip2-sys", ] +[[package]] +name = "bzip2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea8dcd42434048e4f7a304411d9273a411f647446c1234a65ce0554923f4cff" +dependencies = [ + "libbz2-rs-sys", +] + [[package]] name = "bzip2-sys" version = "0.1.13+1.0.8" @@ -744,16 +754,16 @@ dependencies = [ [[package]] name = "datafusion" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a11e19a7ccc5bb979c95c1dceef663eab39c9061b3bbf8d1937faf0f03bf41f" +checksum = "0f47772c28553d837e12cdcc0fb04c2a0fe8eca8b704a30f721d076f32407435" dependencies = [ "arrow", "arrow-ipc", "arrow-schema", "async-trait", "bytes", - "bzip2", + "bzip2 0.6.0", "chrono", "datafusion-catalog", "datafusion-catalog-listing", @@ -780,6 +790,7 @@ dependencies = [ "datafusion-sql", "flate2", "futures", + "hex", "itertools", "log", "object_store", @@ -798,9 +809,9 @@ dependencies = [ [[package]] name = "datafusion-catalog" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94985e67cab97b1099db2a7af11f31a45008b282aba921c1e1d35327c212ec18" +checksum = "4b6b29c9c922959285fac53139e12c81014e2ca54704f20355edd7e9d11fd773" dependencies = [ "arrow", "async-trait", @@ -824,9 +835,9 @@ dependencies = [ [[package]] name = "datafusion-catalog-listing" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e002df133bdb7b0b9b429d89a69aa77b35caeadee4498b2ce1c7c23a99516988" +checksum = "7313553e4c01d184dd49183afdfa22f23204a10a26dd12e6f799203d8fdb95c2" dependencies = [ "arrow", "async-trait", @@ -847,16 +858,18 @@ dependencies = [ [[package]] name = "datafusion-common" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13242fc58fd753787b0a538e5ae77d356cb9d0656fa85a591a33c5f106267f6" +checksum = "3d66104731b7476a8c86fbe7a6fd741e6329791166ac89a91fcd8336a560ddaf" dependencies = [ "ahash", "arrow", "arrow-ipc", "base64", + "chrono", "half", "hashbrown 0.14.5", + "hex", "indexmap 2.10.0", "libc", "log", @@ -871,9 +884,9 @@ dependencies = [ [[package]] name = "datafusion-common-runtime" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2239f964e95c3a5d6b4a8cde07e646de8995c1396a7fd62c6e784f5341db499" +checksum = "0e7527ecdfeae6961a8564d3b036507a67bd467fd36a9f10cf8ad7a99db1f1bc" dependencies = [ "futures", "log", @@ -882,15 +895,15 @@ dependencies = [ [[package]] name = "datafusion-datasource" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cf792579bc8bf07d1b2f68c2d5382f8a63679cce8fbebfd4ba95742b6e08864" +checksum = "40e5076be33d8eb9f4d99858e5f3477b36c07e61eee8eb93c4320428d9e1e344" dependencies = [ "arrow", "async-compression", "async-trait", "bytes", - "bzip2", + "bzip2 0.6.0", "chrono", "datafusion-common", "datafusion-common-runtime", @@ -918,9 +931,9 @@ dependencies = [ [[package]] name = "datafusion-datasource-csv" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc114f9a1415174f3e8d2719c371fc72092ef2195a7955404cfe6b2ba29a706" +checksum = "785518d0f2f136c19b9389a10762c01a5aeb5fcdebdb244297bb656b2862dc88" dependencies = [ "arrow", "async-trait", @@ -943,9 +956,9 @@ dependencies = [ [[package]] name = "datafusion-datasource-json" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d88dd5e215c420a52362b9988ecd4cefd71081b730663d4f7d886f706111fc75" +checksum = "71cb7c3bad0951bf5c52505d0e6d87e6c0098156d2a195924cbcdc82238d29ba" dependencies = [ "arrow", "async-trait", @@ -968,9 +981,9 @@ dependencies = [ [[package]] name = "datafusion-datasource-parquet" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33692acdd1fbe75280d14f4676fe43f39e9cb36296df56575aa2cac9a819e4cf" +checksum = "ea76ad2c5189c98a6b1d4bdf6c3b3caacc9701c417af6661597c946a201bc328" dependencies = [ "arrow", "async-trait", @@ -986,8 +999,10 @@ dependencies = [ "datafusion-physical-expr-common", "datafusion-physical-optimizer", "datafusion-physical-plan", + "datafusion-pruning", "datafusion-session", "futures", + "hex", "itertools", "log", "object_store", @@ -1023,15 +1038,15 @@ dependencies = [ [[package]] name = "datafusion-doc" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0e7b648387b0c1937b83cb328533c06c923799e73a9e3750b762667f32662c0" +checksum = "6bcc45e380db5c6033c3f39e765a3d752679f14315060a7f4030a60066a36946" [[package]] name = "datafusion-execution" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9609d83d52ff8315283c6dad3b97566e877d8f366fab4c3297742f33dcd636c7" +checksum = "8209805fdce3d5c6e1625f674d3e4ce93e995a56d3709a0bb8d4361062652596" dependencies = [ "arrow", "dashmap", @@ -1048,11 +1063,12 @@ dependencies = [ [[package]] name = "datafusion-expr" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e75230cd67f650ef0399eb00f54d4a073698f2c0262948298e5299fc7324da63" +checksum = "7879a845e72a00cacffacbdf5f40626049cb9584d2ba8aa0b9172f09833110ab" dependencies = [ "arrow", + "async-trait", "chrono", "datafusion-common", "datafusion-doc", @@ -1069,9 +1085,9 @@ dependencies = [ [[package]] name = "datafusion-expr-common" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70fafb3a045ed6c49cfca0cd090f62cf871ca6326cc3355cb0aaf1260fa760b6" +checksum = "6da7e47e70ef2c7678735c82c392bd74687004043f5fc8072ab8678dc6fa459d" dependencies = [ "arrow", "datafusion-common", @@ -1082,9 +1098,9 @@ dependencies = [ [[package]] name = "datafusion-functions" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf9a9cf655265861a20453b1e58357147eab59bdc90ce7f2f68f1f35104d3bb" +checksum = "5e7b92b04c5c3b1151f055251b36e272071f9088d9701826a533cb4f764af1c8" dependencies = [ "arrow", "arrow-buffer", @@ -1111,9 +1127,9 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f07e49733d847be0a05235e17b884d326a2fd402c97a89fe8bcf0bfba310005" +checksum = "3f16cb922b62e535a4d484961ac2c1c6d188dbe02e85e026c05f0fabbc8f814e" dependencies = [ "ahash", "arrow", @@ -1132,9 +1148,9 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4512607e10d72b0b0a1dc08f42cb5bd5284cb8348b7fea49dc83409493e32b1b" +checksum = "6f71bb59dc8b4dc985c911f2e0d8cf426c21f565b56dca4b852c244101a1a7a2" dependencies = [ "ahash", "arrow", @@ -1145,9 +1161,9 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab331806e34f5545e5f03396e4d5068077395b1665795d8f88c14ec4f1e0b7a" +checksum = "27eb3b98a2eb02a8af4ef19cc793cac21fc98d8720b987f15d7d25b8cc875f4d" dependencies = [ "arrow", "arrow-ord", @@ -1157,6 +1173,7 @@ dependencies = [ "datafusion-expr", "datafusion-functions", "datafusion-functions-aggregate", + "datafusion-functions-aggregate-common", "datafusion-macros", "datafusion-physical-expr-common", "itertools", @@ -1166,9 +1183,9 @@ dependencies = [ [[package]] name = "datafusion-functions-table" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4ac2c0be983a06950ef077e34e0174aa0cb9e346f3aeae459823158037ade37" +checksum = "350e0940fc3e2fa4645a4d323f9ebf9258b2d7fdad12013a471cae4ae5568683" dependencies = [ "arrow", "async-trait", @@ -1182,9 +1199,9 @@ dependencies = [ [[package]] name = "datafusion-functions-window" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36f3d92731de384c90906941d36dcadf6a86d4128409a9c5cd916662baed5f53" +checksum = "df03c6c62039578fd110b327c474846fdf3d9077a568f1e8706e585ed30cb98d" dependencies = [ "arrow", "datafusion-common", @@ -1200,9 +1217,9 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c679f8bf0971704ec8fd4249fcbb2eb49d6a12cc3e7a840ac047b4928d3541b5" +checksum = "083659a95914bf3ca568a72b085cb8654576fef1236b260dc2379cb8e5f922b2" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -1210,9 +1227,9 @@ dependencies = [ [[package]] name = "datafusion-macros" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2821de7cb0362d12e75a5196b636a59ea3584ec1e1cc7dc6f5e34b9e8389d251" +checksum = "4cabe1f32daa2fa54e6b20d14a13a9e85bef97c4161fe8a90d76b6d9693a5ac4" dependencies = [ "datafusion-expr", "quote", @@ -1221,14 +1238,15 @@ dependencies = [ [[package]] name = "datafusion-optimizer" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1594c7a97219ede334f25347ad8d57056621e7f4f35a0693c8da876e10dd6a53" +checksum = "6e12a97dcb0ccc569798be1289c744829cce5f18cc9b037054f8d7f93e1d57be" dependencies = [ "arrow", "chrono", "datafusion-common", "datafusion-expr", + "datafusion-expr-common", "datafusion-physical-expr", "indexmap 2.10.0", "itertools", @@ -1240,9 +1258,9 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc6da0f2412088d23f6b01929dedd687b5aee63b19b674eb73d00c3eb3c883b7" +checksum = "41312712b8659a82b4e9faa8d97a018e7f2ccbdedf2f7cb93ecf256e39858c86" dependencies = [ "ahash", "arrow", @@ -1262,9 +1280,9 @@ dependencies = [ [[package]] name = "datafusion-physical-expr-common" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb0dbd9213078a593c3fe28783beaa625a4e6c6a6c797856ee2ba234311fb96" +checksum = "be1649a60ea0319496d616ae3554e84dfcc262c201ab4439abcd83cca989b85b" dependencies = [ "ahash", "arrow", @@ -1276,9 +1294,9 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d140854b2db3ef8ac611caad12bfb2e1e1de827077429322a6188f18fc0026a" +checksum = "ea3f5b8ba6122426774aaaf11325740b8e5d3afaab9ab39dc63423adca554748" dependencies = [ "arrow", "datafusion-common", @@ -1288,6 +1306,7 @@ dependencies = [ "datafusion-physical-expr", "datafusion-physical-expr-common", "datafusion-physical-plan", + "datafusion-pruning", "itertools", "log", "recursive", @@ -1295,9 +1314,9 @@ dependencies = [ [[package]] name = "datafusion-physical-plan" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b46cbdf21a01206be76d467f325273b22c559c744a012ead5018dfe79597de08" +checksum = "6a595f296929d6cffa12b993ea53e9fe8215fada050d78626c5cf0e2f02b0205" dependencies = [ "ahash", "arrow", @@ -1325,9 +1344,9 @@ dependencies = [ [[package]] name = "datafusion-proto" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3fc7a2744332c2ef8804274c21f9fa664b4ca5889169250a6fd6b649ee5d16c" +checksum = "f4ab6f4fa0f3bbfbc0b4f89485bcd7cbed6cca0347e8d1eda50b66b779725b6e" dependencies = [ "arrow", "chrono", @@ -1341,20 +1360,38 @@ dependencies = [ [[package]] name = "datafusion-proto-common" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "800add86852f12e3d249867425de2224c1e9fb7adc2930460548868781fbeded" +checksum = "5ba94d76d85459ebbf7c29aa1b001234d551e840192c742a4237ec22de45a557" dependencies = [ "arrow", "datafusion-common", "prost", ] +[[package]] +name = "datafusion-pruning" +version = "49.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "391a457b9d23744c53eeb89edd1027424cba100581488d89800ed841182df905" +dependencies = [ + "arrow", + "arrow-schema", + "datafusion-common", + "datafusion-datasource", + "datafusion-expr-common", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "itertools", + "log", +] + [[package]] name = "datafusion-session" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a72733766ddb5b41534910926e8da5836622316f6283307fd9fb7e19811a59c" +checksum = "dd5f2fe790f43839c70fb9604c4f9b59ad290ef64e1d2f927925dd34a9245406" dependencies = [ "arrow", "async-trait", @@ -1376,9 +1413,9 @@ dependencies = [ [[package]] name = "datafusion-sql" -version = "48.0.1" +version = "49.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5162338cdec9cc7ea13a0e6015c361acad5ec1d88d83f7c86301f789473971f" +checksum = "2ebebb82fda37f62f06fe14339f4faa9f197a0320cc4d26ce2a5fd53a5ccd27c" dependencies = [ "arrow", "bigdecimal", @@ -1612,8 +1649,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -2089,6 +2128,12 @@ dependencies = [ "static_assertions", ] +[[package]] +name = "libbz2-rs-sys" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" + [[package]] name = "libc" version = "0.2.174" @@ -2378,6 +2423,7 @@ dependencies = [ "num-bigint", "object_store", "paste", + "ring", "seq-macro", "simdutf8", "snap", @@ -2667,6 +2713,20 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +[[package]] +name = "ring" +version = "0.17.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" +dependencies = [ + "cc", + "cfg-if", + "getrandom 0.2.16", + "libc", + "untrusted", + "windows-sys 0.52.0", +] + [[package]] name = "rustc-demangle" version = "0.1.25" @@ -3190,6 +3250,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +[[package]] +name = "untrusted" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" + [[package]] name = "url" version = "2.5.4" diff --git a/Cargo.toml b/Cargo.toml index 182f46e..7ed60ad 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,8 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] -datafusion = { version = "48.0.0" } -datafusion-proto = { version = "48.0.0" } +datafusion = { version = "49.0.0" } +datafusion-proto = { version = "49.0.0" } arrow-flight = "55.2.0" async-trait = "0.1.88" tokio = { version = "1.46.1", features = ["full"] } diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 6cc20ea..86343e3 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.83.0" +channel = "1.85.1" profile = "default" diff --git a/src/errors/datafusion_error.rs b/src/errors/datafusion_error.rs index 8bd7934..bb91155 100644 --- a/src/errors/datafusion_error.rs +++ b/src/errors/datafusion_error.rs @@ -184,13 +184,13 @@ impl DataFusionErrorProto { match inner { DataFusionErrorInnerProto::ArrowError(err) => { let (err, ctx) = err.to_arrow_error(); - DataFusionError::ArrowError(err, ctx) + DataFusionError::ArrowError(Box::new(err), ctx) } DataFusionErrorInnerProto::ParquetError(err) => { - DataFusionError::ParquetError(err.to_parquet_error()) + DataFusionError::ParquetError(Box::new(err.to_parquet_error())) } DataFusionErrorInnerProto::ObjectStoreError(err) => { - DataFusionError::ObjectStore(err.to_object_store_error()) + DataFusionError::ObjectStore(Box::new(err.to_object_store_error())) } DataFusionErrorInnerProto::IoError(err) => { let (err, _) = err.to_io_error(); @@ -200,7 +200,7 @@ impl DataFusionErrorProto { let backtrace = err.backtrace.clone(); let err = err.err.as_ref().map(|err| err.to_parser_error()); let err = err.unwrap_or(ParserError::ParserError("".to_string())); - DataFusionError::SQL(err, backtrace) + DataFusionError::SQL(Box::new(err), backtrace) } DataFusionErrorInnerProto::NotImplemented(msg) => { DataFusionError::NotImplemented(msg.clone()) @@ -212,7 +212,7 @@ impl DataFusionErrorProto { } DataFusionErrorInnerProto::Schema(err) => { let (err, backtrace) = err.to_schema_error(); - DataFusionError::SchemaError(err, Box::new(backtrace)) + DataFusionError::SchemaError(Box::new(err), Box::new(backtrace)) } DataFusionErrorInnerProto::Execution(msg) => DataFusionError::Execution(msg.clone()), // We cannot build JoinErrors ourselves, so instead we map it to internal. @@ -283,20 +283,22 @@ mod tests { fn test_datafusion_error_roundtrip() { let test_cases = vec![ DataFusionError::ArrowError( - ArrowError::ComputeError("compute".to_string()), + Box::new(ArrowError::ComputeError("compute".to_string())), Some("arrow context".to_string()), ), - DataFusionError::ParquetError(ParquetError::General("parquet error".to_string())), - DataFusionError::ObjectStore(ObjectStoreError::NotFound { + DataFusionError::ParquetError(Box::new(ParquetError::General( + "parquet error".to_string(), + ))), + DataFusionError::ObjectStore(Box::new(ObjectStoreError::NotFound { path: "test/path".to_string(), source: Box::new(std::io::Error::new(ErrorKind::NotFound, "not found")), - }), + })), DataFusionError::IoError(IoError::new( ErrorKind::PermissionDenied, "permission denied", )), DataFusionError::SQL( - ParserError::ParserError("sql parse error".to_string()), + Box::new(ParserError::ParserError("sql parse error".to_string())), Some("sql backtrace".to_string()), ), DataFusionError::NotImplemented("not implemented".to_string()), @@ -304,9 +306,9 @@ mod tests { DataFusionError::Plan("plan error".to_string()), DataFusionError::Configuration("config error".to_string()), DataFusionError::SchemaError( - SchemaError::AmbiguousReference { - field: datafusion::common::Column::new_unqualified("test_field"), - }, + Box::new(SchemaError::AmbiguousReference { + field: Box::new(datafusion::common::Column::new_unqualified("test_field")), + }), Box::new(None), ), DataFusionError::Execution("execution error".to_string()), @@ -377,7 +379,7 @@ mod tests { #[test] fn test_sql_error_with_backtrace() { let sql_error = DataFusionError::SQL( - ParserError::ParserError("syntax error".to_string()), + Box::new(ParserError::ParserError("syntax error".to_string())), Some("test backtrace".to_string()), ); diff --git a/src/errors/schema_error.rs b/src/errors/schema_error.rs index 925f97f..4ec2097 100644 --- a/src/errors/schema_error.rs +++ b/src/errors/schema_error.rs @@ -220,11 +220,12 @@ impl SchemaErrorProto { let err = match inner { SchemaErrorInnerProto::AmbiguousReference(err) => SchemaError::AmbiguousReference { - field: err - .field - .as_ref() - .map(|v| v.to_column()) - .unwrap_or(Column::new_unqualified("".to_string())), + field: Box::new( + err.field + .as_ref() + .map(|v| v.to_column()) + .unwrap_or(Column::new_unqualified("".to_string())), + ), }, SchemaErrorInnerProto::DuplicateQualifiedField(err) => { SchemaError::DuplicateQualifiedField { @@ -266,7 +267,7 @@ mod tests { fn test_schema_error_roundtrip() { let test_cases = vec![ SchemaError::AmbiguousReference { - field: Column::new_unqualified("test_field"), + field: Box::new(Column::new_unqualified("test_field")), }, SchemaError::DuplicateQualifiedField { qualifier: Box::new(TableReference::bare("table")), diff --git a/src/physical_optimizer.rs b/src/physical_optimizer.rs index 54c460e..9bdbf6e 100644 --- a/src/physical_optimizer.rs +++ b/src/physical_optimizer.rs @@ -223,7 +223,7 @@ mod tests { ┌───── Stage 3 Task: partitions: 0,unassigned] │partitions [out:1 <-- in:1 ] ProjectionExec: expr=[count(*)@0 as count(*), RainToday@1 as RainToday] │partitions [out:1 <-- in:4 ] SortPreservingMergeExec: [count(Int64(1))@2 ASC NULLS LAST] - │partitions [out:4 <-- in:4 ] SortExec: expr=[count(Int64(1))@2 ASC NULLS LAST], preserve_partitioning=[true] + │partitions [out:4 <-- in:4 ] SortExec: expr=[count(*)@0 ASC NULLS LAST], preserve_partitioning=[true] │partitions [out:4 <-- in:4 ] ProjectionExec: expr=[count(Int64(1))@1 as count(*), RainToday@0 as RainToday, count(Int64(1))@1 as count(Int64(1))] │partitions [out:4 <-- in:4 ] AggregateExec: mode=FinalPartitioned, gby=[RainToday@0 as RainToday], aggr=[count(Int64(1))] │partitions [out:4 <-- in:4 ] CoalesceBatchesExec: target_batch_size=8192 @@ -253,7 +253,7 @@ mod tests { ┌───── Stage 3 Task: partitions: 0,unassigned] │partitions [out:1 <-- in:1 ] ProjectionExec: expr=[count(*)@0 as count(*), RainToday@1 as RainToday] │partitions [out:1 <-- in:4 ] SortPreservingMergeExec: [count(Int64(1))@2 ASC NULLS LAST] - │partitions [out:4 <-- in:4 ] SortExec: expr=[count(Int64(1))@2 ASC NULLS LAST], preserve_partitioning=[true] + │partitions [out:4 <-- in:4 ] SortExec: expr=[count(*)@0 ASC NULLS LAST], preserve_partitioning=[true] │partitions [out:4 <-- in:4 ] ProjectionExec: expr=[count(Int64(1))@1 as count(*), RainToday@0 as RainToday, count(Int64(1))@1 as count(Int64(1))] │partitions [out:4 <-- in:4 ] AggregateExec: mode=FinalPartitioned, gby=[RainToday@0 as RainToday], aggr=[count(Int64(1))] │partitions [out:4 <-- in:4 ] CoalesceBatchesExec: target_batch_size=8192 diff --git a/src/plan/codec.rs b/src/plan/codec.rs index 1bc2cf4..793de1f 100644 --- a/src/plan/codec.rs +++ b/src/plan/codec.rs @@ -156,6 +156,7 @@ pub struct ArrowFlightReadExecProto { mod tests { use super::*; use datafusion::arrow::datatypes::{DataType, Field}; + use datafusion::physical_expr::LexOrdering; use datafusion::{ execution::registry::MemoryFunctionRegistry, physical_expr::{expressions::col, expressions::Column, Partitioning, PhysicalSortExpr}, @@ -257,7 +258,10 @@ mod tests { expr: col("d", &schema)?, options: Default::default(), }; - let sort = Arc::new(SortExec::new(vec![sort_expr].into(), flight.clone())); + let sort = Arc::new(SortExec::new( + LexOrdering::new(vec![sort_expr]).unwrap(), + flight.clone(), + )); let plan: Arc = Arc::new(PartitionIsolatorExec::new(sort.clone(), 2)); diff --git a/tests/custom_extension_codec.rs b/tests/custom_extension_codec.rs index 012f72c..90c8d74 100644 --- a/tests/custom_extension_codec.rs +++ b/tests/custom_extension_codec.rs @@ -136,7 +136,8 @@ mod tests { LexOrdering::new(vec![PhysicalSortExpr::new( col("numbers", &plan.schema())?, SortOptions::new(true, false), - )]), + )]) + .unwrap(), plan, )); @@ -155,7 +156,8 @@ mod tests { LexOrdering::new(vec![PhysicalSortExpr::new( col("numbers", &plan.schema())?, SortOptions::new(true, false), - )]), + )]) + .unwrap(), plan, )); }