From 5f6b8fc64d8b5b5eb8c8f37cab654873bcedab52 Mon Sep 17 00:00:00 2001 From: Wendell Smith Date: Thu, 10 Oct 2024 14:44:44 -0400 Subject: [PATCH] feat: update substrait to `0.57.1` (#274) * cargo update * update substrait submodule to 0.57.1 * Update module to compile with substrait 0.57.1 * Fix interval handling and clippy errors * Switch to returning diagnostics where possible * Update test suite to 0.57.1 * Add some checks for subseconds and precision checking * Update pre-commit hooks to functional versions * YAML formatting * Fix clippy on generated code * Polish from code review * Apply suggestions from code review Co-authored-by: Matthijs Brobbel * Clearer variable name * Allow no precision if subseconds are not specified Required for test case tpc-h01 to pass, where `days: 1` is specified, but subseconds and precision are not. * Clarify comment --------- Co-authored-by: Matthijs Brobbel --- .pre-commit-config.yaml | 4 +- Cargo.lock | 542 ++++++++---------- rs/src/input/proto.rs | 7 +- rs/src/parse/expressions/literals.rs | 126 +++- rs/src/parse/expressions/mod.rs | 5 + rs/src/parse/extensions/advanced.rs | 2 +- rs/src/parse/relations/aggregate.rs | 3 + rs/src/parse/relations/common.rs | 1 + rs/src/parse/relations/join.rs | 101 +++- rs/src/parse/relations/mod.rs | 24 +- rs/src/parse/relations/read.rs | 3 + rs/src/parse/relations/set.rs | 13 + rs/src/parse/types.rs | 12 + rs/src/resources/substrait-version | 2 +- substrait | 2 +- .../expressions/literals/interval_day.yaml | 31 + .../advanced/missing-declaration.yaml | 4 +- .../advanced/optimization-not-declared.yaml | 4 +- .../extensions/advanced/optimization.yaml | 2 +- .../advanced/unused-declaration.yaml | 2 +- tests/tests/relations/common/hints.yaml | 2 +- .../tests/relations/common/optimization.yaml | 2 +- tests/tests/relations/join/anti.yaml | 2 +- tests/tests/relations/join/filter-range.yaml | 2 +- tests/tests/relations/join/semi.yaml | 2 +- tests/tests/relations/join/single.yaml | 2 +- tests/tests/version/current-version.yaml | 3 +- 27 files changed, 547 insertions(+), 358 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c9ac4204..bb5ecfb4 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -15,7 +15,7 @@ repos: hooks: - id: buf-lint - repo: https://github.com/adrienverge/yamllint.git - rev: v1.26.0 + rev: v1.35.1 hooks: - id: yamllint args: [-c=.yamllint.yaml] @@ -23,7 +23,7 @@ repos: rev: 22.3.0 hooks: - id: black -- repo: https://gitlab.com/pycqa/flake8 +- repo: https://github.com/pycqa/flake8 rev: 4.0.1 hooks: - id: flake8 diff --git a/Cargo.lock b/Cargo.lock index 62cd1a66..006ac165 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -18,9 +18,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -59,9 +59,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" [[package]] name = "atty" @@ -76,9 +76,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "base64" @@ -115,21 +115,21 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytecount" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e5f035d16fc623ae5f74981db80a439803888314e3a555fd6f04acd51a3205" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "byteorder" @@ -139,9 +139,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "428d9aa8fbc0670b7b8d6030a7fadd0f86151cae55e4dbbece15f3780a3dfaf3" [[package]] name = "cbindgen" @@ -164,11 +164,11 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "2e80e3b6a3ab07840e1cae9b0666a63970dc28e8ed5ffbcdacbfc760c281bfc1" dependencies = [ - "libc", + "shlex", ] [[package]] @@ -188,7 +188,7 @@ dependencies = [ "js-sys", "num-traits", "wasm-bindgen", - "windows-targets 0.52.0", + "windows-targets", ] [[package]] @@ -217,57 +217,49 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" dependencies = [ "cc", ] [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "curl" -version = "0.4.46" +version = "0.4.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e2161dd6eba090ff1594084e95fd67aeccf04382ffea77999ea94ed42ec67b6" +checksum = "d9fb4d13a1be2b58f14d60adba57c9834b78c62fd86c3e76a148f732686e9265" dependencies = [ "curl-sys", "libc", @@ -280,9 +272,9 @@ dependencies = [ [[package]] name = "curl-sys" -version = "0.4.72+curl-8.6.0" +version = "0.4.77+curl-8.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29cbdc8314c447d11e8fd156dcdd031d9e02a7a976163e396b548c03153bc9ea" +checksum = "f469e8a5991f277a208224f6c7ad72ecb5f986e36d09ae1f2c1bb9259478a480" dependencies = [ "cc", "libc", @@ -295,24 +287,24 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb30d70a07a3b04884d2677f06bec33509dc67ca60d92949e5535352d3191dc" +checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" dependencies = [ "powerfmt", ] [[package]] name = "dunce" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ce8c6da7551ec6c462cbaf3bfbc75131ebbfa1c944aeaa9dab51ca1c5f0c3b" +checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "equivalent" @@ -322,9 +314,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", "windows-sys 0.52.0", @@ -343,9 +335,9 @@ dependencies = [ [[package]] name = "fastrand" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fixedbitset" @@ -386,9 +378,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.11" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "js-sys", @@ -411,9 +403,9 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heck" @@ -438,18 +430,18 @@ dependencies = [ [[package]] name = "home" -version = "0.5.5" +version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5444c27eef6923071f7ebcc33e3444508466a76f7a2b93da00ed6e19f30c1ddb" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "iana-time-zone" -version = "0.1.58" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", @@ -490,25 +482,25 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433de089bd45971eecf4668ee0ee8f4cec17db4f8bd8f7bc3197a6ce37aa7d9b" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.3", + "hashbrown 0.15.0", ] [[package]] name = "indoc" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e186cfbae8084e513daff4240b4797e342f988cecda4fb6c939150f96315fd8" +checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "instant" -version = "0.1.12" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" dependencies = [ "cfg-if", ] @@ -542,15 +534,15 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.66" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] @@ -573,33 +565,33 @@ dependencies = [ "memchr", "num-cmp", "once_cell", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "percent-encoding", "regex", "serde", "serde_json", "time", "url", - "uuid 1.6.1", + "uuid 1.10.0", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.159" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" [[package]] name = "libz-sys" -version = "1.1.12" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -609,15 +601,15 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "lock_api" -version = "0.4.11" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -625,21 +617,21 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memoffset" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" dependencies = [ "autocfg", ] @@ -691,9 +683,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c165a9ab64cf766f73521c0dd2cfdff64f488b8f0b3e621face3462d3db536d7" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", @@ -714,6 +706,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-derive" version = "0.4.2" @@ -722,7 +720,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.79", ] [[package]] @@ -767,9 +765,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl-probe" @@ -779,9 +777,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.96" +version = "0.9.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f" +checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" dependencies = [ "cc", "libc", @@ -808,12 +806,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", - "parking_lot_core 0.9.9", + "parking_lot_core 0.9.10", ] [[package]] @@ -832,15 +830,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.9" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.4.1", + "redox_syscall 0.5.7", "smallvec", - "windows-targets 0.48.5", + "windows-targets", ] [[package]] @@ -851,25 +849,25 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.2.1", + "indexmap 2.6.0", ] [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" [[package]] name = "powerfmt" @@ -879,9 +877,9 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "proc-macro2" -version = "1.0.83" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b33eb56c327dec362a9e55b3ad14f9d2f0904fb5a5b03b513ab5465399e9f43" +checksum = "b3e4daa0dcf6feba26f985457cdf104d4b4256fc5a09547140f3631bb076b19a" dependencies = [ "unicode-ident", ] @@ -951,7 +949,7 @@ dependencies = [ "indoc", "libc", "memoffset", - "parking_lot 0.12.1", + "parking_lot 0.12.3", "portable-atomic", "pyo3-build-config 0.21.2", "pyo3-ffi", @@ -971,9 +969,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.22.2" +version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e8730e591b14492a8945cdff32f089250b05f5accecf74aeddf9e8272ce1fa8" +checksum = "e61cef80755fe9e46bb8a0b8f20752ca7676dcc07a5277d8b7768c6172e529b3" dependencies = [ "once_cell", "target-lexicon", @@ -998,7 +996,7 @@ dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.68", + "syn 2.0.79", ] [[package]] @@ -1011,14 +1009,14 @@ dependencies = [ "proc-macro2", "pyo3-build-config 0.21.2", "quote", - "syn 2.0.68", + "syn 2.0.79", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1054,18 +1052,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.4.1" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.10.5" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f" +checksum = "38200e5ee88914975b69f657f0801b6f6dccafd44fd9326302a4aaeecfacb1d8" dependencies = [ "aho-corasick", "memchr", @@ -1075,9 +1073,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.4" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b7fa1134405e2ec9353fd416b17f8dacd46c473d7d3fd1cf202706a14eb792a" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -1086,17 +1084,17 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.2" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "rustix" -version = "0.38.26" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9470c4bf8246c8daf25f9598dca807fb6510347b1e1cfa55749113850c79d88a" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.4.1", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -1105,15 +1103,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.14" +version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -1126,11 +1124,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.22" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" +checksum = "01227be5826fa0690321a2ba6c5cd57a19cf3f6a09e76973b58e61de6ab9d1c1" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -1147,31 +1145,32 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" [[package]] name = "serde" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.79", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1182,24 +1181,30 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.2.1", + "indexmap 2.6.0", "itoa", "ryu", "serde", "unsafe-libyaml", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "smallvec" -version = "1.11.2" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.6" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ffd9c0a93b7543e062e759284fcf5f5e3b098501104bfbdde4d404db792871" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", "windows-sys 0.52.0", @@ -1227,7 +1232,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.68", + "syn 2.0.79", ] [[package]] @@ -1280,7 +1285,7 @@ version = "0.0.11" dependencies = [ "heck 0.5.0", "quote", - "syn 2.0.68", + "syn 2.0.79", ] [[package]] @@ -1290,7 +1295,7 @@ dependencies = [ "dunce", "prost-build", "pyo3", - "pyo3-build-config 0.22.2", + "pyo3-build-config 0.22.3", "substrait-validator", "walkdir", ] @@ -1308,9 +1313,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.68" +version = "2.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "901fa70d88b9d6c98022e23b4136f9f3e54e4662c3bc1bd1d84a42a9a0f0c1e9" +checksum = "89132cd0bf050864e1d38dc3bbc07a0eb8e7530af26344d3d2bbbef83499f590" dependencies = [ "proc-macro2", "quote", @@ -1319,28 +1324,28 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.15" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" [[package]] name = "tempfile" -version = "3.8.1" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.4.1", + "once_cell", "rustix", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "termcolor" -version = "1.4.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -1360,37 +1365,38 @@ dependencies = [ [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" [[package]] name = "thiserror" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "1.0.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.79", ] [[package]] name = "time" -version = "0.3.30" +version = "0.3.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" +checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" dependencies = [ "deranged", + "num-conv", "powerfmt", "serde", "time-core", @@ -1405,18 +1411,19 @@ checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.15" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" +checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" dependencies = [ + "num-conv", "time-core", ] [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -1444,21 +1451,21 @@ checksum = "6af6ae20167a9ece4bcb41af5b80f8a1f1df981f6391189ce00fd257af04126a" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] @@ -1504,9 +1511,9 @@ checksum = "bc5cf98d8186244414c848017f0e2676b3fcb46807f6668a97dfe67359a3c4b7" [[package]] name = "uuid" -version = "1.6.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" +checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" [[package]] name = "vcpkg" @@ -1516,9 +1523,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -1538,34 +1545,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.79", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1573,22 +1581,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.79", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.89" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "which" @@ -1620,11 +1628,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -1635,20 +1643,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows-core" -version = "0.51.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" -dependencies = [ - "windows-targets 0.48.5", -] - -[[package]] -name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets", ] [[package]] @@ -1657,139 +1656,98 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.0", + "windows-targets", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets", ] [[package]] name = "windows-targets" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_gnu" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" - -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - -[[package]] -name = "windows_x86_64_msvc" -version = "0.52.0" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "zerocopy" -version = "0.7.29" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d075cf85bbb114e933343e087b92f2146bac0d55b534cbb8188becf0039948e" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.29" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86cd5ca076997b97ef09d3ad65efe811fa68c9e874cb636ccb211223a813b0c2" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.68", + "syn 2.0.79", ] diff --git a/rs/src/input/proto.rs b/rs/src/input/proto.rs index 2a7828b6..b56cc4d2 100644 --- a/rs/src/input/proto.rs +++ b/rs/src/input/proto.rs @@ -17,8 +17,11 @@ use crate::output::primitive_data; use heck::ToUpperCamelCase; -#[allow(clippy::large_enum_variant)] // caused by generated code -#[allow(clippy::derive_partial_eq_without_eq)] // caused by generated code +#[allow( + clippy::large_enum_variant, + clippy::derive_partial_eq_without_eq, + clippy::doc_lazy_continuation +)] // caused by generated code pub mod substrait { include!(concat!(env!("OUT_DIR"), "/substrait.rs")); pub mod extensions { diff --git a/rs/src/parse/expressions/literals.rs b/rs/src/parse/expressions/literals.rs index 0e90f556..0fc9b9da 100644 --- a/rs/src/parse/expressions/literals.rs +++ b/rs/src/parse/expressions/literals.rs @@ -38,8 +38,13 @@ enum LiteralValue { /// May be used only for binary and FixedBinary. Binary(Vec), - /// May be used only for IntervalYearToMonth and IntervalDayToSecond. - Interval(i64, i64), + /// For (year, month) intervals + IntervalYearToMonth(i64, i64), + + /// For (day, second, subseconds, precision) intervals. + /// + /// Seconds are (second + subseconds*10^-precision) + IntervalDayToSecond(i64, i64, i64, i64), /// May be used only for structs and lists. Items(Vec), @@ -211,17 +216,12 @@ impl Describe for Literal { }, LiteralValue::String(s) => util::string::describe_string(f, s, limit), LiteralValue::Binary(b) => util::string::describe_binary(f, b, limit), - LiteralValue::Interval(a, b) => match self.data_type.class() { - data::Class::Simple(data::class::Simple::IntervalYear) => { - write!(f, "{a}y{b:+}m") - } - data::Class::Simple(data::class::Simple::IntervalDay) => { - let s = b / 1000000; - let us = if b > &0 { *b } else { -b } % 1000000; - write!(f, "{a}d{s:+}.{us:06}s") - } - _ => write!(f, "({a}, {b})"), - }, + LiteralValue::IntervalYearToMonth(a, b) => write!(f, "{a}y{b:+}m"), + + &LiteralValue::IntervalDayToSecond(d, s, subs, prec) => { + write!(f, "{d}d{s:+}.{subs:width$}s", width = prec as usize) + } + LiteralValue::Items(x) => match self.data_type.class() { data::Class::Compound(data::class::Compound::Struct) => { write!(f, "(")?; @@ -663,7 +663,7 @@ fn parse_interval_year_to_month( ); } Literal::new_simple( - LiteralValue::Interval(x.years.into(), x.months.into()), + LiteralValue::IntervalYearToMonth(x.years.into(), x.months.into()), data::class::Simple::IntervalYear, nullable, extensions::simple::resolve_variation_by_class( @@ -677,32 +677,76 @@ fn parse_interval_year_to_month( /// Parses a day to second interval literal. fn parse_interval_day_to_second( x: &substrait::expression::literal::IntervalDayToSecond, - y: &mut context::Context, + ctx: &mut context::Context, nullable: bool, variations: Option, ) -> diagnostic::Result { - proto_primitive_field!(x, y, days, |x, _| { + use substrait::expression::literal::interval_day_to_second::PrecisionMode; + + proto_primitive_field!(x, ctx, days, |x, _| { if *x < -3650000 || *x > 3650000 { Err(cause!( ExpressionIllegalLiteralValue, - "day count out of range -3_650_000 to 3_650_000" + "day count {} out of range -3_650_000 to 3_650_000", + *x )) } else { Ok(()) } }); - proto_primitive_field!(x, y, seconds); - proto_primitive_field!(x, y, microseconds); + proto_primitive_field!(x, ctx, seconds); + proto_primitive_field!(x, ctx, subseconds); + proto_field!(x, ctx, precision_mode); + + let (subseconds, prec) = match x.precision_mode { + None => { + // If there are subseconds, precision mode is required. + // If not, it's irrelevant. + if x.subseconds > 0 { + diagnostic!( + ctx, + Error, + ExpressionIllegalLiteralValue, + "Precision mode required for interval day to second" + ); + } + + // Unknown precision, use default of 0 + (x.subseconds, 0) + } + Some(PrecisionMode::Microseconds(n)) => (n as i64, 6), + Some(PrecisionMode::Precision(n)) => { + if !(1..=9).contains(&n) { + diagnostic!( + ctx, + Error, + ExpressionIllegalLiteralValue, + "precision out of range 1 to 9" + ); + } + (x.subseconds, n) + } + }; + + let any_positive = (x.days > 0) || (x.seconds > 0) || (subseconds > 0); + let any_negative = (x.days < 0) || (x.seconds < 0) || (subseconds < 0); + + if any_positive && any_negative { + diagnostic!( + ctx, + Error, + ExpressionIllegalLiteralValue, + "interval cannot have both positive and negative components" + ); + } + Literal::new_simple( - LiteralValue::Interval( - x.days.into(), - i64::from(x.seconds) * 1000000 + i64::from(x.microseconds), - ), + LiteralValue::IntervalDayToSecond(x.days.into(), x.seconds.into(), subseconds, prec.into()), data::class::Simple::IntervalDay, nullable, extensions::simple::resolve_variation_by_class( - y, + ctx, variations, &data::Class::Simple(data::class::Simple::IntervalDay), ), @@ -1049,6 +1093,26 @@ fn parse_null(x: &substrait::Type, y: &mut context::Context) -> diagnostic::Resu } } +fn parse_value( + x: &substrait::expression::literal::user_defined::Val, + ctx: &mut context::Context, +) -> diagnostic::Result<()> { + use substrait::expression::literal::user_defined::Val; + + match x { + Val::Value(x) => extensions::advanced::parse_functional_any(x, ctx), + Val::Struct(_) => { + diagnostic!( + ctx, + Warning, + NotYetImplemented, + "UserDefined literals with Struct definitions" + ); + Ok(()) + } + } +} + fn parse_user_defined( x: &substrait::expression::literal::UserDefined, y: &mut context::Context, @@ -1062,7 +1126,7 @@ fn parse_user_defined( extensions::simple::parse_type_reference ) .1; - proto_required_field!(x, y, value, extensions::advanced::parse_functional_any); + proto_required_field!(x, y, val, parse_value); let class = if let Some(extension_type) = extension_type { data::Class::UserDefined(extension_type) } else { @@ -1115,6 +1179,18 @@ fn parse_literal_type( LiteralType::EmptyMap(x) => parse_empty_map(x, y), LiteralType::Null(x) => parse_null(x, y), LiteralType::UserDefined(x) => parse_user_defined(x, y, nullable, variations), + LiteralType::IntervalCompound(_) => Err(cause!( + NotYetImplemented, + "IntervalCompound literals are not yet implemented" + )), + LiteralType::PrecisionTimestamp(_) => Err(cause!( + NotYetImplemented, + "PrecisionTimestamp literals are not yet implemented" + )), + LiteralType::PrecisionTimestampTz(_) => Err(cause!( + NotYetImplemented, + "PrecisionTimestampTz literals are not yet implemented" + )), } } diff --git a/rs/src/parse/expressions/mod.rs b/rs/src/parse/expressions/mod.rs index 19ddcf5c..3f16a8ea 100644 --- a/rs/src/parse/expressions/mod.rs +++ b/rs/src/parse/expressions/mod.rs @@ -200,6 +200,11 @@ fn parse_expression_type( substrait::expression::RexType::Subquery(x) => { subqueries::parse_subquery(x.as_ref(), y)?.into() } + substrait::expression::RexType::Nested(_nested) => { + diagnostic!(y, Warning, NotYetImplemented, "nested expressions"); + // Continue with the rest of the plan; this is not a fatal error. + return Ok(Expression::Unresolved.into()); + } }) } diff --git a/rs/src/parse/extensions/advanced.rs b/rs/src/parse/extensions/advanced.rs index 4ac72265..1e331493 100644 --- a/rs/src/parse/extensions/advanced.rs +++ b/rs/src/parse/extensions/advanced.rs @@ -81,7 +81,7 @@ pub fn parse_advanced_extension( x: &substrait::extensions::AdvancedExtension, y: &mut context::Context, ) -> Result { - proto_field!(x, y, optimization, parse_hint_any); + proto_repeated_field!(x, y, optimization, parse_hint_any); Ok(proto_field!(x, y, enhancement, parse_functional_any) .0 .is_some()) diff --git a/rs/src/parse/relations/aggregate.rs b/rs/src/parse/relations/aggregate.rs index 9f6f4b40..cf1b3e0f 100644 --- a/rs/src/parse/relations/aggregate.rs +++ b/rs/src/parse/relations/aggregate.rs @@ -86,6 +86,9 @@ fn parse_measure( } } +// use of deprecated field `aggregate_rel::Grouping::grouping_expressions`. We +// allow this for backwards-compatibility. +#[allow(deprecated)] /// Parse aggregate relation. pub fn parse_aggregate_rel( x: &substrait::AggregateRel, diff --git a/rs/src/parse/relations/common.rs b/rs/src/parse/relations/common.rs index 0952d87b..09ce9801 100644 --- a/rs/src/parse/relations/common.rs +++ b/rs/src/parse/relations/common.rs @@ -61,6 +61,7 @@ fn parse_runtime_constraint( fn parse_hint(x: &substrait::rel_common::Hint, y: &mut context::Context) -> diagnostic::Result<()> { proto_field!(x, y, stats, parse_stats); proto_field!(x, y, constraint, parse_runtime_constraint); + proto_primitive_field!(x, y, alias); proto_field!( x, y, diff --git a/rs/src/parse/relations/join.rs b/rs/src/parse/relations/join.rs index 62435ac6..de5b3bcb 100644 --- a/rs/src/parse/relations/join.rs +++ b/rs/src/parse/relations/join.rs @@ -55,9 +55,25 @@ pub fn parse_join_rel(x: &substrait::JoinRel, y: &mut context::Context) -> diagn JoinType::Outer => (true, Some(true)), JoinType::Left => (false, Some(true)), JoinType::Right => (true, Some(false)), - JoinType::Semi => (false, None), - JoinType::Anti => (false, None), - JoinType::Single => (false, Some(true)), + JoinType::LeftSemi => (false, None), + JoinType::LeftAnti => (false, None), + JoinType::LeftSingle => (false, Some(true)), + // TODO: Implement the following join types. I don't understand this + // code or these types well enough to do so. + JoinType::RightSemi + | JoinType::RightAnti + | JoinType::RightSingle + | JoinType::LeftMark + | JoinType::RightMark => { + diagnostic!(y, Warning, NotYetImplemented, "{:?} joins", join_type); + handle_rel_common!(x, y); + + // Handle the advanced extension field. + handle_advanced_extension!(x, y); + + // Keep going; this node is not correct, but we can continue to validate. + return Ok(()); + } }; // Derive final schema. @@ -96,12 +112,19 @@ pub fn parse_join_rel(x: &substrait::JoinRel, y: &mut context::Context) -> diagn (JoinType::Left, false) => "Left", (JoinType::Right, true) => "Filtered right", (JoinType::Right, false) => "Right", - (JoinType::Semi, true) => "Filtered semi", - (JoinType::Semi, false) => "Semi", - (JoinType::Anti, true) => "Filtered anti", - (JoinType::Anti, false) => "Anti", - (JoinType::Single, true) => "Filtered single", - (JoinType::Single, false) => "Single", + (JoinType::LeftSemi, true) => "Filtered left semi", + (JoinType::LeftSemi, false) => "Left semi", + (JoinType::LeftAnti, true) => "Filtered left anti", + (JoinType::LeftAnti, false) => "Left anti", + (JoinType::LeftSingle, true) => "Filtered left single", + (JoinType::LeftSingle, false) => "Left single", + // TODO: Implement the following join types. I don't understand these + // types well enough to do so. + (JoinType::RightSemi, _) => todo!(), + (JoinType::RightAnti, _) => todo!(), + (JoinType::RightSingle, _) => todo!(), + (JoinType::LeftMark, _) => todo!(), + (JoinType::RightMark, _) => todo!(), }; describe!(y, Relation, "{prefix} join by {join_expression}"); summary!(y, "{prefix} join by {join_expression:#}."); @@ -146,22 +169,60 @@ pub fn parse_join_rel(x: &substrait::JoinRel, y: &mut context::Context) -> diagn to the left input set to null.", nullable ), - JoinType::Semi => "Filters rows from the left input, propagating a row only if \ + JoinType::LeftSemi => "Filters rows from the left input, propagating a row only if \ the join expression yields true for that row combined with \ any row from the right input." .to_string(), - JoinType::Anti => "Filters rows from the left input, propagating a row only if \ - the join expression does not yield true for that row combined \ - with any row from the right input." + JoinType::RightSemi => "Filters rows from the right input, propagating a row only if \ + the join expression yields true for that row combined with \ + any row from the left input." + .to_string(), + JoinType::LeftAnti => "Filters rows from the left input, propagating a row only if \ + the join expression does not yield true for that row combined \ + with any row from the right input." .to_string(), - JoinType::Single => "Returns a row for each row from the left input, concatenating \ - it with the row from the right input for which the join \ - expression yields true. If the expression never yields true for \ - a left input, the fields corresponding to the right input are \ - set to null. If the expression yields true for a left row and \ - multiple right rows, this may return the first pair encountered \ - or throw an error." + JoinType::RightAnti => "Filters rows from the right input, propagating a row only if \ + the join expression does not yield true for that row combined \ + with any row from the left input." .to_string(), + JoinType::LeftSingle => { + "Returns a row for each row from the left input, concatenating \ + it with the row from the right input for which the join \ + expression yields true. If the expression never yields true for \ + a left input, the fields corresponding to the right input are \ + set to null. If the expression yields true for a left row and \ + multiple right rows, this may return the first pair encountered \ + or throw an error." + .to_string() + } + JoinType::RightSingle => { + "Returns a row for each row from the right input, concatenating \ + it with the row from the left input for which the join \ + expression yields true. If the expression never yields true for \ + a right input, the fields corresponding to the left input are \ + set to null. If the expression yields true for a right row and \ + multiple left rows, this may return the first pair encountered \ + or throw an error." + .to_string() + } + JoinType::LeftMark => "Returns one record for each record from the left input. \ + Appends one additional “mark” column to the output of the join. \ + The new column will be listed after all columns from both sides \ + and will be of type nullable boolean. If there is at least one \ + join partner in the right input where the join condition evaluates \ + to true then the mark column will be set to true. Otherwise, if \ + there is at least one join partner in the right input where the \ + join condition evaluates to NULL then the mark column will be set \ + to NULL. Otherwise the mark column will be set to false.".to_string(), + JoinType::RightMark => "Returns records from the right input. Appends one additional \ + “mark” column to the output of the join. The new column will be \ + listed after all columns from both sides and will be of type \ + nullable boolean. If there is at least one join partner in the \ + left input where the join condition evaluates to true then the \ + mark column will be set to true. Otherwise, if there is at least \ + one join partner in the left input where the join condition \ + evaluates to NULL then the mark column will be set to NULL. \ + Otherwise the mark column will be set to false.".to_string(), }), ); diff --git a/rs/src/parse/relations/mod.rs b/rs/src/parse/relations/mod.rs index f5b24452..245bb40a 100644 --- a/rs/src/parse/relations/mod.rs +++ b/rs/src/parse/relations/mod.rs @@ -47,7 +47,29 @@ fn parse_rel_type(x: &substrait::rel::RelType, y: &mut context::Context) -> diag substrait::rel::RelType::ExtensionMulti(x) => extension::parse_extension_multi_rel(x, y), substrait::rel::RelType::ExtensionLeaf(x) => extension::parse_extension_leaf_rel(x, y), substrait::rel::RelType::Cross(x) => cross::parse_cross_rel(x, y), - // _ => Ok(()), + + // TODO: New relational nodes + substrait::rel::RelType::Reference(_) + | substrait::rel::RelType::Write(_) + | substrait::rel::RelType::Ddl(_) + | substrait::rel::RelType::HashJoin(_) + | substrait::rel::RelType::MergeJoin(_) + | substrait::rel::RelType::NestedLoopJoin(_) + | substrait::rel::RelType::Window(_) + | substrait::rel::RelType::Exchange(_) + | substrait::rel::RelType::Expand(_) => { + diagnostic!( + y, + Warning, + NotYetImplemented, + "Unimplemented relation type {}", + x.proto_oneof_variant() + ); + Ok(()) + } // Uncomment to allow the validator to throw a warning if it finds a new + // relation; see comment above + // + // _ => Ok(()), } } diff --git a/rs/src/parse/relations/read.rs b/rs/src/parse/relations/read.rs index 1b7e3f1d..cbdc1190 100644 --- a/rs/src/parse/relations/read.rs +++ b/rs/src/parse/relations/read.rs @@ -123,6 +123,9 @@ fn parse_file_format( extensions::advanced::parse_functional_any(x, y)?; None } + substrait::read_rel::local_files::file_or_files::FileFormat::Text(_) => { + Some(String::from("Text")) + } }) } diff --git a/rs/src/parse/relations/set.rs b/rs/src/parse/relations/set.rs index e5a8239a..c06e7003 100644 --- a/rs/src/parse/relations/set.rs +++ b/rs/src/parse/relations/set.rs @@ -68,6 +68,19 @@ pub fn parse_set_rel(x: &substrait::SetRel, y: &mut context::Context) -> diagnos (SetOp::IntersectionMultiset, _) => Operation::Intersect, (SetOp::UnionDistinct, _) => Operation::Union, (SetOp::UnionAll, _) => Operation::Merge, + (SetOp::MinusPrimaryAll, _) | (SetOp::IntersectionMultisetAll, _) => { + diagnostic!( + y, + Warning, + NotYetImplemented, + "Set variant {:?} not yet supported", + op + ); + + handle_rel_common!(x, y); + handle_advanced_extension!(x, y); + return Ok(()); + } }; // Describe the relation. diff --git a/rs/src/parse/types.rs b/rs/src/parse/types.rs index e16c17dd..c7aa628e 100644 --- a/rs/src/parse/types.rs +++ b/rs/src/parse/types.rs @@ -593,6 +593,18 @@ pub fn parse_type_kind( substrait::r#type::Kind::Map(x) => parse_map(x, y), substrait::r#type::Kind::UserDefinedTypeReference(x) => parse_legacy_user_defined(x, y), substrait::r#type::Kind::UserDefined(x) => parse_user_defined(x, y), + substrait::r#type::Kind::IntervalCompound(_) + | substrait::r#type::Kind::PrecisionTimestamp(_) + | substrait::r#type::Kind::PrecisionTimestampTz(_) => { + diagnostic!( + y, + Warning, + NotYetImplemented, + "Unimplemented type kind {:?}", + x + ); + Ok(()) + } } } diff --git a/rs/src/resources/substrait-version b/rs/src/resources/substrait-version index a881cf79..68e76af0 100644 --- a/rs/src/resources/substrait-version +++ b/rs/src/resources/substrait-version @@ -1 +1 @@ -0.20.0 \ No newline at end of file +0.57.1 \ No newline at end of file diff --git a/substrait b/substrait index 6d7936df..fcfdd104 160000 --- a/substrait +++ b/substrait @@ -1 +1 @@ -Subproject commit 6d7936df1dd369b28aa1f48da06a53c0c605d39f +Subproject commit fcfdd1047005b1842a44b20646a995a2b27d1de5 diff --git a/tests/tests/expressions/literals/interval_day.yaml b/tests/tests/expressions/literals/interval_day.yaml index 248ebf57..a2603410 100644 --- a/tests/tests/expressions/literals/interval_day.yaml +++ b/tests/tests/expressions/literals/interval_day.yaml @@ -86,6 +86,37 @@ plan: seconds: 0 microseconds: 2147483647 nullable: true + - fields: + - interval_day_to_second: + days: 0 + seconds: 0 + subseconds: -2147483648 + precision: 9 + nullable: false + - interval_day_to_second: + days: 0 + seconds: 0 + subseconds: 2147483647 + precision: 9 + nullable: true + - fields: + - interval_day_to_second: + days: 20 + seconds: 0 + subseconds: -2147483648 + precision: 9 + __test: + - diag: + level: e + code: 6002 + msg: "*interval cannot have both positive and negative components*" + nullable: false + - interval_day_to_second: + days: 1 + seconds: 0 + subseconds: 2147483647 + precision: 9 + nullable: true - fields: - "null": interval_day: { nullability: NULLABILITY_REQUIRED } diff --git a/tests/tests/extensions/advanced/missing-declaration.yaml b/tests/tests/extensions/advanced/missing-declaration.yaml index 2ae08f0f..f1d5c40a 100644 --- a/tests/tests/extensions/advanced/missing-declaration.yaml +++ b/tests/tests/extensions/advanced/missing-declaration.yaml @@ -8,8 +8,8 @@ plan: common: advancedExtension: optimization: - "@type": substrait.Plan - __test: [ diag: { level: e, code: 1006, msg: '*missing protobuf "any" declaration: substrait.Plan*' } ] + - "@type": substrait.Plan + __test: [ diag: { level: e, code: 1006, msg: '*missing protobuf "any" declaration: substrait.Plan*' } ] baseSchema: names: [word, value] struct: diff --git a/tests/tests/extensions/advanced/optimization-not-declared.yaml b/tests/tests/extensions/advanced/optimization-not-declared.yaml index 57aed9b0..57781638 100644 --- a/tests/tests/extensions/advanced/optimization-not-declared.yaml +++ b/tests/tests/extensions/advanced/optimization-not-declared.yaml @@ -8,8 +8,8 @@ plan: common: advancedExtension: optimization: - "@type": substrait.Plan - __test: [ diag: { level: e, code: 1006, msg: '*missing protobuf "any" declaration*' } ] + - "@type": substrait.Plan + __test: [ diag: { level: e, code: 1006, msg: '*missing protobuf "any" declaration*' } ] baseSchema: names: [word, value] struct: diff --git a/tests/tests/extensions/advanced/optimization.yaml b/tests/tests/extensions/advanced/optimization.yaml index 1636e9f6..8269a90e 100644 --- a/tests/tests/extensions/advanced/optimization.yaml +++ b/tests/tests/extensions/advanced/optimization.yaml @@ -8,7 +8,7 @@ plan: common: advancedExtension: optimization: - "@type": substrait.Plan + - "@type": substrait.Plan baseSchema: names: [word, value] struct: diff --git a/tests/tests/extensions/advanced/unused-declaration.yaml b/tests/tests/extensions/advanced/unused-declaration.yaml index 390e5d54..3c8125dd 100644 --- a/tests/tests/extensions/advanced/unused-declaration.yaml +++ b/tests/tests/extensions/advanced/unused-declaration.yaml @@ -8,7 +8,7 @@ plan: common: advancedExtension: optimization: - "@type": substrait.Plan + - "@type": substrait.Plan baseSchema: names: [word, value] struct: diff --git a/tests/tests/relations/common/hints.yaml b/tests/tests/relations/common/hints.yaml index 56467115..b753cba1 100644 --- a/tests/tests/relations/common/hints.yaml +++ b/tests/tests/relations/common/hints.yaml @@ -12,7 +12,7 @@ plan: recordSize: 100 advancedExtension: optimization: - '@type': substrait.Plan + - '@type': substrait.Plan baseSchema: names: [a] struct: diff --git a/tests/tests/relations/common/optimization.yaml b/tests/tests/relations/common/optimization.yaml index 017c1989..73db8ae6 100644 --- a/tests/tests/relations/common/optimization.yaml +++ b/tests/tests/relations/common/optimization.yaml @@ -8,7 +8,7 @@ plan: common: advancedExtension: optimization: - '@type': substrait.Plan + - '@type': substrait.Plan baseSchema: names: [a] struct: diff --git a/tests/tests/relations/join/anti.yaml b/tests/tests/relations/join/anti.yaml index 2a3060b1..50ab8c75 100644 --- a/tests/tests/relations/join/anti.yaml +++ b/tests/tests/relations/join/anti.yaml @@ -33,5 +33,5 @@ plan: selection: rootReference: {} directReference: { structField: { field: 3 } } - type: JOIN_TYPE_ANTI + type: JOIN_TYPE_LEFT_ANTI __test: [ type: "STRUCT" ] diff --git a/tests/tests/relations/join/filter-range.yaml b/tests/tests/relations/join/filter-range.yaml index 064aa445..2b17da56 100644 --- a/tests/tests/relations/join/filter-range.yaml +++ b/tests/tests/relations/join/filter-range.yaml @@ -29,7 +29,7 @@ plan: namedTable: names: - test2 - type: JOIN_TYPE_SEMI + type: JOIN_TYPE_LEFT_SEMI expression: selection: rootReference: {} diff --git a/tests/tests/relations/join/semi.yaml b/tests/tests/relations/join/semi.yaml index 33039ce5..283e60db 100644 --- a/tests/tests/relations/join/semi.yaml +++ b/tests/tests/relations/join/semi.yaml @@ -33,5 +33,5 @@ plan: selection: rootReference: {} directReference: { structField: { field: 3 } } - type: JOIN_TYPE_SEMI + type: JOIN_TYPE_LEFT_SEMI __test: [ type: "STRUCT" ] diff --git a/tests/tests/relations/join/single.yaml b/tests/tests/relations/join/single.yaml index b11c4a62..4f118a4c 100644 --- a/tests/tests/relations/join/single.yaml +++ b/tests/tests/relations/join/single.yaml @@ -33,5 +33,5 @@ plan: selection: rootReference: {} directReference: { structField: { field: 3 } } - type: JOIN_TYPE_SINGLE + type: JOIN_TYPE_LEFT_SINGLE __test: [ type: "STRUCT" ] diff --git a/tests/tests/version/current-version.yaml b/tests/tests/version/current-version.yaml index 007c9fdb..0c0f4ce5 100644 --- a/tests/tests/version/current-version.yaml +++ b/tests/tests/version/current-version.yaml @@ -6,5 +6,6 @@ plan: __test: - level: i version: - minorNumber: 20 + minorNumber: 57 + patchNumber: 1 producer: validator-test