From a159393f4ecb99ce1bef2b6ac99ed2cbb8d06ead Mon Sep 17 00:00:00 2001 From: Shehab Amin <11789402+shehabgamin@users.noreply.github.com> Date: Sat, 8 Feb 2025 03:18:14 -0800 Subject: [PATCH] Test DataFusion 45.0.0 with Sail (#365) --- Cargo.lock | 480 ++++++++++-------- Cargo.toml | 45 +- crates/sail-cli/src/spark/shell.rs | 8 +- crates/sail-execution/src/codec.rs | 17 +- .../src/extension/function/spark_array.rs | 11 +- .../src/extension/function/spark_concat.rs | 13 +- .../sail-plan/src/extension/source/rename.rs | 13 +- .../sail-python-udf/src/cereal/pyspark_udf.rs | 15 +- .../src/cereal/pyspark_udtf.rs | 17 +- crates/sail-python-udf/src/conversion.rs | 78 ++- crates/sail-python-udf/src/python/mod.rs | 12 +- crates/sail-python-udf/src/python/spark.rs | 34 +- crates/sail-python-udf/src/stream.rs | 6 +- crates/sail-python/src/spark/mod.rs | 2 +- crates/sail-spark-connect/src/error.rs | 44 +- .../tests/gold_data/function/agg.json | 16 +- .../tests/gold_data/function/map.json | 2 +- .../tests/gold_data/function/math.json | 6 +- .../tests/gold_data/function/window.json | 6 +- 19 files changed, 489 insertions(+), 336 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad2bbc2e..d128d533 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -216,9 +216,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf3437355979f1e93ba84ba108c38be5767713051f3c8ffbf07c094e2e61f9f" +checksum = "6422e12ac345a0678d7a17e316238e3a40547ae7f92052b77bd86d5e0239f3fc" dependencies = [ "arrow-arith", "arrow-array", @@ -238,24 +238,23 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31dce77d2985522288edae7206bffd5fc4996491841dda01a13a58415867e681" +checksum = "23cf34bb1f48c41d3475927bcc7be498665b8e80b379b88f62a840337f8b8248" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "chrono", - "half", "num", ] [[package]] name = "arrow-array" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d45fe6d3faed0435b7313e59a02583b14c6c6339fa7729e94c32a20af319a79" +checksum = "fb4a06d507f54b70a277be22a127c8ffe0cec6cd98c0ad8a48e77779bbda8223" dependencies = [ "ahash", "arrow-buffer", @@ -270,9 +269,9 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b02656a35cc103f28084bc80a0159668e0a680d919cef127bd7e0aaccb06ec1" +checksum = "d69d326d5ad1cb82dcefa9ede3fee8fdca98f9982756b16f9cb142f4aa6edc89" dependencies = [ "bytes", "half", @@ -281,9 +280,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c73c6233c5b5d635a56f6010e6eb1ab9e30e94707db21cea03da317f67d84cf3" +checksum = "626e65bd42636a84a238bed49d09c8777e3d825bf81f5087a70111c2831d9870" dependencies = [ "arrow-array", "arrow-buffer", @@ -302,28 +301,25 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec222848d70fea5a32af9c3602b08f5d740d5e2d33fbd76bf6fd88759b5b13a7" +checksum = "71c8f959f7a1389b1dbd883cdcd37c3ed12475329c111912f7f69dad8195d8c6" dependencies = [ "arrow-array", - "arrow-buffer", "arrow-cast", - "arrow-data", "arrow-schema", "chrono", "csv", "csv-core", "lazy_static", - "lexical-core", "regex", ] [[package]] name = "arrow-data" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7f2861ffa86f107b8ab577d86cff7c7a490243eabe961ba1e1af4f27542bb79" +checksum = "1858e7c7d01c44cf71c21a85534fd1a54501e8d60d1195d0d6fbcc00f4b10754" dependencies = [ "arrow-buffer", "arrow-schema", @@ -333,9 +329,9 @@ dependencies = [ [[package]] name = "arrow-flight" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab7635558f3f803b492eae56c03cde97ea5f85a1c768f94181cb7db69cd81be" +checksum = "a9b3aaba47ed4b6146563c8b79ad0f7aa283f794cde0c057c656291b81196746" dependencies = [ "arrow-array", "arrow-buffer", @@ -345,22 +341,19 @@ dependencies = [ "base64 0.22.1", "bytes", "futures", - "paste", "prost 0.13.4", "prost-types 0.13.4", - "tokio", "tonic", ] [[package]] name = "arrow-ipc" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0270dc511f11bb5fa98a25020ad51a99ca5b08d8a8dfbd17503bb9dba0388f0b" +checksum = "a6bb3f727f049884c7603f0364bc9315363f356b59e9f605ea76541847e06a1e" dependencies = [ "arrow-array", "arrow-buffer", - "arrow-cast", "arrow-data", "arrow-schema", "flatbuffers", @@ -369,9 +362,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0eff38eeb8a971ad3a4caf62c5d57f0cff8a48b64a55e3207c4fd696a9234aad" +checksum = "35de94f165ed8830aede72c35f238763794f0d49c69d30c44d49c9834267ff8c" dependencies = [ "arrow-array", "arrow-buffer", @@ -389,26 +382,23 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6f202a879d287099139ff0d121e7f55ae5e0efe634b8cf2106ebc27a8715dee" +checksum = "8aa06e5f267dc53efbacb933485c79b6fc1685d3ffbe870a16ce4e696fb429da" dependencies = [ "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "arrow-select", - "half", - "num", ] [[package]] name = "arrow-row" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f936954991c360ba762dff23f5dda16300774fafd722353d9683abd97630ae" +checksum = "66f1144bb456a2f9d82677bd3abcea019217e572fc8f07de5a7bac4b2c56eb2c" dependencies = [ - "ahash", "arrow-array", "arrow-buffer", "arrow-data", @@ -418,9 +408,9 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9579b9d8bce47aa41389fe344f2c6758279983b7c0ebb4013e283e3e91bb450e" +checksum = "105f01ec0090259e9a33a9263ec18ff223ab91a0ea9fbc18042f7e38005142f6" dependencies = [ "bitflags 2.8.0", "serde", @@ -428,9 +418,9 @@ dependencies = [ [[package]] name = "arrow-select" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7471ba126d0b0aaa24b50a36bc6c25e4e74869a1fd1a5553357027a0b1c8d1f1" +checksum = "f690752fdbd2dee278b5f1636fefad8f2f7134c85e20fd59c4199e15a39a6807" dependencies = [ "ahash", "arrow-array", @@ -442,9 +432,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72993b01cb62507b06f1fb49648d7286c8989ecfabdb7b77a750fcb54410731b" +checksum = "d0fff9cd745a7039b66c47ecaf5954460f9fa12eed628f65170117ea93e64ee0" dependencies = [ "arrow-array", "arrow-buffer", @@ -551,9 +541,9 @@ checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "aws-config" -version = "1.5.15" +version = "1.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc47e70fc35d054c8fcd296d47a61711f043ac80534a10b4f741904f81e73a90" +checksum = "50236e4d60fe8458de90a71c0922c761e41755adf091b1b03de1cef537179915" dependencies = [ "aws-credential-types", "aws-runtime", @@ -593,9 +583,9 @@ dependencies = [ [[package]] name = "aws-runtime" -version = "1.5.4" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee7643696e7fdd74c10f9eb42848a87fe469d35eae9c3323f80aa98f350baac" +checksum = "76dd04d39cc12844c0994f2c9c5a6f5184c22e9188ec1ff723de41910a21dcad" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -618,9 +608,9 @@ dependencies = [ [[package]] name = "aws-sdk-sso" -version = "1.56.0" +version = "1.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12e057fdcb8842de9b83592a70f5b4da0ee10bc0ad278247da1425a742a444d7" +checksum = "16ff718c9ee45cc1ebd4774a0e086bb80a6ab752b4902edf1c9f56b86ee1f770" dependencies = [ "aws-credential-types", "aws-runtime", @@ -640,9 +630,9 @@ dependencies = [ [[package]] name = "aws-sdk-ssooidc" -version = "1.57.1" +version = "1.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a120ade4a44691b3c5c2ff2fa61b14ed331fdc218397f61ab48d66593012ae2a" +checksum = "5183e088715cc135d8d396fdd3bc02f018f0da4c511f53cb8d795b6a31c55809" dependencies = [ "aws-credential-types", "aws-runtime", @@ -662,9 +652,9 @@ dependencies = [ [[package]] name = "aws-sdk-sts" -version = "1.57.0" +version = "1.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115fd4fb663817ed595a5ee4f1649d7aacd861d47462323cb37576ce89271b93" +checksum = "c9f944ef032717596639cea4a2118a3a457268ef51bbb5fde9637e54c465da00" dependencies = [ "aws-credential-types", "aws-runtime", @@ -685,9 +675,9 @@ dependencies = [ [[package]] name = "aws-sigv4" -version = "1.2.7" +version = "1.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "690118821e46967b3c4501d67d7d52dd75106a9c54cf36cefa1985cedbe94e05" +checksum = "0bc5bbd1e4a2648fd8c5982af03935972c24a2f9846b396de661d351ee3ce837" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -758,9 +748,9 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "1.7.7" +version = "1.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "865f7050bbc7107a6c98a397a9fcd9413690c27fa718446967cf03b2d3ac517e" +checksum = "d526a12d9ed61fadefda24abe2e682892ba288c2018bcb38b1b4c111d13f6d92" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -802,9 +792,9 @@ dependencies = [ [[package]] name = "aws-smithy-types" -version = "1.2.12" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28f6feb647fb5e0d5b50f0472c19a7db9462b74e2fec01bb0b44eedcc834e97" +checksum = "c7b8a53819e42f10d0821f56da995e1470b199686a1809168db6ca485665f042" dependencies = [ "base64-simd", "bytes", @@ -834,9 +824,9 @@ dependencies = [ [[package]] name = "aws-types" -version = "1.3.4" +version = "1.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0df5a18c4f951c645300d365fec53a61418bcf4650f604f85fe2a665bfaa0c2" +checksum = "dfbd0a668309ec1f66c0f6bda4840dd6d4796ae26d699ebc266d7cc95c6d040f" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -1063,9 +1053,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" [[package]] name = "bytes-utils" @@ -1119,9 +1109,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.10" +version = "1.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13208fcbb66eaeffe09b99fffbe1af420f00a7b35aa99ad683dfc1aa76145229" +checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" dependencies = [ "jobserver", "libc", @@ -1198,9 +1188,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.27" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "769b0145982b4b48713e01ec42d61614425f27b7058bda7180a3a41f30104796" +checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" dependencies = [ "clap_builder", "clap_derive", @@ -1220,9 +1210,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.24" +version = "4.5.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" +checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" dependencies = [ "heck", "proc-macro2", @@ -1244,13 +1234,12 @@ checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "comfy-table" -version = "7.1.3" +version = "7.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" +checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" dependencies = [ "crossterm", - "strum", - "strum_macros", + "unicode-segmentation", "unicode-width", ] @@ -1455,9 +1444,8 @@ dependencies = [ [[package]] name = "datafusion" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "014fc8c384ecacedaabb3bc8359c2a6c6e9d8f7bea65be3434eccacfc37f52d9" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "apache-avro", "arrow", @@ -1469,8 +1457,8 @@ dependencies = [ "bytes", "bzip2 0.5.0", "chrono", - "dashmap", "datafusion-catalog", + "datafusion-catalog-listing", "datafusion-common", "datafusion-common-runtime", "datafusion-execution", @@ -1489,7 +1477,7 @@ dependencies = [ "flate2", "futures", "glob", - "itertools 0.13.0", + "itertools 0.14.0", "log", "num-traits", "object_store", @@ -1497,7 +1485,7 @@ dependencies = [ "parquet", "rand 0.8.5", "regex", - "sqlparser 0.53.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sqlparser 0.54.0", "tempfile", "tokio", "tokio-util", @@ -1509,31 +1497,59 @@ dependencies = [ [[package]] name = "datafusion-catalog" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee60d33e210ef96070377ae667ece7caa0e959c8387496773d4a1a72f1a5012e" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ - "arrow-schema", + "arrow", "async-trait", + "dashmap", "datafusion-common", "datafusion-execution", "datafusion-expr", "datafusion-physical-plan", + "datafusion-sql", + "futures", + "itertools 0.14.0", + "log", "parking_lot", + "sqlparser 0.54.0", +] + +[[package]] +name = "datafusion-catalog-listing" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" +dependencies = [ + "arrow", + "arrow-schema", + "chrono", + "datafusion-catalog", + "datafusion-common", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "futures", + "glob", + "itertools 0.14.0", + "log", + "object_store", + "url", ] [[package]] name = "datafusion-common" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b42b7d720fe21ed9cca2ebb635f3f13a12cfab786b41e0fba184fb2e620525b" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "ahash", "apache-avro", "arrow", "arrow-array", - "arrow-buffer", + "arrow-ipc", "arrow-schema", + "base64 0.22.1", "half", "hashbrown 0.14.5", "indexmap 2.7.1", @@ -1544,16 +1560,15 @@ dependencies = [ "paste", "pyo3", "recursive", - "sqlparser 0.53.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sqlparser 0.54.0", "tokio", "web-time", ] [[package]] name = "datafusion-common-runtime" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72fbf14d4079f7ce5306393084fe5057dddfdc2113577e0049310afa12e94281" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "log", "tokio", @@ -1561,15 +1576,13 @@ dependencies = [ [[package]] name = "datafusion-doc" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c278dbd64860ed0bb5240fc1f4cb6aeea437153910aea69bcf7d5a8d6d0454f3" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" [[package]] name = "datafusion-execution" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e22cb02af47e756468b3cbfee7a83e3d4f2278d452deb4b033ba933c75169486" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "dashmap", @@ -1586,9 +1599,8 @@ dependencies = [ [[package]] name = "datafusion-expr" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62298eadb1d15b525df1315e61a71519ffc563d41d5c3b2a30fda2d70f77b93c" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "chrono", @@ -1602,25 +1614,24 @@ dependencies = [ "paste", "recursive", "serde_json", - "sqlparser 0.53.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sqlparser 0.54.0", ] [[package]] name = "datafusion-expr-common" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dda7f73c5fc349251cd3dcb05773c5bf55d2505a698ef9d38dfc712161ea2f55" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "datafusion-common", - "itertools 0.13.0", + "itertools 0.14.0", + "paste", ] [[package]] name = "datafusion-functions" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd197f3b2975424d3a4898ea46651be855a46721a56727515dbd5c9e2fb597da" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "arrow-buffer", @@ -1636,7 +1647,7 @@ dependencies = [ "datafusion-macros", "hashbrown 0.14.5", "hex", - "itertools 0.13.0", + "itertools 0.14.0", "log", "md-5", "rand 0.8.5", @@ -1648,9 +1659,8 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aabbe48fba18f9981b134124381bee9e46f93518b8ad2f9721ee296cef5affb9" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "ahash", "arrow", @@ -1670,9 +1680,8 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7a3fefed9c8c11268d446d924baca8cabf52fe32f73fdaa20854bac6473590c" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "ahash", "arrow", @@ -1683,8 +1692,8 @@ dependencies = [ [[package]] name = "datafusion-functions-json" -version = "0.44.0" -source = "git+https://github.com/lakehq/datafusion-functions-json.git?rev=7bcca26#7bcca26c4451e9bdb5873307101a04c385effc01" +version = "0.44.2" +source = "git+https://github.com/lakehq/datafusion-functions-json.git?rev=453183d#453183d85793113ecd6e145953a0d913c0179e28" dependencies = [ "datafusion", "jiter", @@ -1694,31 +1703,30 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6360f27464fab857bec698af39b2ae331dc07c8bf008fb4de387a19cdc6815a5" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "arrow-array", - "arrow-buffer", "arrow-ord", "arrow-schema", "datafusion-common", + "datafusion-doc", "datafusion-execution", "datafusion-expr", "datafusion-functions", "datafusion-functions-aggregate", + "datafusion-macros", "datafusion-physical-expr-common", - "itertools 0.13.0", + "itertools 0.14.0", "log", "paste", ] [[package]] name = "datafusion-functions-table" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c35c070eb705c12795dab399c3809f4dfbc290678c624d3989490ca9b8449c1" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "async-trait", @@ -1732,9 +1740,8 @@ dependencies = [ [[package]] name = "datafusion-functions-window" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52229bca26b590b140900752226c829f15fc1a99840e1ca3ce1a9534690b82a8" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "datafusion-common", "datafusion-doc", @@ -1749,9 +1756,8 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "367befc303b64a668a10ae6988a064a9289e1999e71a7f8e526b6e14d6bdd9d6" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -1759,19 +1765,18 @@ dependencies = [ [[package]] name = "datafusion-macros" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5de3c8f386ea991696553afe241a326ecbc3c98a12c562867e4be754d3a060c" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ + "datafusion-expr", "quote", "syn", ] [[package]] name = "datafusion-optimizer" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b520413906f755910422b016fb73884ae6e9e1b376de4f9584b6c0e031da75" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "chrono", @@ -1779,7 +1784,7 @@ dependencies = [ "datafusion-expr", "datafusion-physical-expr", "indexmap 2.7.1", - "itertools 0.13.0", + "itertools 0.14.0", "log", "recursive", "regex", @@ -1788,14 +1793,12 @@ dependencies = [ [[package]] name = "datafusion-physical-expr" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acd6ddc378f6ad19af95ccd6790dec8f8e1264bc4c70e99ddc1830c1a1c78ccd" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "ahash", "arrow", "arrow-array", - "arrow-buffer", "arrow-schema", "datafusion-common", "datafusion-expr", @@ -1805,53 +1808,54 @@ dependencies = [ "half", "hashbrown 0.14.5", "indexmap 2.7.1", - "itertools 0.13.0", + "itertools 0.14.0", "log", "paste", - "petgraph", + "petgraph 0.7.1", ] [[package]] name = "datafusion-physical-expr-common" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e6c05458eccd74b4c77ed6a1fe63d52434240711de7f6960034794dad1caf5" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "ahash", "arrow", "datafusion-common", "datafusion-expr-common", "hashbrown 0.14.5", - "itertools 0.13.0", + "itertools 0.14.0", ] [[package]] name = "datafusion-physical-optimizer" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dc3a82190f49c37d377f31317e07ab5d7588b837adadba8ac367baad5dc2351" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", + "arrow-schema", "datafusion-common", "datafusion-execution", + "datafusion-expr", "datafusion-expr-common", "datafusion-physical-expr", + "datafusion-physical-expr-common", "datafusion-physical-plan", - "itertools 0.13.0", + "futures", + "itertools 0.14.0", "log", "recursive", + "url", ] [[package]] name = "datafusion-physical-plan" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a6608bc9844b4ddb5ed4e687d173e6c88700b1d0482f43894617d18a1fe75da" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "ahash", "arrow", "arrow-array", - "arrow-buffer", "arrow-ord", "arrow-schema", "async-trait", @@ -1867,7 +1871,7 @@ dependencies = [ "half", "hashbrown 0.14.5", "indexmap 2.7.1", - "itertools 0.13.0", + "itertools 0.14.0", "log", "parking_lot", "pin-project-lite", @@ -1876,9 +1880,8 @@ dependencies = [ [[package]] name = "datafusion-proto" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e23b0998195e495bfa7b37cdceb317129a6c40522219f6872d2e0c9ae9f4fcb" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "chrono", @@ -1892,9 +1895,8 @@ dependencies = [ [[package]] name = "datafusion-proto-common" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfc59992a29eed2d2c1dd779deac99083b217774ebcf90ee121840607a4d866f" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "datafusion-common", @@ -1903,9 +1905,8 @@ dependencies = [ [[package]] name = "datafusion-sql" -version = "44.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a884061c79b33d0c8e84a6f4f4be8bdc12c0f53f5af28ddf5d6d95ac0b15fdc" +version = "45.0.0" +source = "git+https://github.com/apache/datafusion.git?rev=a9fb58c#a9fb58ca3aac8936d058b79fab4dc9ae4bd7edc2" dependencies = [ "arrow", "arrow-array", @@ -1917,7 +1918,7 @@ dependencies = [ "log", "recursive", "regex", - "sqlparser 0.53.0 (registry+https://github.com/rust-lang/crates.io-index)", + "sqlparser 0.54.0", ] [[package]] @@ -2093,6 +2094,12 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" +[[package]] +name = "fixedbitset" +version = "0.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" + [[package]] name = "flatbuffers" version = "24.12.23" @@ -2683,7 +2690,7 @@ dependencies = [ "hyper 1.6.0", "hyper-util", "log", - "rustls 0.23.21", + "rustls 0.23.22", "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", @@ -2973,6 +2980,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.14" @@ -2981,9 +2997,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jiter" -version = "0.7.1" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07f69a121b68af57bc10f151f3f67444a64d1d3a0eb48b042801ea917a38dd25" +checksum = "8243cf2d026264056bfacf305e54f5bee8866fd46b4c1873adcaebf614a0d306" dependencies = [ "ahash", "bitvec", @@ -3074,7 +3090,7 @@ dependencies = [ "k8s-openapi", "kube-core", "pem", - "rustls 0.23.21", + "rustls 0.23.22", "rustls-pemfile 2.2.0", "secrecy", "serde", @@ -3556,9 +3572,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "opaque-debug" @@ -3675,9 +3691,9 @@ dependencies = [ [[package]] name = "parquet" -version = "53.4.0" +version = "54.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8957c0c95a6a1804f3e51a18f69df29be53856a8c5768cc9b6d00fcafcd2917c" +checksum = "8a01a0efa30bbd601ae85b375c728efdb211ade54390281628a7b16708beb235" dependencies = [ "ahash", "arrow-array", @@ -3701,6 +3717,7 @@ dependencies = [ "object_store", "paste", "seq-macro", + "simdutf8", "snap", "thrift", "tokio", @@ -3851,7 +3868,17 @@ version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ - "fixedbitset", + "fixedbitset 0.4.2", + "indexmap 2.7.1", +] + +[[package]] +name = "petgraph" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" +dependencies = [ + "fixedbitset 0.5.7", "indexmap 2.7.1", ] @@ -3909,18 +3936,18 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" +checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" +checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" dependencies = [ "proc-macro2", "quote", @@ -4072,7 +4099,7 @@ dependencies = [ "log", "multimap", "once_cell", - "petgraph", + "petgraph 0.6.5", "prettyplease", "prost 0.13.4", "prost-types 0.13.4", @@ -4136,9 +4163,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.22.6" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884" +checksum = "57fe09249128b3173d092de9523eaa75136bf7ba85e0d69eca241c7939c933cc" dependencies = [ "cfg-if", "indoc", @@ -4156,9 +4183,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.22.6" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" +checksum = "1cd3927b5a78757a0d71aa9dff669f903b1eb64b54142a9bd9f757f8fde65fd7" dependencies = [ "once_cell", "target-lexicon", @@ -4166,9 +4193,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.22.6" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636" +checksum = "dab6bb2102bd8f991e7749f130a70d05dd557613e39ed2deeee8e9ca0c4d548d" dependencies = [ "libc", "pyo3-build-config", @@ -4176,9 +4203,9 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.22.6" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453" +checksum = "91871864b353fd5ffcb3f91f2f703a22a9797c91b9ab497b1acac7b07ae509c7" dependencies = [ "proc-macro2", "pyo3-macros-backend", @@ -4188,9 +4215,9 @@ dependencies = [ [[package]] name = "pyo3-macros-backend" -version = "0.22.6" +version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe" +checksum = "43abc3b80bc20f3facd86cd3c60beed58c3e2aa26213f3cda368de39c60a27e4" dependencies = [ "heck", "proc-macro2", @@ -4226,7 +4253,7 @@ dependencies = [ "quinn-proto", "quinn-udp", "rustc-hash", - "rustls 0.23.21", + "rustls 0.23.22", "socket2", "thiserror 2.0.11", "tokio", @@ -4244,7 +4271,7 @@ dependencies = [ "rand 0.8.5", "ring", "rustc-hash", - "rustls 0.23.21", + "rustls 0.23.22", "rustls-pki-types", "slab", "thiserror 2.0.11", @@ -4301,7 +4328,7 @@ checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.0", - "zerocopy 0.8.14", + "zerocopy 0.8.17", ] [[package]] @@ -4340,7 +4367,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" dependencies = [ "getrandom 0.3.1", - "zerocopy 0.8.14", + "zerocopy 0.8.17", ] [[package]] @@ -4442,7 +4469,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "quinn", - "rustls 0.23.21", + "rustls 0.23.22", "rustls-native-certs 0.8.1", "rustls-pemfile 2.2.0", "rustls-pki-types", @@ -4507,9 +4534,9 @@ checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "2.1.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7fb8039b3032c191086b10f11f319a6e99e1e82889c5cc6046f515c9db1d497" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -4547,9 +4574,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.21" +version = "0.23.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f287924602bf649d949c63dc8ac8b235fa5387d394020705b80c4eb597ce5b8" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" dependencies = [ "log", "once_cell", @@ -4694,7 +4721,7 @@ dependencies = [ "ryu", "serde", "serde_json", - "sqlparser 0.53.0 (git+https://github.com/lakehq/sqlparser-rs.git?rev=9ade53d)", + "sqlparser 0.53.0", "thiserror 2.0.11", ] @@ -4860,7 +4887,7 @@ dependencies = [ "serde", "serde_arrow", "serde_json", - "sqlparser 0.53.0 (git+https://github.com/lakehq/sqlparser-rs.git?rev=9ade53d)", + "sqlparser 0.53.0", "syn", "thiserror 2.0.11", "tokio", @@ -4882,7 +4909,7 @@ dependencies = [ "sail-common", "serde", "serde_json", - "sqlparser 0.53.0 (git+https://github.com/lakehq/sqlparser-rs.git?rev=9ade53d)", + "sqlparser 0.53.0", "thiserror 2.0.11", ] @@ -5155,6 +5182,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "siphasher" version = "1.0.1" @@ -5222,22 +5255,23 @@ checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] name = "sqlparser" version = "0.53.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a528114c392209b3264855ad491fcce534b94a38771b0a0b97a79379275ce8" +source = "git+https://github.com/lakehq/sqlparser-rs.git?rev=9ade53d#9ade53d1bdf2fd56f3c5f93ba35db65cd3b1f709" dependencies = [ "log", - "sqlparser_derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", + "recursive", + "serde", + "sqlparser_derive 0.3.0 (git+https://github.com/lakehq/sqlparser-rs.git?rev=9ade53d)", ] [[package]] name = "sqlparser" -version = "0.53.0" -source = "git+https://github.com/lakehq/sqlparser-rs.git?rev=9ade53d#9ade53d1bdf2fd56f3c5f93ba35db65cd3b1f709" +version = "0.54.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66e3b7374ad4a6af849b08b3e7a6eda0edbd82f0fd59b57e22671bf16979899" dependencies = [ "log", "recursive", - "serde", - "sqlparser_derive 0.3.0 (git+https://github.com/lakehq/sqlparser-rs.git?rev=9ade53d)", + "sqlparser_derive 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -5534,7 +5568,7 @@ version = "0.26.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" dependencies = [ - "rustls 0.23.21", + "rustls 0.23.22", "tokio", ] @@ -5564,9 +5598,9 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "cd87a5cdd6ffab733b2f74bc4fd7ee5fff6634124999ac278c35fc78c6120148" dependencies = [ "serde", "serde_spanned", @@ -5585,9 +5619,9 @@ dependencies = [ [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" dependencies = [ "indexmap 2.7.1", "serde", @@ -5958,12 +5992,14 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.12.1" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3758f5e68192bb96cc8f9b7e2c2cfdabb435499a28499a42f8f984092adad4b" +checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.3.1", + "js-sys", "serde", + "wasm-bindgen", ] [[package]] @@ -6353,9 +6389,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.25" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad699df48212c6cc6eb4435f35500ac6fd3b9913324f938aea302022ce19d310" +checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" dependencies = [ "memchr", ] @@ -6457,11 +6493,11 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.14" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a367f292d93d4eab890745e75a778da40909cab4d6ff8173693812f79c4a2468" +checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" dependencies = [ - "zerocopy-derive 0.8.14", + "zerocopy-derive 0.8.17", ] [[package]] @@ -6488,9 +6524,9 @@ dependencies = [ [[package]] name = "zerocopy-derive" -version = "0.8.14" +version = "0.8.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3931cb58c62c13adec22e38686b559c86a30565e16ad6e8510a337cedc611e1" +checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" dependencies = [ "proc-macro2", "quote", diff --git a/Cargo.toml b/Cargo.toml index 8040cb57..9eab303f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -50,7 +50,7 @@ ryu = "1.0.18" either = "1.12.0" num-bigint = "0.4.6" num-traits = "0.2.19" -serde_arrow = { version = "0.12.3", features = ["arrow-53"] } +serde_arrow = { version = "0.12.3", features = ["arrow-54"] } mimalloc = { version = "0.1.43", default-features = false } rand = "0.8.5" rand_chacha = "0.3.1" @@ -86,16 +86,16 @@ chumsky = { version = "=1.0.0-alpha.7", default-features = false, features = ["p # The versions of the following dependencies are managed manually. ###### -datafusion = { version = "44.0.0", features = ["serde", "pyarrow", "avro"] } -datafusion-common = { version = "44.0.0", features = ["object_store", "pyarrow", "avro"] } -datafusion-expr = { version = "44.0.0" } -datafusion-expr-common = { version = "44.0.0" } -datafusion-proto = { version = "44.0.0" } -datafusion-functions-nested = { version = "44.0.0" } -datafusion-functions-json = { git = "https://github.com/lakehq/datafusion-functions-json.git", rev = "7bcca26" } +datafusion = { version = "45.0.0", features = ["serde", "pyarrow", "avro"] } +datafusion-common = { version = "45.0.0", features = ["object_store", "pyarrow", "avro"] } +datafusion-expr = { version = "45.0.0" } +datafusion-expr-common = { version = "45.0.0" } +datafusion-proto = { version = "45.0.0" } +datafusion-functions-nested = { version = "45.0.0" } +datafusion-functions-json = { git = "https://github.com/lakehq/datafusion-functions-json.git", rev = "453183d" } # auto-initialize: Changes [`Python::with_gil`] to automatically initialize the Python interpreter if needed. -pyo3 = { version = "0.22.0", features = ["auto-initialize", "serde"] } -arrow-flight = { version = "53.3.0" } +pyo3 = { version = "0.23.4", features = ["auto-initialize", "serde"] } +arrow-flight = { version = "54.1.0" } # The `object_store` version must match the one used in DataFusion. object_store = { version = "0.11.0", features = ["aws", "gcp", "azure", "http"] } # We use a patched latest version of sqlparser. The version may be different from the one used in DataFusion. @@ -109,6 +109,31 @@ sqlparser = { git = "https://github.com/lakehq/sqlparser-rs.git", rev = "9ade53d [patch.crates-io] # Override dependencies to use our forked versions. # You can use `path = "..."` to temporarily point to your local copy of the crates to speed up local development. +datafusion = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-catalog = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-common = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-common-runtime = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-doc = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-execution = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-expr = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-expr-common = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +#datafusion-ffi = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-functions = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-functions-aggregate = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-functions-aggregate-common = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-functions-nested = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-functions-table = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-functions-window = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-functions-window-common = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-macros = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-optimizer = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-physical-expr = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-physical-expr-common = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-physical-optimizer = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-physical-plan = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-proto = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-proto-common = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } +datafusion-sql = { git = "https://github.com/apache/datafusion.git", rev = "a9fb58c" } [profile.release] # https://doc.rust-lang.org/cargo/reference/profiles.html#release diff --git a/crates/sail-cli/src/spark/shell.rs b/crates/sail-cli/src/spark/shell.rs index 841feec2..ad8e17c3 100644 --- a/crates/sail-cli/src/spark/shell.rs +++ b/crates/sail-cli/src/spark/shell.rs @@ -1,3 +1,4 @@ +use std::ffi::CString; use std::net::Ipv4Addr; use pyo3::prelude::PyAnyMethods; @@ -32,7 +33,12 @@ pub fn run_pyspark_shell() -> Result<(), Box> { })?; runtime.spawn(server_task); Python::with_gil(|py| -> PyResult<_> { - let shell = PyModule::from_code_bound(py, SHELL_SOURCE_CODE, "shell.py", "shell")?; + let shell = PyModule::from_code( + py, + CString::new(SHELL_SOURCE_CODE)?.as_c_str(), + CString::new("shell.py")?.as_c_str(), + CString::new("shell")?.as_c_str(), + )?; shell .getattr("run_pyspark_shell")? .call((server_port,), None)?; diff --git a/crates/sail-execution/src/codec.rs b/crates/sail-execution/src/codec.rs index 9e159505..db137bfd 100644 --- a/crates/sail-execution/src/codec.rs +++ b/crates/sail-execution/src/codec.rs @@ -6,16 +6,20 @@ use datafusion::arrow::datatypes::{DataType, Schema, TimeUnit}; use datafusion::common::parsers::CompressionTypeVariant; use datafusion::common::{plan_datafusion_err, plan_err, JoinSide, Result}; use datafusion::datasource::file_format::file_compression_type::FileCompressionType; +#[allow(deprecated)] use datafusion::datasource::physical_plan::{ArrowExec, NdJsonExec}; +use datafusion::datasource::physical_plan::{ArrowSource, JsonSource}; use datafusion::execution::FunctionRegistry; use datafusion::functions::string::overlay::OverlayFunc; use datafusion::logical_expr::{AggregateUDF, AggregateUDFImpl, ScalarUDF, ScalarUDFImpl}; use datafusion::physical_expr::LexOrdering; use datafusion::physical_plan::joins::utils::{ColumnIndex, JoinFilter}; use datafusion::physical_plan::joins::SortMergeJoinExec; +#[allow(deprecated)] use datafusion::physical_plan::memory::MemoryExec; use datafusion::physical_plan::recursive_query::RecursiveQueryExec; use datafusion::physical_plan::sorts::partial_sort::PartialSortExec; +#[allow(deprecated)] use datafusion::physical_plan::values::ValuesExec; use datafusion::physical_plan::work_table::WorkTableExec; use datafusion::physical_plan::{ExecutionPlan, Partitioning}; @@ -226,6 +230,7 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec { let sort_information = self.try_decode_lex_orderings(&sort_information, registry, &schema)?; Ok(Arc::new( + #[allow(deprecated)] MemoryExec::try_new(&partitions, Arc::new(schema), projection)? .with_show_sizes(show_sizes) .try_with_sort_information(sort_information)?, @@ -234,6 +239,7 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec { NodeKind::Values(gen::ValuesExecNode { data, schema }) => { let schema = self.try_decode_schema(&schema)?; let data = read_record_batches(&data)?; + #[allow(deprecated)] Ok(Arc::new(ValuesExec::try_new_from_batches( Arc::new(schema), data, @@ -247,9 +253,11 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec { &self.try_decode_message(&base_config)?, registry, self, + Arc::new(JsonSource::new()), // TODO: Look into configuring this if needed )?; let file_compression_type: FileCompressionType = self.try_decode_file_compression_type(file_compression_type)?; + #[allow(deprecated)] Ok(Arc::new(NdJsonExec::new( base_config, file_compression_type, @@ -260,7 +268,9 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec { &self.try_decode_message(&base_config)?, registry, self, + Arc::new(ArrowSource::default()), // TODO: Look into configuring this if needed )?; + #[allow(deprecated)] Ok(Arc::new(ArrowExec::new(base_config))) } NodeKind::WorkTable(gen::WorkTableExecNode { name, schema }) => { @@ -334,7 +344,11 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec { }) }) .collect::>>()?; - Some(JoinFilter::new(expression, column_indices, schema)) + Some(JoinFilter::new( + expression, + column_indices, + Arc::new(schema), + )) } else { None }; @@ -364,6 +378,7 @@ impl PhysicalExtensionCodec for RemoteExecutionCodec { } fn try_encode(&self, node: Arc, buf: &mut Vec) -> Result<()> { + #[allow(deprecated)] let node_kind = if let Some(range) = node.as_any().downcast_ref::() { let schema = self.try_encode_schema(range.schema().as_ref())?; NodeKind::Range(gen::RangeExecNode { diff --git a/crates/sail-plan/src/extension/function/spark_array.rs b/crates/sail-plan/src/extension/function/spark_array.rs index f6043b3a..958d62ea 100644 --- a/crates/sail-plan/src/extension/function/spark_array.rs +++ b/crates/sail-plan/src/extension/function/spark_array.rs @@ -9,9 +9,11 @@ use datafusion::arrow::array::{ use datafusion::arrow::buffer::OffsetBuffer; use datafusion::arrow::datatypes::{DataType, Field}; use datafusion_common::utils::SingleRowListArrayBuilder; -use datafusion_common::{internal_err, plan_err, ExprSchema, Result}; +use datafusion_common::{internal_err, plan_err, Result}; use datafusion_expr::type_coercion::binary::comparison_coercion; -use datafusion_expr::{ColumnarValue, Expr, ScalarUDFImpl, Signature, TypeSignature, Volatility}; +use datafusion_expr::{ + ColumnarValue, ReturnInfo, ReturnTypeArgs, ScalarUDFImpl, Signature, TypeSignature, Volatility, +}; use crate::extension::function::functions_nested_utils::make_scalar_function; @@ -75,8 +77,9 @@ impl ScalarUDFImpl for SparkArray { } } - fn is_nullable(&self, _args: &[Expr], _schema: &dyn ExprSchema) -> bool { - false + fn return_type_from_args(&self, args: ReturnTypeArgs) -> Result { + let return_type = self.return_type(args.arg_types)?; + Ok(ReturnInfo::new_non_nullable(return_type)) } fn invoke(&self, args: &[ColumnarValue]) -> Result { diff --git a/crates/sail-plan/src/extension/function/spark_concat.rs b/crates/sail-plan/src/extension/function/spark_concat.rs index d49a6ce0..5fe4cab4 100644 --- a/crates/sail-plan/src/extension/function/spark_concat.rs +++ b/crates/sail-plan/src/extension/function/spark_concat.rs @@ -5,7 +5,6 @@ use datafusion::arrow::datatypes::DataType; use datafusion::functions::string::concat::ConcatFunc; use datafusion_common::utils::list_ndims; use datafusion_common::{plan_err, ExprSchema, Result}; -use datafusion_expr::type_coercion::binary::get_wider_type; use datafusion_expr::{ColumnarValue, Expr, ExprSchemable, ScalarUDFImpl, Signature, Volatility}; use datafusion_functions_nested::concat::ArrayConcat; @@ -41,7 +40,7 @@ impl ScalarUDFImpl for SparkConcat { &self.signature } - /// [Credit]: + /// [Credit]: fn return_type(&self, arg_types: &[DataType]) -> Result { if arg_types .iter() @@ -56,7 +55,15 @@ impl ScalarUDFImpl for SparkConcat { let dims = list_ndims(arg_type); expr_type = match max_dims.cmp(&dims) { Ordering::Greater => expr_type, - Ordering::Equal => get_wider_type(&expr_type, arg_type)?, + Ordering::Equal => { + if expr_type == DataType::Null { + arg_type.clone() + } else if !expr_type.equals_datatype(arg_type) { + return plan_err!("It is not possible to concatenate arrays of different types. Expected: {expr_type}, got: {arg_type}"); + } else { + expr_type + } + } Ordering::Less => { max_dims = dims; arg_type.clone() diff --git a/crates/sail-plan/src/extension/source/rename.rs b/crates/sail-plan/src/extension/source/rename.rs index c75bf71d..81127ca1 100644 --- a/crates/sail-plan/src/extension/source/rename.rs +++ b/crates/sail-plan/src/extension/source/rename.rs @@ -49,13 +49,22 @@ impl RenameTableProvider { fn to_inner_expr(&self, expr: &Expr) -> Result { let rewrite = |e: Expr| -> Result> { - if let Expr::Column(Column { name, relation }) = e { + if let Expr::Column(Column { + name, + relation, + spans, + }) = e + { let name = self .names .get(&name) .ok_or_else(|| plan_datafusion_err!("column {name} not found"))? .clone(); - Ok(Transformed::yes(Expr::Column(Column { name, relation }))) + Ok(Transformed::yes(Expr::Column(Column { + name, + relation, + spans, + }))) } else { Ok(Transformed::no(e)) } diff --git a/crates/sail-python-udf/src/cereal/pyspark_udf.rs b/crates/sail-python-udf/src/cereal/pyspark_udf.rs index 074249d6..ef03839d 100644 --- a/crates/sail-python-udf/src/cereal/pyspark_udf.rs +++ b/crates/sail-python-udf/src/cereal/pyspark_udf.rs @@ -1,7 +1,7 @@ use pyo3::exceptions::PyValueError; use pyo3::prelude::PyAnyMethods; use pyo3::types::PyModule; -use pyo3::{intern, PyObject, Python, ToPyObject}; +use pyo3::{intern, Bound, IntoPyObject, PyAny, Python}; use sail_common::spec; use crate::cereal::{check_python_udf_version, should_write_config}; @@ -11,7 +11,7 @@ use crate::error::{PyUdfError, PyUdfResult}; pub struct PySparkUdfPayload; impl PySparkUdfPayload { - pub fn load(py: Python, data: &[u8]) -> PyUdfResult { + pub fn load<'py>(py: Python<'py>, data: &[u8]) -> PyUdfResult> { let (eval_type, v) = data .split_at_checked(size_of::()) .ok_or_else(|| PyUdfError::invalid("missing eval_type"))?; @@ -19,16 +19,19 @@ impl PySparkUdfPayload { .try_into() .map_err(|e| PyValueError::new_err(format!("eval_type bytes: {e}")))?; let eval_type = i32::from_be_bytes(eval_type); - let infile = PyModule::import_bound(py, intern!(py, "io"))? + let infile = PyModule::import(py, intern!(py, "io"))? .getattr(intern!(py, "BytesIO"))? .call1((v,))?; - let serializer = PyModule::import_bound(py, intern!(py, "pyspark.serializers"))? + let serializer = PyModule::import(py, intern!(py, "pyspark.serializers"))? .getattr(intern!(py, "CPickleSerializer"))? .call0()?; - let tuple = PyModule::import_bound(py, intern!(py, "pyspark.worker"))? + let tuple = PyModule::import(py, intern!(py, "pyspark.worker"))? .getattr(intern!(py, "read_udfs"))? .call1((serializer, infile, eval_type))?; - Ok(tuple.get_item(0)?.to_object(py)) + tuple + .get_item(0)? + .into_pyobject(py) + .map_err(|e| PyUdfError::PythonError(e.into())) } pub fn build( diff --git a/crates/sail-python-udf/src/cereal/pyspark_udtf.rs b/crates/sail-python-udf/src/cereal/pyspark_udtf.rs index 8e7ec9fe..c3fea1c2 100644 --- a/crates/sail-python-udf/src/cereal/pyspark_udtf.rs +++ b/crates/sail-python-udf/src/cereal/pyspark_udtf.rs @@ -3,7 +3,7 @@ use datafusion::arrow::pyarrow::ToPyArrow; use pyo3::exceptions::PyValueError; use pyo3::prelude::PyAnyMethods; use pyo3::types::PyModule; -use pyo3::{intern, PyObject, PyResult, Python, ToPyObject}; +use pyo3::{intern, Bound, IntoPyObject, PyAny, PyResult, Python}; use sail_common::spec; use crate::cereal::{check_python_udf_version, should_write_config}; @@ -13,7 +13,7 @@ use crate::error::{PyUdfError, PyUdfResult}; pub struct PySparkUdtfPayload; impl PySparkUdtfPayload { - pub fn load(py: Python, v: &[u8]) -> PyUdfResult { + pub fn load<'py>(py: Python<'py>, v: &[u8]) -> PyUdfResult> { let (eval_type, v) = v .split_at_checked(size_of::()) .ok_or_else(|| PyUdfError::invalid("missing eval_type"))?; @@ -21,16 +21,19 @@ impl PySparkUdtfPayload { .try_into() .map_err(|e| PyValueError::new_err(format!("eval_type bytes: {e}")))?; let eval_type = i32::from_be_bytes(eval_type); - let infile = PyModule::import_bound(py, intern!(py, "io"))? + let infile = PyModule::import(py, intern!(py, "io"))? .getattr(intern!(py, "BytesIO"))? .call1((v,))?; - let serializer = PyModule::import_bound(py, intern!(py, "pyspark.serializers"))? + let serializer = PyModule::import(py, intern!(py, "pyspark.serializers"))? .getattr(intern!(py, "CPickleSerializer"))? .call0()?; - let tuple = PyModule::import_bound(py, intern!(py, "pyspark.worker"))? + let tuple = PyModule::import(py, intern!(py, "pyspark.worker"))? .getattr(intern!(py, "read_udtf"))? .call1((serializer, infile, eval_type))?; - Ok(tuple.get_item(0)?.to_object(py)) + tuple + .get_item(0)? + .into_pyobject(py) + .map_err(|e| PyUdfError::PythonError(e.into())) } pub fn build( @@ -70,7 +73,7 @@ impl PySparkUdtfPayload { let type_string = Python::with_gil(|py| -> PyResult { let return_type = return_type.to_pyarrow(py)?.clone_ref(py).into_bound(py); - PyModule::import_bound(py, intern!(py, "pyspark.sql.pandas.types"))? + PyModule::import(py, intern!(py, "pyspark.sql.pandas.types"))? .getattr(intern!(py, "from_arrow_type"))? .call1((return_type,))? .getattr(intern!(py, "json"))? diff --git a/crates/sail-python-udf/src/conversion.rs b/crates/sail-python-udf/src/conversion.rs index 08edf6ac..3b7e6989 100644 --- a/crates/sail-python-udf/src/conversion.rs +++ b/crates/sail-python-udf/src/conversion.rs @@ -2,58 +2,90 @@ use datafusion::arrow::array::{Array, ArrayRef, RecordBatch}; use datafusion::arrow::datatypes::{DataType, Schema, SchemaRef}; use datafusion::arrow::pyarrow::{FromPyArrow, ToPyArrow}; use datafusion_common::arrow::array::ArrayData; -use pyo3::{IntoPy, PyObject, PyResult, Python}; +use pyo3::{Bound, BoundObject, IntoPyObject, PyAny, PyErr, PyObject, PyResult, Python}; /// A trait that defines the custom behavior of converting Rust data to a Python object. -pub trait TryToPy { - fn try_to_py(&self, py: Python) -> PyResult; +pub trait TryToPy<'py> { + type Target; + type Output: BoundObject<'py, Self::Target>; + type Error: Into; + + fn try_to_py(&self, py: Python<'py>) -> Result; } -impl TryToPy for &DataType { - fn try_to_py(&self, py: Python) -> PyResult { - self.to_pyarrow(py) +impl<'py> TryToPy<'py> for &DataType { + type Target = PyAny; + type Output = Bound<'py, Self::Target>; + type Error = PyErr; + + fn try_to_py(&self, py: Python<'py>) -> Result { + self.to_pyarrow(py).map(|obj| obj.into_bound(py)) } } -impl TryToPy for &[DataType] { - fn try_to_py(&self, py: Python) -> PyResult { +impl<'py> TryToPy<'py> for &[DataType] { + type Target = PyAny; + type Output = Bound<'py, Self::Target>; + type Error = PyErr; + + fn try_to_py(&self, py: Python<'py>) -> Result { self.iter() .map(|x| x.to_pyarrow(py)) .collect::>>() - .map(|x| x.into_py(py)) + .map(|x| x.into_pyobject(py))? } } -impl TryToPy for &[ArrayRef] { - fn try_to_py(&self, py: Python) -> PyResult { +impl<'py> TryToPy<'py> for &[ArrayRef] { + type Target = PyAny; + type Output = Bound<'py, Self::Target>; + type Error = PyErr; + + fn try_to_py(&self, py: Python<'py>) -> Result { self.iter() .map(|x| x.into_data().to_pyarrow(py)) .collect::>>() - .map(|x| x.into_py(py)) + .map(|x| x.into_pyobject(py))? } } -impl TryToPy for Vec { - fn try_to_py(&self, py: Python) -> PyResult { +impl<'py> TryToPy<'py> for Vec { + type Target = PyAny; + type Output = Bound<'py, Self::Target>; + type Error = PyErr; + + fn try_to_py(&self, py: Python<'py>) -> Result { self.as_slice().try_to_py(py) } } -impl TryToPy for &Schema { - fn try_to_py(&self, py: Python) -> PyResult { - self.to_pyarrow(py) +impl<'py> TryToPy<'py> for &Schema { + type Target = PyAny; + type Output = Bound<'py, Self::Target>; + type Error = PyErr; + + fn try_to_py(&self, py: Python<'py>) -> Result { + self.to_pyarrow(py).map(|obj| obj.into_bound(py)) } } -impl TryToPy for SchemaRef { - fn try_to_py(&self, py: Python) -> PyResult { - self.to_pyarrow(py) +impl<'py> TryToPy<'py> for SchemaRef { + type Target = PyAny; + type Output = Bound<'py, Self::Target>; + type Error = PyErr; + + fn try_to_py(&self, py: Python<'py>) -> Result { + self.to_pyarrow(py).map(|obj| obj.into_bound(py)) } } -impl TryToPy for RecordBatch { - fn try_to_py(&self, py: Python) -> PyResult { - self.to_pyarrow(py) +impl<'py> TryToPy<'py> for RecordBatch { + type Target = PyAny; + type Output = Bound<'py, Self::Target>; + type Error = PyErr; + + fn try_to_py(&self, py: Python<'py>) -> Result { + self.to_pyarrow(py).map(|obj| obj.into_bound(py)) } } diff --git a/crates/sail-python-udf/src/python/mod.rs b/crates/sail-python-udf/src/python/mod.rs index b2b6d978..2ad67419 100644 --- a/crates/sail-python-udf/src/python/mod.rs +++ b/crates/sail-python-udf/src/python/mod.rs @@ -1,13 +1,17 @@ use pyo3::prelude::{PyAnyMethods, PyModule}; use pyo3::types::{PyString, PyTuple}; -use pyo3::{intern, Bound, IntoPy, Py, PyAny, PyResult}; +use pyo3::{intern, Bound, IntoPyObject, PyAny, PyResult}; pub(crate) mod spark; -fn py_init_object(module: Bound, class: C, args: A) -> PyResult> +fn py_init_object<'py, C, A>( + module: Bound<'py, PyModule>, + class: C, + args: A, +) -> PyResult> where - C: IntoPy>, - A: IntoPy>, + C: IntoPyObject<'py, Target = PyString>, + A: IntoPyObject<'py, Target = PyTuple>, { let py = module.py(); let cls = module.getattr(class)?; diff --git a/crates/sail-python-udf/src/python/spark.rs b/crates/sail-python-udf/src/python/spark.rs index 6fd5121e..eaad389d 100644 --- a/crates/sail-python-udf/src/python/spark.rs +++ b/crates/sail-python-udf/src/python/spark.rs @@ -1,7 +1,9 @@ +use std::ffi::CString; + use datafusion::arrow::datatypes::{DataType, SchemaRef}; use pyo3::prelude::PyModule; use pyo3::sync::GILOnceCell; -use pyo3::{intern, Bound, Py, PyAny, PyObject, PyResult, Python}; +use pyo3::{intern, Bound, Py, PyAny, PyResult, Python}; use crate::config::PySparkUdfConfig; use crate::conversion::TryToPy; @@ -19,11 +21,11 @@ impl PySpark { Ok(MODULE .get_or_try_init(py, || -> PyResult<_> { - Ok(PyModule::from_code_bound( + Ok(PyModule::from_code( py, - MODULE_SOURCE_CODE, - MODULE_FILE_NAME, - MODULE_NAME, + CString::new(MODULE_SOURCE_CODE)?.as_c_str(), + CString::new(MODULE_FILE_NAME)?.as_c_str(), + CString::new(MODULE_NAME)?.as_c_str(), )? .unbind()) })? @@ -33,7 +35,7 @@ impl PySpark { pub fn batch_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, input_types: &[DataType], output_type: &DataType, _config: &PySparkUdfConfig, @@ -47,7 +49,7 @@ impl PySpark { pub fn arrow_batch_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, config: &PySparkUdfConfig, ) -> PyResult> { py_init_object( @@ -59,7 +61,7 @@ impl PySpark { pub fn scalar_pandas_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, config: &PySparkUdfConfig, ) -> PyResult> { py_init_object( @@ -71,7 +73,7 @@ impl PySpark { pub fn scalar_pandas_iter_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, config: &PySparkUdfConfig, ) -> PyResult> { py_init_object( @@ -83,7 +85,7 @@ impl PySpark { pub fn group_agg_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, input_names: Vec, config: &PySparkUdfConfig, ) -> PyResult> { @@ -96,7 +98,7 @@ impl PySpark { pub fn group_map_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, input_names: Vec, config: &PySparkUdfConfig, ) -> PyResult> { @@ -109,7 +111,7 @@ impl PySpark { pub fn cogroup_map_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, left_names: Vec, right_names: Vec, config: &PySparkUdfConfig, @@ -123,7 +125,7 @@ impl PySpark { pub fn map_pandas_iter_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, config: &PySparkUdfConfig, ) -> PyResult> { py_init_object( @@ -135,7 +137,7 @@ impl PySpark { pub fn map_arrow_iter_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, _config: &PySparkUdfConfig, ) -> PyResult> { py_init_object( @@ -147,7 +149,7 @@ impl PySpark { pub fn table_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, input_types: &[DataType], passthrough_columns: usize, output_schema: &SchemaRef, @@ -168,7 +170,7 @@ impl PySpark { pub fn arrow_table_udf<'py>( py: Python<'py>, - udf: PyObject, + udf: Bound<'py, PyAny>, input_names: &[String], passthrough_columns: usize, output_schema: &SchemaRef, diff --git a/crates/sail-python-udf/src/stream.rs b/crates/sail-python-udf/src/stream.rs index 7755f46b..056ddf09 100644 --- a/crates/sail-python-udf/src/stream.rs +++ b/crates/sail-python-udf/src/stream.rs @@ -11,7 +11,7 @@ use datafusion_common::{exec_err, DataFusionError, Result}; use futures::{Stream, StreamExt}; use pyo3::exceptions::{PyRuntimeError, PyStopIteration}; use pyo3::prelude::PyAnyMethods; -use pyo3::{pyclass, pymethods, IntoPy, PyObject, PyRef, PyRefMut, PyResult, Python}; +use pyo3::{pyclass, pymethods, IntoPyObject, PyObject, PyRef, PyRefMut, PyResult, Python}; use sail_common::utils::record_batch_with_schema; use tokio::runtime::Handle; use tokio::select; @@ -153,9 +153,9 @@ impl PyMapStream { // for each record batch, but that does not work if the user wants to maintain state // across record batches. let input = PyInputStream::new(input, signal, handle); - let input = input.into_py(py); + let input = input.into_pyobject(py)?; let output = function.call1(py, (input,))?.into_bound(py); - for batch in output.iter()? { + for batch in output.try_iter()? { // Ignore empty record batches since the PySpark unit tests expect them to be ignored // even if they have incompatible schemas. if batch.as_ref().is_ok_and(|x| x.is_empty().unwrap_or(false)) { diff --git a/crates/sail-python/src/spark/mod.rs b/crates/sail-python/src/spark/mod.rs index 21cd5c09..4a6c2651 100644 --- a/crates/sail-python/src/spark/mod.rs +++ b/crates/sail-python/src/spark/mod.rs @@ -3,7 +3,7 @@ use pyo3::prelude::*; pub(crate) mod server; pub(super) fn register_module(parent: &Bound<'_, PyModule>) -> PyResult<()> { - let module = PyModule::new_bound(parent.py(), "spark")?; + let module = PyModule::new(parent.py(), "spark")?; module.add_class::()?; parent.add_submodule(&module)?; Ok(()) diff --git a/crates/sail-spark-connect/src/error.rs b/crates/sail-spark-connect/src/error.rs index 5a2afc82..00ee7e4d 100644 --- a/crates/sail-spark-connect/src/error.rs +++ b/crates/sail-spark-connect/src/error.rs @@ -283,25 +283,12 @@ impl From for Status { ArrowError::ExternalError(e), _, )) - | SparkError::DataFusionError(DataFusionError::External(e)) => { - if let Some(e) = extract_py_err(e.as_ref()) { - let info = Python::with_gil(|py| -> PyResult> { - let traceback = PyModule::import_bound(py, intern!(py, "traceback"))?; - let format_exception = - traceback.getattr(intern!(py, "format_exception"))?; - format_exception.call1((e,))?.extract() - }); - // The message must end with a newline character - // since the PySpark unit tests expect it. - let message = if let Ok(info) = info { - // Each line string already ends with a newline character. - info.join("") - } else { - format!("{e}\n") - }; - SparkThrowable::PythonException(message).into() + | SparkError::DataFusionError(DataFusionError::External(e)) => try_py_err(e.as_ref()), + SparkError::DataFusionError(DataFusionError::Shared(shared)) => { + if let DataFusionError::External(e) = shared.as_ref() { + try_py_err(e.as_ref()) } else { - SparkThrowable::SparkRuntimeException(e.to_string()).into() + SparkThrowable::SparkRuntimeException(shared.to_string()).into() } } SparkError::ArrowError(e) @@ -358,6 +345,27 @@ impl From for Status { } } +fn try_py_err<'a>(e: &'a (dyn std::error::Error + 'static)) -> Status { + if let Some(e) = extract_py_err(e) { + let info = Python::with_gil(|py| -> PyResult> { + let traceback = PyModule::import(py, intern!(py, "traceback"))?; + let format_exception = traceback.getattr(intern!(py, "format_exception"))?; + format_exception.call1((e,))?.extract() + }); + // The message must end with a newline character + // since the PySpark unit tests expect it. + let message = if let Ok(info) = info { + // Each line string already ends with a newline character. + info.join("") + } else { + format!("{e}\n") + }; + SparkThrowable::PythonException(message).into() + } else { + SparkThrowable::SparkRuntimeException(e.to_string()).into() + } +} + fn extract_py_err<'a>(e: &'a (dyn std::error::Error + 'static)) -> Option<&'a PyErr> { if let Some(e) = e.downcast_ref::() { Some(e) diff --git a/crates/sail-spark-connect/tests/gold_data/function/agg.json b/crates/sail-spark-connect/tests/gold_data/function/agg.json index 4bf8ce58..08875b7c 100644 --- a/crates/sail-spark-connect/tests/gold_data/function/agg.json +++ b/crates/sail-spark-connect/tests/gold_data/function/agg.json @@ -195,7 +195,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to approx_percentile_cont function: coercion from [Interval(YearMonth), Decimal128(1, 1), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed. No function matches the given name and argument types 'approx_percentile_cont(Interval(YearMonth), Decimal128(1, 1), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'approx_percentile_cont' function: coercion from [Interval(YearMonth), Decimal128(1, 1), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed No function matches the given name and argument types 'approx_percentile_cont(Interval(YearMonth), Decimal128(1, 1), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" } }, { @@ -221,7 +221,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to approx_percentile_cont function: coercion from [Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed. No function matches the given name and argument types 'approx_percentile_cont(Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'approx_percentile_cont' function: coercion from [Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed No function matches the given name and argument types 'approx_percentile_cont(Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" } }, { @@ -247,7 +247,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to approx_percentile_cont function: coercion from [Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed. No function matches the given name and argument types 'approx_percentile_cont(Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'approx_percentile_cont' function: coercion from [Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed No function matches the given name and argument types 'approx_percentile_cont(Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" } }, { @@ -1357,7 +1357,7 @@ } }, "output": { - "failure": "error in DataFusion: This feature is not implemented: MedianAccumulator not supported for median(tab.#1) with Interval(YearMonth)" + "failure": "error in DataFusion: Error during planning: Function 'median' expects NativeType::Numeric but received NativeType::Interval(YearMonth) No function matches the given name and argument types 'median(Interval(YearMonth))'. You might need to add explicit type casts.\n\tCandidate functions:\n\tmedian(Numeric(1))" } }, { @@ -1689,7 +1689,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to approx_percentile_cont function: coercion from [Interval(YearMonth), Decimal128(1, 1), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed. No function matches the given name and argument types 'approx_percentile_cont(Interval(YearMonth), Decimal128(1, 1), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'approx_percentile_cont' function: coercion from [Interval(YearMonth), Decimal128(1, 1), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed No function matches the given name and argument types 'approx_percentile_cont(Interval(YearMonth), Decimal128(1, 1), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" } }, { @@ -1715,7 +1715,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to approx_percentile_cont function: coercion from [Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed. No function matches the given name and argument types 'approx_percentile_cont(Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'approx_percentile_cont' function: coercion from [Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed No function matches the given name and argument types 'approx_percentile_cont(Int32, List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" } }, { @@ -1741,7 +1741,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to approx_percentile_cont function: coercion from [Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed. No function matches the given name and argument types 'approx_percentile_cont(Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'approx_percentile_cont' function: coercion from [Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32] to the signature OneOf([Exact([Int8, Float64]), Exact([Int8, Float64, Int8]), Exact([Int8, Float64, Int16]), Exact([Int8, Float64, Int32]), Exact([Int8, Float64, Int64]), Exact([Int8, Float64, UInt8]), Exact([Int8, Float64, UInt16]), Exact([Int8, Float64, UInt32]), Exact([Int8, Float64, UInt64]), Exact([Int16, Float64]), Exact([Int16, Float64, Int8]), Exact([Int16, Float64, Int16]), Exact([Int16, Float64, Int32]), Exact([Int16, Float64, Int64]), Exact([Int16, Float64, UInt8]), Exact([Int16, Float64, UInt16]), Exact([Int16, Float64, UInt32]), Exact([Int16, Float64, UInt64]), Exact([Int32, Float64]), Exact([Int32, Float64, Int8]), Exact([Int32, Float64, Int16]), Exact([Int32, Float64, Int32]), Exact([Int32, Float64, Int64]), Exact([Int32, Float64, UInt8]), Exact([Int32, Float64, UInt16]), Exact([Int32, Float64, UInt32]), Exact([Int32, Float64, UInt64]), Exact([Int64, Float64]), Exact([Int64, Float64, Int8]), Exact([Int64, Float64, Int16]), Exact([Int64, Float64, Int32]), Exact([Int64, Float64, Int64]), Exact([Int64, Float64, UInt8]), Exact([Int64, Float64, UInt16]), Exact([Int64, Float64, UInt32]), Exact([Int64, Float64, UInt64]), Exact([UInt8, Float64]), Exact([UInt8, Float64, Int8]), Exact([UInt8, Float64, Int16]), Exact([UInt8, Float64, Int32]), Exact([UInt8, Float64, Int64]), Exact([UInt8, Float64, UInt8]), Exact([UInt8, Float64, UInt16]), Exact([UInt8, Float64, UInt32]), Exact([UInt8, Float64, UInt64]), Exact([UInt16, Float64]), Exact([UInt16, Float64, Int8]), Exact([UInt16, Float64, Int16]), Exact([UInt16, Float64, Int32]), Exact([UInt16, Float64, Int64]), Exact([UInt16, Float64, UInt8]), Exact([UInt16, Float64, UInt16]), Exact([UInt16, Float64, UInt32]), Exact([UInt16, Float64, UInt64]), Exact([UInt32, Float64]), Exact([UInt32, Float64, Int8]), Exact([UInt32, Float64, Int16]), Exact([UInt32, Float64, Int32]), Exact([UInt32, Float64, Int64]), Exact([UInt32, Float64, UInt8]), Exact([UInt32, Float64, UInt16]), Exact([UInt32, Float64, UInt32]), Exact([UInt32, Float64, UInt64]), Exact([UInt64, Float64]), Exact([UInt64, Float64, Int8]), Exact([UInt64, Float64, Int16]), Exact([UInt64, Float64, Int32]), Exact([UInt64, Float64, Int64]), Exact([UInt64, Float64, UInt8]), Exact([UInt64, Float64, UInt16]), Exact([UInt64, Float64, UInt32]), Exact([UInt64, Float64, UInt64]), Exact([Float32, Float64]), Exact([Float32, Float64, Int8]), Exact([Float32, Float64, Int16]), Exact([Float32, Float64, Int32]), Exact([Float32, Float64, Int64]), Exact([Float32, Float64, UInt8]), Exact([Float32, Float64, UInt16]), Exact([Float32, Float64, UInt32]), Exact([Float32, Float64, UInt64]), Exact([Float64, Float64]), Exact([Float64, Float64, Int8]), Exact([Float64, Float64, Int16]), Exact([Float64, Float64, Int32]), Exact([Float64, Float64, Int64]), Exact([Float64, Float64, UInt8]), Exact([Float64, Float64, UInt16]), Exact([Float64, Float64, UInt32]), Exact([Float64, Float64, UInt64])]) failed No function matches the given name and argument types 'approx_percentile_cont(Interval(DayTime), List(Field { name: \"item\", data_type: Decimal128(1, 1), nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tapprox_percentile_cont(Int8, Float64)\n\tapprox_percentile_cont(Int8, Float64, Int8)\n\tapprox_percentile_cont(Int8, Float64, Int16)\n\tapprox_percentile_cont(Int8, Float64, Int32)\n\tapprox_percentile_cont(Int8, Float64, Int64)\n\tapprox_percentile_cont(Int8, Float64, UInt8)\n\tapprox_percentile_cont(Int8, Float64, UInt16)\n\tapprox_percentile_cont(Int8, Float64, UInt32)\n\tapprox_percentile_cont(Int8, Float64, UInt64)\n\tapprox_percentile_cont(Int16, Float64)\n\tapprox_percentile_cont(Int16, Float64, Int8)\n\tapprox_percentile_cont(Int16, Float64, Int16)\n\tapprox_percentile_cont(Int16, Float64, Int32)\n\tapprox_percentile_cont(Int16, Float64, Int64)\n\tapprox_percentile_cont(Int16, Float64, UInt8)\n\tapprox_percentile_cont(Int16, Float64, UInt16)\n\tapprox_percentile_cont(Int16, Float64, UInt32)\n\tapprox_percentile_cont(Int16, Float64, UInt64)\n\tapprox_percentile_cont(Int32, Float64)\n\tapprox_percentile_cont(Int32, Float64, Int8)\n\tapprox_percentile_cont(Int32, Float64, Int16)\n\tapprox_percentile_cont(Int32, Float64, Int32)\n\tapprox_percentile_cont(Int32, Float64, Int64)\n\tapprox_percentile_cont(Int32, Float64, UInt8)\n\tapprox_percentile_cont(Int32, Float64, UInt16)\n\tapprox_percentile_cont(Int32, Float64, UInt32)\n\tapprox_percentile_cont(Int32, Float64, UInt64)\n\tapprox_percentile_cont(Int64, Float64)\n\tapprox_percentile_cont(Int64, Float64, Int8)\n\tapprox_percentile_cont(Int64, Float64, Int16)\n\tapprox_percentile_cont(Int64, Float64, Int32)\n\tapprox_percentile_cont(Int64, Float64, Int64)\n\tapprox_percentile_cont(Int64, Float64, UInt8)\n\tapprox_percentile_cont(Int64, Float64, UInt16)\n\tapprox_percentile_cont(Int64, Float64, UInt32)\n\tapprox_percentile_cont(Int64, Float64, UInt64)\n\tapprox_percentile_cont(UInt8, Float64)\n\tapprox_percentile_cont(UInt8, Float64, Int8)\n\tapprox_percentile_cont(UInt8, Float64, Int16)\n\tapprox_percentile_cont(UInt8, Float64, Int32)\n\tapprox_percentile_cont(UInt8, Float64, Int64)\n\tapprox_percentile_cont(UInt8, Float64, UInt8)\n\tapprox_percentile_cont(UInt8, Float64, UInt16)\n\tapprox_percentile_cont(UInt8, Float64, UInt32)\n\tapprox_percentile_cont(UInt8, Float64, UInt64)\n\tapprox_percentile_cont(UInt16, Float64)\n\tapprox_percentile_cont(UInt16, Float64, Int8)\n\tapprox_percentile_cont(UInt16, Float64, Int16)\n\tapprox_percentile_cont(UInt16, Float64, Int32)\n\tapprox_percentile_cont(UInt16, Float64, Int64)\n\tapprox_percentile_cont(UInt16, Float64, UInt8)\n\tapprox_percentile_cont(UInt16, Float64, UInt16)\n\tapprox_percentile_cont(UInt16, Float64, UInt32)\n\tapprox_percentile_cont(UInt16, Float64, UInt64)\n\tapprox_percentile_cont(UInt32, Float64)\n\tapprox_percentile_cont(UInt32, Float64, Int8)\n\tapprox_percentile_cont(UInt32, Float64, Int16)\n\tapprox_percentile_cont(UInt32, Float64, Int32)\n\tapprox_percentile_cont(UInt32, Float64, Int64)\n\tapprox_percentile_cont(UInt32, Float64, UInt8)\n\tapprox_percentile_cont(UInt32, Float64, UInt16)\n\tapprox_percentile_cont(UInt32, Float64, UInt32)\n\tapprox_percentile_cont(UInt32, Float64, UInt64)\n\tapprox_percentile_cont(UInt64, Float64)\n\tapprox_percentile_cont(UInt64, Float64, Int8)\n\tapprox_percentile_cont(UInt64, Float64, Int16)\n\tapprox_percentile_cont(UInt64, Float64, Int32)\n\tapprox_percentile_cont(UInt64, Float64, Int64)\n\tapprox_percentile_cont(UInt64, Float64, UInt8)\n\tapprox_percentile_cont(UInt64, Float64, UInt16)\n\tapprox_percentile_cont(UInt64, Float64, UInt32)\n\tapprox_percentile_cont(UInt64, Float64, UInt64)\n\tapprox_percentile_cont(Float32, Float64)\n\tapprox_percentile_cont(Float32, Float64, Int8)\n\tapprox_percentile_cont(Float32, Float64, Int16)\n\tapprox_percentile_cont(Float32, Float64, Int32)\n\tapprox_percentile_cont(Float32, Float64, Int64)\n\tapprox_percentile_cont(Float32, Float64, UInt8)\n\tapprox_percentile_cont(Float32, Float64, UInt16)\n\tapprox_percentile_cont(Float32, Float64, UInt32)\n\tapprox_percentile_cont(Float32, Float64, UInt64)\n\tapprox_percentile_cont(Float64, Float64)\n\tapprox_percentile_cont(Float64, Float64, Int8)\n\tapprox_percentile_cont(Float64, Float64, Int16)\n\tapprox_percentile_cont(Float64, Float64, Int32)\n\tapprox_percentile_cont(Float64, Float64, Int64)\n\tapprox_percentile_cont(Float64, Float64, UInt8)\n\tapprox_percentile_cont(Float64, Float64, UInt16)\n\tapprox_percentile_cont(Float64, Float64, UInt32)\n\tapprox_percentile_cont(Float64, Float64, UInt64)" } }, { @@ -2819,7 +2819,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Execution error: User-defined coercion failed with Execution(\"Sum not supported for Null\") No function matches the given name and argument types 'sum(Null)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tsum(UserDefined)" + "failure": "error in DataFusion: Error during planning: Execution error: Function 'sum' user-defined coercion failed with Execution(\"Sum not supported for Null\") No function matches the given name and argument types 'sum(Null)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tsum(UserDefined)" } }, { diff --git a/crates/sail-spark-connect/tests/gold_data/function/map.json b/crates/sail-spark-connect/tests/gold_data/function/map.json index 3f5cfcb1..0c3c0b49 100644 --- a/crates/sail-spark-connect/tests/gold_data/function/map.json +++ b/crates/sail-spark-connect/tests/gold_data/function/map.json @@ -19,7 +19,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Execution error: User-defined coercion failed with Internal(\"Expected a Map type, got List(Field { name: \\\"item\\\", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })\") No function matches the given name and argument types 'map_extract(List(Field { name: \"item\", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tmap_extract(UserDefined)" + "failure": "error in DataFusion: Error during planning: Execution error: Function 'map_extract' user-defined coercion failed with Internal(\"Expected a Map type, got List(Field { name: \\\"item\\\", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} })\") No function matches the given name and argument types 'map_extract(List(Field { name: \"item\", data_type: Int32, nullable: true, dict_id: 0, dict_is_ordered: false, metadata: {} }), Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tmap_extract(UserDefined)" } }, { diff --git a/crates/sail-spark-connect/tests/gold_data/function/math.json b/crates/sail-spark-connect/tests/gold_data/function/math.json index 42ab8d9e..f6463588 100644 --- a/crates/sail-spark-connect/tests/gold_data/function/math.json +++ b/crates/sail-spark-connect/tests/gold_data/function/math.json @@ -239,7 +239,7 @@ } }, "output": { - "failure": "error in DataFusion: This feature is not implemented: Unsupported data type Interval(YearMonth) for function abs" + "failure": "error in DataFusion: Error during planning: Function 'abs' expects NativeType::Numeric but received NativeType::Interval(YearMonth) No function matches the given name and argument types 'abs(Interval(YearMonth))'. You might need to add explicit type casts.\n\tCandidate functions:\n\tabs(Numeric(1))" } }, { @@ -1867,7 +1867,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to signum function: coercion from [Interval(YearMonth)] to the signature Uniform(1, [Float64, Float32]) failed. No function matches the given name and argument types 'signum(Interval(YearMonth))'. You might need to add explicit type casts.\n\tCandidate functions:\n\tsignum(Float64/Float32)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'signum' function: coercion from [Interval(YearMonth)] to the signature Uniform(1, [Float64, Float32]) failed No function matches the given name and argument types 'signum(Interval(YearMonth))'. You might need to add explicit type casts.\n\tCandidate functions:\n\tsignum(Float64/Float32)" } }, { @@ -1911,7 +1911,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: Failed to coerce arguments to satisfy a call to signum function: coercion from [Interval(YearMonth)] to the signature Uniform(1, [Float64, Float32]) failed. No function matches the given name and argument types 'signum(Interval(YearMonth))'. You might need to add explicit type casts.\n\tCandidate functions:\n\tsignum(Float64/Float32)" + "failure": "error in DataFusion: Error during planning: Failed to coerce arguments to satisfy a call to 'signum' function: coercion from [Interval(YearMonth)] to the signature Uniform(1, [Float64, Float32]) failed No function matches the given name and argument types 'signum(Interval(YearMonth))'. You might need to add explicit type casts.\n\tCandidate functions:\n\tsignum(Float64/Float32)" } }, { diff --git a/crates/sail-spark-connect/tests/gold_data/function/window.json b/crates/sail-spark-connect/tests/gold_data/function/window.json index 1c6d2912..fa61c886 100644 --- a/crates/sail-spark-connect/tests/gold_data/function/window.json +++ b/crates/sail-spark-connect/tests/gold_data/function/window.json @@ -71,7 +71,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: The function expected zero argument but received 1 No function matches the given name and argument types 'dense_rank(Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tdense_rank(NullAry())" + "failure": "error in DataFusion: Error during planning: The function 'dense_rank' expected zero argument but received 1 No function matches the given name and argument types 'dense_rank(Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tdense_rank(NullAry())" } }, { @@ -256,7 +256,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: The function expected zero argument but received 1 No function matches the given name and argument types 'percent_rank(Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tpercent_rank(NullAry())" + "failure": "error in DataFusion: Error during planning: The function 'percent_rank' expected zero argument but received 1 No function matches the given name and argument types 'percent_rank(Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\tpercent_rank(NullAry())" } }, { @@ -293,7 +293,7 @@ } }, "output": { - "failure": "error in DataFusion: Error during planning: Error during planning: The function expected zero argument but received 1 No function matches the given name and argument types 'rank(Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\trank(NullAry())" + "failure": "error in DataFusion: Error during planning: The function 'rank' expected zero argument but received 1 No function matches the given name and argument types 'rank(Int32)'. You might need to add explicit type casts.\n\tCandidate functions:\n\trank(NullAry())" } }, {