diff --git a/.github/workflows/develop.yml b/.github/workflows/develop.yml index dc2ad1a422..1d4940d3fe 100644 --- a/.github/workflows/develop.yml +++ b/.github/workflows/develop.yml @@ -709,7 +709,7 @@ jobs: - name: Install toolchain uses: actions-rust-lang/setup-rust-toolchain@v1 with: - cache: false + cache: false - name: Rust Cache uses: Swatinem/rust-cache@v2 with: diff --git a/Cargo.lock b/Cargo.lock index b090aacd7c..1c5bb2729d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 4 [[package]] name = "addr2line" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fb1d8e4442bd405fdfd1dacb42792696b0cf9cb15882e5d097b742a676d375" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "adler32" @@ -66,23 +66,23 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "once_cell", "version_check", ] [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "const-random", - "getrandom 0.2.15", + "getrandom 0.3.3", "once_cell", "version_check", - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -96,9 +96,9 @@ dependencies = [ [[package]] name = "aligned-vec" -version = "0.6.1" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e0966165eaf052580bd70eb1b32cb3d6245774c0104d1b2793e9650bf83b52a" +checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" dependencies = [ "equator", ] @@ -120,9 +120,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -156,9 +156,9 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.15" +version = "0.6.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" +checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" dependencies = [ "anstyle", "anstyle-parse", @@ -171,43 +171,44 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.8" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.5" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.4" +version = "3.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" +checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" dependencies = [ "anstyle", - "windows-sys 0.52.0", + "once_cell_polyfill", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.89" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86fdf8605db99b54d3cd748a44c6d04df638eb5dafb219b135d0149bd0db01f6" +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "anymap2" @@ -229,8 +230,7 @@ dependencies = [ "paste", "prost 0.13.5", "serde_json", - "snafu 0.8.5", - "tonic-build 0.11.0", + "snafu 0.8.6", ] [[package]] @@ -262,14 +262,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" dependencies = [ "derive_arbitrary", ] @@ -300,124 +300,61 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "arrow" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3a3ec4fe573f9d1f59d99c085197ef669b00b088ba1d7bb75224732d9357a74" +checksum = "fd798aea3553913a5986813e9c6ad31a2d2b04e931fe8ea4a37155eb541cebb5" dependencies = [ - "arrow-arith 53.4.1", - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-cast 53.4.1", - "arrow-csv 53.4.1", - "arrow-data 53.4.1", - "arrow-ipc 53.4.1", - "arrow-json 53.4.1", - "arrow-ord 53.4.1", - "arrow-row 53.4.1", - "arrow-schema 53.4.1", - "arrow-select 53.4.1", - "arrow-string 53.4.1", -] - -[[package]] -name = "arrow" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc208515aa0151028e464cc94a692156e945ce5126abd3537bb7fd6ba2143ed1" -dependencies = [ - "arrow-arith 54.2.1", - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-cast 54.2.1", - "arrow-csv 54.2.1", - "arrow-data 54.3.1", - "arrow-ipc 54.2.1", - "arrow-json 54.2.1", - "arrow-ord 54.2.1", - "arrow-row 54.2.1", - "arrow-schema 54.3.1", - "arrow-select 54.2.1", - "arrow-string 54.2.1", + "arrow-arith", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-csv", + "arrow-data", + "arrow-ipc", + "arrow-json", + "arrow-ord", + "arrow-row", + "arrow-schema", + "arrow-select", + "arrow-string", ] [[package]] name = "arrow-arith" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dcf19f07792d8c7f91086c67b574a79301e367029b17fcf63fb854332246a10" +checksum = "508dafb53e5804a238cab7fd97a59ddcbfab20cc4d9814b1ab5465b9fa147f2e" dependencies = [ - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "chrono", - "half", - "num", -] - -[[package]] -name = "arrow-arith" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e07e726e2b3f7816a85c6a45b6ec118eeeabf0b2a8c208122ad949437181f49a" -dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", "chrono", "num", ] [[package]] name = "arrow-array" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7845c32b41f7053e37a075b3c2f29c6f5ea1b3ca6e5df7a2d325ee6e1b4a63cf" +checksum = "e2730bc045d62bb2e53ef8395b7d4242f5c8102f41ceac15e8395b9ac3d08461" dependencies = [ - "ahash 0.8.11", - "arrow-buffer 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "chrono", - "half", - "hashbrown 0.15.2", - "num", -] - -[[package]] -name = "arrow-array" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2262eba4f16c78496adfd559a29fe4b24df6088efc9985a873d58e92be022d5" -dependencies = [ - "ahash 0.8.11", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", + "ahash 0.8.12", + "arrow-buffer", + "arrow-data", + "arrow-schema", "chrono", "chrono-tz", "half", - "hashbrown 0.15.2", + "hashbrown 0.15.4", "num", ] [[package]] name = "arrow-buffer" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b5c681a99606f3316f2a99d9c8b6fa3aad0b1d34d8f6d7a1b471893940219d8" -dependencies = [ - "bytes", - "half", - "num", -] - -[[package]] -name = "arrow-buffer" -version = "54.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "263f4801ff1839ef53ebd06f99a56cecd1dbaf314ec893d93168e2e860e0291c" +checksum = "54295b93beb702ee9a6f6fbced08ad7f4d76ec1c297952d4b83cf68755421d1d" dependencies = [ "bytes", "half", @@ -426,35 +363,15 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365f8527d4f87b133eeb862f9b8093c009d41a210b8f101f91aa2392f61daac" +checksum = "67e8bcb7dc971d779a7280593a1bf0c2743533b8028909073e804552e85e75b5" dependencies = [ - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "arrow-select 53.4.1", - "atoi", - "base64 0.22.1", - "chrono", - "half", - "lexical-core", - "num", - "ryu", -] - -[[package]] -name = "arrow-cast" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4103d88c5b441525ed4ac23153be7458494c2b0c9a11115848fdb9b81f6f886a" -dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", - "arrow-select 54.2.1", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", "atoi", "base64 0.22.1", "chrono", @@ -467,278 +384,148 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30dac4d23ac769300349197b845e0fd18c7f9f15d260d4659ae6b5a9ca06f586" +checksum = "673fd2b5fb57a1754fdbfac425efd7cf54c947ac9950c1cce86b14e248f1c458" dependencies = [ - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-cast 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", + "arrow-array", + "arrow-cast", + "arrow-schema", "chrono", "csv", "csv-core", - "lazy_static", - "lexical-core", - "regex", -] - -[[package]] -name = "arrow-csv" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43d3cb0914486a3cae19a5cad2598e44e225d53157926d0ada03c20521191a65" -dependencies = [ - "arrow-array 54.2.1", - "arrow-cast 54.2.1", - "arrow-schema 54.3.1", - "chrono", - "csv", - "csv-core", - "lazy_static", "regex", ] [[package]] name = "arrow-data" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd962fc3bf7f60705b25bcaa8eb3318b2545aa1d528656525ebdd6a17a6cd6fb" +checksum = "97c22fe3da840039c69e9f61f81e78092ea36d57037b4900151f063615a2f6b4" dependencies = [ - "arrow-buffer 53.4.1", - "arrow-schema 53.4.1", - "half", - "num", -] - -[[package]] -name = "arrow-data" -version = "54.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfdd7d99b4ff618f167e548b2411e5dd2c98c0ddebedd7df433d34c20a4429" -dependencies = [ - "arrow-buffer 54.3.1", - "arrow-schema 54.3.1", + "arrow-buffer", + "arrow-schema", "half", "num", ] [[package]] name = "arrow-flight" -version = "54.2.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7408f2bf3b978eddda272c7699f439760ebc4ac70feca25fefa82c5b8ce808d" +checksum = "6808d235786b721e49e228c44dd94242f2e8b46b7e95b233b0733c46e758bfee" dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-cast 54.2.1", - "arrow-ipc 54.2.1", - "arrow-schema 54.3.1", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-ipc", + "arrow-schema", "base64 0.22.1", "bytes", "futures", "prost 0.13.5", "prost-types 0.13.5", - "tonic 0.12.3", + "tonic 0.13.1", ] [[package]] name = "arrow-ipc" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3527365b24372f9c948f16e53738eb098720eea2093ae73c7af04ac5e30a39b" +checksum = "778de14c5a69aedb27359e3dd06dd5f9c481d5f6ee9fbae912dba332fd64636b" dependencies = [ - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-cast 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "flatbuffers", - "zstd 0.13.2", -] - -[[package]] -name = "arrow-ipc" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ddecdeab02491b1ce88885986e25002a3da34dd349f682c7cfe67bab7cc17b86" -dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", "flatbuffers", "lz4_flex", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] name = "arrow-json" -version = "53.4.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acdec0024749fc0d95e025c0b0266d78613727b3b3a5d4cf8ea47eb6d38afdd1" +checksum = "3860db334fe7b19fcf81f6b56f8d9d95053f3839ffe443d56b5436f7a29a1794" dependencies = [ - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-cast 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-schema", "chrono", "half", - "indexmap 2.9.0", + "indexmap 2.10.0", "lexical-core", - "num", - "serde", - "serde_json", -] - -[[package]] -name = "arrow-json" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d03b9340013413eb84868682ace00a1098c81a5ebc96d279f7ebf9a4cac3c0fd" -dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-cast 54.2.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", - "chrono", - "half", - "indexmap 2.9.0", - "lexical-core", - "num", - "serde", - "serde_json", -] - -[[package]] -name = "arrow-ord" -version = "53.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79af2db0e62a508d34ddf4f76bfd6109b6ecc845257c9cba6f939653668f89ac" -dependencies = [ - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "arrow-select 53.4.1", - "half", - "num", -] - -[[package]] -name = "arrow-ord" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f841bfcc1997ef6ac48ee0305c4dfceb1f7c786fe31e67c1186edf775e1f1160" -dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", - "arrow-select 54.2.1", -] - -[[package]] -name = "arrow-row" -version = "53.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da30e9d10e9c52f09ea0cf15086d6d785c11ae8dcc3ea5f16d402221b6ac7735" -dependencies = [ - "ahash 0.8.11", - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "half", -] - -[[package]] -name = "arrow-row" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1eeb55b0a0a83851aa01f2ca5ee5648f607e8506ba6802577afdda9d75cdedcd" -dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", - "half", -] - -[[package]] -name = "arrow-schema" -version = "53.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35b0f9c0c3582dd55db0f136d3b44bfa0189df07adcf7dc7f2f2e74db0f52eb8" - -[[package]] -name = "arrow-schema" -version = "54.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cfaf5e440be44db5413b75b72c2a87c1f8f0627117d110264048f2969b99e9" -dependencies = [ - "serde", -] - -[[package]] -name = "arrow-select" -version = "53.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92fc337f01635218493c23da81a364daf38c694b05fc20569c3193c11c561984" -dependencies = [ - "ahash 0.8.11", - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "num", -] - -[[package]] -name = "arrow-select" -version = "54.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e2932aece2d0c869dd2125feb9bd1709ef5c445daa3838ac4112dcfa0fda52c" -dependencies = [ - "ahash 0.8.11", - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", - "num", -] - -[[package]] -name = "arrow-string" -version = "53.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d596a9fc25dae556672d5069b090331aca8acb93cae426d8b7dcdf1c558fa0ce" -dependencies = [ - "arrow-array 53.4.1", - "arrow-buffer 53.4.1", - "arrow-data 53.4.1", - "arrow-schema 53.4.1", - "arrow-select 53.4.1", "memchr", "num", - "regex", - "regex-syntax 0.8.5", + "serde", + "serde_json", + "simdutf8", +] + +[[package]] +name = "arrow-ord" +version = "56.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "425fa0b42a39d3ff55160832e7c25553e7f012c3f187def3d70313e7a29ba5d9" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", +] + +[[package]] +name = "arrow-row" +version = "56.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9c9423c9e71abd1b08a7f788fcd203ba2698ac8e72a1f236f1faa1a06a7414" +dependencies = [ + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "half", +] + +[[package]] +name = "arrow-schema" +version = "56.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85fa1babc4a45fdc64a92175ef51ff00eba5ebbc0007962fecf8022ac1c6ce28" +dependencies = [ + "serde", + "serde_json", +] + +[[package]] +name = "arrow-select" +version = "56.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8854d15f1cf5005b4b358abeb60adea17091ff5bdd094dca5d3f73787d81170" +dependencies = [ + "ahash 0.8.12", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "num", ] [[package]] name = "arrow-string" -version = "54.2.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "912e38bd6a7a7714c1d9b61df80315685553b7455e8a6045c27531d8ecd5b458" +checksum = "2c477e8b89e1213d5927a2a84a72c384a9bf4dd0dbf15f9fd66d821aafd9e95e" dependencies = [ - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-data 54.3.1", - "arrow-schema 54.3.1", - "arrow-select 54.2.1", + "arrow-array", + "arrow-buffer", + "arrow-data", + "arrow-schema", + "arrow-select", "memchr", "num", "regex", @@ -756,11 +543,11 @@ dependencies = [ [[package]] name = "async-broadcast" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cd0e2e25ea8e5f7e9df04578dc6cf5c83577fd09b1a46aaf5c85e1c33f2a7e" +checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532" dependencies = [ - "event-listener 5.3.1", + "event-listener 5.4.0", "event-listener-strategy", "futures-core", "pin-project-lite", @@ -809,12 +596,12 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.13" +version = "0.4.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e614738943d3f68c628ae3dbce7c3daffb196665f82f8c8ea6b65de73c79429" +checksum = "06575e6a9673580f52661c92107baabffbf41e2141373441cbcdc47cb733003c" dependencies = [ - "brotli", - "bzip2 0.4.4", + "brotli 7.0.0", + "bzip2 0.5.2", "flate2", "futures-core", "futures-io", @@ -822,8 +609,8 @@ dependencies = [ "pin-project-lite", "tokio", "xz2", - "zstd 0.13.2", - "zstd-safe 7.2.1", + "zstd 0.13.3", + "zstd-safe 7.2.4", ] [[package]] @@ -843,7 +630,7 @@ version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener 5.3.1", + "event-listener 5.4.0", "event-listener-strategy", "pin-project-lite", ] @@ -856,7 +643,7 @@ checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -878,7 +665,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -889,24 +676,24 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.83" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "async-walkdir" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20235b6899dd1cb74a9afac0abf5b4a20c0e500dd6537280f4096e1b9f14da20" +checksum = "37672978ae0febce7516ae0a85b53e6185159a9a28787391eb63fc44ec36037d" dependencies = [ "async-fs", "futures-lite", - "thiserror 1.0.64", + "thiserror 2.0.12", ] [[package]] @@ -962,20 +749,20 @@ dependencies = [ "digest", "notify", "sha1", - "snafu 0.8.5", + "snafu 0.8.6", "sql", "tokio", ] [[package]] name = "auto_impl" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c87f3f15e7794432337fc718554eaa4dc8f04c9677a950ffe366f20a162ae42" +checksum = "ffdcb70bdbc4d478427380519163274ac86e52916e10f0a8889adf0f96d3fee7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -986,9 +773,9 @@ checksum = "7460f7dd8e100147b82a63afca1a20eb6c231ee36b90ba7272e14951cb58af59" [[package]] name = "autocfg" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "autotools" @@ -1012,7 +799,7 @@ dependencies = [ "futures-util", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.32", "itoa", "matchit 0.7.3", "memchr", @@ -1037,7 +824,7 @@ dependencies = [ "axum-core 0.4.5", "bytes", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "itoa", @@ -1048,7 +835,7 @@ dependencies = [ "pin-project-lite", "rustversion", "serde", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower 0.5.2", "tower-layer", "tower-service", @@ -1056,18 +843,18 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d6fd624c75e18b3b4c6b9caf42b1afe24437daaee904069137d8bab077be8b8" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ - "axum-core 0.5.0", + "axum-core 0.5.2", "bytes", "form_urlencoded", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.6.0", "hyper-util", "itoa", "matchit 0.8.4", @@ -1081,7 +868,7 @@ dependencies = [ "serde_json", "serde_path_to_error", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tower 0.5.2", "tower-layer", @@ -1115,32 +902,32 @@ dependencies = [ "async-trait", "bytes", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1362f362fd16024ae199c1970ce98f9661bf5ef94b9808fee734bc3698b733" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", "rustversion", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tower-layer", "tower-service", "tracing", @@ -1148,20 +935,21 @@ dependencies = [ [[package]] name = "axum-extra" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "460fc6f625a1f7705c6cf62d0d070794e94668988b1c38111baeec177c715f7b" +checksum = "45bf463831f5131b7d3c756525b305d40f1185b688565648a92e1392ca35713d" dependencies = [ - "axum 0.8.1", - "axum-core 0.5.0", + "axum 0.8.4", + "axum-core 0.5.2", "bytes", "futures-util", "headers", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", "pin-project-lite", + "rustversion", "serde", "tower 0.5.2", "tower-layer", @@ -1176,7 +964,7 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1185,16 +973,16 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "instant", "rand 0.8.5", ] [[package]] name = "backon" -version = "1.2.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4fa97bb310c33c811334143cf64c5bb2b7b3c06e453db6b095d7061eff8f113" +checksum = "302eaff5357a264a2c42f127ecb8bac761cf99749fc3dc95677e2743991f99e7" dependencies = [ "fastrand", "gloo-timers", @@ -1203,9 +991,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -1261,15 +1049,15 @@ dependencies = [ [[package]] name = "base64ct" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" +checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" [[package]] name = "bcder" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c627747a6774aab38beb35990d88309481378558875a41da1a4b2e373c906ef0" +checksum = "89ffdaa8c6398acd07176317eb6c1f9082869dd1cc3fee7c72c6354866b928cc" dependencies = [ "bytes", "smallvec", @@ -1311,20 +1099,20 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.70.1" +version = "0.72.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +checksum = "4f72209734318d0b619a5e0f5129918b848c416e122a3c4ce054e03cb87b726f" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cexpr", "clang-sys", "itertools 0.13.0", "proc-macro2", "quote", "regex", - "rustc-hash 1.1.0", + "rustc-hash 2.1.1", "shlex", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1350,9 +1138,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" dependencies = [ "serde", ] @@ -1389,9 +1177,9 @@ dependencies = [ [[package]] name = "blake3" -version = "1.5.4" +version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d82033247fd8e890df8f740e407ad4d038debb9eb1f40533fffb32e7d17dc6f7" +checksum = "3888aaa89e4b2a40fca9848e400f6a658a5a3978de7be858e209cafa8be9a4a0" dependencies = [ "arrayref", "arrayvec", @@ -1447,20 +1235,20 @@ version = "3.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "577ae008f2ca11ca7641bd44601002ee5ab49ef0af64846ce1ab6057218a5cc1" dependencies = [ - "darling 0.21.0", + "darling 0.21.1", "ident_case", "prettyplease", "proc-macro2", "quote", "rustversion", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "borsh" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6362ed55def622cddc70a4746a68554d7b687713770de539e59a739b249f8ed" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" dependencies = [ "borsh-derive", "cfg_aliases 0.2.1", @@ -1468,16 +1256,15 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.1" +version = "1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3ef8005764f53cd4dca619f5bf64cafd4664dada50ece25e4d81de54c80cc0b" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" dependencies = [ "once_cell", - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.100", - "syn_derive", + "syn 2.0.104", ] [[package]] @@ -1488,14 +1275,35 @@ checksum = "cc97b8f16f944bba54f0433f07e30be199b6dc2bd25937444bbad560bcea29bd" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", - "brotli-decompressor", + "brotli-decompressor 4.0.3", +] + +[[package]] +name = "brotli" +version = "8.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9991eea70ea4f293524138648e41ee89b0b2b12ddef3b255effa43c8056e0e0d" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", + "brotli-decompressor 5.0.0", ] [[package]] name = "brotli-decompressor" -version = "4.0.1" +version = "4.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a45bd2e4095a8b518033b128020dd4a55aab1c0a381ba4404a472630f4bc362" +checksum = "a334ef7c9e23abf0ce748e8cd309037da93e606ad52eb372e4ce327a0dcfbdfd" +dependencies = [ + "alloc-no-stdlib", + "alloc-stdlib", +] + +[[package]] +name = "brotli-decompressor" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874bb8112abecc98cbd6d81ea4fa7e94fb9449648c93cc89aa40c81c24d7de03" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1503,12 +1311,12 @@ dependencies = [ [[package]] name = "bstr" -version = "1.10.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" +checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" dependencies = [ "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "serde", ] @@ -1529,9 +1337,9 @@ checksum = "40e38929add23cdf8a366df9b0e088953150724bcbe5fc330b0d8eb3b328eec8" [[package]] name = "build-data" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda20fcece9c23f3c3f4c2751a8a5ca9491c05fa7a69920af65953c3b39b7ce4" +checksum = "23084982b6264a75acfd469b97ce0ef9301e154e7af51fec388e695eedf01bc1" dependencies = [ "chrono", "safe-regex", @@ -1539,9 +1347,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "bytecheck" @@ -1567,9 +1375,9 @@ dependencies = [ [[package]] name = "bytemuck" -version = "1.18.0" +version = "1.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" +checksum = "5c76a5792e44e4abe34d3abf15636779261d45a7450612059293d1d2cfc63422" [[package]] name = "byteorder" @@ -1605,6 +1413,15 @@ dependencies = [ "bzip2-sys", ] +[[package]] +name = "bzip2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bea8dcd42434048e4f7a304411d9273a411f647446c1234a65ce0554923f4cff" +dependencies = [ + "libbz2-rs-sys", +] + [[package]] name = "bzip2-sys" version = "0.1.13+1.0.8" @@ -1624,7 +1441,7 @@ dependencies = [ "common-macro", "common-meta", "moka", - "snafu 0.8.5", + "snafu 0.8.6", ] [[package]] @@ -1641,7 +1458,7 @@ checksum = "a1d8af896b707212cd0e99c112a78c9497dd32994192a463ed2f7419d29bd8c6" dependencies = [ "serde", "thiserror 2.0.12", - "toml 0.8.19", + "toml 0.8.23", ] [[package]] @@ -1655,8 +1472,8 @@ name = "catalog" version = "0.17.0" dependencies = [ "api", - "arrow 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-schema", "async-stream", "async-trait", "bytes", @@ -1692,11 +1509,11 @@ dependencies = [ "paste", "prometheus", "promql-parser", - "rand 0.9.0", - "rustc-hash 2.0.0", + "rand 0.9.1", + "rustc-hash 2.1.1", "serde_json", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sql", "store-api", "table", @@ -1751,7 +1568,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" dependencies = [ - "nom", + "nom 7.1.3", ] [[package]] @@ -1765,9 +1582,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" [[package]] name = "cfg_aliases" @@ -1783,11 +1600,11 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "cfgrammar" -version = "0.13.7" +version = "0.13.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6026d8cd82ada8bbcfe337805dd1eb6afdc9e80fa4d57e977b3a36315e0c5525" +checksum = "7fe45e18904af7af10e4312df7c97251e98af98c70f42f1f2587aecfcbee56bf" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "lazy_static", "num-traits", "regex", @@ -1841,9 +1658,9 @@ dependencies = [ [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ "android-tzdata", "iana-time-zone", @@ -1851,28 +1668,28 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "chrono-tz" -version = "0.10.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c6ac4f2c0bf0f44e9161aec9675e1050aa4a530663c4a9e37e108fa948bca9f" +checksum = "efdce149c370f133a071ca8ef6ea340b7b88748ab0810097a9e2976eaa34b4f3" dependencies = [ "chrono", "chrono-tz-build", - "phf 0.11.2", + "phf 0.11.3", ] [[package]] name = "chrono-tz-build" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" +checksum = "8f10f8c9340e31fc120ff885fcdb54a0b48e474bbd77cab557f0c30a3e569402" dependencies = [ "parse-zoneinfo", - "phf_codegen 0.11.2", + "phf_codegen 0.11.3", ] [[package]] @@ -1944,9 +1761,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.19" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7be5744db7978a28d9df86a214130d106a89ce49644cbc4e3f0c22c3fba30615" +checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" dependencies = [ "clap_builder", "clap_derive", @@ -1954,26 +1771,26 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.19" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5fbc17d3ef8278f55b282b2a2e75ae6f6c7d4bb70ed3d0382375104bfafdb4b" +checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" dependencies = [ "anstream", "anstyle", - "clap_lex 0.7.2", + "clap_lex 0.7.5", "strsim 0.11.1", ] [[package]] name = "clap_derive" -version = "4.5.18" +version = "4.5.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" +checksum = "d2c7947ae4cc3d851207c1adb5b5e260ff0cca11446b1d6d1423788e442257ce" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -1987,9 +1804,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.7.2" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" +checksum = "b94f61472cee1439c0b966b47e3aca9ae07e45d070759512cd390ea2bebc6675" [[package]] name = "cli" @@ -2002,7 +1819,7 @@ dependencies = [ "cache", "catalog", "chrono", - "clap 4.5.19", + "clap 4.5.40", "client", "common-base", "common-catalog", @@ -2029,13 +1846,13 @@ dependencies = [ "object-store", "operator", "query", - "rand 0.9.0", - "reqwest 0.12.9", + "rand 0.9.1", + "reqwest 0.12.21", "serde", "serde_json", "servers", "session", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "substrait 0.17.0", "table", @@ -2069,18 +1886,18 @@ dependencies = [ "futures-util", "lazy_static", "moka", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prometheus", "prost 0.13.5", "query", - "rand 0.9.0", + "rand 0.9.1", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "substrait 0.17.0", "substrait 0.37.3", "tokio", "tokio-stream", - "tonic 0.12.3", + "tonic 0.13.1", "tracing", ] @@ -2108,9 +1925,9 @@ dependencies = [ [[package]] name = "cmake" -version = "0.1.51" +version = "0.1.54" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" +checksum = "e7caa3f9de89ddbe2c607f4101924c5abec803763ae9534e4f4d7d8f84aa81f0" dependencies = [ "cc", ] @@ -2125,7 +1942,7 @@ dependencies = [ "cache", "catalog", "chrono", - "clap 4.5.19", + "clap 4.5.40", "cli", "client", "common-base", @@ -2167,16 +1984,16 @@ dependencies = [ "prometheus", "prost 0.13.5", "query", - "rand 0.9.0", + "rand 0.9.1", "regex", - "reqwest 0.12.9", + "reqwest 0.12.21", "rexpect", "serde", "serde_json", "servers", "session", "similar-asserts", - "snafu 0.8.5", + "snafu 0.8.6", "stat", "store-api", "substrait 0.17.0", @@ -2185,8 +2002,8 @@ dependencies = [ "tempfile", "tikv-jemallocator", "tokio", - "toml 0.8.19", - "tonic 0.12.3", + "toml 0.8.23", + "tonic 0.13.1", "tracing-appender", ] @@ -2198,24 +2015,23 @@ checksum = "fe6d2e5af09e8c8ad56c969f2157a3d4238cebc7c55f0a517728c38f7b200f81" dependencies = [ "serde", "termcolor", - "unicode-width", + "unicode-width 0.2.1", ] [[package]] name = "colorchoice" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "comfy-table" -version = "7.1.1" +version = "7.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" +checksum = "4a65ebfec4fb190b6f90e944a817d60499ee0744e582530e2c9900a22e591d9a" dependencies = [ - "strum 0.26.3", - "strum_macros 0.26.4", - "unicode-width", + "unicode-segmentation", + "unicode-width 0.2.1", ] [[package]] @@ -2238,11 +2054,11 @@ dependencies = [ "futures", "paste", "pin-project", - "rand 0.9.0", + "rand 0.9.1", "serde", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", - "toml 0.8.19", + "toml 0.8.23", "zeroize", ] @@ -2269,19 +2085,19 @@ dependencies = [ "serde", "serde_json", "serde_with", - "snafu 0.8.5", + "snafu 0.8.6", "sysinfo", "temp-env", "tempfile", - "toml 0.8.19", + "toml 0.8.23", ] [[package]] name = "common-datasource" version = "0.17.0" dependencies = [ - "arrow 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-schema", "async-compression 0.3.15", "async-trait", "bytes", @@ -2293,24 +2109,22 @@ dependencies = [ "common-telemetry", "common-test-util", "datafusion", + "datafusion-orc", "datatypes", - "derive_builder 0.20.1", "futures", "lazy_static", "object-store", "object_store_opendal", - "orc-rust", + "orc-rust 0.6.3", "parquet", "paste", - "rand 0.9.0", "regex", "serde", - "snafu 0.8.5", + "snafu 0.8.6", "strum 0.27.1", "tokio", "tokio-util", "url", - "uuid", ] [[package]] @@ -2323,7 +2137,7 @@ dependencies = [ "rust_decimal", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", ] [[package]] @@ -2331,10 +2145,10 @@ name = "common-error" version = "0.17.0" dependencies = [ "common-macro", - "http 1.1.0", - "snafu 0.8.5", + "http 1.3.1", + "snafu 0.8.6", "strum 0.27.1", - "tonic 0.12.3", + "tonic 0.13.1", ] [[package]] @@ -2353,7 +2167,7 @@ dependencies = [ "itertools 0.14.0", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "tokio", "tokio-util", @@ -2376,21 +2190,21 @@ dependencies = [ "meta-client", "serde", "session", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", - "tonic 0.12.3", + "tonic 0.13.1", ] [[package]] name = "common-function" version = "0.17.0" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "api", "approx 0.5.1", "arc-swap", - "arrow 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-schema", "async-trait", "bincode", "catalog", @@ -2430,7 +2244,7 @@ dependencies = [ "serde", "serde_json", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sql", "statrs", "store-api", @@ -2449,8 +2263,8 @@ dependencies = [ "common-telemetry", "common-test-util", "common-version", - "hyper 0.14.30", - "reqwest 0.12.9", + "hyper 0.14.32", + "reqwest 0.12.21", "serde", "tempfile", "tokio", @@ -2475,17 +2289,17 @@ dependencies = [ "dashmap", "datatypes", "flatbuffers", - "hyper 1.4.1", + "hyper 1.6.0", "hyper-util", "lazy_static", "prost 0.13.5", - "rand 0.9.0", + "rand 0.9.1", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", "tokio-util", - "tonic 0.12.3", + "tonic 0.13.1", "tower 0.5.2", "vec1", ] @@ -2505,7 +2319,7 @@ dependencies = [ "datatypes", "paste", "prost 0.13.5", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "table", ] @@ -2519,9 +2333,9 @@ dependencies = [ "datatypes", "proc-macro2", "quote", - "snafu 0.8.5", + "snafu 0.8.6", "static_assertions", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -2533,7 +2347,7 @@ dependencies = [ "common-macro", "mappings", "pprof_util", - "snafu 0.8.5", + "snafu 0.8.6", "tempfile", "tikv-jemalloc-ctl", "tikv-jemalloc-sys", @@ -2573,21 +2387,21 @@ dependencies = [ "datatypes", "deadpool", "deadpool-postgres", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "etcd-client", "flexbuffers", "futures", "futures-util", "hex", "humantime-serde", - "hyper 0.14.30", + "hyper 0.14.32", "itertools 0.14.0", "lazy_static", "moka", "object-store", "prometheus", "prost 0.13.5", - "rand 0.9.0", + "rand 0.9.1", "regex", "rskafka", "rustls", @@ -2597,7 +2411,7 @@ dependencies = [ "serde_json", "serde_with", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sqlx", "store-api", "strum 0.27.1", @@ -2605,7 +2419,7 @@ dependencies = [ "tokio", "tokio-postgres", "tokio-postgres-rustls", - "tonic 0.12.3", + "tonic 0.13.1", "tracing", "typetag", "uuid", @@ -2632,7 +2446,7 @@ dependencies = [ "common-macro", "pprof", "prost 0.13.5", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", ] @@ -2656,11 +2470,11 @@ dependencies = [ "futures-util", "humantime-serde", "object-store", - "rand 0.9.0", + "rand 0.9.1", "serde", "serde_json", "smallvec", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", "uuid", ] @@ -2671,7 +2485,7 @@ version = "0.17.0" dependencies = [ "async-trait", "common-procedure", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", ] @@ -2693,8 +2507,8 @@ dependencies = [ "datatypes", "futures-util", "serde", - "snafu 0.8.5", - "sqlparser 0.54.0-greptime", + "snafu 0.8.6", + "sqlparser 0.55.0-greptime", "sqlparser_derive 0.1.1", "statrs", "store-api", @@ -2718,7 +2532,7 @@ dependencies = [ "regex", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", ] @@ -2727,7 +2541,7 @@ name = "common-runtime" version = "0.17.0" dependencies = [ "async-trait", - "clap 4.5.19", + "clap 4.5.40", "common-error", "common-macro", "common-telemetry", @@ -2735,15 +2549,15 @@ dependencies = [ "lazy_static", "num_cpus", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "paste", "pin-project", "prometheus", - "rand 0.9.0", + "rand 0.9.1", "ratelimit", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "tempfile", "tokio", "tokio-metrics", @@ -2775,8 +2589,8 @@ dependencies = [ "hex", "jsonb", "serde_json", - "snafu 0.8.5", - "sqlparser 0.54.0-greptime", + "snafu 0.8.6", + "sqlparser 0.55.0-greptime", ] [[package]] @@ -2796,7 +2610,7 @@ dependencies = [ "opentelemetry-otlp", "opentelemetry-semantic-conventions", "opentelemetry_sdk 0.21.2", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prometheus", "serde", "serde_json", @@ -2817,7 +2631,7 @@ dependencies = [ "common-query", "common-recordbatch", "once_cell", - "rand 0.9.0", + "rand 0.9.1", "tempfile", ] @@ -2825,7 +2639,7 @@ dependencies = [ name = "common-time" version = "0.17.0" dependencies = [ - "arrow 54.2.1", + "arrow", "chrono", "chrono-tz", "common-error", @@ -2833,10 +2647,10 @@ dependencies = [ "humantime", "humantime-serde", "once_cell", - "rand 0.9.0", + "rand 0.9.1", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", ] [[package]] @@ -2868,9 +2682,9 @@ dependencies = [ "serde", "serde_json", "serde_with", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", - "toml 0.8.19", + "toml 0.8.23", ] [[package]] @@ -2914,7 +2728,7 @@ dependencies = [ "async-trait", "json5", "lazy_static", - "nom", + "nom 7.1.3", "pathdiff", "ron", "rust-ini 0.18.0", @@ -2926,14 +2740,14 @@ dependencies = [ [[package]] name = "console" -version = "0.15.8" +version = "0.15.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e1f83fc076bd6dd27517eacdf25fef6c4dfe5f1d7448bafaaf3a26f13b5e4eb" +checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" dependencies = [ "encode_unicode", - "lazy_static", "libc", - "windows-sys 0.52.0", + "once_cell", + "windows-sys 0.59.0", ] [[package]] @@ -2993,25 +2807,25 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "once_cell", "tiny-keccak", ] [[package]] name = "const_format" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" +checksum = "126f97965c8ad46d6d9163268ff28432e8f6a1196a55578867832e3049df63dd" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.33" +version = "0.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" +checksum = "1d57c2eccfb16dbac1f4e61e206105db5820c9d26c3c472bc17c774259ef7744" dependencies = [ "proc-macro2", "quote", @@ -3033,6 +2847,15 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "convert_case" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baaaa0ecca5b51987b9423ccdc971514dd8b0bb7b4060b983d3664dad3f1f89f" +dependencies = [ + "unicode-segmentation", +] + [[package]] name = "core-foundation" version = "0.9.4" @@ -3043,6 +2866,16 @@ dependencies = [ "libc", ] +[[package]] +name = "core-foundation" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -3069,9 +2902,9 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.14" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] @@ -3146,7 +2979,7 @@ dependencies = [ "anes", "cast", "ciborium", - "clap 4.5.19", + "clap 4.5.40", "criterion-plot", "is-terminal", "itertools 0.10.5", @@ -3197,9 +3030,9 @@ dependencies = [ [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -3225,15 +3058,15 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" @@ -3263,9 +3096,9 @@ dependencies = [ [[package]] name = "csv" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" +checksum = "acdc4883a9c96732e4733212c01447ebd805833b7275a73ca3ee080fd77afdaf" dependencies = [ "csv-core", "itoa", @@ -3275,9 +3108,9 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.11" +version = "0.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" +checksum = "7d02f3b0da4c6504f86e9cd789d8dbafab48c2321be74e9987593de5a894d93d" dependencies = [ "memchr", ] @@ -3303,22 +3136,22 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ - "darling_core 0.20.10", - "darling_macro 0.20.10", + "darling_core 0.20.11", + "darling_macro 0.20.11", ] [[package]] name = "darling" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a79c4acb1fd5fa3d9304be4c76e031c54d2e92d172a393e24b19a14fe8532fe9" +checksum = "d6b136475da5ef7b6ac596c0e956e37bad51b85b987ff3d5e230e964936736b2" dependencies = [ - "darling_core 0.21.0", - "darling_macro 0.21.0", + "darling_core 0.21.1", + "darling_macro 0.21.1", ] [[package]] @@ -3337,30 +3170,30 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "darling_core" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74875de90daf30eb59609910b84d4d368103aaec4c924824c6799b28f77d6a1d" +checksum = "b44ad32f92b75fb438b04b68547e521a548be8acc339a6dacc4a7121488f53e6" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", "strsim 0.11.1", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -3376,24 +3209,24 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ - "darling_core 0.20.10", + "darling_core 0.20.11", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "darling_macro" -version = "0.21.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79f8e61677d5df9167cd85265f8e5f64b215cdea3fb55eebc3e622e44c7a146" +checksum = "2b5be8a7a562d315a5b92a630c30cec6bcf663e6673f00fbb69cca66a6f521b9" dependencies = [ - "darling_core 0.21.0", + "darling_core 0.21.1", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -3413,29 +3246,32 @@ dependencies = [ "hashbrown 0.14.5", "lock_api", "once_cell", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.11", ] [[package]] name = "datafusion" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", - "arrow-array 54.2.1", - "arrow-ipc 54.2.1", - "arrow-schema 54.3.1", - "async-compression 0.4.13", + "arrow", + "arrow-ipc", + "arrow-schema", "async-trait", "bytes", - "bzip2 0.5.2", + "bzip2 0.6.0", "chrono", "datafusion-catalog", "datafusion-catalog-listing", "datafusion-common", "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-datasource-csv", + "datafusion-datasource-json", + "datafusion-datasource-parquet", "datafusion-execution", "datafusion-expr", + "datafusion-expr-common", "datafusion-functions", "datafusion-functions-aggregate", "datafusion-functions-nested", @@ -3446,133 +3282,255 @@ dependencies = [ "datafusion-physical-expr-common", "datafusion-physical-optimizer", "datafusion-physical-plan", + "datafusion-session", "datafusion-sql", "flate2", "futures", - "glob", + "hex", "itertools 0.14.0", "log", "object_store", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "parquet", - "rand 0.8.5", + "rand 0.9.1", "regex", - "sqlparser 0.54.0", + "sqlparser 0.55.0", "tempfile", "tokio", - "tokio-util", "url", "uuid", "xz2", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] name = "datafusion-catalog" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", + "arrow", "async-trait", "dashmap", "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", "datafusion-execution", "datafusion-expr", + "datafusion-physical-expr", "datafusion-physical-plan", + "datafusion-session", "datafusion-sql", "futures", "itertools 0.14.0", "log", - "parking_lot 0.12.3", - "sqlparser 0.54.0", + "object_store", + "parking_lot 0.12.4", + "tokio", ] [[package]] name = "datafusion-catalog-listing" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", - "arrow-schema 54.3.1", - "chrono", + "arrow", + "async-trait", "datafusion-catalog", "datafusion-common", + "datafusion-datasource", "datafusion-execution", "datafusion-expr", "datafusion-physical-expr", "datafusion-physical-expr-common", "datafusion-physical-plan", + "datafusion-session", "futures", - "glob", - "itertools 0.14.0", "log", "object_store", - "url", + "tokio", ] [[package]] name = "datafusion-common" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "ahash 0.8.11", - "arrow 54.2.1", - "arrow-array 54.2.1", - "arrow-ipc 54.2.1", - "arrow-schema 54.3.1", + "ahash 0.8.12", + "arrow", + "arrow-ipc", "base64 0.22.1", + "chrono", "half", "hashbrown 0.14.5", - "indexmap 2.9.0", + "hex", + "indexmap 2.10.0", "libc", "log", "object_store", "parquet", "paste", "recursive", - "sqlparser 0.54.0", + "sqlparser 0.55.0", "tokio", "web-time 1.1.0", ] [[package]] name = "datafusion-common-runtime" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ + "futures", "log", "tokio", ] +[[package]] +name = "datafusion-datasource" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" +dependencies = [ + "arrow", + "async-compression 0.4.19", + "async-trait", + "bytes", + "bzip2 0.6.0", + "chrono", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", + "flate2", + "futures", + "glob", + "itertools 0.14.0", + "log", + "object_store", + "parquet", + "rand 0.9.1", + "tempfile", + "tokio", + "tokio-util", + "url", + "xz2", + "zstd 0.13.3", +] + +[[package]] +name = "datafusion-datasource-csv" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" +dependencies = [ + "arrow", + "async-trait", + "bytes", + "datafusion-catalog", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", + "futures", + "object_store", + "regex", + "tokio", +] + +[[package]] +name = "datafusion-datasource-json" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" +dependencies = [ + "arrow", + "async-trait", + "bytes", + "datafusion-catalog", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "datafusion-session", + "futures", + "object_store", + "serde_json", + "tokio", +] + +[[package]] +name = "datafusion-datasource-parquet" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" +dependencies = [ + "arrow", + "async-trait", + "bytes", + "datafusion-catalog", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-datasource", + "datafusion-execution", + "datafusion-expr", + "datafusion-functions-aggregate", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-optimizer", + "datafusion-physical-plan", + "datafusion-pruning", + "datafusion-session", + "futures", + "hex", + "itertools 0.14.0", + "log", + "object_store", + "parking_lot 0.12.4", + "parquet", + "rand 0.9.1", + "tokio", +] + [[package]] name = "datafusion-doc" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" [[package]] name = "datafusion-execution" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", + "arrow", "dashmap", "datafusion-common", "datafusion-expr", "futures", "log", "object_store", - "parking_lot 0.12.3", - "rand 0.8.5", + "parking_lot 0.12.4", + "parquet", + "rand 0.9.1", "tempfile", "url", ] [[package]] name = "datafusion-expr" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", + "arrow", + "async-trait", "chrono", "datafusion-common", "datafusion-doc", @@ -3580,31 +3538,32 @@ dependencies = [ "datafusion-functions-aggregate-common", "datafusion-functions-window-common", "datafusion-physical-expr-common", - "indexmap 2.9.0", + "indexmap 2.10.0", "paste", "recursive", "serde_json", - "sqlparser 0.54.0", + "sqlparser 0.55.0", ] [[package]] name = "datafusion-expr-common" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", + "arrow", "datafusion-common", + "indexmap 2.10.0", "itertools 0.14.0", "paste", ] [[package]] name = "datafusion-functions" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", - "arrow-buffer 54.3.1", + "arrow", + "arrow-buffer", "base64 0.22.1", "blake2", "blake3", @@ -3615,12 +3574,11 @@ dependencies = [ "datafusion-expr", "datafusion-expr-common", "datafusion-macros", - "hashbrown 0.14.5", "hex", "itertools 0.14.0", "log", "md-5", - "rand 0.8.5", + "rand 0.9.1", "regex", "sha2", "unicode-segmentation", @@ -3629,12 +3587,11 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "ahash 0.8.11", - "arrow 54.2.1", - "arrow-schema 54.3.1", + "ahash 0.8.12", + "arrow", "datafusion-common", "datafusion-doc", "datafusion-execution", @@ -3650,11 +3607,11 @@ dependencies = [ [[package]] name = "datafusion-functions-aggregate-common" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "ahash 0.8.11", - "arrow 54.2.1", + "ahash 0.8.12", + "arrow", "datafusion-common", "datafusion-expr-common", "datafusion-physical-expr-common", @@ -3662,19 +3619,18 @@ dependencies = [ [[package]] name = "datafusion-functions-nested" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", - "arrow-array 54.2.1", - "arrow-ord 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-ord", "datafusion-common", "datafusion-doc", "datafusion-execution", "datafusion-expr", "datafusion-functions", "datafusion-functions-aggregate", + "datafusion-functions-aggregate-common", "datafusion-macros", "datafusion-physical-expr-common", "itertools 0.14.0", @@ -3684,24 +3640,25 @@ dependencies = [ [[package]] name = "datafusion-functions-table" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", + "arrow", "async-trait", "datafusion-catalog", "datafusion-common", "datafusion-expr", "datafusion-physical-plan", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "paste", ] [[package]] name = "datafusion-functions-window" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ + "arrow", "datafusion-common", "datafusion-doc", "datafusion-expr", @@ -3715,8 +3672,8 @@ dependencies = [ [[package]] name = "datafusion-functions-window-common" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ "datafusion-common", "datafusion-physical-expr-common", @@ -3724,25 +3681,26 @@ dependencies = [ [[package]] name = "datafusion-macros" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ "datafusion-expr", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "datafusion-optimizer" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", + "arrow", "chrono", "datafusion-common", "datafusion-expr", + "datafusion-expr-common", "datafusion-physical-expr", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", "log", "recursive", @@ -3751,14 +3709,29 @@ dependencies = [ ] [[package]] -name = "datafusion-physical-expr" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +name = "datafusion-orc" +version = "0.4.1" +source = "git+https://github.com/GreptimeTeam/datafusion-orc?rev=a0a5f902158f153119316eaeec868cff3fc8a99d#a0a5f902158f153119316eaeec868cff3fc8a99d" dependencies = [ - "ahash 0.8.11", - "arrow 54.2.1", - "arrow-array 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "async-trait", + "bytes", + "datafusion", + "datafusion-datasource", + "futures", + "futures-util", + "object_store", + "orc-rust 0.6.0", + "tokio", +] + +[[package]] +name = "datafusion-physical-expr" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" +dependencies = [ + "ahash 0.8.12", + "arrow", "datafusion-common", "datafusion-expr", "datafusion-expr-common", @@ -3766,20 +3739,20 @@ dependencies = [ "datafusion-physical-expr-common", "half", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", "log", "paste", - "petgraph 0.7.1", + "petgraph 0.8.2", ] [[package]] name = "datafusion-physical-expr-common" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "ahash 0.8.11", - "arrow 54.2.1", + "ahash 0.8.12", + "arrow", "datafusion-common", "datafusion-expr-common", "hashbrown 0.14.5", @@ -3788,11 +3761,10 @@ dependencies = [ [[package]] name = "datafusion-physical-optimizer" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", - "arrow-schema 54.3.1", + "arrow", "datafusion-common", "datafusion-execution", "datafusion-expr", @@ -3800,65 +3772,102 @@ dependencies = [ "datafusion-physical-expr", "datafusion-physical-expr-common", "datafusion-physical-plan", - "futures", + "datafusion-pruning", "itertools 0.14.0", "log", "recursive", - "url", ] [[package]] name = "datafusion-physical-plan" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "ahash 0.8.11", - "arrow 54.2.1", - "arrow-array 54.2.1", - "arrow-ord 54.2.1", - "arrow-schema 54.3.1", + "ahash 0.8.12", + "arrow", + "arrow-ord", + "arrow-schema", "async-trait", "chrono", "datafusion-common", "datafusion-common-runtime", "datafusion-execution", "datafusion-expr", + "datafusion-functions-aggregate-common", "datafusion-functions-window-common", "datafusion-physical-expr", "datafusion-physical-expr-common", "futures", "half", "hashbrown 0.14.5", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.14.0", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project-lite", "tokio", ] [[package]] -name = "datafusion-sql" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +name = "datafusion-pruning" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ - "arrow 54.2.1", - "arrow-array 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-schema", + "datafusion-common", + "datafusion-datasource", + "datafusion-expr-common", + "datafusion-physical-expr", + "datafusion-physical-expr-common", + "datafusion-physical-plan", + "itertools 0.14.0", + "log", +] + +[[package]] +name = "datafusion-session" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" +dependencies = [ + "arrow", + "async-trait", + "dashmap", + "datafusion-common", + "datafusion-common-runtime", + "datafusion-execution", + "datafusion-expr", + "datafusion-physical-expr", + "datafusion-physical-plan", + "datafusion-sql", + "futures", + "itertools 0.14.0", + "log", + "object_store", + "parking_lot 0.12.4", + "tokio", +] + +[[package]] +name = "datafusion-sql" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" +dependencies = [ + "arrow", "bigdecimal 0.4.8", "datafusion-common", "datafusion-expr", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "recursive", "regex", - "sqlparser 0.54.0", + "sqlparser 0.55.0", ] [[package]] name = "datafusion-substrait" -version = "45.0.0" -source = "git+https://github.com/waynexia/arrow-datafusion.git?rev=12c0381babd52c681043957e9d6ee083a03f7646#12c0381babd52c681043957e9d6ee083a03f7646" +version = "49.0.0" +source = "git+https://github.com/GreptimeTeam/datafusion.git?rev=7d5214512740b4dfb742b6b3d91ed9affcc2c9d0#7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" dependencies = [ "async-recursion", "async-trait", @@ -3868,7 +3877,8 @@ dependencies = [ "object_store", "pbjson-types", "prost 0.13.5", - "substrait 0.53.2", + "substrait 0.58.0", + "tokio", "url", ] @@ -3920,18 +3930,18 @@ dependencies = [ "prometheus", "prost 0.13.5", "query", - "reqwest 0.12.9", + "reqwest 0.12.21", "serde", "serde_json", "servers", "session", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "substrait 0.17.0", "table", "tokio", - "toml 0.8.19", - "tonic 0.12.3", + "toml 0.8.23", + "tonic 0.13.1", "tracing", ] @@ -3939,9 +3949,9 @@ dependencies = [ name = "datatypes" version = "0.17.0" dependencies = [ - "arrow 54.2.1", - "arrow-array 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-array", + "arrow-schema", "base64 0.22.1", "common-base", "common-decimal", @@ -3955,12 +3965,12 @@ dependencies = [ "jsonb", "num", "num-traits", - "ordered-float 4.3.0", + "ordered-float 4.6.0", "paste", "serde", "serde_json", - "snafu 0.8.5", - "sqlparser 0.54.0-greptime", + "snafu 0.8.6", + "sqlparser 0.55.0-greptime", "sqlparser_derive 0.1.1", ] @@ -3992,7 +4002,7 @@ checksum = "3d697d376cbfa018c23eb4caab1fd1883dd9c906a8c034e8d9a3cb06a7e0bef9" dependencies = [ "async-trait", "deadpool", - "getrandom 0.2.15", + "getrandom 0.2.16", "tokio", "tokio-postgres", "tracing", @@ -4018,18 +4028,18 @@ dependencies = [ [[package]] name = "delta-encoding" -version = "0.4.0" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f8513a5eeb3d7b9149563409dc4ab6fd9de5767fd285af5b4d0ee1b778fbce0" +checksum = "cabe72c7de5725dcd4597e7d2bc8a4b7a4698879481607385fbc50a23203eeb9" dependencies = [ "num-traits", ] [[package]] name = "der" -version = "0.7.9" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f55bf8e7b65898637379c1b74eb1551107c8294ed26d855ceb9fd1a09cfc9bc0" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" dependencies = [ "const-oid", "pem-rfc7468", @@ -4038,9 +4048,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", "serde", @@ -4065,18 +4075,18 @@ checksum = "2cdc8d50f426189eef89dac62fabfa0abb27d5cc008f25bf4156a0203325becc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "derive_arbitrary" -version = "1.3.2" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" +checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -4090,11 +4100,11 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd33f37ee6a119146a1781d3356a7c26028f83d779b2e04ecd45fdc75c76877b" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ - "derive_builder_macro 0.20.1", + "derive_builder_macro 0.20.2", ] [[package]] @@ -4111,14 +4121,14 @@ dependencies = [ [[package]] name = "derive_builder_core" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7431fa049613920234f22c47fdc33e6cf3ee83067091ea4277a3f8c4587aae38" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ - "darling 0.20.10", + "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -4133,12 +4143,12 @@ dependencies = [ [[package]] name = "derive_builder_macro" -version = "0.20.1" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ - "derive_builder_core 0.20.1", - "syn 2.0.100", + "derive_builder_core 0.20.2", + "syn 2.0.104", ] [[package]] @@ -4158,19 +4168,19 @@ checksum = "cb7330aeadfbe296029522e6c40f315320aba36fc43a5b3632f3795348f3bd22" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "unicode-xid", ] [[package]] name = "derive_utils" -version = "0.14.2" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "65f152f4b8559c4da5d574bafc7af85454d706b4c5fe8b530d508cacbb6807ea" +checksum = "ccfae181bab5ab6c5478b2ccb69e4c68a02f8c3ec72f6616bfec9dbc599d2ee0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -4183,7 +4193,7 @@ dependencies = [ "byteorder", "bytes", "futures", - "getrandom 0.2.15", + "getrandom 0.2.16", "itertools 0.13.0", "lattices", "pusherator", @@ -4229,7 +4239,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -4255,7 +4265,7 @@ checksum = "e5766087c2235fec47fafa4cfecc81e494ee679d0fd4a59887ea0919bfb0e4fc" dependencies = [ "cfg-if", "libc", - "socket2", + "socket2 0.5.10", "windows-sys 0.48.0", ] @@ -4304,7 +4314,7 @@ checksum = "0e197fdfd2cdb5fdeb7f8ddcf3aed5d5d04ecde2890d448b14ffb716f7376b70" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -4333,23 +4343,23 @@ checksum = "ea8a8b81cacc08888170eef4d13b775126db426d0b348bee9d18c2c1eaf123cf" [[package]] name = "duration-str" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "709d653e7c92498eb29fb86a2a6f0f3502b97530f33aedb32ef848d4d28b31a3" +checksum = "f88959de2d447fd3eddcf1909d1f19fe084e27a056a6904203dc5d8b9e771c1e" dependencies = [ "chrono", "rust_decimal", "serde", - "thiserror 1.0.64", + "thiserror 2.0.12", "time", - "winnow 0.6.20", + "winnow 0.6.26", ] [[package]] name = "dyn-clone" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" +checksum = "1c7a8fb8a9fbf66c1f703fe16184d10ca0ee9d23be5b4436400408ba54a95005" [[package]] name = "dyn-fmt" @@ -4390,9 +4400,9 @@ dependencies = [ [[package]] name = "encode_unicode" -version = "0.3.6" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a357d28ed41a50f9c765dbfe56cbc04a64e53e5fc58ba79fbc34c10ef3df831f" +checksum = "34aa73646ffb006b8f5147f3dc182bd4bcb190227ce861fc4a4844bf8e3cb2c0" [[package]] name = "encoding_rs" @@ -4412,7 +4422,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -4424,7 +4434,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -4448,35 +4458,35 @@ dependencies = [ [[package]] name = "equator" -version = "0.2.2" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c35da53b5a021d2484a7cc49b2ac7f2d840f8236a286f84202369bd338d761ea" +checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" dependencies = [ "equator-macro", ] [[package]] name = "equator-macro" -version = "0.2.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf679796c0322556351f287a51b49e48f7c4986e727b5dd78c972d30e2e16cc" +checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "equivalent" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" [[package]] name = "erased-serde" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24e2389d65ab4fab27dc2a5de7b191e1f6617d1f1c8855c0dc569c94a4cbb18d" +checksum = "e004d887f51fcb9fef17317a2f3525c887d8aa3f4f50fed920816a688284a5b7" dependencies = [ "serde", "typeid", @@ -4484,27 +4494,26 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.60.2", ] [[package]] name = "etcd-client" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39bde3ce50a626efeb1caa9ab1083972d178bebb55ca627639c8ded507dfcbde" +version = "0.15.0" +source = "git+https://github.com/GreptimeTeam/etcd-client?rev=f62df834f0cffda355eba96691fe1a9a332b75a7#f62df834f0cffda355eba96691fe1a9a332b75a7" dependencies = [ - "http 1.1.0", + "http 1.3.1", "prost 0.13.5", "tokio", "tokio-stream", - "tonic 0.12.3", - "tonic-build 0.12.3", - "tower 0.4.13", + "tonic 0.13.1", + "tonic-build 0.13.1", + "tower 0.5.2", "tower-service", ] @@ -4527,9 +4536,9 @@ checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" [[package]] name = "event-listener" -version = "5.3.1" +version = "5.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" dependencies = [ "concurrent-queue", "parking", @@ -4538,11 +4547,11 @@ dependencies = [ [[package]] name = "event-listener-strategy" -version = "0.5.2" +version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +checksum = "8be9f3dfaaffdae2972880079a491a1a8bb7cbed0b8dd7a347f668b4150a3b93" dependencies = [ - "event-listener 5.3.1", + "event-listener 5.4.0", "pin-project-lite", ] @@ -4576,7 +4585,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6e24cb5a94bcae1e5408b0effca5cd7172ea3c5755049c5f3af4cd283a165298" dependencies = [ "bit-set", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -4592,23 +4601,23 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b679f25009b51b71506296f95fb6362ba7d0151172fa7373a8d1611b8bc5d10f" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "rand 0.8.5", - "siphasher 1.0.1", + "siphasher", "wide", ] [[package]] name = "fastdivide" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59668941c55e5c186b8b58c391629af56774ec768f73c08bbcd56f09348eb00b" +checksum = "9afc2bd4d5a73106dd53d10d73d3401c2f32730ba2c0b93ddb888a8983680471" [[package]] name = "fastrand" -version = "2.1.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "file-engine" @@ -4628,13 +4637,14 @@ dependencies = [ "common-time", "datafusion", "datafusion-expr", + "datafusion-orc", "datatypes", "futures", "object-store", "object_store_opendal", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "table", "tokio", @@ -4676,19 +4686,13 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" -[[package]] -name = "flagset" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7ac824320a75a52197e8f2d787f6a38b6718bb6897a35142d749af3c0e8f4fe" - [[package]] name = "flatbuffers" -version = "24.12.23" +version = "25.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f1baf0dbf96932ec9a3038d57900329c015b0bfb7b63d904f3bc27e2b02a096" +checksum = "1045398c1bfd89168b5fd3f1fc11f6e70b34f6f66300c87d44d3de849463abf1" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.1", "rustc_version", ] @@ -4752,8 +4756,8 @@ name = "flow" version = "0.17.0" dependencies = [ "api", - "arrow 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-schema", "async-recursion", "async-trait", "auth", @@ -4792,12 +4796,12 @@ dependencies = [ "futures", "get-size2", "greptime-proto", - "http 1.1.0", + "http 1.3.1", "humantime-serde", "itertools 0.14.0", "lazy_static", "meta-client", - "nom", + "nom 7.1.3", "num-traits", "num_cpus", "operator", @@ -4806,20 +4810,20 @@ dependencies = [ "prometheus", "prost 0.13.5", "query", - "rand 0.9.0", + "rand 0.9.1", "serde", "serde_json", "servers", "session", "smallvec", - "snafu 0.8.5", + "snafu 0.8.6", "sql", "store-api", "strum 0.27.1", "substrait 0.17.0", "table", "tokio", - "tonic 0.12.3", + "tonic 0.13.1", ] [[package]] @@ -4850,9 +4854,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" [[package]] name = "form_urlencoded" @@ -4865,9 +4869,9 @@ dependencies = [ [[package]] name = "fragile" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c2141d6d6c8512188a7891b4b01590a45f6dac67afb4f255c4124dbb86d4eaa" +checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" [[package]] name = "frontend" @@ -4924,22 +4928,22 @@ dependencies = [ "promql-parser", "prost 0.13.5", "query", - "rand 0.9.0", + "rand 0.9.1", "serde", "serde_json", "servers", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sql", - "sqlparser 0.54.0-greptime", + "sqlparser 0.55.0-greptime", "store-api", "strfmt", "substrait 0.17.0", "table", "tokio", "tokio-util", - "toml 0.8.19", - "tonic 0.12.3", + "toml 0.8.23", + "tonic 0.13.1", "tower 0.5.2", "tracing", "uuid", @@ -4947,9 +4951,9 @@ dependencies = [ [[package]] name = "frunk" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "874b6a17738fc273ec753618bac60ddaeac48cb1d7684c3e7bd472e57a28b817" +checksum = "28aef0f9aa070bce60767c12ba9cb41efeaf1a2bc6427f87b7d83f11239a16d7" dependencies = [ "frunk_core", "frunk_derives", @@ -4959,46 +4963,46 @@ dependencies = [ [[package]] name = "frunk_core" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3529a07095650187788833d585c219761114005d5976185760cf794d265b6a5c" +checksum = "476eeaa382e3462b84da5d6ba3da97b5786823c2d0d3a0d04ef088d073da225c" dependencies = [ "serde", ] [[package]] name = "frunk_derives" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e99b8b3c28ae0e84b604c75f721c21dc77afb3706076af5e8216d15fd1deaae3" +checksum = "a0b4095fc99e1d858e5b8c7125d2638372ec85aa0fe6c807105cf10b0265ca6c" dependencies = [ "frunk_proc_macro_helpers", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "frunk_proc_macro_helpers" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05a956ef36c377977e512e227dcad20f68c2786ac7a54dacece3746046fea5ce" +checksum = "1952b802269f2db12ab7c0bd328d0ae8feaabf19f352a7b0af7bb0c5693abfce" dependencies = [ "frunk_core", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "frunk_proc_macros" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67e86c2c9183662713fea27ea527aad20fb15fee635a71081ff91bf93df4dc51" +checksum = "3462f590fa236005bd7ca4847f81438bd6fe0febd4d04e11968d4c2e96437e78" dependencies = [ "frunk_core", "frunk_proc_macro_helpers", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -5017,7 +5021,7 @@ version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f7e180ac76c23b45e767bd7ae9579bc0bb458618c4bc71835926e098e61d15f8" dependencies = [ - "rustix", + "rustix 0.38.44", "windows-sys 0.52.0", ] @@ -5044,9 +5048,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -5059,9 +5063,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -5069,15 +5073,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-executor" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" dependencies = [ "futures-core", "futures-task", @@ -5092,20 +5096,20 @@ checksum = "1d930c203dd0b6ff06e0201a4a2fe9149b43c684fd4420555b26d21b1a02956f" dependencies = [ "futures-core", "lock_api", - "parking_lot 0.12.3", + "parking_lot 0.12.4", ] [[package]] name = "futures-io" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.3.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" +checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" dependencies = [ "fastrand", "futures-core", @@ -5116,26 +5120,26 @@ dependencies = [ [[package]] name = "futures-macro" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "futures-sink" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-timer" @@ -5145,9 +5149,9 @@ checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" [[package]] name = "futures-util" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-channel", "futures-core", @@ -5172,15 +5176,16 @@ dependencies = [ [[package]] name = "generator" -version = "0.8.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6bd114ceda131d3b1d665eba35788690ad37f5916457286b32ab6fd3c438dd" +checksum = "d18470a76cb7f8ff746cf1f7470914f900252ec36bbc40b569d74b1258446827" dependencies = [ + "cc", "cfg-if", "libc", "log", "rustversion", - "windows 0.58.0", + "windows 0.61.3", ] [[package]] @@ -5196,9 +5201,9 @@ dependencies = [ [[package]] name = "geo" -version = "0.29.0" +version = "0.29.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81d088357a9cc60cec8253b3578f6834b4a3aa20edb55f5d1c030c36d8143f11" +checksum = "34f0e6e028c581e82e6822a68869514e94c25e7f8ea669a2d8595bdf7461ccc5" dependencies = [ "earcutr", "float_next_after", @@ -5214,21 +5219,22 @@ dependencies = [ [[package]] name = "geo-types" -version = "0.7.13" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff16065e5720f376fbced200a5ae0f47ace85fd70b7e54269790281353b6d61" +checksum = "62ddb1950450d67efee2bbc5e429c68d052a822de3aad010d28b351fbb705224" dependencies = [ "approx 0.5.1", "num-traits", + "rayon", "rstar", "serde", ] [[package]] name = "geographiclib-rs" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6e5ed84f8089c70234b0a8e0aedb6dc733671612ddc0d37c6066052f9781960" +checksum = "f611040a2bb37eaa29a78a128d1e92a378a03e0b6e66ae27398d42b1ba9a7841" dependencies = [ "libm", ] @@ -5245,37 +5251,37 @@ dependencies = [ [[package]] name = "get-size2" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "159c430715e540d2198fa981d39cd45563ccc60900de187f5b152b33b1cb408e" +checksum = "3b5034f0cabe33ffe2b0c193e283568fb0ebe93fe93f05b424ed1b751d2cf42b" [[package]] name = "getopts" -version = "0.2.21" +version = "0.2.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14dbbfd5c71d70241ecf9e6f13737f7b5ce823821063188d7e46c41d371eebd5" +checksum = "cba6ae63eb948698e300f645f87c70f76630d505f23b8907cf1e193ee85048c1" dependencies = [ - "unicode-width", + "unicode-width 0.2.1", ] [[package]] name = "getrandom" -version = "0.2.15" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" dependencies = [ "cfg-if", "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", "js-sys", @@ -5287,15 +5293,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.31.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32085ea23f3234fc7846555e85283ba4de91e21016dc0455a16286d87a292d64" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "gloo-timers" @@ -5312,15 +5318,15 @@ dependencies = [ [[package]] name = "greptime-proto" version = "0.1.0" -source = "git+https://github.com/GreptimeTeam/greptime-proto.git?rev=9edc8c4d2a7e3c7d8e4982a6af94426da4057687#9edc8c4d2a7e3c7d8e4982a6af94426da4057687" +source = "git+https://github.com/GreptimeTeam/greptime-proto.git?rev=03007c30a2d2bf1acb4374cf5e92df9b0bd8844e#03007c30a2d2bf1acb4374cf5e92df9b0bd8844e" dependencies = [ "prost 0.13.5", "serde", "serde_json", "strum 0.25.0", "strum_macros 0.25.3", - "tonic 0.12.3", - "tonic-build 0.12.3", + "tonic 0.13.1", + "tonic-build 0.13.1", ] [[package]] @@ -5345,7 +5351,7 @@ dependencies = [ "futures-sink", "futures-util", "http 0.2.12", - "indexmap 2.9.0", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -5354,17 +5360,17 @@ dependencies = [ [[package]] name = "h2" -version = "0.4.7" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccae279728d634d083c00f6099cb58f01cc99c145b84b8be2f6c74618d79922e" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.1.0", - "indexmap 2.9.0", + "http 1.3.1", + "indexmap 2.10.0", "slab", "tokio", "tokio-util", @@ -5377,7 +5383,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0de3592e1f699692aa0525c42ff7879ec3ee7e36329af20967bc910a1cdc39c7" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "either", "float_eq", "h3o-bit", @@ -5392,9 +5398,9 @@ checksum = "6fb45e8060378c0353781abf67e1917b545a6b710d0342d85b70c125af7ef320" [[package]] name = "half" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" +checksum = "459196ed295495a68f7d7fe1d84f6c4b7ff0e21fe3017b2f283c6fac3ad803c9" dependencies = [ "cfg-if", "crunchy", @@ -5407,7 +5413,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa2c385c6df70fd180bbb673d93039dbd2cd34e41d782600bdf6e1ca7bce39aa" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.4", "serde", ] @@ -5435,15 +5441,15 @@ version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "allocator-api2", ] [[package]] name = "hashbrown" -version = "0.15.2" +version = "0.15.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" dependencies = [ "allocator-api2", "equivalent", @@ -5456,7 +5462,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7382cf6263419f2d8df38c55d7da83da5c18aef87fc7a7fc1fb1e344edfe14c1" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.4", ] [[package]] @@ -5468,20 +5474,20 @@ dependencies = [ "base64 0.21.7", "byteorder", "flate2", - "nom", + "nom 7.1.3", "num-traits", ] [[package]] name = "headers" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "322106e6bd0cba2d5ead589ddb8150a13d7c4217cf80d7c4f682ca994ccc6aa9" +checksum = "b3314d5adb5d94bcdf56771f2e50dbbc80bb4bdf88967526706205ac9eff24eb" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "bytes", "headers-core", - "http 1.1.0", + "http 1.3.1", "httpdate", "mime", "sha1", @@ -5493,7 +5499,7 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "54b4a22553d4242c49fddb9ba998a99962b5cc6f22cb5a3482bec22522403ce4" dependencies = [ - "http 1.1.0", + "http 1.3.1", ] [[package]] @@ -5529,15 +5535,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" - -[[package]] -name = "hermit-abi" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] name = "hex" @@ -5565,11 +5565,11 @@ dependencies = [ [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -5613,9 +5613,9 @@ dependencies = [ [[package]] name = "http" -version = "1.1.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -5640,18 +5640,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" dependencies = [ "bytes", - "http 1.1.0", + "http 1.3.1", ] [[package]] name = "http-body-util" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" dependencies = [ "bytes", - "futures-util", - "http 1.1.0", + "futures-core", + "http 1.3.1", "http-body 1.0.1", "pin-project-lite", ] @@ -5664,9 +5664,9 @@ checksum = "9171a2ea8a68358193d15dd5d70c1c10a2afc3e7e4c5bc92bc9f025cebd7359c" [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" @@ -5676,9 +5676,9 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "human-panic" -version = "2.0.1" +version = "2.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c5a08ed290eac04006e21e63d32e90086b6182c7cd0452d10f4264def1fec9a" +checksum = "80b84a66a325082740043a6c28bbea400c129eac0d3a27673a1de971e44bf1f7" dependencies = [ "anstream", "anstyle", @@ -5686,15 +5686,15 @@ dependencies = [ "os_info", "serde", "serde_derive", - "toml 0.8.19", + "toml 0.8.23", "uuid", ] [[package]] name = "humantime" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" +checksum = "9b112acc8b3adf4b107a8ec20977da0273a8c386765a3ec0229bd500a1443f9f" [[package]] name = "humantime-serde" @@ -5708,9 +5708,9 @@ dependencies = [ [[package]] name = "hyper" -version = "0.14.30" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a152ddd61dfaec7273fe8419ab357f33aee0d914c5f4efbf0d96fa749eea5ec9" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", @@ -5723,7 +5723,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -5732,15 +5732,15 @@ dependencies = [ [[package]] name = "hyper" -version = "1.4.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" dependencies = [ "bytes", "futures-channel", "futures-util", - "h2 0.4.7", - "http 1.1.0", + "h2 0.4.11", + "http 1.3.1", "http-body 1.0.1", "httparse", "httpdate", @@ -5753,15 +5753,15 @@ dependencies = [ [[package]] name = "hyper-http-proxy" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d06dbdfbacf34d996c6fb540a71a684a7aae9056c71951163af8a8a4c07b9a4" +checksum = "7ad4b0a1e37510028bc4ba81d0e38d239c39671b0f0ce9e02dfa93a8133f7c08" dependencies = [ "bytes", "futures-util", "headers", - "http 1.1.0", - "hyper 1.4.1", + "http 1.3.1", + "hyper 1.6.0", "hyper-rustls", "hyper-util", "pin-project-lite", @@ -5773,22 +5773,21 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.27.5" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "futures-util", - "http 1.1.0", - "hyper 1.4.1", + "http 1.3.1", + "hyper 1.6.0", "hyper-util", "log", "rustls", - "rustls-native-certs 0.8.0", + "rustls-native-certs 0.8.1", "rustls-pki-types", "tokio", "tokio-rustls", "tower-service", - "webpki-roots", + "webpki-roots 1.0.1", ] [[package]] @@ -5797,7 +5796,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" dependencies = [ - "hyper 0.14.30", + "hyper 0.14.32", "pin-project-lite", "tokio", "tokio-io-timeout", @@ -5805,11 +5804,11 @@ dependencies = [ [[package]] name = "hyper-timeout" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3203a961e5c83b6f5498933e78b6b263e208c197b63e9c6c53cc82ffd3f63793" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper 1.4.1", + "hyper 1.6.0", "hyper-util", "pin-project-lite", "tokio", @@ -5818,18 +5817,23 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.9" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41296eb09f183ac68eec06e03cdbea2e759633d4067b2f6552fc2e009bcad08b" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" dependencies = [ + "base64 0.22.1", "bytes", "futures-channel", + "futures-core", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", - "hyper 1.4.1", + "hyper 1.6.0", + "ipnet", + "libc", + "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.5.10", "tokio", "tower-service", "tracing", @@ -5846,9 +5850,9 @@ dependencies = [ [[package]] name = "i_float" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5fe043aae28ce70bd2f78b2f5f82a3654d63607c82594da4dabb8b6cb81f2b2" +checksum = "775f9961a8d2f879725da8aff789bb20a3ddf297473e0c90af75e69313919490" dependencies = [ "serde", ] @@ -5861,9 +5865,9 @@ checksum = "347c253b4748a1a28baf94c9ce133b6b166f08573157e05afe718812bc599fcd" [[package]] name = "i_overlay" -version = "1.7.2" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a469f68cb8a7cef375b2b0f581faf5859b4b50600438c00d46b71acc25ebbd0c" +checksum = "01882ce5ed786bf6e8f5167f171a4026cd129ce17d9ff5cbf1e6749b98628ece" dependencies = [ "i_float", "i_key_sort", @@ -5874,9 +5878,9 @@ dependencies = [ [[package]] name = "i_shape" -version = "1.3.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b44852d57a991c7dedaf76c55bc44f677f547ff899a430d29e13efd6133d7d8" +checksum = "27dbe9e5238d6b9c694c08415bf00fb370b089949bd818ab01f41f8927b8774c" dependencies = [ "i_float", "serde", @@ -5890,16 +5894,17 @@ checksum = "155181bc97d770181cf9477da51218a19ee92a8e5be642e796661aee2b601139" [[package]] name = "iana-time-zone" -version = "0.1.61" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", + "log", "wasm-bindgen", - "windows-core 0.52.0", + "windows-core 0.61.2", ] [[package]] @@ -5913,21 +5918,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" dependencies = [ "displaydoc", "litemap", @@ -5936,31 +5942,11 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ "displaydoc", "icu_collections", @@ -5968,67 +5954,54 @@ dependencies = [ "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "potential_utf", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", + "icu_locale_core", "stable_deref_trait", "tinystr", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -6048,9 +6021,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -6082,7 +6055,7 @@ dependencies = [ "libflate", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -6130,14 +6103,14 @@ dependencies = [ "pin-project", "prost 0.13.5", "puffin", - "rand 0.9.0", + "rand 0.9.1", "rand_chacha 0.9.0", "regex", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "roaring", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "tantivy", "tantivy-jieba", "tempfile", @@ -6159,12 +6132,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" dependencies = [ "equivalent", - "hashbrown 0.15.2", + "hashbrown 0.15.4", "serde", ] @@ -6180,8 +6153,8 @@ version = "0.11.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "232929e1d75fe899576a3d5c7416ad0d88dbfbb3c3d6aa00873a7408a50ddb88" dependencies = [ - "ahash 0.8.11", - "indexmap 2.9.0", + "ahash 0.8.12", + "indexmap 2.10.0", "is-terminal", "itoa", "log", @@ -6198,13 +6171,13 @@ version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2094aecddc672e902cd773bad7071542f63641e01e9187c3bba4b43005e837e9" dependencies = [ - "ahash 0.8.11", - "clap 4.5.19", + "ahash 0.8.12", + "clap 4.5.40", "crossbeam-channel", "crossbeam-utils", "dashmap", "env_logger", - "indexmap 2.9.0", + "indexmap 2.10.0", "itoa", "log", "num-format", @@ -6222,7 +6195,7 @@ checksum = "22fa7ee6be451ea0b1912b962c91c8380835e97cf1584a77e18264e908448dcb" dependencies = [ "bytes", "log", - "nom", + "nom 7.1.3", "smallvec", "snafu 0.7.5", ] @@ -6233,7 +6206,7 @@ version = "0.1.0" source = "git+https://github.com/evenyag/influxdb_iox?branch=feat%2Fline-protocol#10ef0d0b02705ac7518717390939fa3a9bcfcacc" dependencies = [ "bytes", - "nom", + "nom 7.1.3", "smallvec", "snafu 0.7.5", ] @@ -6246,7 +6219,7 @@ checksum = "6c38228f24186d9cc68c729accb4d413be9eaed6ad07ff79e0270d9e56f3de13" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -6255,7 +6228,7 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "inotify-sys", "libc", ] @@ -6271,9 +6244,9 @@ dependencies = [ [[package]] name = "inout" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +checksum = "879f10e63c20629ecabbb64a8010319738c66a5cd0c29b02d63d272b03751d01" dependencies = [ "block-padding", "generic-array", @@ -6302,30 +6275,44 @@ checksum = "0d762194228a2f1c11063e46e32e5acb96e66e906382b9eb5441f2e0504bbd5a" [[package]] name = "inventory" -version = "0.3.15" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f958d3d68f4167080a18141e10381e7634563984a537f2a49a30fd8e53ac5767" +checksum = "ab08d7cd2c5897f2c949e5383ea7c7db03fb19130ffcfbf7eda795137ae3cb83" +dependencies = [ + "rustversion", +] [[package]] name = "io-enum" -version = "1.1.3" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53b53d712d99a73eec59ee5e4fe6057f8052142d38eeafbbffcb06b36d738a6e" +checksum = "d197db2f7ebf90507296df3aebaf65d69f5dce8559d8dbd82776a6cadab61bbf" dependencies = [ "derive_utils", ] [[package]] -name = "ipnet" -version = "2.10.0" +name = "io-uring" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "187674a687eed5fe42285b40c6291f9a01517d415fad1c3cbc6a9f778af7fcd4" +checksum = "d93587f37623a1a17d94ef2bc9ada592f5465fe7732084ab7beefabe5c77c0c4" +dependencies = [ + "bitflags 2.9.1", + "cfg-if", + "libc", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44bd7eced44cfe2cebc674adb2a7124a754a4b5269288d22e9f39f8fada3562d" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" dependencies = [ "memchr", "serde", @@ -6333,13 +6320,13 @@ dependencies = [ [[package]] name = "is-terminal" -version = "0.4.13" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" dependencies = [ - "hermit-abi 0.4.0", + "hermit-abi 0.5.2", "libc", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -6356,11 +6343,11 @@ checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "iso8601" -version = "0.6.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924e5d73ea28f59011fec52a0d12185d496a9b075d360657aed2a5707f701153" +checksum = "e1082f0c48f143442a1ac6122f67e360ceee130b967af4d50996e5154a45df46" dependencies = [ - "nom", + "nom 8.0.0", ] [[package]] @@ -6410,9 +6397,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jieba-macros" @@ -6439,10 +6426,11 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" +checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" dependencies = [ + "getrandom 0.3.3", "libc", ] @@ -6465,7 +6453,7 @@ dependencies = [ "jsonptr", "serde", "serde_json", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -6487,8 +6475,8 @@ dependencies = [ "byteorder", "fast-float", "itoa", - "nom", - "ordered-float 4.3.0", + "nom 7.1.3", + "ordered-float 4.6.0", "rand 0.8.5", "ryu", "serde_json", @@ -6506,7 +6494,7 @@ dependencies = [ "pest_derive", "regex", "serde_json", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -6535,11 +6523,11 @@ dependencies = [ [[package]] name = "jsonwebtoken" -version = "9.3.0" +version = "9.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9ae10193d25051e74945f1ea2d0b42e03cc3b890f7e4cc5faa44997d808193f" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" dependencies = [ - "base64 0.21.7", + "base64 0.22.1", "js-sys", "pem", "ring", @@ -6576,14 +6564,14 @@ version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4ee7893dab2e44ae5f9d0173f26ff4aa327c10b01b06a72b52dd9405b628640d" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] name = "kqueue" -version = "1.0.8" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" +checksum = "eac30106d7dce88daf4a3fcb4879ea939476d5074a9b7ddd0fb97fa4bed5596a" dependencies = [ "kqueue-sys", "libc", @@ -6624,13 +6612,13 @@ dependencies = [ "either", "futures", "home", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.6.0", "hyper-http-proxy", "hyper-rustls", - "hyper-timeout 0.5.1", + "hyper-timeout 0.5.2", "hyper-util", "jsonpath-rust 0.5.1", "k8s-openapi", @@ -6642,7 +6630,7 @@ dependencies = [ "serde", "serde_json", "serde_yaml", - "thiserror 1.0.64", + "thiserror 1.0.69", "tokio", "tokio-util", "tower 0.4.13", @@ -6658,13 +6646,13 @@ checksum = "40fb9bd8141cbc0fe6b0d9112d371679b4cb607b45c31dd68d92e40864a12975" dependencies = [ "chrono", "form_urlencoded", - "http 1.1.0", + "http 1.3.1", "json-patch", "k8s-openapi", - "schemars", + "schemars 0.8.22", "serde", "serde_json", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -6673,11 +6661,11 @@ version = "0.92.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "08fc86f70076921fdf2f433bbd2a796dc08ac537dc1db1f062cfa63ed4fa15fb" dependencies = [ - "darling 0.20.10", + "darling 0.20.11", "proc-macro2", "quote", "serde_json", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -6686,7 +6674,7 @@ version = "0.92.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7eb2fb986f81770eb55ec7f857e197019b31b38768d2410f6c1046ffac34225" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "async-broadcast", "async-stream", "async-trait", @@ -6698,11 +6686,11 @@ dependencies = [ "jsonptr", "k8s-openapi", "kube-client", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project", "serde", "serde_json", - "thiserror 1.0.64", + "thiserror 1.0.69", "tokio", "tokio-util", "tracing", @@ -6735,7 +6723,7 @@ version = "0.22.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b5baa5e9ff84f1aefd264e6869907646538a52147a755d494517a8007fb48733" dependencies = [ - "regex-automata 0.4.8", + "regex-automata 0.4.9", "rustversion", ] @@ -6763,14 +6751,14 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "lazy-regex" -version = "3.3.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d8e41c97e6bc7ecb552016274b99fbb5d035e8de288c582d9b933af6677bfda" +checksum = "60c7310b93682b36b98fa7ea4de998d3463ccbebd94d935d6b48ba5b6ffa7126" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -6779,14 +6767,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.3.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76e1d8b05d672c53cb9c7b920bbba8783845ae4f0b076e02a3db1d02c81b4163" +checksum = "4ba01db5ef81e17eb10a5e0f2109d1b3a3e29bac3070fdbd7d156bf7dbd206a1" dependencies = [ "proc-macro2", "quote", "regex", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -6869,10 +6857,16 @@ dependencies = [ ] [[package]] -name = "libc" -version = "0.2.171" +name = "libbz2-rs-sys" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" +checksum = "775bf80d5878ab7c2b1080b5351a48b2f737d9f6f8b383574eebcc22be0dfccb" + +[[package]] +name = "libc" +version = "0.2.175" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "libflate" @@ -6900,40 +6894,39 @@ dependencies = [ [[package]] name = "libfuzzer-sys" -version = "0.4.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7" +checksum = "cf78f52d400cf2d84a3a973a78a592b4adc535739e0a5597a0da6f0c357adc75" dependencies = [ "arbitrary", "cc", - "once_cell", ] [[package]] name = "libloading" -version = "0.8.5" +version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" +checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.52.6", + "windows-targets 0.53.2", ] [[package]] name = "libm" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "1580801010e535496706ba011c15f8532df6b42297d2e471fec38ceadd8c0638" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "libc", - "redox_syscall 0.5.7", + "redox_syscall 0.5.13", ] [[package]] @@ -6957,9 +6950,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.20" +version = "1.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" +checksum = "8b70e7a7df205e92a1a4cd9aaae7898dac0aa555503cc0a649494d0d60e7651d" dependencies = [ "cc", "pkg-config", @@ -6974,15 +6967,21 @@ checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" [[package]] name = "linux-raw-sys" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" +checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" [[package]] name = "litemap" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "litrs" @@ -6992,21 +6991,21 @@ checksum = "b4ce301924b7887e9d637144fdade93f9dfff9b60981d4ac161db09720d39aa5" [[package]] name = "local-ip-address" -version = "0.6.3" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3669cf5561f8d27e8fc84cc15e58350e70f557d4d65f70e3154e54cd2f8e1782" +checksum = "656b3b27f8893f7bbf9485148ff9a65f019e3f33bd5cdc87c83cab16b3fd9ec8" dependencies = [ "libc", "neli", - "thiserror 1.0.64", + "thiserror 2.0.12", "windows-sys 0.59.0", ] [[package]] name = "lock_api" -version = "0.4.12" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ "autocfg", "scopeguard", @@ -7014,9 +7013,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] name = "log-query" @@ -7026,7 +7025,7 @@ dependencies = [ "common-error", "common-macro", "serde", - "snafu 0.8.5", + "snafu 0.8.6", "table", ] @@ -7050,7 +7049,7 @@ dependencies = [ "common-wal", "dashmap", "delta-encoding", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "futures", "futures-util", "itertools 0.14.0", @@ -7061,12 +7060,12 @@ dependencies = [ "protobuf", "protobuf-build", "raft-engine", - "rand 0.9.0", + "rand 0.9.1", "rand_distr", "rskafka", "serde", "serde_json", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "tokio", "uuid", @@ -7098,9 +7097,9 @@ dependencies = [ [[package]] name = "lrlex" -version = "0.13.7" +version = "0.13.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05863fdac293d1bc74f0cd91512933a5ab67e0cb607dc78ac4984be089456b49" +checksum = "c71364e868116ee891b0f93559eb9eca5675bec28b22d33c58481e66c3951d7e" dependencies = [ "cfgrammar", "getopts", @@ -7116,15 +7115,15 @@ dependencies = [ [[package]] name = "lrpar" -version = "0.13.7" +version = "0.13.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b1ecae55cf667db308d3555e22b20bcc28eaeca0c95a09b37171673be157c71" +checksum = "51b265a81193d94c92d1c9c715498d6fa505bce3f789ceecb24ab5d6fa2dbc71" dependencies = [ "bincode", "cactus", "cfgrammar", "filetime", - "indexmap 2.9.0", + "indexmap 2.10.0", "lazy_static", "lrtable", "num-traits", @@ -7138,9 +7137,9 @@ dependencies = [ [[package]] name = "lrtable" -version = "0.13.7" +version = "0.13.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d42d2752cb50a171efadda0cb6fa97432e8bf05accfff3eed320b87e80a2f69e" +checksum = "dc36d15214ca997a5097845be1f932b7ee6125c36f5c5e55f6c49e027ddeb6de" dependencies = [ "cfgrammar", "fnv", @@ -7152,18 +7151,24 @@ dependencies = [ [[package]] name = "lru" -version = "0.12.4" +version = "0.12.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37ee39891760e7d94734f6f63fedc29a2e4a152f836120753a72503f09fcf904" +checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" dependencies = [ - "hashbrown 0.14.5", + "hashbrown 0.15.4", ] [[package]] -name = "lz4" -version = "1.28.0" +name = "lru-slab" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d1febb2b4a79ddd1980eede06a8f7902197960aa0383ffcfdd62fe723036725" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + +[[package]] +name = "lz4" +version = "1.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a20b523e860d03443e98350ceaac5e71c6ba89aea7d960769ec3ce37f4de5af4" dependencies = [ "lz4-sys", ] @@ -7180,11 +7185,11 @@ dependencies = [ [[package]] name = "lz4_flex" -version = "0.11.3" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75761162ae2b0e580d7e7c390558127e5f01b4194debd6221fd8c207fc80e3f5" +checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" dependencies = [ - "twox-hash 1.6.3", + "twox-hash", ] [[package]] @@ -7205,7 +7210,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "792ba667add2798c6c3e988e630f4eb921b5cbc735044825b7111ef1582c8730" dependencies = [ "byteorder", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -7250,9 +7255,9 @@ checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "matrixmultiply" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" +checksum = "a06de3016e9fae57a36fd14dba131fccf49f74b40b7fbdb472f96e361ec71a08" dependencies = [ "autocfg", "rawpointer", @@ -7291,9 +7296,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.4" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "memcomparable" @@ -7303,7 +7308,7 @@ checksum = "376101dbd964fc502d5902216e180f92b3d003b5cc3d2e40e044eb5470fca677" dependencies = [ "bytes", "serde", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -7350,12 +7355,12 @@ dependencies = [ "futures-util", "humantime-serde", "meta-srv", - "rand 0.9.0", + "rand 0.9.1", "serde", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", "tokio-stream", - "tonic 0.12.3", + "tonic 0.13.1", "tower 0.5.2", "tracing", "tracing-subscriber", @@ -7367,12 +7372,12 @@ version = "0.17.0" dependencies = [ "api", "async-trait", - "axum 0.8.1", + "axum 0.8.4", "axum-extra", "axum-macros", "bytes", "chrono", - "clap 4.5.19", + "clap 4.5.40", "client", "common-base", "common-catalog", @@ -7396,7 +7401,7 @@ dependencies = [ "datatypes", "deadpool", "deadpool-postgres", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "either", "etcd-client", "futures", @@ -7404,24 +7409,24 @@ dependencies = [ "http-body-util", "humantime", "humantime-serde", - "hyper 0.14.30", + "hyper 0.14.32", "hyper-util", "itertools 0.14.0", "lazy_static", "local-ip-address", "log-store", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prometheus", "prost 0.13.5", - "rand 0.9.0", + "rand 0.9.1", "regex", "rskafka", "serde", "serde_json", "servers", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sqlx", "store-api", "strum 0.27.1", @@ -7429,10 +7434,10 @@ dependencies = [ "tokio", "tokio-postgres", "tokio-stream", - "toml 0.8.19", - "tonic 0.12.3", + "toml 0.8.23", + "tonic 0.13.1", "tower 0.5.2", - "tower-http 0.6.2", + "tower-http 0.6.6", "tracing", "tracing-subscriber", "typetag", @@ -7447,7 +7452,7 @@ source = "git+https://github.com/GreptimeTeam/greptime-meter.git?rev=5618e779cf2 dependencies = [ "anymap2", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "tracing", ] @@ -7493,7 +7498,7 @@ dependencies = [ "serde", "serde_json", "smallvec", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "tokio", "tracing", @@ -7517,9 +7522,9 @@ dependencies = [ [[package]] name = "minijinja" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55e877d961d4f96ce13615862322df7c0b6d169d40cab71a7ef3f9b9e594451e" +checksum = "3287d827e6da221ea11aa173c66b82ab69db27a1b177e8439f730b478bf33a7b" dependencies = [ "serde", ] @@ -7532,24 +7537,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be647b768db090acb35d5ec5db2b0e1f1de11133ca123b9eacf5137868f892a" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] [[package]] name = "mio" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" +checksum = "78bed444cc8a2160f01cbcf811ef18cac863ad68ae8ca62092e8db51d51c761c" dependencies = [ - "hermit-abi 0.3.9", "libc", "log", - "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.52.0", + "wasi 0.11.1+wasi-snapshot-preview1", + "windows-sys 0.59.0", ] [[package]] @@ -7571,7 +7575,7 @@ dependencies = [ "memcomparable", "paste", "serde", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", ] @@ -7627,7 +7631,7 @@ dependencies = [ "prometheus", "prost 0.13.5", "puffin", - "rand 0.9.0", + "rand 0.9.1", "rayon", "regex", "rskafka", @@ -7639,14 +7643,14 @@ dependencies = [ "serde_with", "session", "smallvec", - "snafu 0.8.5", + "snafu 0.8.6", "store-api", "strum 0.27.1", "table", "tokio", "tokio-stream", "tokio-util", - "toml 0.8.19", + "toml 0.8.23", "tracing", "uuid", ] @@ -7674,7 +7678,7 @@ dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -7687,15 +7691,15 @@ dependencies = [ "crossbeam-channel", "crossbeam-epoch", "crossbeam-utils", - "event-listener 5.3.1", + "event-listener 5.4.0", "futures-util", "loom", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "portable-atomic", "rustc_version", "smallvec", "tagptr", - "thiserror 1.0.64", + "thiserror 1.0.69", "uuid", ] @@ -7708,7 +7712,7 @@ dependencies = [ "bytes", "encoding_rs", "futures-util", - "http 1.1.0", + "http 1.3.1", "httparse", "memchr", "mime", @@ -7718,9 +7722,9 @@ dependencies = [ [[package]] name = "multimap" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" [[package]] name = "mur3" @@ -7753,47 +7757,47 @@ dependencies = [ "percent-encoding", "rustls", "rustls-pemfile", - "socket2", - "twox-hash 2.1.0", + "socket2 0.5.10", + "twox-hash", "url", "webpki", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] name = "mysql-common-derive" -version = "0.31.1" +version = "0.31.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afe0450cc9344afff34915f8328600ab5ae19260802a334d0f72d2d5bdda3bfe" +checksum = "63c3512cf11487168e0e9db7157801bf5273be13055a9cc95356dc9e0035e49c" dependencies = [ - "darling 0.20.10", - "heck 0.4.1", - "num-bigint", - "proc-macro-crate 3.2.0", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.100", - "termcolor", - "thiserror 1.0.64", -] - -[[package]] -name = "mysql-common-derive" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb6d9ff4094f6d58d3f892fc558e60048476213dd17dcf904b62202e9029da6" -dependencies = [ - "darling 0.20.10", + "darling 0.20.11", "heck 0.5.0", "num-bigint", - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "termcolor", - "thiserror 1.0.64", + "thiserror 1.0.69", +] + +[[package]] +name = "mysql-common-derive" +version = "0.32.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66f62cad7623a9cb6f8f64037f0c4f69c8db8e82914334a83c9788201c2c1bfa" +dependencies = [ + "darling 0.20.11", + "heck 0.5.0", + "num-bigint", + "proc-macro-crate 3.3.0", + "proc-macro-error2", + "proc-macro2", + "quote", + "syn 2.0.104", + "termcolor", + "thiserror 2.0.12", ] [[package]] @@ -7819,15 +7823,15 @@ dependencies = [ "rustls-pemfile", "serde", "serde_json", - "socket2", + "socket2 0.5.10", "thiserror 2.0.12", "tokio", "tokio-rustls", "tokio-util", - "twox-hash 2.1.0", + "twox-hash", "url", "webpki", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] @@ -7839,7 +7843,7 @@ dependencies = [ "base64 0.21.7", "bigdecimal 0.4.8", "bindgen", - "bitflags 2.9.0", + "bitflags 2.9.1", "bitvec", "btoi", "byteorder", @@ -7851,7 +7855,7 @@ dependencies = [ "flate2", "frunk", "lazy_static", - "mysql-common-derive 0.31.1", + "mysql-common-derive 0.31.2", "num-bigint", "num-traits", "rand 0.8.5", @@ -7864,10 +7868,10 @@ dependencies = [ "sha2", "smallvec", "subprocess", - "thiserror 1.0.64", + "thiserror 1.0.69", "time", "uuid", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -7877,7 +7881,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34a9141e735d5bb02414a7ac03add09522466d4db65bdd827069f76ae0850e58" dependencies = [ "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.1", "btoi", "byteorder", "bytes", @@ -7886,7 +7890,7 @@ dependencies = [ "crc32fast", "flate2", "lazy_static", - "mysql-common-derive 0.32.0", + "mysql-common-derive 0.32.1", "num-bigint", "num-traits", "rand 0.8.5", @@ -7897,10 +7901,10 @@ dependencies = [ "sha1", "sha2", "subprocess", - "thiserror 1.0.64", + "thiserror 1.0.69", "time", "uuid", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -7956,7 +7960,7 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -7970,9 +7974,9 @@ dependencies = [ [[package]] name = "neli" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1100229e06604150b3becd61a4965d5c70f3be1759544ea7274166f4be41ef43" +checksum = "93062a0dce6da2517ea35f301dfc88184ce18d3601ec786a727a87bf535deca9" dependencies = [ "byteorder", "libc", @@ -7982,9 +7986,9 @@ dependencies = [ [[package]] name = "neli-proc-macros" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c168194d373b1e134786274020dae7fc5513d565ea2ebb9bc9ff17ffb69106d4" +checksum = "0c8034b7fbb6f9455b2a96c19e6edf8dc9fc34c70449938d8ee3b4df363f61fe" dependencies = [ "either", "proc-macro2", @@ -8032,7 +8036,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -8044,7 +8048,7 @@ version = "0.30.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74523f3a35e05aba87a1d978330aef40f67b0304ac79c1c00b294c9830543db6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "cfg-if", "cfg_aliases 0.2.1", "libc", @@ -8066,13 +8070,22 @@ dependencies = [ "minimal-lexical", ] +[[package]] +name = "nom" +version = "8.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9761775871bdef83bee530e60050f7e54b1105350d6884eb0fb4f46c2f9405" +dependencies = [ + "memchr", +] + [[package]] name = "notify" version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "filetime", "fsevent-sys", "inotify", @@ -8174,7 +8187,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -8230,11 +8243,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.3.9", + "hermit-abi 0.5.2", "libc", ] @@ -8258,11 +8271,12 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e613fc340b2220f734a8595782c551f1250e969d87d3be1ae0579e8d4065179" +checksum = "a973b4e44ce6cad84ce69d797acf9a044532e4184c4f267913d1b546a0727b7a" dependencies = [ - "num_enum_derive 0.7.3", + "num_enum_derive 0.7.4", + "rustversion", ] [[package]] @@ -8286,19 +8300,19 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "num_enum_derive" -version = "0.7.3" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af1844ef2428cc3e1cb900be36181049ef3d3193c63e43026cfe202983b27a56" +checksum = "77e878c846a8abae00dd069496dbe8751b16ac1c3d6bd2a7283a938e8228f90d" dependencies = [ - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -8312,9 +8326,9 @@ dependencies = [ [[package]] name = "object" -version = "0.36.4" +version = "0.36.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "084f1a5821ac4c651660a94a7153d27ac9d8a53736203f58b31945ded098070a" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" dependencies = [ "memchr", ] @@ -8346,45 +8360,45 @@ dependencies = [ "moka", "opendal", "prometheus", - "reqwest 0.12.9", + "reqwest 0.12.21", "serde", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", "uuid", ] [[package]] name = "object_store" -version = "0.11.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3cfccb68961a56facde1163f9319e0d15743352344e7808a11795fb99698dcaf" +checksum = "efc4f07659e11cd45a341cd24d71e683e3be65d9ff1f8150061678fe60437496" dependencies = [ "async-trait", "bytes", "chrono", "futures", + "http 1.3.1", "humantime", - "itertools 0.13.0", - "parking_lot 0.12.3", + "itertools 0.14.0", + "parking_lot 0.12.4", "percent-encoding", - "snafu 0.8.5", + "thiserror 2.0.12", "tokio", "tracing", "url", "walkdir", + "wasm-bindgen-futures", + "web-time 1.1.0", ] [[package]] name = "object_store_opendal" -version = "0.50.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59db4de9230e630346e3fd821e2b8d1fd03ddd509c32c964836588e82241762a" +version = "0.51.1" +source = "git+https://github.com/apache/opendal?rev=0ba8574b6d08d209056704d28a9a114beb3c1022#0ba8574b6d08d209056704d28a9a114beb3c1022" dependencies = [ "async-trait", "bytes", - "flagset", "futures", - "futures-util", "object_store", "opendal", "pin-project", @@ -8413,18 +8427,21 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.1" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82881c4be219ab5faaf2ad5e5e5ecdff8c66bd7402ca3160975c93b24961afd1" -dependencies = [ - "portable-atomic", -] +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" + +[[package]] +name = "once_cell_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4895175b425cb1f87721b59f0f286c2092bd4af812243672510e1ac53e2e0ad" [[package]] name = "oneshot" -version = "0.1.8" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e296cf87e61c9cfc1a61c3c63a0f7f286ed4554e0e22be84e8a38e1d264a2a29" +checksum = "b4ce411919553d3f9fa53a0880544cda985a112117a0444d5ff1e870a893d6ea" [[package]] name = "onig" @@ -8432,7 +8449,7 @@ version = "6.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "336b9c63443aceef14bea841b899035ae3abe89b7c486aaf4c5bd8aafedac3f0" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "libc", "once_cell", "onig_sys", @@ -8450,9 +8467,9 @@ dependencies = [ [[package]] name = "oorandom" -version = "11.1.4" +version = "11.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9" +checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" [[package]] name = "opaque-debug" @@ -8462,9 +8479,8 @@ checksum = "c08d65885ee38876c4f86fa503fb49d7b507c2b62552df7c70b2fce627e06381" [[package]] name = "opendal" -version = "0.52.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a55c840b5a6ad96106d6c0612fabb8f35a5ace826e0474fc55ebda33042b8d33" +version = "0.53.1" +source = "git+https://github.com/apache/opendal?rev=0ba8574b6d08d209056704d28a9a114beb3c1022#0ba8574b6d08d209056704d28a9a114beb3c1022" dependencies = [ "anyhow", "async-trait", @@ -8474,16 +8490,16 @@ dependencies = [ "chrono", "crc32c", "futures", - "getrandom 0.2.15", - "http 1.1.0", + "getrandom 0.2.16", + "http 1.3.1", + "http-body 1.0.1", "log", "md-5", - "once_cell", "percent-encoding", "prometheus", - "quick-xml 0.36.2", + "quick-xml 0.37.5", "reqsign", - "reqwest 0.12.9", + "reqwest 0.12.21", "serde", "serde_json", "sha2", @@ -8513,7 +8529,7 @@ dependencies = [ "bytes", "chrono", "mysql_common 0.32.4", - "nom", + "nom 7.1.3", "pin-project-lite", "tokio", "tokio-rustls", @@ -8521,9 +8537,9 @@ dependencies = [ [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" [[package]] name = "opentelemetry" @@ -8533,11 +8549,11 @@ checksum = "1e32339a5dc40459130b3bd269e9892439f55b33e772d2a9d402a789baaf4e8a" dependencies = [ "futures-core", "futures-sink", - "indexmap 2.9.0", + "indexmap 2.10.0", "js-sys", "once_cell", "pin-project-lite", - "thiserror 1.0.64", + "thiserror 1.0.69", "urlencoding", ] @@ -8551,7 +8567,7 @@ dependencies = [ "futures-sink", "js-sys", "pin-project-lite", - "thiserror 1.0.64", + "thiserror 1.0.69", "tracing", ] @@ -8584,7 +8600,7 @@ dependencies = [ "opentelemetry_sdk 0.21.2", "prost 0.11.9", "reqwest 0.11.27", - "thiserror 1.0.64", + "thiserror 1.0.69", "tokio", "tonic 0.9.2", ] @@ -8638,10 +8654,10 @@ dependencies = [ "glob", "once_cell", "opentelemetry 0.21.0", - "ordered-float 4.3.0", + "ordered-float 4.6.0", "percent-encoding", "rand 0.8.5", - "thiserror 1.0.64", + "thiserror 1.0.69", "tokio", "tokio-stream", ] @@ -8661,17 +8677,17 @@ dependencies = [ "percent-encoding", "rand 0.8.5", "serde_json", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] name = "operator" version = "0.17.0" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "api", - "arrow 54.2.1", - "arrow-ipc 54.2.1", + "arrow", + "arrow-ipc", "async-stream", "async-trait", "bytes", @@ -8718,24 +8734,24 @@ dependencies = [ "regex", "serde_json", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sql", - "sqlparser 0.54.0-greptime", + "sqlparser 0.55.0-greptime", "store-api", "substrait 0.17.0", "table", "tokio", "tokio-util", - "tonic 0.12.3", + "tonic 0.13.1", "tracing", ] [[package]] name = "orc-rust" version = "0.6.0" -source = "git+https://github.com/datafusion-contrib/orc-rust?rev=3134cab581a8e91b942d6a23aca2916ea965f6bb#3134cab581a8e91b942d6a23aca2916ea965f6bb" +source = "git+https://github.com/GreptimeTeam/orc-rust?rev=d1690a06eec754e97beecf2cf7690267fc818726#d1690a06eec754e97beecf2cf7690267fc818726" dependencies = [ - "arrow 54.2.1", + "arrow", "async-trait", "bytemuck", "bytes", @@ -8749,10 +8765,36 @@ dependencies = [ "lzokay-native", "num", "prost 0.13.5", - "snafu 0.8.5", + "snafu 0.8.6", "snap", "tokio", - "zstd 0.13.2", + "zstd 0.13.3", +] + +[[package]] +name = "orc-rust" +version = "0.6.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcd2b5295acfa0f64a14a1577a1f74c8a7dcc806396baaadcfa770509bed6a00" +dependencies = [ + "arrow", + "async-trait", + "bytemuck", + "bytes", + "chrono", + "chrono-tz", + "fallible-streaming-iterator", + "flate2", + "futures", + "futures-util", + "lz4_flex", + "lzokay-native", + "num", + "prost 0.13.5", + "snafu 0.8.6", + "snap", + "tokio", + "zstd 0.13.3", ] [[package]] @@ -8766,9 +8808,9 @@ dependencies = [ [[package]] name = "ordered-float" -version = "4.3.0" +version = "4.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44d501f1a72f71d3c063a6bbc8f7271fa73aa09fe5d6283b6571e2ed176a2537" +checksum = "7bb71e1b3fa6ca1c61f383464aaf2bb0e2f8e772a1f01d486832464de363b951" dependencies = [ "num-traits", "rand 0.8.5", @@ -8797,11 +8839,12 @@ dependencies = [ [[package]] name = "os_info" -version = "3.8.2" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae99c7fa6dd38c7cafe1ec085e804f8f555a2f8659b0dbe03f1f9963a9b51092" +checksum = "d0e1ac5fde8d43c34139135df8ea9ee9465394b2d8d20f032d38998f64afffc3" dependencies = [ "log", + "plist", "serde", "windows-sys 0.52.0", ] @@ -8815,19 +8858,45 @@ checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "otel-arrow-rust" version = "0.1.0" -source = "git+https://github.com/open-telemetry/otel-arrow?rev=5d551412d2a12e689cde4d84c14ef29e36784e51#5d551412d2a12e689cde4d84c14ef29e36784e51" +source = "git+https://github.com/GreptimeTeam/otel-arrow?rev=2d64b7c0fa95642028a8205b36fe9ea0b023ec59#2d64b7c0fa95642028a8205b36fe9ea0b023ec59" dependencies = [ - "arrow 53.4.1", - "arrow-ipc 53.4.1", + "arrow", + "arrow-ipc", + "ciborium", "lazy_static", - "num_enum 0.7.3", - "opentelemetry-proto 0.27.0", + "num_enum 0.7.4", + "otlp-derive", + "otlp-model", "paste", "prost 0.13.5", + "prost-build 0.13.5", + "rand 0.9.1", + "replace_with", "serde", - "snafu 0.8.5", - "tonic 0.12.3", - "tonic-build 0.12.3", + "snafu 0.8.6", + "tokio", + "tonic 0.13.1", + "tonic-build 0.13.1", +] + +[[package]] +name = "otlp-derive" +version = "0.1.0" +source = "git+https://github.com/GreptimeTeam/otel-arrow?rev=2d64b7c0fa95642028a8205b36fe9ea0b023ec59#2d64b7c0fa95642028a8205b36fe9ea0b023ec59" +dependencies = [ + "convert_case 0.8.0", + "otlp-model", + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "otlp-model" +version = "0.1.0" +source = "git+https://github.com/GreptimeTeam/otel-arrow?rev=2d64b7c0fa95642028a8205b36fe9ea0b023ec59#2d64b7c0fa95642028a8205b36fe9ea0b023ec59" +dependencies = [ + "tonic-build 0.13.1", ] [[package]] @@ -8853,9 +8922,9 @@ dependencies = [ [[package]] name = "packedvec" -version = "1.2.4" +version = "1.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bde3c690ec20e4a2b4fb46f0289a451181eb50011a1e2acc8d85e2fde9062a45" +checksum = "a69e0a534dd2e6aefce319af62a0aa0066a76bdfcec0201dfe02df226bc9ec70" dependencies = [ "num-traits", "serde", @@ -8867,7 +8936,7 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d2ad9b889f1b12e0b9ee24db044b5129150d5eada288edc800f789928dc8c0e3" dependencies = [ - "unicode-width", + "unicode-width 0.1.14", ] [[package]] @@ -8889,12 +8958,12 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", - "parking_lot_core 0.9.10", + "parking_lot_core 0.9.11", ] [[package]] @@ -8913,15 +8982,15 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "backtrace", "cfg-if", "libc", "petgraph 0.6.5", - "redox_syscall 0.5.7", + "redox_syscall 0.5.13", "smallvec", "thread-id", "windows-targets 0.52.6", @@ -8929,39 +8998,39 @@ dependencies = [ [[package]] name = "parquet" -version = "54.2.1" +version = "56.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f88838dca3b84d41444a0341b19f347e8098a3898b0f21536654b8b799e11abd" +checksum = "c7288a07ed5d25939a90f9cb1ca5afa6855faa08ec7700613511ae64bdb0620c" dependencies = [ - "ahash 0.8.11", - "arrow-array 54.2.1", - "arrow-buffer 54.3.1", - "arrow-cast 54.2.1", - "arrow-data 54.3.1", - "arrow-ipc 54.2.1", - "arrow-schema 54.3.1", - "arrow-select 54.2.1", + "ahash 0.8.12", + "arrow-array", + "arrow-buffer", + "arrow-cast", + "arrow-data", + "arrow-ipc", + "arrow-schema", + "arrow-select", "base64 0.22.1", - "brotli", + "brotli 8.0.1", "bytes", "chrono", "flate2", "futures", "half", - "hashbrown 0.15.2", + "hashbrown 0.15.4", "lz4_flex", "num", "num-bigint", "object_store", "paste", + "ring", "seq-macro", "simdutf8", "snap", "thrift", "tokio", - "twox-hash 1.6.3", - "zstd 0.13.2", - "zstd-sys", + "twox-hash", + "zstd 0.13.3", ] [[package]] @@ -8999,9 +9068,9 @@ dependencies = [ "serde", "serde_json", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sql", - "sqlparser 0.54.0-greptime", + "sqlparser 0.55.0-greptime", "store-api", "table", ] @@ -9020,9 +9089,9 @@ checksum = "1e91099d4268b0e11973f036e885d652fb0b21fedcf69738c627f94db6a44f42" [[package]] name = "pathdiff" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" [[package]] name = "pbjson" @@ -9079,9 +9148,9 @@ checksum = "9e9ed2178b0575fff8e1b83b58ba6f75e727aafac2e1b6c795169ad3b17eb518" [[package]] name = "pem" -version = "3.0.4" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e459365e590736a54c3fa561947c84837534b8e9af6fc5bf781307e82658fae" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ "base64 0.22.1", "serde", @@ -9110,20 +9179,20 @@ checksum = "df202b0b0f5b8e389955afd5f27b007b00fb948162953f1db9c70d2c7e3157d7" [[package]] name = "pest" -version = "2.7.13" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdbef9d1d47087a895abd220ed25eb4ad973a5e26f6a4367b038c25e28dfc2d9" +checksum = "1db05f56d34358a8b1066f67cbb203ee3e7ed2ba674a6263a1d5ec6db2204323" dependencies = [ "memchr", - "thiserror 1.0.64", + "thiserror 2.0.12", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.7.13" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d3a6e3394ec80feb3b6393c725571754c6188490265c61aaf260810d6b95aa0" +checksum = "bb056d9e8ea77922845ec74a1c4e8fb17e7c218cc4fc11a15c5d25e189aa40bc" dependencies = [ "pest", "pest_generator", @@ -9131,24 +9200,23 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.7.13" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94429506bde1ca69d1b5601962c73f4172ab4726571a59ea95931218cb0e930e" +checksum = "87e404e638f781eb3202dc82db6760c8ae8a1eeef7fb3fa8264b2ef280504966" dependencies = [ "pest", "pest_meta", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "pest_meta" -version = "2.7.13" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac8a071862e93690b6e34e9a5fb8e33ff3734473ac0245b27232222c4906a33f" +checksum = "edd1101f170f5903fde0914f899bb503d9ff5271d7ba76bbb70bea63690cc0d5" dependencies = [ - "once_cell", "pest", "sha2", ] @@ -9160,7 +9228,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset 0.4.2", - "indexmap 2.9.0", + "indexmap 2.10.0", ] [[package]] @@ -9170,7 +9238,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset 0.5.7", - "indexmap 2.9.0", + "indexmap 2.10.0", +] + +[[package]] +name = "petgraph" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "54acf3a685220b533e437e264e4d932cfbdc4cc7ec0cd232ed73c08d03b8a7ca" +dependencies = [ + "fixedbitset 0.5.7", + "hashbrown 0.15.4", + "indexmap 2.10.0", + "serde", ] [[package]] @@ -9188,7 +9268,7 @@ dependencies = [ "lazy-regex", "md5 0.8.0", "postgres-types", - "rand 0.9.0", + "rand 0.9.1", "ring", "rust_decimal", "rustls-pki-types", @@ -9200,11 +9280,11 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ - "phf_shared 0.11.2", + "phf_shared 0.11.3", ] [[package]] @@ -9219,12 +9299,12 @@ dependencies = [ [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ - "phf_generator 0.11.2", - "phf_shared 0.11.2", + "phf_generator 0.11.3", + "phf_shared 0.11.3", ] [[package]] @@ -9239,11 +9319,11 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "phf_shared 0.11.2", + "phf_shared 0.11.3", "rand 0.8.5", ] @@ -9259,11 +9339,11 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher 0.3.11", + "siphasher", ] [[package]] @@ -9272,34 +9352,34 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06005508882fb681fd97892ecff4b7fd0fee13ef1aa569f8695dae7ab9099981" dependencies = [ - "siphasher 1.0.1", + "siphasher", ] [[package]] name = "pin-project" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.5" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "pin-project-lite" -version = "0.2.14" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -9311,9 +9391,9 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" name = "pipeline" version = "0.17.0" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "api", - "arrow 54.2.1", + "arrow", "async-trait", "catalog", "chrono", @@ -9349,7 +9429,7 @@ dependencies = [ "moka", "once_cell", "operator", - "ordered-float 4.3.0", + "ordered-float 4.6.0", "paste", "prometheus", "query", @@ -9359,7 +9439,7 @@ dependencies = [ "serde_json", "session", "simd-json", - "snafu 0.8.5", + "snafu 0.8.6", "sql", "table", "tokio", @@ -9419,9 +9499,22 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.31" +version = "0.3.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" +checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" + +[[package]] +name = "plist" +version = "1.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d77244ce2d584cd84f6a15f86195b8c9b2a0dfbfd817c09e0464244091a58ed" +dependencies = [ + "base64 0.22.1", + "indexmap 2.10.0", + "quick-xml 0.37.5", + "serde", + "time", +] [[package]] name = "plotters" @@ -9456,7 +9549,7 @@ name = "plugins" version = "0.17.0" dependencies = [ "auth", - "clap 4.5.19", + "clap 4.5.40", "cli", "common-base", "common-error", @@ -9465,7 +9558,7 @@ dependencies = [ "frontend", "meta-srv", "serde", - "snafu 0.8.5", + "snafu 0.8.6", ] [[package]] @@ -9481,15 +9574,15 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.9.0" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc9c68a3f6da06753e9335d63e27f6b9754dd1920d941135b7ea8224f141adb2" +checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "postgres-protocol" -version = "0.6.7" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acda0ebdebc28befa84bee35e651e4c5f09073d668c7aed4cf7e23c3cda84b23" +checksum = "76ff0abab4a9b844b93ef7b81f1efc0a366062aaef2cd702c76256b5dc075c54" dependencies = [ "base64 0.22.1", "byteorder", @@ -9498,16 +9591,16 @@ dependencies = [ "hmac", "md-5", "memchr", - "rand 0.8.5", + "rand 0.9.1", "sha2", "stringprep", ] [[package]] name = "postgres-types" -version = "0.2.8" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f66ea23a2d0e5734297357705193335e0a957696f34bed2f2faefacb2fec336f" +checksum = "613283563cd90e1dfc3518d548caee47e0e725455ed619881f5cf21f36de4b48" dependencies = [ "array-init", "bytes", @@ -9518,6 +9611,15 @@ dependencies = [ "serde_json", ] +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -9540,7 +9642,7 @@ dependencies = [ "log", "nix 0.26.4", "once_cell", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prost 0.12.6", "prost-build 0.12.6", "prost-derive 0.12.6", @@ -9549,7 +9651,7 @@ dependencies = [ "smallvec", "symbolic-demangle", "tempfile", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -9569,11 +9671,11 @@ dependencies = [ [[package]] name = "ppv-lite86" -version = "0.2.20" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -9594,15 +9696,15 @@ dependencies = [ [[package]] name = "predicates-core" -version = "1.0.8" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae8177bee8e75d6846599c6b9ff679ed51e882816914eec639944d7c9aa11931" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" [[package]] name = "predicates-tree" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41b740d195ed3166cd147c8047ec98db0e22ec019eb8eeb76d343b795304fb13" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" dependencies = [ "predicates-core", "termtree", @@ -9630,12 +9732,12 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.2.29" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6924ced06e1f7dfe3fa48d57b9f74f55d8915f5036121bef647ef4b204895fac" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -9650,35 +9752,11 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ecf48c7ca261d60b74ab1a7b20da18bede46776b2e55535cb958eb595c5fa7b" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml_edit 0.22.22", -] - -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", + "toml_edit 0.22.27", ] [[package]] @@ -9700,14 +9778,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "proc-macro2" -version = "1.0.92" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] @@ -9718,11 +9796,11 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "hex", "lazy_static", "procfs-core", - "rustix", + "rustix 0.38.44", ] [[package]] @@ -9731,7 +9809,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "hex", ] @@ -9746,10 +9824,10 @@ dependencies = [ "lazy_static", "libc", "memchr", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "procfs", "protobuf", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -9768,7 +9846,7 @@ dependencies = [ name = "promql" version = "0.17.0" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "async-trait", "bytemuck", "common-error", @@ -9784,7 +9862,7 @@ dependencies = [ "lazy_static", "prometheus", "prost 0.13.5", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", ] @@ -9852,7 +9930,7 @@ dependencies = [ "prost 0.12.6", "prost-types 0.12.6", "regex", - "syn 2.0.100", + "syn 2.0.104", "tempfile", ] @@ -9872,7 +9950,7 @@ dependencies = [ "prost 0.13.5", "prost-types 0.13.5", "regex", - "syn 2.0.100", + "syn 2.0.104", "tempfile", ] @@ -9899,7 +9977,7 @@ dependencies = [ "itertools 0.12.1", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -9912,7 +9990,7 @@ dependencies = [ "itertools 0.14.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -9995,9 +10073,9 @@ dependencies = [ [[package]] name = "psl" -version = "2.1.119" +version = "2.1.123" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0e49aa528239f2ca13ad87387977c208e59c3fb8c437609f95f1b3898ec6ef1" +checksum = "19a87cc491d889736c81c11ad02d91628b7fd2078d66c4e1b3f6d348de8900f4" dependencies = [ "psl-types", ] @@ -10010,9 +10088,9 @@ checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" [[package]] name = "psm" -version = "0.1.24" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" +checksum = "6e944464ec8536cd1beb0bbfd96987eb5e3b72f2ecdafdc5c769a37f1fa2ae1f" dependencies = [ "cc", ] @@ -10051,12 +10129,12 @@ dependencies = [ name = "puffin" version = "0.17.0" dependencies = [ - "async-compression 0.4.13", + "async-compression 0.4.19", "async-trait", "async-walkdir", "auto_impl", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.1", "bytes", "common-base", "common-error", @@ -10064,7 +10142,7 @@ dependencies = [ "common-runtime", "common-telemetry", "common-test-util", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "futures", "lz4_flex", "moka", @@ -10073,7 +10151,7 @@ dependencies = [ "serde", "serde_json", "sha2", - "snafu 0.8.5", + "snafu 0.8.6", "tokio", "tokio-util", "uuid", @@ -10093,11 +10171,11 @@ dependencies = [ name = "query" version = "0.17.0" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "api", "arc-swap", - "arrow 54.2.1", - "arrow-schema 54.3.1", + "arrow", + "arrow-schema", "async-recursion", "async-stream", "async-trait", @@ -10147,14 +10225,14 @@ dependencies = [ "promql", "promql-parser", "prost 0.13.5", - "rand 0.9.0", + "rand 0.9.1", "regex", "serde", "serde_json", "session", - "snafu 0.8.5", + "snafu 0.8.6", "sql", - "sqlparser 0.54.0-greptime", + "sqlparser 0.55.0-greptime", "statrs", "store-api", "substrait 0.17.0", @@ -10175,26 +10253,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "quick-xml" -version = "0.35.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e446ed58cef1bbfe847bc2fda0e2e4ea9f0e57b90c507d4781292590d72a4e" -dependencies = [ - "memchr", - "serde", -] - -[[package]] -name = "quick-xml" -version = "0.36.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7649a7b4df05aed9ea7ec6f628c67c9953a43869b8bc50929569b2999d443fe" -dependencies = [ - "memchr", - "serde", -] - [[package]] name = "quick-xml" version = "0.37.5" @@ -10202,61 +10260,69 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" dependencies = [ "memchr", + "serde", ] [[package]] name = "quinn" -version = "0.11.5" +version = "0.11.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c7c5fdde3cdae7203427dc4f0a68fe0ed09833edc525a03456b153b79828684" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" dependencies = [ "bytes", + "cfg_aliases 0.2.1", "pin-project-lite", "quinn-proto", "quinn-udp", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "rustls", - "socket2", - "thiserror 1.0.64", + "socket2 0.5.10", + "thiserror 2.0.12", "tokio", "tracing", + "web-time 1.1.0", ] [[package]] name = "quinn-proto" -version = "0.11.8" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" dependencies = [ "bytes", - "rand 0.8.5", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", "ring", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "rustls", + "rustls-pki-types", "slab", - "thiserror 1.0.64", + "thiserror 2.0.12", "tinyvec", "tracing", + "web-time 1.1.0", ] [[package]] name = "quinn-udp" -version = "0.5.5" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fe68c2e9e1a1234e218683dbdf9f9dfcb094113c5ac2b938dfcb9bab4c4140b" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" dependencies = [ + "cfg_aliases 0.2.1", "libc", "once_cell", - "socket2", + "socket2 0.5.10", "tracing", "windows-sys 0.59.0", ] [[package]] name = "quote" -version = "1.0.37" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] @@ -10275,9 +10341,9 @@ checksum = "640c9bd8497b02465aeef5375144c26062e0dcd5939dfcbb0f5db76cb8c17c73" [[package]] name = "r-efi" -version = "5.2.0" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] name = "radium" @@ -10306,7 +10372,7 @@ dependencies = [ "nix 0.26.4", "num-derive", "num-traits", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prometheus", "prometheus-static-metric", "protobuf", @@ -10315,7 +10381,7 @@ dependencies = [ "serde", "serde_repr", "strum 0.25.0", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -10332,13 +10398,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", - "zerocopy 0.8.24", ] [[package]] @@ -10367,7 +10432,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", + "getrandom 0.2.16", "serde", ] @@ -10377,7 +10442,7 @@ version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", ] [[package]] @@ -10397,8 +10462,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "36ea961700fd7260e7fa3701c8287d901b2172c51f9c1421fa0f21d7f7e184b7" dependencies = [ "clocksource", - "parking_lot 0.12.3", - "thiserror 1.0.64", + "parking_lot 0.12.4", + "thiserror 1.0.69", ] [[package]] @@ -10444,7 +10509,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -10458,31 +10523,31 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.7" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] [[package]] name = "ref-cast" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccf0a6f84d5f1d581da8b41b47ec8600871962f2a528115b542b362d4b744931" +checksum = "4a0ae411dbe946a674d89546582cea4ba2bb8defac896622d6496f14c23ba5cf" dependencies = [ "ref-cast-impl", ] [[package]] name = "ref-cast-impl" -version = "1.0.23" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcc303e793d3734489387d205e9b186fac9c6cfacedd98cbb2e8a5943595f3e6" +checksum = "1165225c21bff1f3bbce98f5a1f889949bc902d3575308cc7b0de30b4f6d27c7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -10493,7 +10558,7 @@ checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.8", + "regex-automata 0.4.9", "regex-syntax 0.8.5", ] @@ -10508,9 +10573,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -10524,7 +10589,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c11639076bf147be211b90e47790db89f4c22b6c8a9ca6e960833869da67166" dependencies = [ "aho-corasick", - "indexmap 2.9.0", + "indexmap 2.10.0", "itertools 0.13.0", "nohash", "regex", @@ -10565,7 +10630,7 @@ version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "78ef7fa9ed0256d64a688a3747d0fef7a88851c18a5e1d57f115f38ec2e09366" dependencies = [ - "hashbrown 0.15.2", + "hashbrown 0.15.4", "memchr", ] @@ -10585,34 +10650,41 @@ dependencies = [ ] [[package]] -name = "reqsign" -version = "0.16.1" +name = "replace_with" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb0075a66c8bfbf4cc8b70dca166e722e1f55a3ea9250ecbb85f4d92a5f64149" +checksum = "51743d3e274e2b18df81c4dc6caf8a5b8e15dbe799e0dca05c7617380094e884" + +[[package]] +name = "reqsign" +version = "0.16.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43451dbf3590a7590684c25fb8d12ecdcc90ed3ac123433e500447c7d77ed701" dependencies = [ "anyhow", "async-trait", "base64 0.22.1", "chrono", "form_urlencoded", - "getrandom 0.2.15", + "getrandom 0.2.16", "hex", "hmac", "home", - "http 1.1.0", + "http 1.3.1", "jsonwebtoken", "log", "once_cell", "percent-encoding", - "quick-xml 0.35.0", + "quick-xml 0.37.5", "rand 0.8.5", - "reqwest 0.12.9", + "reqwest 0.12.21", "rsa", "rust-ini 0.21.1", "serde", "serde_json", "sha1", "sha2", + "tokio", ] [[package]] @@ -10629,7 +10701,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.32", "ipnet", "js-sys", "log", @@ -10653,48 +10725,45 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.9" +version = "0.12.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a77c62af46e79de0a562e1a9849205ffcb7fc1238876e9bd743357570e04046f" +checksum = "4c8cea6b35bcceb099f30173754403d2eba0a5dc18cea3630fccd88251909288" dependencies = [ "base64 0.22.1", "bytes", "futures-core", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", + "hyper 1.6.0", "hyper-rustls", "hyper-util", - "ipnet", "js-sys", "log", - "mime", "mime_guess", - "once_cell", "percent-encoding", "pin-project-lite", "quinn", "rustls", - "rustls-native-certs 0.8.0", - "rustls-pemfile", + "rustls-native-certs 0.8.1", "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-rustls", "tokio-util", + "tower 0.5.2", + "tower-http 0.6.6", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots", - "windows-registry", + "webpki-roots 1.0.1", ] [[package]] @@ -10707,7 +10776,7 @@ dependencies = [ "nix 0.25.1", "regex", "tempfile", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -10727,7 +10796,7 @@ checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom 0.2.16", "libc", "untrusted", "windows-sys 0.52.0", @@ -10770,9 +10839,9 @@ checksum = "3582f63211428f83597b51b2ddb88e2a91a9d52d12831f9d08f5e624e8977422" [[package]] name = "roaring" -version = "0.10.9" +version = "0.10.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41589aba99537475bf697f2118357cad1c31590c5a1b9f6d9fc4ad6d07503661" +checksum = "19e8d2cfa184d94d0726d650a9f4a1be7f9b76ac9fdb954219878dc00c1c1e7b" dependencies = [ "bytemuck", "byteorder", @@ -10780,9 +10849,9 @@ dependencies = [ [[package]] name = "robust" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf4a6aa5f6d6888f39e980649f3ad6b666acdce1d78e95b8a2cb076e687ae30" +checksum = "4e27ee8bb91ca0adcf0ecb116293afa12d393f9c2b9b9cd54d33e8078fe19839" [[package]] name = "ron" @@ -10803,9 +10872,9 @@ checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97" [[package]] name = "rsa" -version = "0.9.6" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d0e5124fcb30e76a7e79bfee683a2746db83784b86289f6251b54b7950a0dfc" +checksum = "78928ac1ed176a5ca1d17e578a1825f3d81ca54cf41053a592584b020cfd691b" dependencies = [ "const-oid", "digest", @@ -10824,9 +10893,9 @@ dependencies = [ [[package]] name = "rsasl" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45035615cdd68c71daac89aef75b130d4b2cad29599966e1b4671f8fbb463559" +checksum = "c8b534a23662bb559c5c73213be63ecd6524e774d291f3618c2b04b723d184eb" dependencies = [ "base64 0.22.1", "core2", @@ -10838,7 +10907,7 @@ dependencies = [ "serde_json", "sha2", "stringprep", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -10853,8 +10922,8 @@ dependencies = [ "futures", "integer-encoding 4.0.2", "lz4", - "parking_lot 0.12.3", - "rand 0.9.0", + "parking_lot 0.12.4", + "rand 0.9.1", "rsasl", "rustls", "snap", @@ -10862,14 +10931,14 @@ dependencies = [ "tokio", "tokio-rustls", "tracing", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] name = "rstar" -version = "0.12.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "133315eb94c7b1e8d0cb097e5a710d850263372fd028fff18969de708afc7008" +checksum = "421400d13ccfd26dfa5858199c30a5d76f9c54e0dba7575273025b43c5175dbb" dependencies = [ "heapless", "num-traits", @@ -10896,13 +10965,13 @@ checksum = "1f168d99749d307be9de54d23fd226628d99768225ef08f6ffb52e0182a27746" dependencies = [ "cfg-if", "glob", - "proc-macro-crate 3.2.0", + "proc-macro-crate 3.3.0", "proc-macro2", "quote", "regex", "relative-path", "rustc_version", - "syn 2.0.100", + "syn 2.0.104", "unicode-ident", ] @@ -10914,7 +10983,7 @@ checksum = "b3a8fb4672e840a587a66fc577a5491375df51ddb88f2a2c2a792598c326fe14" dependencies = [ "quote", "rand 0.8.5", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -10937,7 +11006,7 @@ dependencies = [ "proc-macro2", "quote", "rust-embed-utils", - "syn 2.0.100", + "syn 2.0.104", "walkdir", ] @@ -10984,9 +11053,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.36.0" +version = "1.37.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b082d80e3e3cc52b2ed634388d436fe1f4de6af5786cc2de9ba9737527bdf555" +checksum = "b203a6425500a03e0919c42d3c47caca51e79f1132046626d2c8871c5092035d" dependencies = [ "arrayvec", "borsh", @@ -11001,9 +11070,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" [[package]] name = "rustc-hash" @@ -11013,9 +11082,9 @@ checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" [[package]] name = "rustc-hash" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustc_version" @@ -11028,22 +11097,35 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.37" +version = "0.38.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" +checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", "errno", "libc", - "linux-raw-sys", - "windows-sys 0.52.0", + "linux-raw-sys 0.4.15", + "windows-sys 0.59.0", +] + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys 0.9.4", + "windows-sys 0.59.0", ] [[package]] name = "rustls" -version = "0.23.25" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822ee9188ac4ec04a2f0531e55d035fb2de73f18b41a63c70c2712503b6fb13c" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "log", "once_cell", @@ -11064,20 +11146,19 @@ dependencies = [ "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 2.11.1", ] [[package]] name = "rustls-native-certs" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcaf18a4f2be7326cd874a5fa579fae794320a0f388d365dca7e480e55f83f8a" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile", "rustls-pki-types", "schannel", - "security-framework", + "security-framework 3.2.0", ] [[package]] @@ -11091,15 +11172,19 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" +dependencies = [ + "web-time 1.1.0", + "zeroize", +] [[package]] name = "rustls-webpki" -version = "0.103.1" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fef8b8769aaccf73098557a87cd1816b4f9c7c16811c9c77142aa695c16f2c03" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ "ring", "rustls-pki-types", @@ -11108,15 +11193,15 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "s2" @@ -11134,18 +11219,18 @@ dependencies = [ [[package]] name = "safe-proc-macro2" -version = "1.0.67" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fd85be67db87168aa3c13fd0da99f48f2ab005dccad5af5626138dc1df20eb6" +checksum = "492d1a72624b0bd5b7f0193ea5834a1905534a517573a117e949e895f342906c" dependencies = [ - "unicode-ident", + "unicode-xid", ] [[package]] name = "safe-quote" -version = "1.0.15" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77e530f7831f3feafcd5f1aae406ac205dd998436b4007c8e80f03eca78a88f7" +checksum = "bcaa9a650f2f98ba4da0190623210c85945cb78b262709f606c57655eda173e1" dependencies = [ "safe-proc-macro2", ] @@ -11181,9 +11266,9 @@ dependencies = [ [[package]] name = "safe_arch" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" +checksum = "96b02de82ddbe1b636e6170c21be622223aea188ef2e139be0a5b219ec215323" dependencies = [ "bytemuck", ] @@ -11214,18 +11299,18 @@ checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" [[package]] name = "schannel" -version = "0.1.24" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9aaafd5a2b6e3d657ff009d82fbd630b6bd54dd4eb06f21693925cdf80f9b8b" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ "windows-sys 0.59.0", ] [[package]] name = "schemars" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09c024468a378b7e36765cd36702b7a90cc3cba11654f6685c8f233408e89e92" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" dependencies = [ "dyn-clone", "schemars_derive", @@ -11234,15 +11319,39 @@ dependencies = [ ] [[package]] -name = "schemars_derive" -version = "0.8.21" +name = "schemars" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1eee588578aff73f856ab961cd2f79e36bc45d7ded33a7562adba4667aecc0e" +checksum = "4cd191f9397d57d581cddd31014772520aa448f65ef991055d7f61582c65165f" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1375ba8ef45a6f15d83fa8748f1079428295d403d6ea991d09ab100155fbc06d" +dependencies = [ + "dyn-clone", + "ref-cast", + "serde", + "serde_json", +] + +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" dependencies = [ "proc-macro2", "quote", "serde_derive_internals", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -11270,9 +11379,9 @@ dependencies = [ [[package]] name = "sea-query" -version = "0.32.6" +version = "0.32.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c91783d1514b99754fc6a4079081dcc2c587dadbff65c48c7f62297443536a" +checksum = "8a5d1c518eaf5eda38e5773f902b26ab6d5e9e9e2bb2349ca6c64cf96f80448c" dependencies = [ "inherent", "sea-query-derive", @@ -11284,11 +11393,11 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bae0cbad6ab996955664982739354128c58d16e126114fe88c2a493642502aab" dependencies = [ - "darling 0.20.10", + "darling 0.20.11", "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "thiserror 2.0.12", ] @@ -11307,7 +11416,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -11326,8 +11435,21 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.0", - "core-foundation", + "bitflags 2.9.1", + "core-foundation 0.9.4", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +dependencies = [ + "bitflags 2.9.1", + "core-foundation 0.10.1", "core-foundation-sys", "libc", "security-framework-sys", @@ -11335,9 +11457,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.12.0" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea4a292869320c0272d7bc55a5a6aafaff59b4f63404a003887b679a2e05b4b6" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -11354,9 +11476,9 @@ dependencies = [ [[package]] name = "seq-macro" -version = "0.3.5" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" +checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" @@ -11385,7 +11507,7 @@ checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -11396,7 +11518,7 @@ checksum = "18d26a20a969b9e3fdf2fc2d9f21eda6c40e2de84c9408bb5d3b05d499aae711" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -11413,9 +11535,9 @@ dependencies = [ [[package]] name = "serde_path_to_error" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af99884400da37c88f5e9146b7f1fd0fbcae8f6eec4e9da38b67d05486f814a6" +checksum = "59fab13f937fa393d08645bf3a84bdfe86e296747b506ada67bb15f10f218b2a" dependencies = [ "itoa", "serde", @@ -11423,20 +11545,20 @@ dependencies = [ [[package]] name = "serde_repr" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" +checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "serde_spanned" -version = "0.6.8" +version = "0.6.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" dependencies = [ "serde", ] @@ -11450,7 +11572,7 @@ dependencies = [ "proc-macro2", "quote", "serde", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -11467,15 +11589,17 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.10.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9720086b3357bcb44fce40117d769a4d068c70ecfa190850a980a71755f66fcc" +checksum = "f2c45cd61fefa9db6f254525d46e392b852e0e61d9a1fd36e5bd183450a556d5" dependencies = [ "base64 0.22.1", "chrono", "hex", "indexmap 1.9.3", - "indexmap 2.9.0", + "indexmap 2.10.0", + "schemars 0.9.0", + "schemars 1.0.3", "serde", "serde_derive", "serde_json", @@ -11485,14 +11609,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.10.0" +version = "3.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f1abbfe725f27678f4663bcacb75a83e829fd464c25d78dd038a3a29e307cec" +checksum = "de90945e6565ce0d9a25098082ed4ee4002e047cb59892c318d66821e14bb30f" dependencies = [ - "darling 0.20.10", + "darling 0.20.11", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -11501,7 +11625,7 @@ version = "0.9.34+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a8b1a1a2ebf674015cc02edccce75287f1a0130d394307b36743c2f5d504b47" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "itoa", "ryu", "serde", @@ -11512,15 +11636,15 @@ dependencies = [ name = "servers" version = "0.17.0" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "api", - "arrow 54.2.1", + "arrow", "arrow-flight", - "arrow-ipc 54.2.1", - "arrow-schema 54.3.1", + "arrow-ipc", + "arrow-schema", "async-trait", "auth", - "axum 0.8.1", + "axum 0.8.4", "axum-extra", "axum-macros", "base64 0.22.1", @@ -11555,17 +11679,17 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datatypes", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "futures", "futures-util", "headers", "hostname 0.3.1", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "humantime", "humantime-serde", - "hyper 1.4.1", - "indexmap 2.9.0", + "hyper 1.6.0", + "indexmap 2.10.0", "influxdb_line_protocol", "itertools 0.14.0", "json5", @@ -11583,7 +11707,7 @@ dependencies = [ "opensrv-mysql", "opentelemetry-proto 0.27.0", "otel-arrow-rust", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "permutation", "pgwire", "pin-project", @@ -11595,9 +11719,9 @@ dependencies = [ "prost 0.13.5", "query", "quoted-string", - "rand 0.9.0", + "rand 0.9.1", "regex", - "reqwest 0.12.9", + "reqwest 0.12.21", "rust-embed", "rustls", "rustls-pemfile", @@ -11606,9 +11730,9 @@ dependencies = [ "serde_json", "session", "simd-json", - "snafu 0.8.5", + "snafu 0.8.6", "snap", - "socket2", + "socket2 0.5.10", "sql", "store-api", "strum 0.27.1", @@ -11621,22 +11745,22 @@ dependencies = [ "tokio-rustls", "tokio-stream", "tokio-util", - "tonic 0.12.3", + "tonic 0.13.1", "tonic-reflection", "tower 0.5.2", - "tower-http 0.6.2", + "tower-http 0.6.6", "tracing", "urlencoding", "uuid", "vrl", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] name = "session" version = "0.17.0" dependencies = [ - "ahash 0.8.11", + "ahash 0.8.12", "api", "arc-swap", "auth", @@ -11647,9 +11771,9 @@ dependencies = [ "common-session", "common-telemetry", "common-time", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "derive_more", - "snafu 0.8.5", + "snafu 0.8.6", "sql", ] @@ -11677,9 +11801,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.10.8" +version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", "cpufeatures", @@ -11725,9 +11849,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.2" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] @@ -11770,11 +11894,11 @@ dependencies = [ [[package]] name = "simd-json" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10b5602e4f1f7d358956f94cac1eff59220f34cf9e26d49f5fde5acef851cbed" +checksum = "c962f626b54771990066e5435ec8331d1462576cd2d1e62f24076ae014f92112" dependencies = [ - "getrandom 0.3.2", + "getrandom 0.3.3", "halfbrown", "ref-cast", "serde", @@ -11791,9 +11915,9 @@ checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "similar" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1de1d4f81173b03af4c0cbed3c898f6bff5b870e4a7f5d6f4057d62a7a4b686e" +checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" dependencies = [ "bstr", "unicode-segmentation", @@ -11801,9 +11925,9 @@ dependencies = [ [[package]] name = "similar-asserts" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfe85670573cd6f0fa97940f26e7e6601213c3b0555246c24234131f88c5709e" +checksum = "b5b441962c817e33508847a22bd82f03a30cff43642dc2fae8b050566121eb9a" dependencies = [ "console", "similar", @@ -11811,22 +11935,16 @@ dependencies = [ [[package]] name = "simple_asn1" -version = "0.6.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ "num-bigint", "num-traits", - "thiserror 1.0.64", + "thiserror 2.0.12", "time", ] -[[package]] -name = "siphasher" -version = "0.3.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" - [[package]] name = "siphasher" version = "1.0.1" @@ -11844,12 +11962,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" -dependencies = [ - "autocfg", -] +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "slotmap" @@ -11862,9 +11977,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ "serde", ] @@ -11881,11 +11996,11 @@ dependencies = [ [[package]] name = "snafu" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "223891c85e2a29c3fe8fb900c1fae5e69c2e42415e3177752e8718475efa5019" +checksum = "320b01e011bf8d5d7a4a4a4be966d9160968935849c83b918827f6a435e7f627" dependencies = [ - "snafu-derive 0.8.5", + "snafu-derive 0.8.6", ] [[package]] @@ -11902,14 +12017,14 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03c3c6b7927ffe7ecaa769ee0e3994da3b8cafc8f444578982c83ecb161af917" +checksum = "1961e2ef424c1424204d3a5d6975f934f56b6d50ff5732382d84ebf460e147f7" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -11920,21 +12035,31 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "socket2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", "windows-sys 0.52.0", ] [[package]] -name = "spade" -version = "2.12.1" +name = "socket2" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f5ef1f863aca7d1d7dda7ccfc36a0a4279bd6d3c375176e5e0712e25cb4889" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" dependencies = [ - "hashbrown 0.14.5", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "spade" +version = "2.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a14e31a007e9f85c32784b04f89e6e194bb252a4d41b4a8ccd9e77245d901c8c" +dependencies = [ + "hashbrown 0.15.4", "num-traits", "robust", "smallvec", @@ -11942,9 +12067,9 @@ dependencies = [ [[package]] name = "sparsevec" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35df5d2e580b29f3f7ec5b4ed49b0ab3acf7f3624122b3e823cafb9630f293b8" +checksum = "68b4a8ce3045f0fe173fb5ae3c6b7dcfbec02bfa650bb8618b2301f52af0134d" dependencies = [ "num-traits", "packedvec", @@ -12002,8 +12127,8 @@ dependencies = [ "regex", "serde", "serde_json", - "snafu 0.8.5", - "sqlparser 0.54.0-greptime", + "snafu 0.8.6", + "sqlparser 0.55.0-greptime", "sqlparser_derive 0.1.1", "store-api", "table", @@ -12023,7 +12148,7 @@ dependencies = [ "prettydiff", "regex", "serde_json", - "thiserror 1.0.64", + "thiserror 1.0.69", "toml 0.5.11", "walkdir", ] @@ -12033,7 +12158,7 @@ name = "sqlness-runner" version = "0.17.0" dependencies = [ "async-trait", - "clap 4.5.19", + "clap 4.5.40", "client", "common-error", "common-query", @@ -12045,7 +12170,7 @@ dependencies = [ "local-ip-address", "mysql", "num_cpus", - "reqwest 0.12.9", + "reqwest 0.12.21", "serde", "serde_json", "sha2", @@ -12060,23 +12185,23 @@ dependencies = [ [[package]] name = "sqlparser" -version = "0.54.0-greptime" -source = "git+https://github.com/GreptimeTeam/sqlparser-rs.git?rev=df6fcca80ce903f5beef7002cd2c1b062e7024f8#df6fcca80ce903f5beef7002cd2c1b062e7024f8" +version = "0.55.0-greptime" +source = "git+https://github.com/GreptimeTeam/sqlparser-rs.git?rev=39e4fc94c3c741981f77e9d63b5ce8c02e0a27ea#39e4fc94c3c741981f77e9d63b5ce8c02e0a27ea" dependencies = [ "lazy_static", "log", "recursive", "regex", "serde", - "sqlparser 0.54.0", + "sqlparser 0.55.0", "sqlparser_derive 0.3.0-greptime", ] [[package]] name = "sqlparser" -version = "0.54.0" +version = "0.55.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66e3b7374ad4a6af849b08b3e7a6eda0edbd82f0fd59b57e22671bf16979899" +checksum = "c4521174166bac1ff04fe16ef4524c70144cd29682a45978978ca3d7f4e0be11" dependencies = [ "log", "recursive", @@ -12097,11 +12222,11 @@ dependencies = [ [[package]] name = "sqlparser_derive" version = "0.3.0-greptime" -source = "git+https://github.com/GreptimeTeam/sqlparser-rs.git?rev=df6fcca80ce903f5beef7002cd2c1b062e7024f8#df6fcca80ce903f5beef7002cd2c1b062e7024f8" +source = "git+https://github.com/GreptimeTeam/sqlparser-rs.git?rev=39e4fc94c3c741981f77e9d63b5ce8c02e0a27ea#39e4fc94c3c741981f77e9d63b5ce8c02e0a27ea" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -12112,7 +12237,7 @@ checksum = "da5fc6819faabb412da764b99d3b713bb55083c11e7e0c00144d386cd6a1939c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -12140,14 +12265,14 @@ dependencies = [ "crc", "crossbeam-queue", "either", - "event-listener 5.3.1", + "event-listener 5.4.0", "futures-core", "futures-intrusive", "futures-io", "futures-util", - "hashbrown 0.15.2", + "hashbrown 0.15.4", "hashlink", - "indexmap 2.9.0", + "indexmap 2.10.0", "log", "memchr", "once_cell", @@ -12162,7 +12287,7 @@ dependencies = [ "tokio-stream", "tracing", "url", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] @@ -12175,7 +12300,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -12198,7 +12323,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.100", + "syn 2.0.104", "tokio", "url", ] @@ -12211,7 +12336,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.1", "byteorder", "bytes", "chrono", @@ -12254,7 +12379,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.1", "byteorder", "chrono", "crc", @@ -12317,9 +12442,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stacker" -version = "0.1.17" +version = "0.1.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +checksum = "cddb07e32ddb770749da91081d8d0ac3a16f1a569a18b20348cd371f5dead06b" dependencies = [ "cc", "cfg-if", @@ -12374,17 +12499,17 @@ dependencies = [ "datafusion-expr", "datafusion-physical-plan", "datatypes", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "futures", "humantime", "lazy_static", - "num_enum 0.7.3", + "num_enum 0.7.4", "prometheus", "prost 0.13.5", "serde", "serde_json", - "snafu 0.8.5", - "sqlparser 0.54.0-greptime", + "snafu 0.8.6", + "sqlparser 0.55.0-greptime", "strum 0.27.1", "tokio", ] @@ -12408,8 +12533,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf776ba3fa74f83bf4b63c3dcbbf82173db2632ed8452cb2d891d33f459de70f" dependencies = [ "new_debug_unreachable", - "parking_lot 0.12.3", - "phf_shared 0.11.2", + "parking_lot 0.12.4", + "phf_shared 0.11.3", "precomputed-hash", ] @@ -12454,12 +12579,6 @@ dependencies = [ "strum_macros 0.25.3", ] -[[package]] -name = "strum" -version = "0.26.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" - [[package]] name = "strum" version = "0.27.1" @@ -12479,20 +12598,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.100", -] - -[[package]] -name = "strum_macros" -version = "0.26.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" -dependencies = [ - "heck 0.5.0", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -12505,7 +12611,7 @@ dependencies = [ "proc-macro2", "quote", "rustversion", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -12534,7 +12640,7 @@ dependencies = [ "datatypes", "promql", "prost 0.13.5", - "snafu 0.8.5", + "snafu 0.8.6", "substrait 0.37.3", "tokio", ] @@ -12550,21 +12656,21 @@ dependencies = [ "prost 0.13.5", "prost-build 0.13.5", "prost-types 0.13.5", - "schemars", + "schemars 0.8.22", "semver", "serde", "serde_json", "serde_yaml", - "syn 2.0.100", + "syn 2.0.104", "typify 0.1.0", "walkdir", ] [[package]] name = "substrait" -version = "0.53.2" +version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fac3d70185423235f37b889764e184b81a5af4bb7c95833396ee9bd92577e1b" +checksum = "de6d24c270c6c672a86c183c3a8439ba46c1936f93cf7296aa692de3b0ff0228" dependencies = [ "heck 0.5.0", "pbjson", @@ -12575,13 +12681,13 @@ dependencies = [ "prost-build 0.13.5", "prost-types 0.13.5", "regress 0.10.3", - "schemars", + "schemars 0.8.22", "semver", "serde", "serde_json", "serde_yaml", - "syn 2.0.100", - "typify 0.3.0", + "syn 2.0.104", + "typify 0.4.2", "walkdir", ] @@ -12593,9 +12699,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "symbolic-common" -version = "12.12.0" +version = "12.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "366f1b4c6baf6cfefc234bbd4899535fca0b06c74443039a73f6dfb2fad88d77" +checksum = "6a1150bdda9314f6cfeeea801c23f5593c6e6a6c72e64f67e48d723a12b8efdb" dependencies = [ "debugid", "memmap2", @@ -12605,9 +12711,9 @@ dependencies = [ [[package]] name = "symbolic-demangle" -version = "12.12.0" +version = "12.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aba05ba5b9962ea5617baf556293720a8b2d0a282aa14ee4bf10e22efc7da8c8" +checksum = "9f66537def48fbc704a92e4fdaab7833bc7cb2255faca8182592fb5fa617eb82" dependencies = [ "cpp_demangle", "rustc-demangle", @@ -12627,27 +12733,15 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.100" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b09a44accad81e1ba1cd74a32461ba89dee89095ba17b32f5d03683b1b1fc2a0" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "syn_derive" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" -dependencies = [ - "proc-macro-error", - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "sync_wrapper" version = "0.1.2" @@ -12656,22 +12750,22 @@ checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" [[package]] name = "sync_wrapper" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7065abeca94b6a8a577f9bd45aa0867a2238b74e8eb67cf10d492bc39351394" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" dependencies = [ "futures-core", ] [[package]] name = "synstructure" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -12695,7 +12789,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "161028c00842709450114c39db3b29f44c898055ed8833bb9b535aba7facf30e" dependencies = [ "chrono", - "nom", + "nom 7.1.3", ] [[package]] @@ -12705,7 +12799,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", - "core-foundation", + "core-foundation 0.9.4", "system-configuration-sys", ] @@ -12742,7 +12836,7 @@ dependencies = [ "datafusion-expr", "datafusion-physical-expr", "datatypes", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "futures", "greptime-proto", "humantime", @@ -12753,8 +12847,8 @@ dependencies = [ "paste", "serde", "serde_json", - "snafu 0.8.5", - "sqlparser 0.54.0-greptime", + "snafu 0.8.6", + "sqlparser 0.55.0-greptime", "store-api", "tokio", "tokio-util", @@ -12799,7 +12893,7 @@ dependencies = [ "rayon", "regex", "rust-stemmers", - "rustc-hash 2.0.0", + "rustc-hash 2.1.1", "serde", "serde_json", "sketches-ddsketch", @@ -12816,7 +12910,7 @@ dependencies = [ "time", "uuid", "winapi", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -12885,7 +12979,7 @@ version = "0.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e810cdeeebca57fc3f7bfec5f85fdbea9031b2ac9b990eb5ff49b371d52bbe6a" dependencies = [ - "nom", + "nom 7.1.3", "serde", "serde_json", ] @@ -12901,7 +12995,7 @@ dependencies = [ "tantivy-bitpacker", "tantivy-common", "tantivy-fst", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -12932,9 +13026,9 @@ checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" [[package]] name = "tar" -version = "0.4.43" +version = "0.4.44" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c65998313f8e17d0d553d28f91a0df93e4dbbbf770279c7bc21ca0f09ea1a1f6" +checksum = "1d863878d212c87a19c1a610eb53bb01fe12951c0501cf5a0d65f724914a667a" dependencies = [ "filetime", "libc", @@ -12947,19 +13041,19 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "96374855068f47402c3121c6eed88d29cb1de8f3ab27090e273e420bdabcf050" dependencies = [ - "parking_lot 0.12.3", + "parking_lot 0.12.4", ] [[package]] name = "tempfile" -version = "3.13.0" +version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" +checksum = "7437ac7763b9b123ccf33c338a5cc1bac6f69b45a136c19bdd8a65e3916435bf" dependencies = [ - "cfg-if", "fastrand", + "getrandom 0.3.3", "once_cell", - "rustix", + "rustix 1.0.7", "windows-sys 0.59.0", ] @@ -12984,9 +13078,9 @@ dependencies = [ [[package]] name = "termtree" -version = "0.4.1" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3369f5ac52d5eb6ab48c6b4ffdc8efbcad6b89c765749064ba298f2c68a16a76" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "tests-fuzz" @@ -13004,7 +13098,7 @@ dependencies = [ "common-telemetry", "common-time", "datatypes", - "derive_builder 0.20.1", + "derive_builder 0.20.2", "dotenv", "futures", "humantime", @@ -13015,16 +13109,16 @@ dependencies = [ "nix 0.28.0", "partition", "paste", - "rand 0.9.0", + "rand 0.9.1", "rand_chacha 0.9.0", - "reqwest 0.12.9", - "schemars", + "reqwest 0.12.21", + "schemars 0.8.22", "serde", "serde_json", "serde_yaml", - "snafu 0.8.5", + "snafu 0.8.6", "sql", - "sqlparser 0.54.0-greptime", + "sqlparser 0.55.0-greptime", "sqlx", "store-api", "strum 0.27.1", @@ -13041,11 +13135,11 @@ dependencies = [ "async-stream", "async-trait", "auth", - "axum 0.8.1", + "axum 0.8.4", "cache", "catalog", "chrono", - "clap 4.5.19", + "clap 4.5.40", "client", "cmd", "common-base", @@ -13075,7 +13169,7 @@ dependencies = [ "futures", "futures-util", "hex", - "http 1.1.0", + "http 1.3.1", "hyper-util", "itertools 0.14.0", "jsonb", @@ -13088,12 +13182,13 @@ dependencies = [ "object-store", "opentelemetry-proto 0.27.0", "operator", + "otel-arrow-rust", "partition", "paste", "pipeline", "prost 0.13.5", "query", - "rand 0.9.0", + "rand 0.9.1", "rstest", "rstest_reuse", "sea-query", @@ -13101,7 +13196,7 @@ dependencies = [ "servers", "session", "similar-asserts", - "snafu 0.8.5", + "snafu 0.8.6", "sql", "sqlx", "store-api", @@ -13112,28 +13207,28 @@ dependencies = [ "tokio", "tokio-postgres", "tokio-stream", - "tonic 0.12.3", + "tonic 0.13.1", "tower 0.5.2", "url", "urlencoding", "uuid", "yaml-rust", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] name = "textwrap" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" +checksum = "c13547615a44dc9c452a8a534638acdf07120d4b6847c8178705da06306a3057" [[package]] name = "thiserror" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d50af8abc119fb8bb6dbabcfa89656f46f84aa0ac7688088608076ad2b459a84" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl 1.0.64", + "thiserror-impl 1.0.69", ] [[package]] @@ -13147,13 +13242,13 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "1.0.64" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08904e7672f5eb876eaaf87e0ce17857500934f4981c4a0ab2b4aa98baac7fc3" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -13164,7 +13259,7 @@ checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -13179,12 +13274,11 @@ dependencies = [ [[package]] name = "thread_local" -version = "1.1.8" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -13231,9 +13325,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.36" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -13248,15 +13342,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.18" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f252a68540fde3a3877aeea552b832b40ab9a69e318efd078774a01ddee1ccf" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", @@ -13273,9 +13367,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" dependencies = [ "displaydoc", "zerovec", @@ -13293,9 +13387,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] @@ -13308,21 +13402,23 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "pin-project-lite", "signal-hook-registry", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -13343,7 +13439,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -13365,7 +13461,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8092b7a97ed5dac2f44892db190eca8f476ede0fa585bc87664de4151cd0b64" dependencies = [ "lazy_static", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "prometheus", "tokio", "tokio-metrics", @@ -13373,9 +13469,9 @@ dependencies = [ [[package]] name = "tokio-postgres" -version = "0.7.12" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b5d3742945bc7d7f210693b0c58ae542c6fd47b17adbbda0885f3dcb34a6bdb" +checksum = "6c95d533c83082bb6490e0189acaa0bbeef9084e60471b696ca6988cd0541fb0" dependencies = [ "async-trait", "byteorder", @@ -13384,14 +13480,14 @@ dependencies = [ "futures-channel", "futures-util", "log", - "parking_lot 0.12.3", + "parking_lot 0.12.4", "percent-encoding", - "phf 0.11.2", + "phf 0.11.3", "pin-project-lite", "postgres-protocol", "postgres-types", - "rand 0.8.5", - "socket2", + "rand 0.9.1", + "socket2 0.5.10", "tokio", "tokio-util", "whoami", @@ -13423,9 +13519,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.16" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f4e6ce100d0eb49a2734f8c0812bcd324cf357d21810932c5df6b96ef2b86f1" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", "pin-project-lite", @@ -13448,9 +13544,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.12" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -13472,22 +13568,22 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.19" +version = "0.8.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" +checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.22.22", + "toml_edit 0.22.27", ] [[package]] name = "toml_datetime" -version = "0.6.8" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" dependencies = [ "serde", ] @@ -13498,24 +13594,31 @@ version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "toml_datetime", "winnow 0.5.40", ] [[package]] name = "toml_edit" -version = "0.22.22" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "indexmap 2.9.0", + "indexmap 2.10.0", "serde", "serde_spanned", "toml_datetime", - "winnow 0.6.20", + "toml_write", + "winnow 0.7.11", ] +[[package]] +name = "toml_write" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" + [[package]] name = "tonic" version = "0.9.2" @@ -13531,7 +13634,7 @@ dependencies = [ "h2 0.3.26", "http 0.2.12", "http-body 0.4.6", - "hyper 0.14.30", + "hyper 0.14.32", "hyper-timeout 0.4.1", "percent-encoding", "pin-project", @@ -13555,40 +13658,55 @@ dependencies = [ "axum 0.7.9", "base64 0.22.1", "bytes", - "flate2", - "h2 0.4.7", - "http 1.1.0", + "h2 0.4.11", + "http 1.3.1", "http-body 1.0.1", "http-body-util", - "hyper 1.4.1", - "hyper-timeout 0.5.1", + "hyper 1.6.0", + "hyper-timeout 0.5.2", "hyper-util", "percent-encoding", "pin-project", "prost 0.13.5", - "rustls-pemfile", - "socket2", + "socket2 0.5.10", "tokio", - "tokio-rustls", "tokio-stream", "tower 0.4.13", "tower-layer", "tower-service", "tracing", - "zstd 0.13.2", ] [[package]] -name = "tonic-build" -version = "0.11.0" +name = "tonic" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4ef6dd70a610078cb4e338a0f79d06bc759ff1b22d2120c2ff02ae264ba9c2" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" dependencies = [ - "prettyplease", - "proc-macro2", - "prost-build 0.12.6", - "quote", - "syn 2.0.100", + "async-trait", + "axum 0.8.4", + "base64 0.22.1", + "bytes", + "flate2", + "h2 0.4.11", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", + "hyper-timeout 0.5.2", + "hyper-util", + "percent-encoding", + "pin-project", + "prost 0.13.5", + "socket2 0.5.10", + "tokio", + "tokio-rustls", + "tokio-stream", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", + "zstd 0.13.3", ] [[package]] @@ -13602,20 +13720,34 @@ dependencies = [ "prost-build 0.13.5", "prost-types 0.13.5", "quote", - "syn 2.0.100", + "syn 2.0.104", +] + +[[package]] +name = "tonic-build" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" +dependencies = [ + "prettyplease", + "proc-macro2", + "prost-build 0.13.5", + "prost-types 0.13.5", + "quote", + "syn 2.0.104", ] [[package]] name = "tonic-reflection" -version = "0.12.3" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "878d81f52e7fcfd80026b7fdb6a9b578b3c3653ba987f87f0dce4b64043cba27" +checksum = "f9687bd5bfeafebdded2356950f278bba8226f0b32109537c4253406e09aafe1" dependencies = [ "prost 0.13.5", "prost-types 0.13.5", "tokio", "tokio-stream", - "tonic 0.12.3", + "tonic 0.13.1", ] [[package]] @@ -13647,10 +13779,10 @@ dependencies = [ "futures-core", "futures-util", "hdrhistogram", - "indexmap 2.9.0", + "indexmap 2.10.0", "pin-project-lite", "slab", - "sync_wrapper 1.0.1", + "sync_wrapper 1.0.2", "tokio", "tokio-util", "tower-layer", @@ -13665,9 +13797,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "base64 0.21.7", - "bitflags 2.9.0", + "bitflags 2.9.1", "bytes", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "mime", @@ -13679,17 +13811,17 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.6.2" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "async-compression 0.4.13", + "async-compression 0.4.19", "base64 0.22.1", - "bitflags 2.9.0", + "bitflags 2.9.1", "bytes", "futures-core", "futures-util", - "http 1.1.0", + "http 1.3.1", "http-body 1.0.1", "http-body-util", "http-range-header", @@ -13722,9 +13854,9 @@ checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "log", "pin-project-lite", @@ -13739,27 +13871,27 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3566e8ce28cc0a3fe42519fc80e6b4c943cc4c8cef275620eb8dac2d3d4e06cf" dependencies = [ "crossbeam-channel", - "thiserror 1.0.64", + "thiserror 1.0.69", "time", "tracing-subscriber", ] [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ "once_cell", "valuable", @@ -13807,9 +13939,9 @@ dependencies = [ [[package]] name = "tracing-serde" -version = "0.1.3" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6b213177105856957181934e4920de57730fc69bf42c37ee5bb664d406d9e1" +checksum = "704b1aeb7be0d0a84fc9828cae51dab5970fee5088f83d1dd7ee6f6246fc6ff1" dependencies = [ "serde", "tracing-core", @@ -13817,9 +13949,9 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.18" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ "matchers", "nu-ansi-term", @@ -13850,37 +13982,27 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "twox-hash" -version = "1.6.3" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" -dependencies = [ - "cfg-if", - "static_assertions", -] - -[[package]] -name = "twox-hash" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908" +checksum = "8b907da542cbced5261bd3256de1b3a1bf340a3d37f93425a07362a1d687de56" [[package]] name = "typeid" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e13db2e0ccd5e14a544e8a246ba2312cd25223f616442d7f2cb0e3db614236e" +checksum = "bc7d623258602320d5c55d1bc22793b57daff0ec7efc270ea7d55ce1d5f5471c" [[package]] name = "typenum" -version = "1.17.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "typetag" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba3b6e86ffe0054b2c44f2d86407388b933b16cb0a70eea3929420db1d9bbe" +checksum = "73f22b40dd7bfe8c14230cf9702081366421890435b2d625fa92b4acc4c3de6f" dependencies = [ "erased-serde", "inventory", @@ -13891,13 +14013,13 @@ dependencies = [ [[package]] name = "typetag-impl" -version = "0.2.18" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70b20a22c42c8f1cd23ce5e34f165d4d37038f5b663ad20fb6adbdf029172483" +checksum = "35f5380909ffc31b4de4f4bdf96b877175a016aa2ca98cee39fcfd8c4d53d952" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -13912,12 +14034,12 @@ dependencies = [ [[package]] name = "typify" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e03ba3643450cfd95a1aca2e1938fef63c1c1994489337998aff4ad771f21ef8" +checksum = "6c6c647a34e851cf0260ccc14687f17cdcb8302ff1a8a687a24b97ca0f82406f" dependencies = [ - "typify-impl 0.3.0", - "typify-macro 0.3.0", + "typify-impl 0.4.2", + "typify-macro 0.4.2", ] [[package]] @@ -13931,31 +14053,31 @@ dependencies = [ "proc-macro2", "quote", "regress 0.9.1", - "schemars", + "schemars 0.8.22", "semver", "serde", "serde_json", - "syn 2.0.100", - "thiserror 1.0.64", + "syn 2.0.104", + "thiserror 1.0.69", "unicode-ident", ] [[package]] name = "typify-impl" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bce48219a2f3154aaa2c56cbf027728b24a3c8fe0a47ed6399781de2b3f3eeaf" +checksum = "741b7f1e2e1338c0bee5ad5a7d3a9bbd4e24c33765c08b7691810e68d879365d" dependencies = [ "heck 0.5.0", "log", "proc-macro2", "quote", "regress 0.10.3", - "schemars", + "schemars 0.8.22", "semver", "serde", "serde_json", - "syn 2.0.100", + "syn 2.0.104", "thiserror 2.0.12", "unicode-ident", ] @@ -13968,30 +14090,30 @@ checksum = "f8e6491896e955692d68361c68db2b263e3bec317ec0b684e0e2fa882fb6e31e" dependencies = [ "proc-macro2", "quote", - "schemars", + "schemars 0.8.22", "semver", "serde", "serde_json", "serde_tokenstream", - "syn 2.0.100", + "syn 2.0.104", "typify-impl 0.1.0", ] [[package]] name = "typify-macro" -version = "0.3.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68b5780d745920ed73c5b7447496a9b5c42ed2681a9b70859377aec423ecf02b" +checksum = "7560adf816a1e8dad7c63d8845ef6e31e673e39eab310d225636779230cbedeb" dependencies = [ "proc-macro2", "quote", - "schemars", + "schemars 0.8.22", "semver", "serde", "serde_json", "serde_tokenstream", - "syn 2.0.100", - "typify-impl 0.3.0", + "syn 2.0.104", + "typify-impl 0.4.2", ] [[package]] @@ -14022,9 +14144,9 @@ dependencies = [ [[package]] name = "ua-parser" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7176a413a0b7e94926d11a2054c6db5ac7fa42bf4ebe7e9571152e3f024ddfd" +checksum = "5c06b979bd5606d182759ff9cd3dda2b034b584a1ed41116407cb92abf3c995a" dependencies = [ "regex", "regex-filtered", @@ -14047,27 +14169,24 @@ dependencies = [ [[package]] name = "unescaper" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c878a167baa8afd137494101a688ef8c67125089ff2249284bd2b5f9bfedb815" +checksum = "c01d12e3a56a4432a8b436f293c25f4808bdf9e9f9f98f9260bba1f1bc5a1f26" dependencies = [ - "thiserror 1.0.64", + "thiserror 2.0.12", ] [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-bidi" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" +checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" @@ -14102,6 +14221,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" +[[package]] +name = "unicode-width" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" + [[package]] name = "unicode-xid" version = "0.2.6" @@ -14147,12 +14272,6 @@ version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8-ranges" version = "1.0.5" @@ -14179,21 +14298,22 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.10.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ - "getrandom 0.2.15", - "rand 0.8.5", + "getrandom 0.3.3", + "js-sys", + "rand 0.9.1", "serde", "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "value-trait" @@ -14226,7 +14346,7 @@ dependencies = [ "proc-macro-crate 1.3.1", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "variadics", ] @@ -14261,12 +14381,11 @@ checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "vob" -version = "3.0.3" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c058f4c41e71a043c67744cb76dcc1ae63ece328c1732a72489ccccc2dec23e6" +checksum = "0baa046ba374a7701d98032a468a0bbd968a8cd3a2ae39c94d74e211fac05c81" dependencies = [ "num-traits", - "rustc_version", "serde", ] @@ -14291,10 +14410,10 @@ dependencies = [ "chrono-tz", "ciborium", "cidr", - "clap 4.5.19", + "clap 4.5.40", "codespan-reporting", "community-id", - "convert_case", + "convert_case 0.7.1", "crc", "crypto_secretbox", "csv", @@ -14312,7 +14431,7 @@ dependencies = [ "hostname 0.4.1", "iana-time-zone", "idna", - "indexmap 2.9.0", + "indexmap 2.10.0", "indoc", "influxdb-line-protocol", "itertools 0.14.0", @@ -14320,10 +14439,10 @@ dependencies = [ "lalrpop-util", "lz4_flex", "md-5", - "nom", + "nom 7.1.3", "ofb", "onig", - "ordered-float 4.3.0", + "ordered-float 4.6.0", "parse-size", "peeking_take_while", "percent-encoding", @@ -14347,7 +14466,7 @@ dependencies = [ "sha2", "sha3", "simdutf8", - "snafu 0.8.5", + "snafu 0.8.6", "snap", "strip-ansi-escapes", "syslog_loose", @@ -14361,7 +14480,7 @@ dependencies = [ "utf8-width", "uuid", "woothee", - "zstd 0.13.2", + "zstd 0.13.3", ] [[package]] @@ -14400,9 +14519,9 @@ dependencies = [ [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" @@ -14441,18 +14560,19 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.43" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e9300f63a621e96ed275155c108eb6f843b6a26d053f122ab69724559dc8ed" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] @@ -14475,7 +14595,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -14491,9 +14611,9 @@ dependencies = [ [[package]] name = "wasm-streams" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e072d4e72f700fb3443d8fe94a39315df013eef1104903cdb0a2abd322bbecd" +checksum = "15053d8d85c7eccdbefef60f06769760a563c7f0a9d6902a13d35c7800b0ad65" dependencies = [ "futures-util", "js-sys", @@ -14504,9 +14624,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.70" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26fdeaafd9bd129f65e7c031593c24d62186301e0c72c8978fa1678be7d532c0" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", @@ -14544,29 +14664,38 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.6" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "841c67bff177718f1d4dfefde8d8f0e78f9b6589319ba88312f567fc5841a958" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.1", +] + +[[package]] +name = "webpki-roots" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ "rustls-pki-types", ] [[package]] name = "whoami" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" +checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" dependencies = [ - "redox_syscall 0.5.7", + "redox_syscall 0.5.13", "wasite", "web-sys", ] [[package]] name = "wide" -version = "0.7.28" +version = "0.7.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690" +checksum = "0ce5da8ecb62bcd8ec8b7ea19f69a51275e91299be594ea5cc6ef7819e16cd03" dependencies = [ "bytemuck", "safe_arch", @@ -14615,21 +14744,24 @@ dependencies = [ [[package]] name = "windows" -version = "0.58.0" +version = "0.61.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd04d41d93c4992d421894c18c8b43496aa748dd4c081bac0dc93eb0489272b6" +checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ - "windows-core 0.58.0", - "windows-targets 0.52.6", + "windows-collections", + "windows-core 0.61.2", + "windows-future", + "windows-link", + "windows-numerics", ] [[package]] -name = "windows-core" -version = "0.52.0" +name = "windows-collections" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-targets 0.52.6", + "windows-core 0.61.2", ] [[package]] @@ -14646,15 +14778,26 @@ dependencies = [ [[package]] name = "windows-core" -version = "0.58.0" +version = "0.61.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" dependencies = [ - "windows-implement 0.58.0", - "windows-interface 0.58.0", - "windows-result 0.2.0", + "windows-implement 0.60.0", + "windows-interface 0.59.1", + "windows-link", + "windows-result 0.3.4", "windows-strings", - "windows-targets 0.52.6", +] + +[[package]] +name = "windows-future" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" +dependencies = [ + "windows-core 0.61.2", + "windows-link", + "windows-threading", ] [[package]] @@ -14665,18 +14808,18 @@ checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "windows-implement" -version = "0.58.0" +version = "0.60.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bbd5b46c938e506ecbce286b6628a02171d56153ba733b6c741fc627ec9579b" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -14687,35 +14830,34 @@ checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "windows-interface" -version = "0.58.0" +version = "0.59.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "053c4c462dc91d3b1504c6fe5a726dd15e216ba718e84a0e46a88fbe5ded3515" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "windows-link" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76840935b766e1b0a05c0066835fb9ec80071d4c09a16f6bd5f7e655e3c14c38" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" [[package]] -name = "windows-registry" +name = "windows-numerics" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-result 0.2.0", - "windows-strings", - "windows-targets 0.52.6", + "windows-core 0.61.2", + "windows-link", ] [[package]] @@ -14729,21 +14871,20 @@ dependencies = [ [[package]] name = "windows-result" -version = "0.2.0" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" dependencies = [ - "windows-targets 0.52.6", + "windows-link", ] [[package]] name = "windows-strings" -version = "0.1.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows-result 0.2.0", - "windows-targets 0.52.6", + "windows-link", ] [[package]] @@ -14773,6 +14914,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -14797,13 +14947,38 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + +[[package]] +name = "windows-threading" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -14816,6 +14991,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" @@ -14828,6 +15009,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" +[[package]] +name = "windows_aarch64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" + [[package]] name = "windows_i686_gnu" version = "0.48.5" @@ -14840,12 +15027,24 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" +[[package]] +name = "windows_i686_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" + [[package]] name = "windows_i686_msvc" version = "0.48.5" @@ -14858,6 +15057,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" +[[package]] +name = "windows_i686_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" @@ -14870,6 +15075,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -14882,6 +15093,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" + [[package]] name = "windows_x86_64_msvc" version = "0.48.5" @@ -14894,6 +15111,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" +[[package]] +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + [[package]] name = "winnow" version = "0.5.40" @@ -14905,9 +15128,18 @@ dependencies = [ [[package]] name = "winnow" -version = "0.6.20" +version = "0.6.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +checksum = "1e90edd2ac1aa278a5c4599b1d89cf03074b610800f866d4026dc199d7929a28" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.7.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ "memchr", ] @@ -14928,7 +15160,7 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" dependencies = [ - "bitflags 2.9.0", + "bitflags 2.9.1", ] [[package]] @@ -14940,7 +15172,7 @@ dependencies = [ "geo-types", "log", "num-traits", - "thiserror 1.0.64", + "thiserror 1.0.69", ] [[package]] @@ -14953,17 +15185,11 @@ dependencies = [ "regex", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "wyz" @@ -14989,19 +15215,18 @@ dependencies = [ "ring", "signature", "spki", - "thiserror 1.0.64", + "thiserror 1.0.69", "zeroize", ] [[package]] name = "xattr" -version = "1.3.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da84f1a25939b27f6820d92aed108f83ff920fdf11a7b19366c27c4cda81d4f" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", - "linux-raw-sys", - "rustix", + "rustix 1.0.7", ] [[package]] @@ -15030,9 +15255,9 @@ checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" dependencies = [ "serde", "stable_deref_trait", @@ -15042,75 +15267,54 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "synstructure", ] [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ - "byteorder", - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" -dependencies = [ - "zerocopy-derive 0.8.24", + "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] name = "zerofrom" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" dependencies = [ "zerofrom-derive", ] [[package]] name = "zerofrom-derive" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", "synstructure", ] @@ -15131,14 +15335,25 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", +] + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", ] [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" dependencies = [ "yoke", "zerofrom", @@ -15147,13 +15362,13 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.100", + "syn 2.0.104", ] [[package]] @@ -15173,11 +15388,11 @@ dependencies = [ [[package]] name = "zstd" -version = "0.13.2" +version = "0.13.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" +checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" dependencies = [ - "zstd-safe 7.2.1", + "zstd-safe 7.2.4", ] [[package]] @@ -15192,18 +15407,18 @@ dependencies = [ [[package]] name = "zstd-safe" -version = "7.2.1" +version = "7.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" +checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.13+zstd.1.5.6" +version = "2.0.15+zstd.1.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" +checksum = "eb81183ddd97d0c74cedf1d50d85c8d08c1b8b68ee863bdee9e706eedba1a237" dependencies = [ "cc", "pkg-config", diff --git a/Cargo.toml b/Cargo.toml index 2330b31fb5..0edf6cec00 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -98,11 +98,11 @@ rust.unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } # See for more detaiils: https://github.com/rust-lang/cargo/issues/11329 ahash = { version = "0.8", features = ["compile-time-rng"] } aquamarine = "0.6" -arrow = { version = "54.2", features = ["prettyprint"] } -arrow-array = { version = "54.2", default-features = false, features = ["chrono-tz"] } -arrow-flight = "54.2" -arrow-ipc = { version = "54.2", default-features = false, features = ["lz4", "zstd"] } -arrow-schema = { version = "54.2", features = ["serde"] } +arrow = { version = "56.0", features = ["prettyprint"] } +arrow-array = { version = "56.0", default-features = false, features = ["chrono-tz"] } +arrow-flight = "56.0" +arrow-ipc = { version = "56.0", default-features = false, features = ["lz4", "zstd"] } +arrow-schema = { version = "56.0", features = ["serde"] } async-stream = "0.3" async-trait = "0.1" # Remember to update axum-extra, axum-macros when updating axum @@ -121,26 +121,27 @@ clap = { version = "4.4", features = ["derive"] } config = "0.13.0" crossbeam-utils = "0.8" dashmap = "6.1" -datafusion = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-common = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-expr = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-functions = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-functions-aggregate-common = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-optimizer = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-physical-expr = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-physical-plan = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-sql = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } -datafusion-substrait = { git = "https://github.com/waynexia/arrow-datafusion.git", rev = "12c0381babd52c681043957e9d6ee083a03f7646" } +datafusion = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-common = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-expr = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-functions = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-functions-aggregate-common = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-optimizer = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-orc = { git = "https://github.com/GreptimeTeam/datafusion-orc", rev = "a0a5f902158f153119316eaeec868cff3fc8a99d" } +datafusion-physical-expr = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-physical-plan = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-sql = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } +datafusion-substrait = { git = "https://github.com/GreptimeTeam/datafusion.git", rev = "7d5214512740b4dfb742b6b3d91ed9affcc2c9d0" } deadpool = "0.12" deadpool-postgres = "0.14" derive_builder = "0.20" dotenv = "0.15" either = "1.15" -etcd-client = "0.14" +etcd-client = { git = "https://github.com/GreptimeTeam/etcd-client", rev = "f62df834f0cffda355eba96691fe1a9a332b75a7" } fst = "0.4.7" futures = "0.3" futures-util = "0.3" -greptime-proto = { git = "https://github.com/GreptimeTeam/greptime-proto.git", rev = "9edc8c4d2a7e3c7d8e4982a6af94426da4057687" } +greptime-proto = { git = "https://github.com/GreptimeTeam/greptime-proto.git", rev = "03007c30a2d2bf1acb4374cf5e92df9b0bd8844e" } hex = "0.4" http = "1" humantime = "2.1" @@ -159,7 +160,7 @@ nalgebra = "0.33" nix = { version = "0.30.1", default-features = false, features = ["event", "fs", "process"] } notify = "8.0" num_cpus = "1.16" -object_store_opendal = "0.50" +object_store_opendal = { git = "https://github.com/apache/opendal", rev = "0ba8574b6d08d209056704d28a9a114beb3c1022" } once_cell = "1.18" opentelemetry-proto = { version = "0.27", features = [ "gen-tonic", @@ -170,7 +171,7 @@ opentelemetry-proto = { version = "0.27", features = [ ] } ordered-float = { version = "4.3", features = ["serde"] } parking_lot = "0.12" -parquet = { version = "54.2", default-features = false, features = ["arrow", "async", "object_store"] } +parquet = { version = "56.0", default-features = false, features = ["arrow", "async", "object_store"] } paste = "1.0" pin-project = "1.0" pretty_assertions = "1.4.0" @@ -205,10 +206,10 @@ simd-json = "0.15" similar-asserts = "1.6.0" smallvec = { version = "1", features = ["serde"] } snafu = "0.8" -sqlparser = { git = "https://github.com/GreptimeTeam/sqlparser-rs.git", rev = "df6fcca80ce903f5beef7002cd2c1b062e7024f8", features = [ +sqlparser = { git = "https://github.com/GreptimeTeam/sqlparser-rs.git", rev = "39e4fc94c3c741981f77e9d63b5ce8c02e0a27ea", features = [ "visitor", "serde", -] } # branch = "v0.54.x" +] } # branch = "v0.55.x" sqlx = { version = "0.8", features = [ "runtime-tokio-rustls", "mysql", @@ -218,20 +219,20 @@ sqlx = { version = "0.8", features = [ strum = { version = "0.27", features = ["derive"] } sysinfo = "0.33" tempfile = "3" -tokio = { version = "1.40", features = ["full"] } +tokio = { version = "1.47", features = ["full"] } tokio-postgres = "0.7" tokio-rustls = { version = "0.26.2", default-features = false } tokio-stream = "0.1" tokio-util = { version = "0.7", features = ["io-util", "compat"] } toml = "0.8.8" -tonic = { version = "0.12", features = ["tls", "gzip", "zstd"] } +tonic = { version = "0.13", features = ["tls-ring", "gzip", "zstd"] } tower = "0.5" tower-http = "0.6" tracing = "0.1" tracing-appender = "0.2" tracing-subscriber = { version = "0.3", features = ["env-filter", "json", "fmt"] } typetag = "0.2" -uuid = { version = "1.7", features = ["serde", "v4", "fast-rng"] } +uuid = { version = "1.17", features = ["serde", "v4", "fast-rng"] } vrl = "0.25" zstd = "0.13" # DO_NOT_REMOVE_THIS: END_OF_EXTERNAL_DEPENDENCIES @@ -290,7 +291,7 @@ mito-codec = { path = "src/mito-codec" } mito2 = { path = "src/mito2" } object-store = { path = "src/object-store" } operator = { path = "src/operator" } -otel-arrow-rust = { git = "https://github.com/open-telemetry/otel-arrow", rev = "5d551412d2a12e689cde4d84c14ef29e36784e51", features = [ +otel-arrow-rust = { git = "https://github.com/GreptimeTeam/otel-arrow", rev = "2d64b7c0fa95642028a8205b36fe9ea0b023ec59", features = [ "server", ] } partition = { path = "src/partition" } diff --git a/src/api/Cargo.toml b/src/api/Cargo.toml index d48bfdaf58..f5826d01a7 100644 --- a/src/api/Cargo.toml +++ b/src/api/Cargo.toml @@ -19,6 +19,3 @@ paste.workspace = true prost.workspace = true serde_json.workspace = true snafu.workspace = true - -[build-dependencies] -tonic-build = "0.11" diff --git a/src/catalog/src/system_schema/predicate.rs b/src/catalog/src/system_schema/predicate.rs index c94141a947..9704f7cf4e 100644 --- a/src/catalog/src/system_schema/predicate.rs +++ b/src/catalog/src/system_schema/predicate.rs @@ -133,7 +133,7 @@ impl Predicate { let Expr::Column(c) = *expr else { unreachable!(); }; - let Expr::Literal(ScalarValue::Utf8(Some(pattern))) = *pattern else { + let Expr::Literal(ScalarValue::Utf8(Some(pattern)), _) = *pattern else { unreachable!(); }; @@ -148,8 +148,8 @@ impl Predicate { // left OP right Expr::BinaryExpr(bin) => match (*bin.left, bin.op, *bin.right) { // left == right - (Expr::Literal(scalar), Operator::Eq, Expr::Column(c)) - | (Expr::Column(c), Operator::Eq, Expr::Literal(scalar)) => { + (Expr::Literal(scalar, _), Operator::Eq, Expr::Column(c)) + | (Expr::Column(c), Operator::Eq, Expr::Literal(scalar, _)) => { let Ok(v) = Value::try_from(scalar) else { return None; }; @@ -157,8 +157,8 @@ impl Predicate { Some(Predicate::Eq(c.name, v)) } // left != right - (Expr::Literal(scalar), Operator::NotEq, Expr::Column(c)) - | (Expr::Column(c), Operator::NotEq, Expr::Literal(scalar)) => { + (Expr::Literal(scalar, _), Operator::NotEq, Expr::Column(c)) + | (Expr::Column(c), Operator::NotEq, Expr::Literal(scalar, _)) => { let Ok(v) = Value::try_from(scalar) else { return None; }; @@ -189,7 +189,7 @@ impl Predicate { let mut values = Vec::with_capacity(list.len()); for scalar in list { // Safety: checked by `is_all_scalars` - let Expr::Literal(scalar) = scalar else { + let Expr::Literal(scalar, _) = scalar else { unreachable!(); }; @@ -237,7 +237,7 @@ fn like_utf8(s: &str, pattern: &str, case_insensitive: &bool) -> Option { } fn is_string_literal(expr: &Expr) -> bool { - matches!(expr, Expr::Literal(ScalarValue::Utf8(Some(_)))) + matches!(expr, Expr::Literal(ScalarValue::Utf8(Some(_)), _)) } fn is_column(expr: &Expr) -> bool { @@ -286,14 +286,14 @@ impl Predicates { /// Returns true when the values are all [`DfExpr::Literal`]. fn is_all_scalars(list: &[Expr]) -> bool { - list.iter().all(|v| matches!(v, Expr::Literal(_))) + list.iter().all(|v| matches!(v, Expr::Literal(_, _))) } #[cfg(test)] mod tests { - use datafusion::common::{Column, ScalarValue}; + use datafusion::common::Column; use datafusion::logical_expr::expr::InList; - use datafusion::logical_expr::BinaryExpr; + use datafusion::logical_expr::{BinaryExpr, Literal}; use super::*; @@ -378,7 +378,7 @@ mod tests { let expr = Expr::Like(Like { negated: false, expr: Box::new(column("a")), - pattern: Box::new(string_literal("%abc")), + pattern: Box::new("%abc".lit()), case_insensitive: true, escape_char: None, }); @@ -405,7 +405,7 @@ mod tests { let expr = Expr::Like(Like { negated: false, expr: Box::new(column("a")), - pattern: Box::new(string_literal("%abc")), + pattern: Box::new("%abc".lit()), case_insensitive: false, escape_char: None, }); @@ -425,7 +425,7 @@ mod tests { let expr = Expr::Like(Like { negated: true, expr: Box::new(column("a")), - pattern: Box::new(string_literal("%abc")), + pattern: Box::new("%abc".lit()), case_insensitive: true, escape_char: None, }); @@ -440,10 +440,6 @@ mod tests { Expr::Column(Column::from_name(name)) } - fn string_literal(v: &str) -> Expr { - Expr::Literal(ScalarValue::Utf8(Some(v.to_string()))) - } - fn match_string_value(v: &Value, expected: &str) -> bool { matches!(v, Value::String(bs) if bs.as_utf8() == expected) } @@ -463,13 +459,13 @@ mod tests { let expr1 = Expr::BinaryExpr(BinaryExpr { left: Box::new(column("a")), op: Operator::Eq, - right: Box::new(string_literal("a_value")), + right: Box::new("a_value".lit()), }); let expr2 = Expr::BinaryExpr(BinaryExpr { left: Box::new(column("b")), op: Operator::NotEq, - right: Box::new(string_literal("b_value")), + right: Box::new("b_value".lit()), }); (expr1, expr2) @@ -508,7 +504,7 @@ mod tests { let inlist_expr = Expr::InList(InList { expr: Box::new(column("a")), - list: vec![string_literal("a1"), string_literal("a2")], + list: vec!["a1".lit(), "a2".lit()], negated: false, }); @@ -518,7 +514,7 @@ mod tests { let inlist_expr = Expr::InList(InList { expr: Box::new(column("a")), - list: vec![string_literal("a1"), string_literal("a2")], + list: vec!["a1".lit(), "a2".lit()], negated: true, }); let inlist_p = Predicate::from_expr(inlist_expr).unwrap(); diff --git a/src/catalog/src/table_source.rs b/src/catalog/src/table_source.rs index fdb0d779f9..3a80b5da3c 100644 --- a/src/catalog/src/table_source.rs +++ b/src/catalog/src/table_source.rs @@ -32,7 +32,7 @@ use dummy_catalog::DummyCatalogList; use table::TableRef; use crate::error::{ - CastManagerSnafu, DatafusionSnafu, DecodePlanSnafu, GetViewCacheSnafu, ProjectViewColumnsSnafu, + CastManagerSnafu, DecodePlanSnafu, GetViewCacheSnafu, ProjectViewColumnsSnafu, QueryAccessDeniedSnafu, Result, TableNotExistSnafu, ViewInfoNotFoundSnafu, ViewPlanColumnsChangedSnafu, }; @@ -199,10 +199,10 @@ impl DfTableSourceProvider { logical_plan }; - Ok(Arc::new( - ViewTable::try_new(logical_plan, Some(view_info.definition.to_string())) - .context(DatafusionSnafu)?, - )) + Ok(Arc::new(ViewTable::new( + logical_plan, + Some(view_info.definition.to_string()), + ))) } } diff --git a/src/common/datasource/Cargo.toml b/src/common/datasource/Cargo.toml index 890832758c..303d05ceb1 100644 --- a/src/common/datasource/Cargo.toml +++ b/src/common/datasource/Cargo.toml @@ -25,19 +25,17 @@ common-error.workspace = true common-macro.workspace = true common-recordbatch.workspace = true common-runtime.workspace = true +common-telemetry.workspace = true datafusion.workspace = true +datafusion-orc.workspace = true datatypes.workspace = true -derive_builder.workspace = true futures.workspace = true lazy_static.workspace = true object-store.workspace = true object_store_opendal.workspace = true -orc-rust = { git = "https://github.com/datafusion-contrib/orc-rust", rev = "3134cab581a8e91b942d6a23aca2916ea965f6bb", default-features = false, features = [ - "async", -] } +orc-rust = { version = "0.6.3", default-features = false, features = ["async"] } parquet.workspace = true paste.workspace = true -rand.workspace = true regex = "1.7" serde.workspace = true snafu.workspace = true @@ -47,6 +45,4 @@ tokio-util.workspace = true url = "2.3" [dev-dependencies] -common-telemetry.workspace = true common-test-util.workspace = true -uuid.workspace = true diff --git a/src/common/datasource/src/file_format/orc.rs b/src/common/datasource/src/file_format/orc.rs index 4a6001f3e7..27a285b2e9 100644 --- a/src/common/datasource/src/file_format/orc.rs +++ b/src/common/datasource/src/file_format/orc.rs @@ -12,16 +12,11 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::sync::Arc; - -use arrow_schema::{ArrowError, Schema, SchemaRef}; +use arrow_schema::Schema; use async_trait::async_trait; use bytes::Bytes; -use common_recordbatch::adapter::RecordBatchStreamTypeAdapter; -use datafusion::datasource::physical_plan::{FileMeta, FileOpenFuture, FileOpener}; -use datafusion::error::{DataFusionError, Result as DfResult}; use futures::future::BoxFuture; -use futures::{FutureExt, StreamExt, TryStreamExt}; +use futures::FutureExt; use object_store::ObjectStore; use orc_rust::arrow_reader::ArrowReaderBuilder; use orc_rust::async_arrow_reader::ArrowStreamReader; @@ -97,67 +92,6 @@ impl FileFormat for OrcFormat { } } -#[derive(Debug, Clone)] -pub struct OrcOpener { - object_store: Arc, - output_schema: SchemaRef, - projection: Option>, -} - -impl OrcOpener { - pub fn new( - object_store: ObjectStore, - output_schema: SchemaRef, - projection: Option>, - ) -> Self { - Self { - object_store: Arc::from(object_store), - output_schema, - projection, - } - } -} - -impl FileOpener for OrcOpener { - fn open(&self, meta: FileMeta) -> DfResult { - let object_store = self.object_store.clone(); - let projected_schema = if let Some(projection) = &self.projection { - let projected_schema = self - .output_schema - .project(projection) - .map_err(|e| DataFusionError::External(Box::new(e)))?; - Arc::new(projected_schema) - } else { - self.output_schema.clone() - }; - let projection = self.projection.clone(); - Ok(Box::pin(async move { - let path = meta.location().to_string(); - - let meta = object_store - .stat(&path) - .await - .map_err(|e| DataFusionError::External(Box::new(e)))?; - - let reader = object_store - .reader(&path) - .await - .map_err(|e| DataFusionError::External(Box::new(e)))?; - - let stream_reader = - new_orc_stream_reader(ReaderAdapter::new(reader, meta.content_length())) - .await - .map_err(|e| DataFusionError::External(Box::new(e)))?; - - let stream = - RecordBatchStreamTypeAdapter::new(projected_schema, stream_reader, projection); - - let adopted = stream.map_err(|e| ArrowError::ExternalError(Box::new(e))); - Ok(adopted.boxed()) - })) - } -} - #[cfg(test)] mod tests { use common_test_util::find_workspace_path; diff --git a/src/common/datasource/src/file_format/parquet.rs b/src/common/datasource/src/file_format/parquet.rs index 88f21ce9db..6bbb1a6d54 100644 --- a/src/common/datasource/src/file_format/parquet.rs +++ b/src/common/datasource/src/file_format/parquet.rs @@ -31,6 +31,7 @@ use datatypes::schema::SchemaRef; use futures::future::BoxFuture; use futures::StreamExt; use object_store::{FuturesAsyncReader, ObjectStore}; +use parquet::arrow::arrow_reader::ArrowReaderOptions; use parquet::arrow::AsyncArrowWriter; use parquet::basic::{Compression, Encoding, ZstdLevel}; use parquet::file::properties::{WriterProperties, WriterPropertiesBuilder}; @@ -65,7 +66,7 @@ impl FileFormat for ParquetFormat { .compat(); let metadata = reader - .get_metadata() + .get_metadata(None) .await .context(error::ReadParquetSnafuSnafu)?; @@ -146,7 +147,7 @@ impl LazyParquetFileReader { impl AsyncFileReader for LazyParquetFileReader { fn get_bytes( &mut self, - range: std::ops::Range, + range: std::ops::Range, ) -> BoxFuture<'_, ParquetResult> { Box::pin(async move { self.maybe_initialize() @@ -157,13 +158,16 @@ impl AsyncFileReader for LazyParquetFileReader { }) } - fn get_metadata(&mut self) -> BoxFuture<'_, ParquetResult>> { + fn get_metadata<'a>( + &'a mut self, + options: Option<&'a ArrowReaderOptions>, + ) -> BoxFuture<'a, parquet::errors::Result>> { Box::pin(async move { self.maybe_initialize() .await .map_err(|e| ParquetError::External(Box::new(e)))?; // Safety: Must initialized - self.reader.as_mut().unwrap().get_metadata().await + self.reader.as_mut().unwrap().get_metadata(options).await }) } } diff --git a/src/common/datasource/src/file_format/tests.rs b/src/common/datasource/src/file_format/tests.rs index b2a687dc51..9f5e7f3f7c 100644 --- a/src/common/datasource/src/file_format/tests.rs +++ b/src/common/datasource/src/file_format/tests.rs @@ -19,35 +19,39 @@ use std::vec; use common_test_util::find_workspace_path; use datafusion::assert_batches_eq; -use datafusion::datasource::file_format::file_compression_type::FileCompressionType; use datafusion::datasource::physical_plan::{ - CsvConfig, CsvOpener, FileOpener, FileScanConfig, FileStream, JsonOpener, ParquetExec, + CsvSource, FileScanConfig, FileSource, FileStream, JsonSource, ParquetSource, }; +use datafusion::datasource::source::DataSourceExec; use datafusion::execution::context::TaskContext; use datafusion::physical_plan::metrics::ExecutionPlanMetricsSet; use datafusion::physical_plan::ExecutionPlan; use datafusion::prelude::SessionContext; +use datafusion_orc::OrcSource; use futures::StreamExt; +use object_store::ObjectStore; use super::FORMAT_TYPE; -use crate::file_format::orc::{OrcFormat, OrcOpener}; use crate::file_format::parquet::DefaultParquetFileReaderFactory; -use crate::file_format::{FileFormat, Format}; +use crate::file_format::{FileFormat, Format, OrcFormat}; use crate::test_util::{scan_config, test_basic_schema, test_store}; use crate::{error, test_util}; -struct Test<'a, T: FileOpener> { +struct Test<'a> { config: FileScanConfig, - opener: T, + file_source: Arc, expected: Vec<&'a str>, } -impl Test<'_, T> { - pub async fn run(self) { +impl Test<'_> { + async fn run(self, store: &ObjectStore) { + let store = Arc::new(object_store_opendal::OpendalStore::new(store.clone())); + let file_opener = self.file_source.create_file_opener(store, &self.config, 0); + let result = FileStream::new( &self.config, 0, - self.opener, + file_opener, &ExecutionPlanMetricsSet::new(), ) .unwrap() @@ -62,26 +66,16 @@ impl Test<'_, T> { #[tokio::test] async fn test_json_opener() { let store = test_store("/"); - let store = Arc::new(object_store_opendal::OpendalStore::new(store)); - let schema = test_basic_schema(); - - let json_opener = || { - JsonOpener::new( - test_util::TEST_BATCH_SIZE, - schema.clone(), - FileCompressionType::UNCOMPRESSED, - store.clone(), - ) - }; + let file_source = Arc::new(JsonSource::new()).with_batch_size(test_util::TEST_BATCH_SIZE); let path = &find_workspace_path("/src/common/datasource/tests/json/basic.json") .display() .to_string(); let tests = [ Test { - config: scan_config(schema.clone(), None, path), - opener: json_opener(), + config: scan_config(schema.clone(), None, path, file_source.clone()), + file_source: file_source.clone(), expected: vec![ "+-----+-------+", "| num | str |", @@ -93,8 +87,8 @@ async fn test_json_opener() { ], }, Test { - config: scan_config(schema.clone(), Some(1), path), - opener: json_opener(), + config: scan_config(schema, Some(1), path, file_source.clone()), + file_source, expected: vec![ "+-----+------+", "| num | str |", @@ -106,37 +100,26 @@ async fn test_json_opener() { ]; for test in tests { - test.run().await; + test.run(&store).await; } } #[tokio::test] async fn test_csv_opener() { let store = test_store("/"); - let store = Arc::new(object_store_opendal::OpendalStore::new(store)); - let schema = test_basic_schema(); let path = &find_workspace_path("/src/common/datasource/tests/csv/basic.csv") .display() .to_string(); - let csv_config = Arc::new(CsvConfig::new( - test_util::TEST_BATCH_SIZE, - schema.clone(), - None, - true, - b',', - b'"', - None, - store, - None, - )); - let csv_opener = || CsvOpener::new(csv_config.clone(), FileCompressionType::UNCOMPRESSED); + let file_source = CsvSource::new(true, b',', b'"') + .with_batch_size(test_util::TEST_BATCH_SIZE) + .with_schema(schema.clone()); let tests = [ Test { - config: scan_config(schema.clone(), None, path), - opener: csv_opener(), + config: scan_config(schema.clone(), None, path, file_source.clone()), + file_source: file_source.clone(), expected: vec![ "+-----+-------+", "| num | str |", @@ -148,8 +131,8 @@ async fn test_csv_opener() { ], }, Test { - config: scan_config(schema.clone(), Some(1), path), - opener: csv_opener(), + config: scan_config(schema, Some(1), path, file_source.clone()), + file_source, expected: vec![ "+-----+------+", "| num | str |", @@ -161,7 +144,7 @@ async fn test_csv_opener() { ]; for test in tests { - test.run().await; + test.run(&store).await; } } @@ -174,12 +157,12 @@ async fn test_parquet_exec() { let path = &find_workspace_path("/src/common/datasource/tests/parquet/basic.parquet") .display() .to_string(); - let base_config = scan_config(schema.clone(), None, path); - let exec = ParquetExec::builder(base_config) - .with_parquet_file_reader_factory(Arc::new(DefaultParquetFileReaderFactory::new(store))) - .build(); + let parquet_source = ParquetSource::default() + .with_parquet_file_reader_factory(Arc::new(DefaultParquetFileReaderFactory::new(store))); + let config = scan_config(schema, None, path, Arc::new(parquet_source)); + let exec = DataSourceExec::from_data_source(config); let ctx = SessionContext::new(); let context = Arc::new(TaskContext::from(&ctx)); @@ -208,20 +191,18 @@ async fn test_parquet_exec() { #[tokio::test] async fn test_orc_opener() { - let root = find_workspace_path("/src/common/datasource/tests/orc") + let path = &find_workspace_path("/src/common/datasource/tests/orc/test.orc") .display() .to_string(); - let store = test_store(&root); - let schema = OrcFormat.infer_schema(&store, "test.orc").await.unwrap(); - let schema = Arc::new(schema); - let orc_opener = OrcOpener::new(store.clone(), schema.clone(), None); - let path = "test.orc"; + let store = test_store("/"); + let schema = Arc::new(OrcFormat.infer_schema(&store, path).await.unwrap()); + let file_source = Arc::new(OrcSource::default()); let tests = [ Test { - config: scan_config(schema.clone(), None, path), - opener: orc_opener.clone(), + config: scan_config(schema.clone(), None, path, file_source.clone()), + file_source: file_source.clone(), expected: vec![ "+----------+-----+-------+------------+-----+-----+-------+--------------------+------------------------+-----------+---------------+------------+----------------+---------------+-------------------+--------------+---------------+---------------+----------------------------+-------------+", "| double_a | a | b | str_direct | d | e | f | int_short_repeated | int_neg_short_repeated | int_delta | int_neg_delta | int_direct | int_neg_direct | bigint_direct | bigint_neg_direct | bigint_other | utf8_increase | utf8_decrease | timestamp_simple | date_simple |", @@ -235,8 +216,8 @@ async fn test_orc_opener() { ], }, Test { - config: scan_config(schema.clone(), Some(1), path), - opener: orc_opener.clone(), + config: scan_config(schema.clone(), Some(1), path, file_source.clone()), + file_source, expected: vec![ "+----------+-----+------+------------+---+-----+-------+--------------------+------------------------+-----------+---------------+------------+----------------+---------------+-------------------+--------------+---------------+---------------+-------------------------+-------------+", "| double_a | a | b | str_direct | d | e | f | int_short_repeated | int_neg_short_repeated | int_delta | int_neg_delta | int_direct | int_neg_direct | bigint_direct | bigint_neg_direct | bigint_other | utf8_increase | utf8_decrease | timestamp_simple | date_simple |", @@ -248,7 +229,7 @@ async fn test_orc_opener() { ]; for test in tests { - test.run().await; + test.run(&store).await; } } diff --git a/src/common/datasource/src/test_util.rs b/src/common/datasource/src/test_util.rs index be2b288f2f..0f2c6918dc 100644 --- a/src/common/datasource/src/test_util.rs +++ b/src/common/datasource/src/test_util.rs @@ -16,12 +16,12 @@ use std::sync::Arc; use arrow_schema::{DataType, Field, Schema, SchemaRef}; use common_test_util::temp_dir::{create_temp_dir, TempDir}; -use datafusion::common::{Constraints, Statistics}; use datafusion::datasource::file_format::file_compression_type::FileCompressionType; use datafusion::datasource::listing::PartitionedFile; use datafusion::datasource::object_store::ObjectStoreUrl; use datafusion::datasource::physical_plan::{ - CsvConfig, CsvOpener, FileScanConfig, FileStream, JsonOpener, + CsvSource, FileGroup, FileScanConfig, FileScanConfigBuilder, FileSource, FileStream, + JsonOpener, JsonSource, }; use datafusion::physical_plan::metrics::ExecutionPlanMetricsSet; use object_store::services::Fs; @@ -68,21 +68,20 @@ pub fn test_basic_schema() -> SchemaRef { Arc::new(schema) } -pub fn scan_config(file_schema: SchemaRef, limit: Option, filename: &str) -> FileScanConfig { +pub(crate) fn scan_config( + file_schema: SchemaRef, + limit: Option, + filename: &str, + file_source: Arc, +) -> FileScanConfig { // object_store only recognize the Unix style path, so make it happy. let filename = &filename.replace('\\', "/"); - let statistics = Statistics::new_unknown(file_schema.as_ref()); - FileScanConfig { - object_store_url: ObjectStoreUrl::parse("empty://").unwrap(), // won't be used - file_schema, - file_groups: vec![vec![PartitionedFile::new(filename.to_string(), 10)]], - constraints: Constraints::empty(), - statistics, - projection: None, - limit, - table_partition_cols: vec![], - output_ordering: vec![], - } + let file_group = FileGroup::new(vec![PartitionedFile::new(filename.to_string(), 4096)]); + + FileScanConfigBuilder::new(ObjectStoreUrl::local_filesystem(), file_schema, file_source) + .with_file_group(file_group) + .with_limit(limit) + .build() } pub async fn setup_stream_to_json_test(origin_path: &str, threshold: impl Fn(usize) -> usize) { @@ -99,9 +98,14 @@ pub async fn setup_stream_to_json_test(origin_path: &str, threshold: impl Fn(usi let size = store.read(origin_path).await.unwrap().len(); - let config = scan_config(schema.clone(), None, origin_path); - - let stream = FileStream::new(&config, 0, json_opener, &ExecutionPlanMetricsSet::new()).unwrap(); + let config = scan_config(schema, None, origin_path, Arc::new(JsonSource::new())); + let stream = FileStream::new( + &config, + 0, + Arc::new(json_opener), + &ExecutionPlanMetricsSet::new(), + ) + .unwrap(); let (tmp_store, dir) = test_tmp_store("test_stream_to_json"); @@ -127,24 +131,17 @@ pub async fn setup_stream_to_csv_test(origin_path: &str, threshold: impl Fn(usiz let schema = test_basic_schema(); - let csv_config = Arc::new(CsvConfig::new( - TEST_BATCH_SIZE, - schema.clone(), - None, - true, - b',', - b'"', - None, - Arc::new(object_store_opendal::OpendalStore::new(store.clone())), - None, - )); - - let csv_opener = CsvOpener::new(csv_config, FileCompressionType::UNCOMPRESSED); - + let csv_source = CsvSource::new(true, b',', b'"') + .with_schema(schema.clone()) + .with_batch_size(TEST_BATCH_SIZE); + let config = scan_config(schema, None, origin_path, csv_source.clone()); let size = store.read(origin_path).await.unwrap().len(); - let config = scan_config(schema.clone(), None, origin_path); - + let csv_opener = csv_source.create_file_opener( + Arc::new(object_store_opendal::OpendalStore::new(store.clone())), + &config, + 0, + ); let stream = FileStream::new(&config, 0, csv_opener, &ExecutionPlanMetricsSet::new()).unwrap(); let (tmp_store, dir) = test_tmp_store("test_stream_to_csv"); diff --git a/src/common/function/src/aggrs/aggr_wrapper.rs b/src/common/function/src/aggrs/aggr_wrapper.rs index 7c97414554..e41927281f 100644 --- a/src/common/function/src/aggrs/aggr_wrapper.rs +++ b/src/common/function/src/aggrs/aggr_wrapper.rs @@ -25,14 +25,14 @@ use std::sync::Arc; use arrow::array::StructArray; -use arrow_schema::Fields; +use arrow_schema::{FieldRef, Fields}; use common_telemetry::debug; use datafusion::functions_aggregate::all_default_aggregate_functions; use datafusion::optimizer::analyzer::type_coercion::TypeCoercion; use datafusion::optimizer::AnalyzerRule; use datafusion::physical_planner::create_aggregate_expr_and_maybe_filter; use datafusion_common::{Column, ScalarValue}; -use datafusion_expr::expr::AggregateFunction; +use datafusion_expr::expr::{AggregateFunction, AggregateFunctionParams}; use datafusion_expr::function::StateFieldsArgs; use datafusion_expr::{ Accumulator, Aggregate, AggregateUDF, AggregateUDFImpl, Expr, ExprSchemable, LogicalPlan, @@ -146,6 +146,7 @@ impl StateMergeHelper { }; let original_input_types = aggr_func + .params .args .iter() .map(|e| e.get_type(&aggr.input.schema())) @@ -156,11 +157,7 @@ impl StateMergeHelper { let expr = AggregateFunction { func: Arc::new(state_func.into()), - args: aggr_func.args.clone(), - distinct: aggr_func.distinct, - filter: aggr_func.filter.clone(), - order_by: aggr_func.order_by.clone(), - null_treatment: aggr_func.null_treatment, + params: aggr_func.params.clone(), }; let expr = Expr::AggregateFunction(expr); let lower_state_output_col_name = expr.schema_name().to_string(); @@ -182,11 +179,10 @@ impl StateMergeHelper { let arg = Expr::Column(Column::new_unqualified(lower_state_output_col_name)); let expr = AggregateFunction { func: Arc::new(merge_func.into()), - args: vec![arg], - distinct: aggr_func.distinct, - filter: aggr_func.filter.clone(), - order_by: aggr_func.order_by.clone(), - null_treatment: aggr_func.null_treatment, + params: AggregateFunctionParams { + args: vec![arg], + ..aggr_func.params.clone() + }, }; // alias to the original aggregate expr's schema name, so parent plan can refer to it @@ -247,15 +243,8 @@ impl StateWrapper { pub fn deduce_aggr_return_type( &self, acc_args: &datafusion_expr::function::AccumulatorArgs, - ) -> datafusion_common::Result { - let input_exprs = acc_args.exprs; - let input_schema = acc_args.schema; - let input_types = input_exprs - .iter() - .map(|e| e.data_type(input_schema)) - .collect::, _>>()?; - let return_type = self.inner.return_type(&input_types)?; - Ok(return_type) + ) -> datafusion_common::Result { + self.inner.return_field(acc_args.schema.fields()) } } @@ -265,14 +254,13 @@ impl AggregateUDFImpl for StateWrapper { acc_args: datafusion_expr::function::AccumulatorArgs<'b>, ) -> datafusion_common::Result> { // fix and recover proper acc args for the original aggregate function. - let state_type = acc_args.return_type.clone(); + let state_type = acc_args.return_type().clone(); let inner = { - let old_return_type = self.deduce_aggr_return_type(&acc_args)?; let acc_args = datafusion_expr::function::AccumulatorArgs { - return_type: &old_return_type, + return_field: self.deduce_aggr_return_type(&acc_args)?, schema: acc_args.schema, ignore_nulls: acc_args.ignore_nulls, - ordering_req: acc_args.ordering_req, + order_bys: acc_args.order_bys, is_reversed: acc_args.is_reversed, name: acc_args.name, is_distinct: acc_args.is_distinct, @@ -297,11 +285,15 @@ impl AggregateUDFImpl for StateWrapper { /// Return state_fields as the output struct type. /// fn return_type(&self, arg_types: &[DataType]) -> datafusion_common::Result { - let old_return_type = self.inner.return_type(arg_types)?; + let input_fields = &arg_types + .iter() + .map(|x| Arc::new(Field::new("x", x.clone(), false))) + .collect::>(); + let state_fields_args = StateFieldsArgs { name: self.inner().name(), - input_types: arg_types, - return_type: &old_return_type, + input_fields, + return_field: self.inner.return_field(input_fields)?, // TODO(discord9): how to get this?, probably ok? ordering_fields: &[], is_distinct: false, @@ -315,12 +307,11 @@ impl AggregateUDFImpl for StateWrapper { fn state_fields( &self, args: datafusion_expr::function::StateFieldsArgs, - ) -> datafusion_common::Result> { - let old_return_type = self.inner.return_type(args.input_types)?; + ) -> datafusion_common::Result> { let state_fields_args = StateFieldsArgs { name: args.name, - input_types: args.input_types, - return_type: &old_return_type, + input_fields: args.input_fields, + return_field: self.inner.return_field(args.input_fields)?, ordering_fields: args.ordering_fields, is_distinct: args.is_distinct, }; @@ -502,7 +493,7 @@ impl AggregateUDFImpl for MergeWrapper { fn state_fields( &self, _args: datafusion_expr::function::StateFieldsArgs, - ) -> datafusion_common::Result> { + ) -> datafusion_common::Result> { self.original_phy_expr.state_fields() } } diff --git a/src/common/function/src/aggrs/aggr_wrapper/tests.rs b/src/common/function/src/aggrs/aggr_wrapper/tests.rs index 652c6b678d..805b45b3c8 100644 --- a/src/common/function/src/aggrs/aggr_wrapper/tests.rs +++ b/src/common/function/src/aggrs/aggr_wrapper/tests.rs @@ -35,7 +35,7 @@ use datafusion::prelude::SessionContext; use datafusion_common::{Column, TableReference}; use datafusion_expr::expr::AggregateFunction; use datafusion_expr::sqlparser::ast::NullTreatment; -use datafusion_expr::{Aggregate, Expr, LogicalPlan, SortExpr, TableScan}; +use datafusion_expr::{lit, Aggregate, Expr, LogicalPlan, SortExpr, TableScan}; use datafusion_physical_expr::aggregate::AggregateExprBuilder; use datafusion_physical_expr::{EquivalenceProperties, Partitioning}; use datatypes::arrow_array::StringArray; @@ -234,7 +234,7 @@ async fn test_sum_udaf() { vec![Expr::Column(Column::new_unqualified("number"))], false, None, - None, + vec![], None, ))], ) @@ -250,7 +250,7 @@ async fn test_sum_udaf() { vec![Expr::Column(Column::new_unqualified("number"))], false, None, - None, + vec![], None, ))], ) @@ -290,7 +290,7 @@ async fn test_sum_udaf() { vec![Expr::Column(Column::new_unqualified("__sum_state(number)"))], false, None, - None, + vec![], None, )) .alias("sum(number)")], @@ -378,7 +378,7 @@ async fn test_avg_udaf() { vec![Expr::Column(Column::new_unqualified("number"))], false, None, - None, + vec![], None, ))], ) @@ -395,7 +395,7 @@ async fn test_avg_udaf() { vec![Expr::Column(Column::new_unqualified("number"))], false, None, - None, + vec![], None, ))], ) @@ -449,7 +449,7 @@ async fn test_avg_udaf() { vec![Expr::Column(Column::new_unqualified("__avg_state(number)"))], false, None, - None, + vec![], None, )) .alias("avg(number)")], @@ -551,7 +551,7 @@ async fn test_udaf_correct_eval_result() { expected_fn: Option, distinct: bool, filter: Option>, - order_by: Option>, + order_by: Vec, null_treatment: Option, } type ExpectedFn = fn(ArrayRef) -> bool; @@ -575,7 +575,7 @@ async fn test_udaf_correct_eval_result() { expected_fn: None, distinct: false, filter: None, - order_by: None, + order_by: vec![], null_treatment: None, }, TestCase { @@ -596,7 +596,7 @@ async fn test_udaf_correct_eval_result() { expected_fn: None, distinct: false, filter: None, - order_by: None, + order_by: vec![], null_treatment: None, }, TestCase { @@ -619,7 +619,7 @@ async fn test_udaf_correct_eval_result() { expected_fn: None, distinct: false, filter: None, - order_by: None, + order_by: vec![], null_treatment: None, }, TestCase { @@ -630,8 +630,8 @@ async fn test_udaf_correct_eval_result() { true, )])), args: vec![ - Expr::Literal(ScalarValue::Int64(Some(128))), - Expr::Literal(ScalarValue::Float64(Some(0.05))), + lit(128i64), + lit(0.05f64), Expr::Column(Column::new_unqualified("number")), ], input: vec![Arc::new(Float64Array::from(vec![ @@ -659,7 +659,7 @@ async fn test_udaf_correct_eval_result() { }), distinct: false, filter: None, - order_by: None, + order_by: vec![], null_treatment: None, }, TestCase { @@ -690,7 +690,7 @@ async fn test_udaf_correct_eval_result() { }), distinct: false, filter: None, - order_by: None, + order_by: vec![], null_treatment: None, }, // TODO(discord9): udd_merge/hll_merge/geo_path/quantile_aggr tests diff --git a/src/common/function/src/aggrs/count_hash.rs b/src/common/function/src/aggrs/count_hash.rs index 47ef1f21ca..2e1a2bb8a6 100644 --- a/src/common/function/src/aggrs/count_hash.rs +++ b/src/common/function/src/aggrs/count_hash.rs @@ -41,7 +41,7 @@ use datatypes::arrow::array::{ Array, ArrayRef, AsArray, BooleanArray, Int64Array, ListArray, UInt64Array, }; use datatypes::arrow::buffer::{OffsetBuffer, ScalarBuffer}; -use datatypes::arrow::datatypes::{DataType, Field}; +use datatypes::arrow::datatypes::{DataType, Field, FieldRef}; use crate::function_registry::FunctionRegistry; @@ -94,14 +94,14 @@ impl AggregateUDFImpl for CountHash { false } - fn state_fields(&self, args: StateFieldsArgs) -> Result> { - Ok(vec![Field::new_list( + fn state_fields(&self, args: StateFieldsArgs) -> Result> { + Ok(vec![Arc::new(Field::new_list( format_state_name(args.name, "count_hash"), Field::new_list_field(DataType::UInt64, true), // For count_hash accumulator, null list item stands for an // empty value set (i.e., all NULL value so far for that group). true, - )]) + ))]) } fn accumulator(&self, acc_args: AccumulatorArgs) -> Result> { diff --git a/src/common/function/src/flush_flow.rs b/src/common/function/src/flush_flow.rs index 63fd49ac93..3952fade52 100644 --- a/src/common/function/src/flush_flow.rs +++ b/src/common/function/src/flush_flow.rs @@ -23,6 +23,7 @@ use datafusion::logical_expr::Volatility; use datatypes::value::{Value, ValueRef}; use session::context::QueryContextRef; use snafu::{ensure, ResultExt}; +use sql::ast::ObjectNamePartExt; use sql::parser::ParserContext; use store_api::storage::ConcreteDataType; @@ -85,9 +86,9 @@ fn parse_flush_flow( let (catalog_name, flow_name) = match &obj_name.0[..] { [flow_name] => ( query_ctx.current_catalog().to_string(), - flow_name.value.clone(), + flow_name.to_string_unquoted(), ), - [catalog, flow_name] => (catalog.value.clone(), flow_name.value.clone()), + [catalog, flow_name] => (catalog.to_string_unquoted(), flow_name.to_string_unquoted()), _ => { return InvalidFuncArgsSnafu { err_msg: format!( diff --git a/src/common/function/src/scalars/udf.rs b/src/common/function/src/scalars/udf.rs index bca879fd4e..8f09882af1 100644 --- a/src/common/function/src/scalars/udf.rs +++ b/src/common/function/src/scalars/udf.rs @@ -113,6 +113,8 @@ mod tests { use common_query::prelude::ScalarValue; use datafusion::arrow::array::BooleanArray; + use datafusion_common::config::ConfigOptions; + use datatypes::arrow::datatypes::Field; use datatypes::data_type::ConcreteDataType; use datatypes::prelude::VectorRef; use datatypes::vectors::{BooleanVector, ConstantVector}; @@ -162,10 +164,21 @@ mod tests { ]))), ]; + let arg_fields = vec![ + Arc::new(Field::new("a", args[0].data_type(), false)), + Arc::new(Field::new("b", args[1].data_type(), false)), + ]; + let return_field = Arc::new(Field::new( + "x", + ConcreteDataType::boolean_datatype().as_arrow_type(), + false, + )); let args = ScalarFunctionArgs { args, + arg_fields, number_rows: 4, - return_type: &ConcreteDataType::boolean_datatype().as_arrow_type(), + return_field, + config_options: Arc::new(ConfigOptions::default()), }; match udf.invoke_with_args(args).unwrap() { datafusion_expr::ColumnarValue::Array(x) => { diff --git a/src/common/grpc/Cargo.toml b/src/common/grpc/Cargo.toml index 32d096c87a..1684d0b297 100644 --- a/src/common/grpc/Cargo.toml +++ b/src/common/grpc/Cargo.toml @@ -20,7 +20,7 @@ common-telemetry.workspace = true common-time.workspace = true dashmap.workspace = true datatypes.workspace = true -flatbuffers = "24" +flatbuffers = "25.2" hyper.workspace = true lazy_static.workspace = true prost.workspace = true diff --git a/src/common/grpc/src/flight.rs b/src/common/grpc/src/flight.rs index a5c57162df..a1f65e6501 100644 --- a/src/common/grpc/src/flight.rs +++ b/src/common/grpc/src/flight.rs @@ -25,7 +25,7 @@ use common_recordbatch::DfRecordBatch; use datatypes::arrow; use datatypes::arrow::array::ArrayRef; use datatypes::arrow::buffer::Buffer; -use datatypes::arrow::datatypes::{Schema as ArrowSchema, SchemaRef}; +use datatypes::arrow::datatypes::{DataType, Schema as ArrowSchema, SchemaRef}; use datatypes::arrow::error::ArrowError; use datatypes::arrow::ipc::{convert, reader, root_as_message, writer, MessageHeader}; use flatbuffers::FlatBufferBuilder; @@ -91,7 +91,15 @@ impl FlightEncoder { /// be encoded to exactly one [FlightData]. pub fn encode(&mut self, flight_message: FlightMessage) -> Vec1 { match flight_message { - FlightMessage::Schema(schema) => vec1![self.encode_schema(schema.as_ref())], + FlightMessage::Schema(schema) => { + schema.fields().iter().for_each(|x| { + if matches!(x.data_type(), DataType::Dictionary(_, _)) { + self.dictionary_tracker.next_dict_id(); + } + }); + + vec1![self.encode_schema(schema.as_ref())] + } FlightMessage::RecordBatch(record_batch) => { let (encoded_dictionaries, encoded_batch) = self .data_gen diff --git a/src/common/query/src/logical_plan.rs b/src/common/query/src/logical_plan.rs index 418e7a52ae..06cdd3d57b 100644 --- a/src/common/query/src/logical_plan.rs +++ b/src/common/query/src/logical_plan.rs @@ -24,7 +24,7 @@ use datafusion::error::Result as DatafusionResult; use datafusion::logical_expr::{LogicalPlan, LogicalPlanBuilder}; use datafusion_common::{Column, TableReference}; use datafusion_expr::dml::InsertOp; -use datafusion_expr::{col, DmlStatement, WriteOp}; +use datafusion_expr::{col, DmlStatement, TableSource, WriteOp}; pub use expr::{build_filter_from_timestamp, build_same_type_ts_filter}; use snafu::ResultExt; @@ -131,7 +131,7 @@ pub fn breakup_insert_plan( /// create a `insert into table_name ` logical plan pub fn add_insert_to_logical_plan( table_name: TableName, - table_schema: datafusion_common::DFSchemaRef, + target: Arc, input: LogicalPlan, ) -> Result { let table_name = TableReference::Full { @@ -142,7 +142,7 @@ pub fn add_insert_to_logical_plan( let plan = LogicalPlan::Dml(DmlStatement::new( table_name, - table_schema, + target, WriteOp::Insert(InsertOp::Append), Arc::new(input), )); diff --git a/src/common/query/src/logical_plan/expr.rs b/src/common/query/src/logical_plan/expr.rs index 625c2fe5fd..ee9d621d0b 100644 --- a/src/common/query/src/logical_plan/expr.rs +++ b/src/common/query/src/logical_plan/expr.rs @@ -87,29 +87,31 @@ fn timestamp_to_literal(timestamp: &Timestamp) -> Expr { TimeUnit::Microsecond => ScalarValue::TimestampMicrosecond(Some(timestamp.value()), None), TimeUnit::Nanosecond => ScalarValue::TimestampNanosecond(Some(timestamp.value()), None), }; - Expr::Literal(scalar_value) + Expr::Literal(scalar_value, None) } #[cfg(test)] mod tests { + use datafusion_expr::Literal; + use super::*; #[test] fn test_timestamp_to_literal() { let timestamp = Timestamp::new(123456789, TimeUnit::Second); - let expected = Expr::Literal(ScalarValue::TimestampSecond(Some(123456789), None)); + let expected = ScalarValue::TimestampSecond(Some(123456789), None).lit(); assert_eq!(timestamp_to_literal(×tamp), expected); let timestamp = Timestamp::new(123456789, TimeUnit::Millisecond); - let expected = Expr::Literal(ScalarValue::TimestampMillisecond(Some(123456789), None)); + let expected = ScalarValue::TimestampMillisecond(Some(123456789), None).lit(); assert_eq!(timestamp_to_literal(×tamp), expected); let timestamp = Timestamp::new(123456789, TimeUnit::Microsecond); - let expected = Expr::Literal(ScalarValue::TimestampMicrosecond(Some(123456789), None)); + let expected = ScalarValue::TimestampMicrosecond(Some(123456789), None).lit(); assert_eq!(timestamp_to_literal(×tamp), expected); let timestamp = Timestamp::new(123456789, TimeUnit::Nanosecond); - let expected = Expr::Literal(ScalarValue::TimestampNanosecond(Some(123456789), None)); + let expected = ScalarValue::TimestampNanosecond(Some(123456789), None).lit(); assert_eq!(timestamp_to_literal(×tamp), expected); } } diff --git a/src/common/query/src/logical_plan/udaf.rs b/src/common/query/src/logical_plan/udaf.rs index 298dbf1874..2cb07f4e41 100644 --- a/src/common/query/src/logical_plan/udaf.rs +++ b/src/common/query/src/logical_plan/udaf.rs @@ -26,7 +26,7 @@ use datafusion_expr::function::{AccumulatorArgs, StateFieldsArgs}; use datafusion_expr::{ Accumulator, AccumulatorFactoryFunction, AggregateUDF as DfAggregateUdf, AggregateUDFImpl, }; -use datatypes::arrow::datatypes::DataType as ArrowDataType; +use datatypes::arrow::datatypes::{DataType as ArrowDataType, FieldRef}; use datatypes::data_type::DataType; use crate::function::{ @@ -129,14 +129,14 @@ impl AggregateUDFImpl for DfUdafAdapter { (self.accumulator)(acc_args) } - fn state_fields(&self, args: StateFieldsArgs) -> Result> { + fn state_fields(&self, args: StateFieldsArgs) -> Result> { let state_types = self.creator.state_types()?; let fields = state_types .into_iter() .enumerate() .map(|(i, t)| { let name = format!("{}_{i}", args.name); - Field::new(name, t.as_arrow_type(), true) + Arc::new(Field::new(name, t.as_arrow_type(), true)) }) .collect::>(); Ok(fields) diff --git a/src/common/recordbatch/src/adapter.rs b/src/common/recordbatch/src/adapter.rs index af35d2c24a..03c24a810c 100644 --- a/src/common/recordbatch/src/adapter.rs +++ b/src/common/recordbatch/src/adapter.rs @@ -134,11 +134,11 @@ where b.and_then(|b| { let projected_column = b.project(&projection)?; if projected_column.schema().fields.len() != projected_schema.fields.len() { - return Err(DataFusionError::ArrowError(ArrowError::SchemaError(format!( + return Err(DataFusionError::ArrowError(Box::new(ArrowError::SchemaError(format!( "Trying to cast a RecordBatch into an incompatible schema. RecordBatch: {}, Target: {}", projected_column.schema(), projected_schema, - )), None)); + ))), None)); } let mut columns = Vec::with_capacity(projected_schema.fields.len()); @@ -360,7 +360,7 @@ impl ExecutionPlanVisitor for MetricCollector { // skip if no metric available let Some(metric) = plan.metrics() else { self.record_batch_metrics.plan_metrics.push(PlanMetrics { - plan: std::any::type_name::().to_string(), + plan: plan.name().to_string(), level: self.current_level, metrics: vec![], }); diff --git a/src/common/recordbatch/src/filter.rs b/src/common/recordbatch/src/filter.rs index 2c509396ff..aa360bc0f3 100644 --- a/src/common/recordbatch/src/filter.rs +++ b/src/common/recordbatch/src/filter.rs @@ -77,7 +77,7 @@ impl SimpleFilterEvaluator { _ => return None, } - let Expr::Literal(val) = lit.lit() else { + let Expr::Literal(val, _) = lit.lit() else { return None; }; @@ -143,8 +143,8 @@ impl SimpleFilterEvaluator { // swap the expr if it is in the form of `literal` `op` `col` let mut op = binary.op; let (lhs, rhs) = match (&*binary.left, &*binary.right) { - (Expr::Column(ref col), Expr::Literal(ref lit)) => (col, lit), - (Expr::Literal(ref lit), Expr::Column(ref col)) => { + (Expr::Column(col), Expr::Literal(lit, _)) => (col, lit), + (Expr::Literal(lit, _), Expr::Column(col)) => { // safety: The previous check ensures the operator is able to swap. op = op.swap().unwrap(); (col, lit) @@ -359,15 +359,15 @@ mod test { let expr = Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("foo"))), op: Operator::Plus, - right: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + right: Box::new(1.lit()), }); assert!(SimpleFilterEvaluator::try_new(&expr).is_none()); // two literal is not supported let expr = Expr::BinaryExpr(BinaryExpr { - left: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + left: Box::new(1.lit()), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + right: Box::new(1.lit()), }); assert!(SimpleFilterEvaluator::try_new(&expr).is_none()); @@ -384,10 +384,10 @@ mod test { left: Box::new(Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("foo"))), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + right: Box::new(1.lit()), })), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + right: Box::new(1.lit()), }); assert!(SimpleFilterEvaluator::try_new(&expr).is_none()); } @@ -398,13 +398,13 @@ mod test { let expr = Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("foo"))), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + right: Box::new(1.lit()), }); let _ = SimpleFilterEvaluator::try_new(&expr).unwrap(); // swap operands let expr = Expr::BinaryExpr(BinaryExpr { - left: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + left: Box::new(1.lit()), op: Operator::Lt, right: Box::new(Expr::Column(Column::from_name("foo"))), }); @@ -418,7 +418,7 @@ mod test { let expr = Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("foo"))), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + right: Box::new(1i64.lit()), }); let evaluator = SimpleFilterEvaluator::try_new(&expr).unwrap(); @@ -440,7 +440,7 @@ mod test { let expr = Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("foo"))), op: Operator::Lt, - right: Box::new(Expr::Literal(ScalarValue::Int64(Some(1)))), + right: Box::new(1i64.lit()), }); let evaluator = SimpleFilterEvaluator::try_new(&expr).unwrap(); diff --git a/src/common/sql/src/default_constraint.rs b/src/common/sql/src/default_constraint.rs index ad81b2f160..fc9e9489b0 100644 --- a/src/common/sql/src/default_constraint.rs +++ b/src/common/sql/src/default_constraint.rs @@ -16,6 +16,7 @@ use common_time::timezone::Timezone; use datatypes::prelude::ConcreteDataType; use datatypes::schema::constraint::{CURRENT_TIMESTAMP, CURRENT_TIMESTAMP_FN}; use datatypes::schema::ColumnDefaultConstraint; +use sqlparser::ast::ValueWithSpan; pub use sqlparser::ast::{ visit_expressions_mut, visit_statements_mut, BinaryOperator, ColumnDef, ColumnOption, ColumnOptionDef, DataType, Expr, Function, FunctionArg, FunctionArgExpr, FunctionArguments, @@ -38,7 +39,7 @@ pub fn parse_column_default_constraint( { let default_constraint = match &opt.option { ColumnOption::Default(Expr::Value(v)) => ColumnDefaultConstraint::Value( - sql_value_to_value(column_name, data_type, v, timezone, None, false)?, + sql_value_to_value(column_name, data_type, &v.value, timezone, None, false)?, ), ColumnOption::Default(Expr::Function(func)) => { let mut func = format!("{func}").to_lowercase(); @@ -54,8 +55,13 @@ pub fn parse_column_default_constraint( // Specialized process for handling numerical inputs to prevent // overflow errors during the parsing of negative numbers, // See https://github.com/GreptimeTeam/greptimedb/issues/4351 - if let (UnaryOperator::Minus, Expr::Value(SqlValue::Number(n, _))) = - (op, expr.as_ref()) + if let ( + UnaryOperator::Minus, + Expr::Value(ValueWithSpan { + value: SqlValue::Number(n, _), + span: _, + }), + ) = (op, expr.as_ref()) { return Ok(Some(ColumnDefaultConstraint::Value(sql_number_to_value( data_type, @@ -64,8 +70,14 @@ pub fn parse_column_default_constraint( } if let Expr::Value(v) = &**expr { - let value = - sql_value_to_value(column_name, data_type, v, timezone, Some(*op), false)?; + let value = sql_value_to_value( + column_name, + data_type, + &v.value, + timezone, + Some(*op), + false, + )?; ColumnDefaultConstraint::Value(value) } else { return UnsupportedDefaultValueSnafu { @@ -85,7 +97,7 @@ pub fn parse_column_default_constraint( _ => { return UnsupportedDefaultValueSnafu { column_name, - expr: Expr::Value(SqlValue::Null), + expr: Expr::Value(SqlValue::Null.into()), } .fail(); } @@ -113,7 +125,7 @@ mod test { let opts = vec![ ColumnOptionDef { name: None, - option: ColumnOption::Default(Expr::Value(bool_value)), + option: ColumnOption::Default(Expr::Value(bool_value.into())), }, ColumnOptionDef { name: None, @@ -139,7 +151,9 @@ mod test { name: None, option: ColumnOption::Default(Expr::UnaryOp { op: UnaryOperator::Minus, - expr: Box::new(Expr::Value(SqlValue::Number("32768".to_string(), false))), + expr: Box::new(Expr::Value( + SqlValue::Number("32768".to_string(), false).into(), + )), }), }]; @@ -161,10 +175,9 @@ mod test { fn test_incorrect_default_value_issue_3479() { let opts = vec![ColumnOptionDef { name: None, - option: ColumnOption::Default(Expr::Value(SqlValue::Number( - "0.047318541668048164".into(), - false, - ))), + option: ColumnOption::Default(Expr::Value( + SqlValue::Number("0.047318541668048164".into(), false).into(), + )), }]; let constraint = parse_column_default_constraint( "coll", diff --git a/src/datatypes/src/data_type.rs b/src/datatypes/src/data_type.rs index f51d5c28a6..57bc85ca24 100644 --- a/src/datatypes/src/data_type.rs +++ b/src/datatypes/src/data_type.rs @@ -444,8 +444,12 @@ impl TryFrom<&ArrowDataType> for ConcreteDataType { ArrowDataType::Date32 => Self::date_datatype(), ArrowDataType::Timestamp(u, _) => ConcreteDataType::from_arrow_time_unit(u), ArrowDataType::Interval(u) => ConcreteDataType::from_arrow_interval_unit(u), - ArrowDataType::Binary | ArrowDataType::LargeBinary => Self::binary_datatype(), - ArrowDataType::Utf8 | ArrowDataType::LargeUtf8 => Self::string_datatype(), + ArrowDataType::Binary | ArrowDataType::LargeBinary | ArrowDataType::BinaryView => { + Self::binary_datatype() + } + ArrowDataType::Utf8 | ArrowDataType::LargeUtf8 | ArrowDataType::Utf8View => { + Self::string_datatype() + } ArrowDataType::List(field) => Self::List(ListType::new( ConcreteDataType::from_arrow_type(field.data_type()), )), @@ -466,8 +470,6 @@ impl TryFrom<&ArrowDataType> for ConcreteDataType { ArrowDataType::Float16 | ArrowDataType::Date64 | ArrowDataType::FixedSizeBinary(_) - | ArrowDataType::BinaryView - | ArrowDataType::Utf8View | ArrowDataType::ListView(_) | ArrowDataType::FixedSizeList(_, _) | ArrowDataType::LargeList(_) @@ -475,7 +477,9 @@ impl TryFrom<&ArrowDataType> for ConcreteDataType { | ArrowDataType::Union(_, _) | ArrowDataType::Decimal256(_, _) | ArrowDataType::Map(_, _) - | ArrowDataType::RunEndEncoded(_, _) => { + | ArrowDataType::RunEndEncoded(_, _) + | ArrowDataType::Decimal32(_, _) + | ArrowDataType::Decimal64(_, _) => { return error::UnsupportedArrowTypeSnafu { arrow_type: dt.clone(), } diff --git a/src/datatypes/src/vectors/helper.rs b/src/datatypes/src/vectors/helper.rs index 4e8dd607de..2457052032 100644 --- a/src/datatypes/src/vectors/helper.rs +++ b/src/datatypes/src/vectors/helper.rs @@ -264,7 +264,9 @@ impl Helper { ArrowDataType::Null => Arc::new(NullVector::try_from_arrow_array(array)?), ArrowDataType::Boolean => Arc::new(BooleanVector::try_from_arrow_array(array)?), ArrowDataType::Binary => Arc::new(BinaryVector::try_from_arrow_array(array)?), - ArrowDataType::LargeBinary | ArrowDataType::FixedSizeBinary(_) => { + ArrowDataType::LargeBinary + | ArrowDataType::FixedSizeBinary(_) + | ArrowDataType::BinaryView => { let array = arrow::compute::cast(array.as_ref(), &ArrowDataType::Binary) .context(crate::error::ArrowComputeSnafu)?; Arc::new(BinaryVector::try_from_arrow_array(array)?) @@ -280,7 +282,7 @@ impl Helper { ArrowDataType::Float32 => Arc::new(Float32Vector::try_from_arrow_array(array)?), ArrowDataType::Float64 => Arc::new(Float64Vector::try_from_arrow_array(array)?), ArrowDataType::Utf8 => Arc::new(StringVector::try_from_arrow_array(array)?), - ArrowDataType::LargeUtf8 => { + ArrowDataType::LargeUtf8 | ArrowDataType::Utf8View => { let array = arrow::compute::cast(array.as_ref(), &ArrowDataType::Utf8) .context(crate::error::ArrowComputeSnafu)?; Arc::new(StringVector::try_from_arrow_array(array)?) @@ -377,11 +379,11 @@ impl Helper { | ArrowDataType::Decimal256(_, _) | ArrowDataType::Map(_, _) | ArrowDataType::RunEndEncoded(_, _) - | ArrowDataType::BinaryView - | ArrowDataType::Utf8View | ArrowDataType::ListView(_) | ArrowDataType::LargeListView(_) - | ArrowDataType::Date64 => { + | ArrowDataType::Date64 + | ArrowDataType::Decimal32(_, _) + | ArrowDataType::Decimal64(_, _) => { return error::UnsupportedArrowTypeSnafu { arrow_type: array.as_ref().data_type().clone(), } diff --git a/src/file-engine/Cargo.toml b/src/file-engine/Cargo.toml index 9d031cb279..1ef7f8ea52 100644 --- a/src/file-engine/Cargo.toml +++ b/src/file-engine/Cargo.toml @@ -26,6 +26,7 @@ common-test-util = { workspace = true, optional = true } common-time.workspace = true datafusion.workspace = true datafusion-expr.workspace = true +datafusion-orc.workspace = true datatypes.workspace = true futures.workspace = true object-store.workspace = true diff --git a/src/file-engine/src/query.rs b/src/file-engine/src/query.rs index 679c911235..872d302e15 100644 --- a/src/file-engine/src/query.rs +++ b/src/file-engine/src/query.rs @@ -33,7 +33,7 @@ use futures::Stream; use snafu::{ensure, OptionExt, ResultExt}; use store_api::storage::ScanRequest; -use self::file_stream::{CreateScanPlanContext, ScanPlanConfig}; +use self::file_stream::ScanPlanConfig; use crate::error::{ BuildBackendSnafu, CreateDefaultSnafu, ExtractColumnFromFilterSnafu, MissingColumnNoDefaultSnafu, ProjectSchemaSnafu, ProjectionOutOfBoundsSnafu, Result, @@ -50,7 +50,6 @@ impl FileRegion { let file_stream = file_stream::create_stream( &self.format, - &CreateScanPlanContext::default(), &ScanPlanConfig { file_schema, files: &self.file_options.files, diff --git a/src/file-engine/src/query/file_stream.rs b/src/file-engine/src/query/file_stream.rs index fdf7b687ce..d2730b4880 100644 --- a/src/file-engine/src/query/file_stream.rs +++ b/src/file-engine/src/query/file_stream.rs @@ -15,18 +15,17 @@ use std::sync::Arc; use common_datasource::file_format::csv::CsvFormat; -use common_datasource::file_format::json::JsonFormat; -use common_datasource::file_format::orc::{OrcFormat, OrcOpener}; -use common_datasource::file_format::parquet::{DefaultParquetFileReaderFactory, ParquetFormat}; +use common_datasource::file_format::parquet::DefaultParquetFileReaderFactory; use common_datasource::file_format::Format; use common_recordbatch::adapter::RecordBatchStreamAdapter; use common_recordbatch::SendableRecordBatchStream; -use datafusion::common::{Constraints, Statistics, ToDFSchema}; +use datafusion::common::ToDFSchema; use datafusion::datasource::listing::PartitionedFile; use datafusion::datasource::object_store::ObjectStoreUrl; use datafusion::datasource::physical_plan::{ - CsvConfig, CsvOpener, FileOpener, FileScanConfig, FileStream, JsonOpener, ParquetExec, + CsvSource, FileGroup, FileScanConfigBuilder, FileSource, FileStream, JsonSource, ParquetSource, }; +use datafusion::datasource::source::DataSourceExec; use datafusion::physical_expr::create_physical_expr; use datafusion::physical_expr::execution_props::ExecutionProps; use datafusion::physical_plan::metrics::ExecutionPlanMetricsSet; @@ -34,6 +33,7 @@ use datafusion::physical_plan::ExecutionPlan; use datafusion::prelude::SessionContext; use datafusion_expr::expr::Expr; use datafusion_expr::utils::conjunction; +use datafusion_orc::OrcSource; use datatypes::arrow::datatypes::Schema as ArrowSchema; use datatypes::schema::SchemaRef; use object_store::ObjectStore; @@ -43,86 +43,37 @@ use crate::error::{self, Result}; const DEFAULT_BATCH_SIZE: usize = 8192; -#[derive(Debug, Clone, Copy, Default)] -pub struct CreateScanPlanContext {} - -fn build_csv_opener( +fn build_record_batch_stream( + scan_plan_config: &ScanPlanConfig, file_schema: Arc, - config: &ScanPlanConfig, - format: &CsvFormat, -) -> CsvOpener { - let csv_config = Arc::new(CsvConfig::new( - DEFAULT_BATCH_SIZE, - file_schema, - config.projection.cloned(), - format.has_header, - format.delimiter, - b'"', - None, - Arc::new(object_store_opendal::OpendalStore::new( - config.store.clone(), - )), - None, - )); - CsvOpener::new(csv_config, format.compression_type.into()) -} - -fn build_json_opener( - file_schema: Arc, - config: &ScanPlanConfig, - format: &JsonFormat, -) -> Result { - let projected_schema = if let Some(projection) = config.projection { - Arc::new( - file_schema - .project(projection) - .context(error::ProjectArrowSchemaSnafu)?, - ) - } else { - file_schema - }; - let store = object_store_opendal::OpendalStore::new(config.store.clone()); - Ok(JsonOpener::new( - DEFAULT_BATCH_SIZE, - projected_schema, - format.compression_type.into(), - Arc::new(store), - )) -} - -fn build_orc_opener(output_schema: Arc, config: &ScanPlanConfig) -> Result { - Ok(OrcOpener::new( - config.store.clone(), - output_schema, - config.projection.cloned(), - )) -} - -fn build_record_batch_stream( - opener: T, - file_schema: Arc, - files: &[String], - projection: Option<&Vec>, limit: Option, + file_source: Arc, ) -> Result { - let statistics = Statistics::new_unknown(file_schema.as_ref()); + let files = scan_plan_config + .files + .iter() + .map(|filename| PartitionedFile::new(filename.to_string(), 0)) + .collect::>(); + + let config = FileScanConfigBuilder::new( + ObjectStoreUrl::local_filesystem(), + file_schema, + file_source.clone(), + ) + .with_projection(scan_plan_config.projection.cloned()) + .with_limit(limit) + .with_file_group(FileGroup::new(files)) + .build(); + + let store = Arc::new(object_store_opendal::OpendalStore::new( + scan_plan_config.store.clone(), + )); + + let file_opener = file_source.create_file_opener(store, &config, 0); let stream = FileStream::new( - &FileScanConfig { - object_store_url: ObjectStoreUrl::parse("empty://").unwrap(), // won't be used - file_schema, - file_groups: vec![files - .iter() - .map(|filename| PartitionedFile::new(filename.to_string(), 0)) - .collect::>()], - statistics, - projection: projection.cloned(), - limit, - table_partition_cols: vec![], - output_ordering: vec![], - constraints: Constraints::empty(), - }, + &config, 0, // partition: hard-code - opener, + file_opener, &ExecutionPlanMetricsSet::new(), ) .context(error::BuildStreamSnafu)?; @@ -132,34 +83,32 @@ fn build_record_batch_stream( } fn new_csv_stream( - _ctx: &CreateScanPlanContext, config: &ScanPlanConfig, format: &CsvFormat, ) -> Result { let file_schema = config.file_schema.arrow_schema().clone(); - let opener = build_csv_opener(file_schema.clone(), config, format); + // push down limit only if there is no filter let limit = config.filters.is_empty().then_some(config.limit).flatten(); - build_record_batch_stream(opener, file_schema, config.files, config.projection, limit) + + let csv_source = CsvSource::new(format.has_header, format.delimiter, b'"') + .with_schema(file_schema.clone()) + .with_batch_size(DEFAULT_BATCH_SIZE); + + build_record_batch_stream(config, file_schema, limit, csv_source) } -fn new_json_stream( - _ctx: &CreateScanPlanContext, - config: &ScanPlanConfig, - format: &JsonFormat, -) -> Result { +fn new_json_stream(config: &ScanPlanConfig) -> Result { let file_schema = config.file_schema.arrow_schema().clone(); - let opener = build_json_opener(file_schema.clone(), config, format)?; + // push down limit only if there is no filter let limit = config.filters.is_empty().then_some(config.limit).flatten(); - build_record_batch_stream(opener, file_schema, config.files, config.projection, limit) + + let file_source = JsonSource::new().with_batch_size(DEFAULT_BATCH_SIZE); + build_record_batch_stream(config, file_schema, limit, file_source) } -fn new_parquet_stream_with_exec_plan( - _ctx: &CreateScanPlanContext, - config: &ScanPlanConfig, - _format: &ParquetFormat, -) -> Result { +fn new_parquet_stream_with_exec_plan(config: &ScanPlanConfig) -> Result { let file_schema = config.file_schema.arrow_schema().clone(); let ScanPlanConfig { files, @@ -170,25 +119,20 @@ fn new_parquet_stream_with_exec_plan( .. } = config; - // construct config for ParquetExec - let scan_config = FileScanConfig { - object_store_url: ObjectStoreUrl::parse("empty://").unwrap(), // won't be used - file_schema: file_schema.clone(), - file_groups: vec![files + let file_group = FileGroup::new( + files .iter() .map(|filename| PartitionedFile::new(filename.to_string(), 0)) - .collect::>()], - constraints: Constraints::empty(), - statistics: Statistics::new_unknown(file_schema.as_ref()), - projection: projection.cloned(), - limit: *limit, - table_partition_cols: vec![], - output_ordering: vec![], - }; + .collect::>(), + ); + + let mut parquet_source = ParquetSource::default().with_parquet_file_reader_factory(Arc::new( + DefaultParquetFileReaderFactory::new(store.clone()), + )); // build predicate filter let filters = filters.to_vec(); - let filters = if let Some(expr) = conjunction(filters) { + if let Some(expr) = conjunction(filters) { let df_schema = file_schema .clone() .to_dfschema_ref() @@ -196,22 +140,23 @@ fn new_parquet_stream_with_exec_plan( let filters = create_physical_expr(&expr, &df_schema, &ExecutionProps::new()) .context(error::ParquetScanPlanSnafu)?; - Some(filters) - } else { - None + parquet_source = parquet_source.with_predicate(filters); }; + let file_scan_config = FileScanConfigBuilder::new( + ObjectStoreUrl::local_filesystem(), + file_schema, + Arc::new(parquet_source), + ) + .with_file_group(file_group) + .with_projection(projection.cloned()) + .with_limit(*limit) + .build(); + // TODO(ruihang): get this from upper layer let task_ctx = SessionContext::default().task_ctx(); - let mut builder = ParquetExec::builder(scan_config); - if let Some(filters) = filters { - builder = builder.with_predicate(filters); - } - let parquet_exec = builder - .with_parquet_file_reader_factory(Arc::new(DefaultParquetFileReaderFactory::new( - store.clone(), - ))) - .build(); + + let parquet_exec = DataSourceExec::from_data_source(file_scan_config); let stream = parquet_exec .execute(0, task_ctx) .context(error::ParquetScanPlanSnafu)?; @@ -221,16 +166,14 @@ fn new_parquet_stream_with_exec_plan( )) } -fn new_orc_stream( - _ctx: &CreateScanPlanContext, - config: &ScanPlanConfig, - _format: &OrcFormat, -) -> Result { +fn new_orc_stream(config: &ScanPlanConfig) -> Result { let file_schema = config.file_schema.arrow_schema().clone(); - let opener = build_orc_opener(file_schema.clone(), config)?; + // push down limit only if there is no filter let limit = config.filters.is_empty().then_some(config.limit).flatten(); - build_record_batch_stream(opener, file_schema, config.files, config.projection, limit) + + let file_source = OrcSource::default().with_batch_size(DEFAULT_BATCH_SIZE); + build_record_batch_stream(config, file_schema, limit, file_source) } #[derive(Debug, Clone)] @@ -245,13 +188,12 @@ pub struct ScanPlanConfig<'a> { pub fn create_stream( format: &Format, - ctx: &CreateScanPlanContext, config: &ScanPlanConfig, ) -> Result { match format { - Format::Csv(format) => new_csv_stream(ctx, config, format), - Format::Json(format) => new_json_stream(ctx, config, format), - Format::Parquet(format) => new_parquet_stream_with_exec_plan(ctx, config, format), - Format::Orc(format) => new_orc_stream(ctx, config, format), + Format::Csv(format) => new_csv_stream(config, format), + Format::Json(_) => new_json_stream(config), + Format::Parquet(_) => new_parquet_stream_with_exec_plan(config), + Format::Orc(_) => new_orc_stream(config), } } diff --git a/src/flow/src/batching_mode/task.rs b/src/flow/src/batching_mode/task.rs index ebce09e367..9467e089cd 100644 --- a/src/flow/src/batching_mode/task.rs +++ b/src/flow/src/batching_mode/task.rs @@ -24,8 +24,7 @@ use common_query::logical_plan::breakup_insert_plan; use common_telemetry::tracing::warn; use common_telemetry::{debug, info}; use common_time::Timestamp; -use datafusion::optimizer::analyzer::count_wildcard_rule::CountWildcardRule; -use datafusion::optimizer::AnalyzerRule; +use datafusion::datasource::DefaultTableSource; use datafusion::sql::unparser::expr_to_sql; use datafusion_common::tree_node::{Transformed, TreeNode}; use datafusion_common::DFSchemaRef; @@ -40,6 +39,7 @@ use snafu::{ensure, OptionExt, ResultExt}; use sql::parser::{ParseOptions, ParserContext}; use sql::statements::statement::Statement; use substrait::{DFLogicalSubstraitConvertor, SubstraitPlan}; +use table::table::adapter::DfTableProviderAdapter; use tokio::sync::oneshot; use tokio::sync::oneshot::error::TryRecvError; use tokio::time::Instant; @@ -252,7 +252,11 @@ impl BatchingTask { .await?; let new_query = self - .gen_query_with_time_window(engine.clone(), &table.meta.schema, max_window_cnt) + .gen_query_with_time_window( + engine.clone(), + &table.table_info().meta.schema, + max_window_cnt, + ) .await?; let insert_into = if let Some((new_query, _column_cnt)) = new_query { @@ -274,6 +278,10 @@ impl BatchingTask { } ); } + + let table_provider = Arc::new(DfTableProviderAdapter::new(table)); + let table_source = Arc::new(DefaultTableSource::new(table_provider)); + // update_at& time index placeholder (if exists) should have default value LogicalPlan::Dml(DmlStatement::new( datafusion_common::TableReference::Full { @@ -281,7 +289,7 @@ impl BatchingTask { schema: self.config.sink_table_name[1].clone().into(), table: self.config.sink_table_name[2].clone().into(), }, - df_schema, + table_source, WriteOp::Insert(datafusion_expr::dml::InsertOp::Append), Arc::new(new_query), )) @@ -324,7 +332,7 @@ impl BatchingTask { let schema = &self.config.sink_table_name[1]; // fix all table ref by make it fully qualified, i.e. "table_name" => "catalog_name.schema_name.table_name" - let fixed_plan = plan + let plan = plan .clone() .transform_down_with_subqueries(|p| { if let LogicalPlan::TableScan(mut table_scan) = p { @@ -340,16 +348,6 @@ impl BatchingTask { })? .data; - let expanded_plan = CountWildcardRule::new() - .analyze(fixed_plan.clone(), &Default::default()) - .with_context(|_| DatafusionSnafu { - context: format!( - "Failed to expand wildcard in logical plan, plan={:?}", - fixed_plan - ), - })?; - - let plan = expanded_plan; let mut peer_desc = None; let res = { diff --git a/src/flow/src/batching_mode/utils.rs b/src/flow/src/batching_mode/utils.rs index 5ff56038c0..03bd3a467d 100644 --- a/src/flow/src/batching_mode/utils.rs +++ b/src/flow/src/batching_mode/utils.rs @@ -36,7 +36,7 @@ use snafu::{ensure, OptionExt, ResultExt}; use sql::parser::{ParseOptions, ParserContext}; use sql::statements::statement::Statement; use sql::statements::tql::Tql; -use table::metadata::TableInfo; +use table::TableRef; use crate::adapter::AUTO_CREATED_PLACEHOLDER_TS_COL; use crate::df_optimizer::apply_df_optimizer; @@ -46,7 +46,7 @@ use crate::{Error, TableName}; pub async fn get_table_info_df_schema( catalog_mr: CatalogManagerRef, table_name: TableName, -) -> Result<(Arc, Arc), Error> { +) -> Result<(TableRef, Arc), Error> { let full_table_name = table_name.clone().join("."); let table = catalog_mr .table(&table_name[0], &table_name[1], &table_name[2], None) @@ -56,7 +56,7 @@ pub async fn get_table_info_df_schema( .context(TableNotFoundSnafu { name: &full_table_name, })?; - let table_info = table.table_info().clone(); + let table_info = table.table_info(); let schema = table_info.meta.schema.clone(); @@ -72,7 +72,7 @@ pub async fn get_table_info_df_schema( ), })?, ); - Ok((table_info, df_schema)) + Ok((table, df_schema)) } /// Convert sql to datafusion logical plan @@ -426,7 +426,7 @@ impl TreeNodeRewriter for AddFilterRewriter { return Ok(Transformed::no(node)); } match node { - LogicalPlan::Filter(mut filter) if !filter.having => { + LogicalPlan::Filter(mut filter) => { filter.predicate = filter.predicate.and(self.extra_filter.clone()); self.is_rewritten = true; Ok(Transformed::yes(LogicalPlan::Filter(filter))) diff --git a/src/flow/src/df_optimizer.rs b/src/flow/src/df_optimizer.rs index bef5b3ed79..c2eb7b246a 100644 --- a/src/flow/src/df_optimizer.rs +++ b/src/flow/src/df_optimizer.rs @@ -29,7 +29,6 @@ use datafusion::optimizer::analyzer::type_coercion::TypeCoercion; use datafusion::optimizer::common_subexpr_eliminate::CommonSubexprEliminate; use datafusion::optimizer::optimize_projections::OptimizeProjections; use datafusion::optimizer::simplify_expressions::SimplifyExpressions; -use datafusion::optimizer::unwrap_cast_in_comparison::UnwrapCastInComparison; use datafusion::optimizer::utils::NamePreserver; use datafusion::optimizer::{Analyzer, AnalyzerRule, Optimizer, OptimizerContext}; use datafusion_common::tree_node::{ @@ -38,8 +37,8 @@ use datafusion_common::tree_node::{ use datafusion_common::{Column, DFSchema, ScalarValue}; use datafusion_expr::utils::merge_schema; use datafusion_expr::{ - BinaryExpr, ColumnarValue, Expr, Operator, Projection, ScalarFunctionArgs, ScalarUDFImpl, - Signature, TypeSignature, Volatility, + BinaryExpr, ColumnarValue, Expr, Literal, Operator, Projection, ScalarFunctionArgs, + ScalarUDFImpl, Signature, TypeSignature, Volatility, }; use query::optimizer::count_wildcard::CountWildcardToTimeIndexRule; use query::parser::QueryLanguageParser; @@ -80,7 +79,6 @@ pub async fn apply_df_optimizer( Arc::new(OptimizeProjections::new()), Arc::new(CommonSubexprEliminate::new()), Arc::new(SimplifyExpressions::new()), - Arc::new(UnwrapCastInComparison::new()), ]); let plan = optimizer .optimize(plan, &ctx, |_, _| {}) @@ -305,11 +303,11 @@ impl TreeNodeRewriter for ExpandAvgRewriter<'_> { BinaryExpr::new(Box::new(sum_cast), Operator::Divide, Box::new(count_expr)); let div_expr = Box::new(Expr::BinaryExpr(div)); - let zero = Box::new(Expr::Literal(ScalarValue::Int64(Some(0)))); + let zero = Box::new(0.lit()); let not_zero = BinaryExpr::new(Box::new(count_expr_ref), Operator::NotEq, zero.clone()); let not_zero = Box::new(Expr::BinaryExpr(not_zero)); - let null = Box::new(Expr::Literal(ScalarValue::Null)); + let null = Box::new(Expr::Literal(ScalarValue::Null, None)); let case_when = datafusion_expr::Case::new(None, vec![(not_zero, div_expr)], Some(null)); diff --git a/src/frontend/src/instance.rs b/src/frontend/src/instance.rs index 973829375e..495ab2bee4 100644 --- a/src/frontend/src/instance.rs +++ b/src/frontend/src/instance.rs @@ -88,6 +88,7 @@ use servers::query_handler::sql::SqlQueryHandler; use session::context::{Channel, QueryContextRef}; use session::table_name::table_idents_to_full_name; use snafu::prelude::*; +use sql::ast::ObjectNamePartExt; use sql::dialect::Dialect; use sql::parser::{ParseOptions, ParserContext}; use sql::statements::copy::{CopyDatabase, CopyTable}; @@ -1010,9 +1011,9 @@ fn validate_database(name: &ObjectName, query_ctx: &QueryContextRef) -> Result<( let (catalog, schema) = match &name.0[..] { [schema] => ( query_ctx.current_catalog().to_string(), - schema.value.clone(), + schema.to_string_unquoted(), ), - [catalog, schema] => (catalog.value.clone(), schema.value.clone()), + [catalog, schema] => (catalog.to_string_unquoted(), schema.to_string_unquoted()), _ => InvalidSqlSnafu { err_msg: format!( "expect database name to be . or , actual: {name}", diff --git a/src/frontend/src/instance/grpc.rs b/src/frontend/src/instance/grpc.rs index a511febaaf..c2ac853eb6 100644 --- a/src/frontend/src/instance/grpc.rs +++ b/src/frontend/src/instance/grpc.rs @@ -31,17 +31,19 @@ use common_grpc::FlightData; use common_query::logical_plan::add_insert_to_logical_plan; use common_query::Output; use common_telemetry::tracing::{self}; +use datafusion::datasource::DefaultTableSource; use query::parser::PromQuery; use servers::interceptor::{GrpcQueryInterceptor, GrpcQueryInterceptorRef}; use servers::query_handler::grpc::GrpcQueryHandler; use servers::query_handler::sql::SqlQueryHandler; use session::context::QueryContextRef; use snafu::{ensure, OptionExt, ResultExt}; +use table::table::adapter::DfTableProviderAdapter; use table::table_name::TableName; use table::TableRef; use crate::error::{ - CatalogSnafu, DataFusionSnafu, Error, ExternalSnafu, InFlightWriteBytesExceededSnafu, + CatalogSnafu, Error, ExternalSnafu, InFlightWriteBytesExceededSnafu, IncompleteGrpcRequestSnafu, NotSupportedSnafu, PermissionSnafu, PlanStatementSnafu, Result, SubstraitDecodeLogicalPlanSnafu, TableNotFoundSnafu, TableOperationSnafu, }; @@ -372,20 +374,10 @@ impl Instance { ] .join("."), })?; + let table_provider = Arc::new(DfTableProviderAdapter::new(table)); + let table_source = Arc::new(DefaultTableSource::new(table_provider)); - let table_info = table.table_info(); - - let df_schema = Arc::new( - table_info - .meta - .schema - .arrow_schema() - .clone() - .try_into() - .context(DataFusionSnafu)?, - ); - - let insert_into = add_insert_to_logical_plan(table_name, df_schema, logical_plan) + let insert_into = add_insert_to_logical_plan(table_name, table_source, logical_plan) .context(SubstraitDecodeLogicalPlanSnafu)?; let engine_ctx = self.query_engine().engine_context(ctx.clone()); diff --git a/src/frontend/src/instance/jaeger.rs b/src/frontend/src/instance/jaeger.rs index 526c1926c5..f1a1fad328 100644 --- a/src/frontend/src/instance/jaeger.rs +++ b/src/frontend/src/instance/jaeger.rs @@ -30,6 +30,7 @@ use common_recordbatch::util; use datafusion::dataframe::DataFrame; use datafusion::execution::context::SessionContext; use datafusion::execution::SessionStateBuilder; +use datafusion_expr::select_expr::SelectExpr; use datafusion_expr::{col, lit, lit_timestamp_nano, wildcard, Expr, SortExpr}; use datatypes::value::ValueRef; use query::QueryEngineRef; @@ -61,7 +62,7 @@ impl JaegerQueryHandler for Instance { ctx, self.catalog_manager(), self.query_engine(), - vec![col(SERVICE_NAME_COLUMN)], + vec![SelectExpr::from(col(SERVICE_NAME_COLUMN))], vec![], vec![], None, @@ -118,10 +119,10 @@ impl JaegerQueryHandler for Instance { self.catalog_manager(), self.query_engine(), vec![ - col(SPAN_NAME_COLUMN), - col(SPAN_KIND_COLUMN), - col(SERVICE_NAME_COLUMN), - col(TIMESTAMP_COLUMN), + SelectExpr::from(col(SPAN_NAME_COLUMN)), + SelectExpr::from(col(SPAN_KIND_COLUMN)), + SelectExpr::from(col(SERVICE_NAME_COLUMN)), + SelectExpr::from(col(TIMESTAMP_COLUMN)), ], filters, vec![col(SPAN_NAME_COLUMN).sort(true, false)], // Sort by span_name in ascending order. @@ -287,7 +288,7 @@ async fn query_trace_table( ctx: QueryContextRef, catalog_manager: &CatalogManagerRef, query_engine: &QueryEngineRef, - selects: Vec, + selects: Vec, filters: Vec, sorts: Vec, limit: Option, @@ -300,7 +301,10 @@ async fn query_trace_table( // If only select services, use the trace services table. let table_name = { - if selects.len() == 1 && selects[0] == col(SERVICE_NAME_COLUMN) { + if match selects.as_slice() { + [SelectExpr::Expression(x)] => x == &col(SERVICE_NAME_COLUMN), + _ => false, + } { &trace_services_table_name(trace_table_name) } else { trace_table_name diff --git a/src/frontend/src/instance/otlp.rs b/src/frontend/src/instance/otlp.rs index d3a0b75d1c..b11a034429 100644 --- a/src/frontend/src/instance/otlp.rs +++ b/src/frontend/src/instance/otlp.rs @@ -21,8 +21,8 @@ use common_error::ext::BoxedError; use common_query::prelude::GREPTIME_PHYSICAL_TABLE; use common_telemetry::tracing; use opentelemetry_proto::tonic::collector::logs::v1::ExportLogsServiceRequest; -use opentelemetry_proto::tonic::collector::metrics::v1::ExportMetricsServiceRequest; use opentelemetry_proto::tonic::collector::trace::v1::ExportTraceServiceRequest; +use otel_arrow_rust::proto::opentelemetry::collector::metrics::v1::ExportMetricsServiceRequest; use pipeline::{GreptimePipelineParams, PipelineWay}; use servers::error::{self, AuthSnafu, InFlightWriteBytesExceededSnafu, Result as ServerResult}; use servers::http::prom_store::PHYSICAL_TABLE_PARAM; diff --git a/src/meta-srv/src/bootstrap.rs b/src/meta-srv/src/bootstrap.rs index 82d3eac035..d77ec335c1 100644 --- a/src/meta-srv/src/bootstrap.rs +++ b/src/meta-srv/src/bootstrap.rs @@ -239,8 +239,7 @@ pub async fn bootstrap_metasrv_with_router( info!("gRPC server is bound to: {}", real_bind_addr); - let incoming = - TcpIncoming::from_listener(listener, true, None).context(error::TcpIncomingSnafu)?; + let incoming = TcpIncoming::from(listener).with_nodelay(Some(true)); let _handle = common_runtime::spawn_global(async move { let result = router diff --git a/src/meta-srv/src/error.rs b/src/meta-srv/src/error.rs index b39c813b39..62e1138875 100644 --- a/src/meta-srv/src/error.rs +++ b/src/meta-srv/src/error.rs @@ -253,12 +253,6 @@ pub enum Error { location: Location, }, - #[snafu(display("Failed to convert to TcpIncoming"))] - TcpIncoming { - #[snafu(source)] - error: Box, - }, - #[snafu(display("Failed to start gRPC server"))] StartGrpc { #[snafu(source)] @@ -964,7 +958,6 @@ impl ErrorExt for Error { Error::EtcdFailed { .. } | Error::ConnectEtcd { .. } | Error::TcpBind { .. } - | Error::TcpIncoming { .. } | Error::SerializeToJson { .. } | Error::DeserializeFromJson { .. } | Error::NoLeader { .. } diff --git a/src/meta-srv/src/service/admin.rs b/src/meta-srv/src/service/admin.rs index de588904e0..608da1eb38 100644 --- a/src/meta-srv/src/service/admin.rs +++ b/src/meta-srv/src/service/admin.rs @@ -30,10 +30,8 @@ use std::task::{Context, Poll}; use axum::http::StatusCode; use axum::response::IntoResponse; use axum::{routing, Router as AxumRouter}; -use bytes::Bytes; -use http_body_util::{BodyExt, Full}; -use tonic::body::BoxBody; -use tonic::codegen::{empty_body, http, BoxFuture, Service}; +use tonic::body::Body; +use tonic::codegen::{http, BoxFuture, Service}; use tonic::server::NamedService; use crate::metasrv::Metasrv; @@ -129,8 +127,8 @@ impl NamedService for Admin { const NAME: &'static str = "admin"; } -impl Service> for Admin { - type Response = http::Response; +impl Service> for Admin { + type Response = http::Response; type Error = Infallible; type Future = BoxFuture; @@ -138,7 +136,7 @@ impl Service> for Admin { Poll::Ready(Ok(())) } - fn call(&mut self, req: http::Request) -> Self::Future { + fn call(&mut self, req: http::Request) -> Self::Future { let router = self.router.clone(); let query_params = req .uri() @@ -202,22 +200,22 @@ impl Router { path: &str, method: http::Method, params: HashMap, - ) -> Result, Infallible> { + ) -> Result, Infallible> { let handler = match self.handlers.get(path) { Some(handler) => handler, None => { return Ok(http::Response::builder() .status(http::StatusCode::NOT_FOUND) - .body(empty_body()) + .body(Body::empty()) .unwrap()) } }; let res = match handler.handle(path, method, ¶ms).await { - Ok(res) => res.map(boxed), + Ok(res) => res.map(Body::new), Err(e) => http::Response::builder() .status(http::StatusCode::INTERNAL_SERVER_ERROR) - .body(boxed(e.to_string())) + .body(Body::new(e.to_string())) .unwrap(), }; @@ -231,14 +229,6 @@ fn check_path(path: &str) { } } -/// Returns a [BoxBody] from a string. -/// The implementation follows [empty_body()]. -fn boxed(body: String) -> BoxBody { - Full::new(Bytes::from(body)) - .map_err(|err| match err {}) - .boxed_unsync() -} - /// Expose admin HTTP endpoints as an Axum router for the main HTTP server. pub fn admin_axum_router(metasrv: Arc) -> AxumRouter { let node_lease_handler = Arc::new(NodeLeaseHandler { diff --git a/src/mito-codec/src/primary_key_filter.rs b/src/mito-codec/src/primary_key_filter.rs index 571d5a0df4..e4d1ce5056 100644 --- a/src/mito-codec/src/primary_key_filter.rs +++ b/src/mito-codec/src/primary_key_filter.rs @@ -154,8 +154,8 @@ mod tests { use std::sync::Arc; use api::v1::SemanticType; - use datafusion_common::{Column, ScalarValue}; - use datafusion_expr::{BinaryExpr, Expr, Operator}; + use datafusion_common::Column; + use datafusion_expr::{BinaryExpr, Expr, Literal, Operator}; use datatypes::prelude::ConcreteDataType; use datatypes::schema::ColumnSchema; use datatypes::value::ValueRef; @@ -226,7 +226,7 @@ mod tests { let expr = Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name(column_name))), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Utf8(Some(value.to_string())))), + right: Box::new(value.lit()), }); SimpleFilterEvaluator::try_new(&expr).unwrap() } diff --git a/src/mito2/src/memtable/partition_tree.rs b/src/mito2/src/memtable/partition_tree.rs index 44b93dabc2..76cb2e7aee 100644 --- a/src/mito2/src/memtable/partition_tree.rs +++ b/src/mito2/src/memtable/partition_tree.rs @@ -383,8 +383,8 @@ mod tests { use api::v1::value::ValueData; use api::v1::{Mutation, OpType, Rows, SemanticType}; use common_time::Timestamp; - use datafusion_common::{Column, ScalarValue}; - use datafusion_expr::{BinaryExpr, Expr, Operator}; + use datafusion_common::Column; + use datafusion_expr::{BinaryExpr, Expr, Literal, Operator}; use datatypes::data_type::ConcreteDataType; use datatypes::prelude::Vector; use datatypes::scalars::ScalarVector; @@ -631,7 +631,7 @@ mod tests { let expr = Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("k1"))), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::UInt32(Some(i)))), + right: Box::new((i as u32).lit()), }); let iter = memtable .iter(None, Some(Predicate::new(vec![expr])), None) diff --git a/src/mito2/src/read/seq_scan.rs b/src/mito2/src/read/seq_scan.rs index 0d676fae18..bb6514992b 100644 --- a/src/mito2/src/read/seq_scan.rs +++ b/src/mito2/src/read/seq_scan.rs @@ -465,7 +465,10 @@ impl DisplayAs for SeqScan { self.stream_ctx.input.mapper.metadata().region_id )?; match t { - DisplayFormatType::Default => self.stream_ctx.format_for_explain(false, f), + // TODO(LFC): Implement all the "TreeRender" display format. + DisplayFormatType::Default | DisplayFormatType::TreeRender => { + self.stream_ctx.format_for_explain(false, f) + } DisplayFormatType::Verbose => { self.stream_ctx.format_for_explain(true, f)?; self.metrics_list.format_verbose_metrics(f) diff --git a/src/mito2/src/read/series_scan.rs b/src/mito2/src/read/series_scan.rs index 2acb64fe8e..63080bb146 100644 --- a/src/mito2/src/read/series_scan.rs +++ b/src/mito2/src/read/series_scan.rs @@ -328,7 +328,9 @@ impl DisplayAs for SeriesScan { self.stream_ctx.input.mapper.metadata().region_id )?; match t { - DisplayFormatType::Default => self.stream_ctx.format_for_explain(false, f), + DisplayFormatType::Default | DisplayFormatType::TreeRender => { + self.stream_ctx.format_for_explain(false, f) + } DisplayFormatType::Verbose => { self.stream_ctx.format_for_explain(true, f)?; self.metrics_list.format_verbose_metrics(f) diff --git a/src/mito2/src/read/unordered_scan.rs b/src/mito2/src/read/unordered_scan.rs index 70f5d89c4d..c653328278 100644 --- a/src/mito2/src/read/unordered_scan.rs +++ b/src/mito2/src/read/unordered_scan.rs @@ -331,7 +331,9 @@ impl DisplayAs for UnorderedScan { self.stream_ctx.input.mapper.metadata().region_id )?; match t { - DisplayFormatType::Default => self.stream_ctx.format_for_explain(false, f), + DisplayFormatType::Default | DisplayFormatType::TreeRender => { + self.stream_ctx.format_for_explain(false, f) + } DisplayFormatType::Verbose => { self.stream_ctx.format_for_explain(true, f)?; self.metrics_list.format_verbose_metrics(f) diff --git a/src/mito2/src/sst/index/bloom_filter/applier/builder.rs b/src/mito2/src/sst/index/bloom_filter/applier/builder.rs index b4dc9b04a1..0c71a2df4c 100644 --- a/src/mito2/src/sst/index/bloom_filter/applier/builder.rs +++ b/src/mito2/src/sst/index/bloom_filter/applier/builder.rs @@ -301,7 +301,7 @@ impl<'a> BloomFilterIndexApplierBuilder<'a> { /// Helper function to get non-null literal value fn nonnull_lit(expr: &Expr) -> Option<&ScalarValue> { match expr { - Expr::Literal(lit) if !lit.is_null() => Some(lit), + Expr::Literal(lit, _) if !lit.is_null() => Some(lit), _ => None, } } @@ -312,8 +312,8 @@ impl<'a> BloomFilterIndexApplierBuilder<'a> { right: &'b Expr, ) -> Result> { let (col, lit) = match (left, right) { - (Expr::Column(col), Expr::Literal(lit)) => (col, lit), - (Expr::Literal(lit), Expr::Column(col)) => (col, lit), + (Expr::Column(col), Expr::Literal(lit, _)) => (col, lit), + (Expr::Literal(lit, _), Expr::Column(col)) => (col, lit), _ => return Ok(None), }; Ok(Some((col, lit))) @@ -335,7 +335,7 @@ fn encode_lit(lit: &ScalarValue, data_type: ConcreteDataType) -> Result { mod tests { use api::v1::SemanticType; use datafusion_common::Column; - use datafusion_expr::{col, lit}; + use datafusion_expr::{col, lit, Literal}; use datatypes::schema::ColumnSchema; use object_store::services::Memory; use store_api::metadata::{ColumnMetadata, RegionMetadata, RegionMetadataBuilder}; @@ -385,10 +385,6 @@ mod tests { Expr::Column(Column::from_name(name)) } - fn string_lit(s: impl Into) -> Expr { - Expr::Literal(ScalarValue::Utf8(Some(s.into()))) - } - #[test] fn test_build_with_exprs() { let (_d, factory) = PuffinManagerFactory::new_for_test_block("test_build_with_exprs_"); @@ -403,7 +399,7 @@ mod tests { let exprs = vec![Expr::BinaryExpr(BinaryExpr { left: Box::new(column("column1")), op: Operator::Eq, - right: Box::new(string_lit("value1")), + right: Box::new("value1".lit()), })]; let result = builder.build(&exprs).unwrap(); assert!(result.is_some()); @@ -423,7 +419,7 @@ mod tests { } fn int64_lit(i: i64) -> Expr { - Expr::Literal(ScalarValue::Int64(Some(i))) + i.lit() } #[test] @@ -495,7 +491,7 @@ mod tests { assert!(or_chain_predicates.contains(&encode_str("value4"))); // Test with null value - let expr = col("column1").eq(Expr::Literal(ScalarValue::Utf8(None))); + let expr = col("column1").eq(Expr::Literal(ScalarValue::Utf8(None), None)); let result = builder().build(&[expr]).unwrap(); assert!(result.is_none()); @@ -529,7 +525,7 @@ mod tests { left: Box::new(Expr::BinaryExpr(BinaryExpr { left: Box::new(column("column1")), op: Operator::Eq, - right: Box::new(string_lit("value1")), + right: Box::new("value1".lit()), })), op: Operator::And, right: Box::new(Expr::BinaryExpr(BinaryExpr { @@ -563,13 +559,13 @@ mod tests { Expr::BinaryExpr(BinaryExpr { left: Box::new(column("column1")), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Utf8(None))), + right: Box::new(Expr::Literal(ScalarValue::Utf8(None), None)), }), Expr::InList(InList { expr: Box::new(column("column2")), list: vec![ int64_lit(1), - Expr::Literal(ScalarValue::Int64(None)), + Expr::Literal(ScalarValue::Int64(None), None), int64_lit(3), ], negated: false, @@ -601,13 +597,13 @@ mod tests { Expr::BinaryExpr(BinaryExpr { left: Box::new(column("column1")), op: Operator::Gt, - right: Box::new(string_lit("value1")), + right: Box::new("value1".lit()), }), // Non-existent column Expr::BinaryExpr(BinaryExpr { left: Box::new(column("non_existent")), op: Operator::Eq, - right: Box::new(string_lit("value")), + right: Box::new("value".lit()), }), // Negated IN list Expr::InList(InList { @@ -636,11 +632,11 @@ mod tests { Expr::BinaryExpr(BinaryExpr { left: Box::new(column("column1")), op: Operator::Eq, - right: Box::new(string_lit("value1")), + right: Box::new("value1".lit()), }), Expr::InList(InList { expr: Box::new(column("column1")), - list: vec![string_lit("value2"), string_lit("value3")], + list: vec!["value2".lit(), "value3".lit()], negated: false, }), ]; diff --git a/src/mito2/src/sst/index/fulltext_index/applier/builder.rs b/src/mito2/src/sst/index/fulltext_index/applier/builder.rs index 505dda312b..296d9a0f77 100644 --- a/src/mito2/src/sst/index/fulltext_index/applier/builder.rs +++ b/src/mito2/src/sst/index/fulltext_index/applier/builder.rs @@ -207,7 +207,7 @@ impl<'a> FulltextIndexApplierBuilder<'a> { return None; } - let Expr::Literal(ScalarValue::Utf8(Some(query))) = &f.args[1] else { + let Expr::Literal(ScalarValue::Utf8(Some(query)), _) = &f.args[1] else { return None; }; @@ -248,7 +248,7 @@ impl<'a> FulltextIndexApplierBuilder<'a> { return None; } - let Expr::Literal(ScalarValue::Utf8(Some(term))) = &f.args[1] else { + let Expr::Literal(ScalarValue::Utf8(Some(term)), _) = &f.args[1] else { return None; }; @@ -290,7 +290,7 @@ mod tests { use datafusion::functions::string::lower; use datafusion_common::Column; use datafusion_expr::expr::ScalarFunction; - use datafusion_expr::ScalarUDF; + use datafusion_expr::{Literal, ScalarUDF}; use datatypes::schema::ColumnSchema; use store_api::metadata::{ColumnMetadata, RegionMetadataBuilder}; use store_api::storage::RegionId; @@ -337,10 +337,7 @@ mod tests { let metadata = mock_metadata(); let func = ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("text")), "foo".lit()], func: matches_func(), }; @@ -367,10 +364,7 @@ mod tests { let metadata = mock_metadata(); let func = ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("not_found")), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("not_found")), "foo".lit()], func: matches_func(), }; @@ -382,10 +376,7 @@ mod tests { let metadata = mock_metadata(); let func = ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("ts")), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("ts")), "foo".lit()], func: matches_func(), }; @@ -397,10 +388,7 @@ mod tests { let metadata = mock_metadata(); let func = ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Int64(Some(42))), - ], + args: vec![Expr::Column(Column::from_name("text")), 42.lit()], func: matches_func(), }; @@ -412,10 +400,7 @@ mod tests { let metadata = mock_metadata(); let func = ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("text")), "foo".lit()], func: matches_term_func(), }; @@ -441,10 +426,7 @@ mod tests { }; let func = ScalarFunction { - args: vec![ - Expr::ScalarFunction(lower_func_expr), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::ScalarFunction(lower_func_expr), "foo".lit()], func: matches_term_func(), }; @@ -477,10 +459,7 @@ mod tests { let metadata = mock_metadata(); let func = ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("text")), "foo".lit()], func: matches_func(), // Using 'matches' instead of 'matches_term' }; @@ -519,10 +498,7 @@ mod tests { // Create a matches expression let matches_expr = Expr::ScalarFunction(ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("text")), "foo".lit()], func: matches_func(), }); @@ -542,19 +518,13 @@ mod tests { // Create a matches expression let matches_expr = Expr::ScalarFunction(ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Utf8(Some("foo".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("text")), "foo".lit()], func: matches_func(), }); // Create a matches_term expression let matches_term_expr = Expr::ScalarFunction(ScalarFunction { - args: vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Utf8(Some("bar".to_string()))), - ], + args: vec![Expr::Column(Column::from_name("text")), "bar".lit()], func: matches_term_func(), }); diff --git a/src/mito2/src/sst/index/inverted_index/applier/builder.rs b/src/mito2/src/sst/index/inverted_index/applier/builder.rs index 7165e84522..c743ab9b01 100644 --- a/src/mito2/src/sst/index/inverted_index/applier/builder.rs +++ b/src/mito2/src/sst/index/inverted_index/applier/builder.rs @@ -220,7 +220,7 @@ impl<'a> InvertedIndexApplierBuilder<'a> { /// Helper function to get a non-null literal. fn nonnull_lit(expr: &Expr) -> Option<&ScalarValue> { match expr { - Expr::Literal(lit) if !lit.is_null() => Some(lit), + Expr::Literal(lit, _) if !lit.is_null() => Some(lit), _ => None, } } @@ -248,7 +248,7 @@ impl<'a> InvertedIndexApplierBuilder<'a> { mod tests { use api::v1::SemanticType; use datafusion_common::Column; - use datafusion_expr::Between; + use datafusion_expr::{Between, Literal}; use datatypes::data_type::ConcreteDataType; use datatypes::schema::ColumnSchema; use index::inverted_index::search::predicate::{ @@ -313,11 +313,11 @@ mod tests { } pub(crate) fn string_lit(s: impl Into) -> Expr { - Expr::Literal(ScalarValue::Utf8(Some(s.into()))) + s.into().lit() } pub(crate) fn int64_lit(i: impl Into) -> Expr { - Expr::Literal(ScalarValue::Int64(Some(i.into()))) + i.into().lit() } pub(crate) fn encoded_string(s: impl Into) -> Vec { diff --git a/src/mito2/src/sst/index/inverted_index/applier/builder/regex_match.rs b/src/mito2/src/sst/index/inverted_index/applier/builder/regex_match.rs index 35bf2739bd..71a2631eed 100644 --- a/src/mito2/src/sst/index/inverted_index/applier/builder/regex_match.rs +++ b/src/mito2/src/sst/index/inverted_index/applier/builder/regex_match.rs @@ -31,7 +31,7 @@ impl InvertedIndexApplierBuilder<'_> { if !data_type.is_string() { return Ok(()); } - let DfExpr::Literal(ScalarValue::Utf8(Some(pattern))) = pattern else { + let DfExpr::Literal(ScalarValue::Utf8(Some(pattern)), _) = pattern else { return Ok(()); }; diff --git a/src/mito2/src/sst/parquet.rs b/src/mito2/src/sst/parquet.rs index cd3a991757..1b2760944b 100644 --- a/src/mito2/src/sst/parquet.rs +++ b/src/mito2/src/sst/parquet.rs @@ -93,7 +93,7 @@ mod tests { use common_time::Timestamp; use datafusion_common::{Column, ScalarValue}; - use datafusion_expr::{col, lit, BinaryExpr, Expr, Operator}; + use datafusion_expr::{col, lit, BinaryExpr, Expr, Literal, Operator}; use datatypes::arrow; use datatypes::arrow::array::{RecordBatch, UInt64Array}; use datatypes::arrow::datatypes::{DataType, Field, Schema}; @@ -383,7 +383,7 @@ mod tests { let predicate = Some(Predicate::new(vec![Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("tag_0"))), op: Operator::Eq, - right: Box::new(Expr::Literal(ScalarValue::Utf8(Some("a".to_string())))), + right: Box::new("a".lit()), })])); let builder = ParquetReaderBuilder::new( @@ -485,7 +485,7 @@ mod tests { let predicate = Some(Predicate::new(vec![Expr::BinaryExpr(BinaryExpr { left: Box::new(Expr::Column(Column::from_name("field_0"))), op: Operator::GtEq, - right: Box::new(Expr::Literal(ScalarValue::UInt64(Some(150)))), + right: Box::new(150u64.lit()), })])); let builder = ParquetReaderBuilder::new( @@ -603,6 +603,7 @@ mod tests { let batches = &[ new_batch_by_range(&["a", "d"], 0, 1000), new_batch_by_range(&["b", "f"], 0, 1000), + new_batch_by_range(&["c", "g"], 0, 1000), new_batch_by_range(&["b", "h"], 100, 200), new_batch_by_range(&["b", "h"], 200, 300), new_batch_by_range(&["b", "h"], 300, 1000), diff --git a/src/mito2/src/sst/parquet/metadata.rs b/src/mito2/src/sst/parquet/metadata.rs index 26059c4d23..772e8012e1 100644 --- a/src/mito2/src/sst/parquet/metadata.rs +++ b/src/mito2/src/sst/parquet/metadata.rs @@ -95,13 +95,14 @@ impl<'a> MetadataLoader<'a> { let mut footer = [0; 8]; footer.copy_from_slice(&buffer[buffer_len - FOOTER_SIZE..]); - let metadata_len = ParquetMetaDataReader::decode_footer(&footer).map_err(|e| { + let footer_tail = ParquetMetaDataReader::decode_footer_tail(&footer).map_err(|e| { error::InvalidParquetSnafu { file: path, reason: format!("failed to decode footer, {e}"), } .build() - })? as u64; + })?; + let metadata_len = footer_tail.metadata_length() as u64; if file_size - (FOOTER_SIZE as u64) < metadata_len { return error::InvalidParquetSnafu { diff --git a/src/mito2/src/sst/parquet/row_group.rs b/src/mito2/src/sst/parquet/row_group.rs index c3978f430b..ff8f125915 100644 --- a/src/mito2/src/sst/parquet/row_group.rs +++ b/src/mito2/src/sst/parquet/row_group.rs @@ -103,7 +103,7 @@ impl<'a> RowGroupBase<'a> { selection .scan_ranges(&offset_index[idx].page_locations) .iter() - .map(|range| range.start as u64..range.end as u64), + .map(|range| range.start..range.end), ); page_start_offsets.push(ranges.iter().map(|range| range.start as usize).collect()); diff --git a/src/mito2/src/sst/parquet/stats.rs b/src/mito2/src/sst/parquet/stats.rs index bf0ad4a46a..e16d5de76c 100644 --- a/src/mito2/src/sst/parquet/stats.rs +++ b/src/mito2/src/sst/parquet/stats.rs @@ -18,7 +18,7 @@ use std::borrow::Borrow; use std::collections::HashSet; use std::sync::Arc; -use datafusion::physical_optimizer::pruning::PruningStatistics; +use datafusion_common::pruning::PruningStatistics; use datafusion_common::{Column, ScalarValue}; use datatypes::arrow::array::{ArrayRef, BooleanArray, UInt64Array}; use parquet::file::metadata::RowGroupMetaData; diff --git a/src/object-store/Cargo.toml b/src/object-store/Cargo.toml index 5ffaf07b1e..b141b043d5 100644 --- a/src/object-store/Cargo.toml +++ b/src/object-store/Cargo.toml @@ -21,7 +21,7 @@ humantime-serde.workspace = true lazy_static.workspace = true md5 = "0.7" moka = { workspace = true, features = ["future"] } -opendal = { version = "0.52", features = [ +opendal = { git = "https://github.com/apache/opendal", rev = "0ba8574b6d08d209056704d28a9a114beb3c1022", features = [ "layers-tracing", "layers-prometheus", "services-azblob", diff --git a/src/object-store/src/factory.rs b/src/object-store/src/factory.rs index 29b52c4951..22b3de263f 100644 --- a/src/object-store/src/factory.rs +++ b/src/object-store/src/factory.rs @@ -81,16 +81,17 @@ pub async fn new_azblob_object_store(azblob_config: &AzblobConfig) -> Result Result { @@ -100,7 +101,7 @@ pub async fn new_gcs_object_store(gcs_config: &GcsConfig) -> Result gcs_config.bucket, &root ); - let client = build_http_client(&gcs_config.http_client); + let client = build_http_client(&gcs_config.http_client)?; let builder = Gcs::default() .root(&root) @@ -108,12 +109,13 @@ pub async fn new_gcs_object_store(gcs_config: &GcsConfig) -> Result .scope(&gcs_config.scope) .credential_path(gcs_config.credential_path.expose_secret()) .credential(gcs_config.credential.expose_secret()) - .endpoint(&gcs_config.endpoint) - .http_client(client?); + .endpoint(&gcs_config.endpoint); - Ok(ObjectStore::new(builder) + let operator = ObjectStore::new(builder) .context(error::InitBackendSnafu)? - .finish()) + .finish(); + operator.update_http_client(|_| client); + Ok(operator) } pub async fn new_oss_object_store(oss_config: &OssConfig) -> Result { @@ -130,12 +132,13 @@ pub async fn new_oss_object_store(oss_config: &OssConfig) -> Result .bucket(&oss_config.bucket) .endpoint(&oss_config.endpoint) .access_key_id(oss_config.access_key_id.expose_secret()) - .access_key_secret(oss_config.access_key_secret.expose_secret()) - .http_client(client); + .access_key_secret(oss_config.access_key_secret.expose_secret()); - Ok(ObjectStore::new(builder) + let operator = ObjectStore::new(builder) .context(error::InitBackendSnafu)? - .finish()) + .finish(); + operator.update_http_client(|_| client); + Ok(operator) } pub async fn new_s3_object_store(s3_config: &S3Config) -> Result { @@ -152,8 +155,7 @@ pub async fn new_s3_object_store(s3_config: &S3Config) -> Result { .root(&root) .bucket(&s3_config.bucket) .access_key_id(s3_config.access_key_id.expose_secret()) - .secret_access_key(s3_config.secret_access_key.expose_secret()) - .http_client(client); + .secret_access_key(s3_config.secret_access_key.expose_secret()); if s3_config.endpoint.is_some() { builder = builder.endpoint(s3_config.endpoint.as_ref().unwrap()); @@ -165,7 +167,9 @@ pub async fn new_s3_object_store(s3_config: &S3Config) -> Result { builder = builder.enable_virtual_host_style(); } - Ok(ObjectStore::new(builder) + let operator = ObjectStore::new(builder) .context(error::InitBackendSnafu)? - .finish()) + .finish(); + operator.update_http_client(|_| client); + Ok(operator) } diff --git a/src/object-store/src/layers.rs b/src/object-store/src/layers.rs index 8ea7662bfb..7b111927e2 100644 --- a/src/object-store/src/layers.rs +++ b/src/object-store/src/layers.rs @@ -40,11 +40,7 @@ mod prometheus { // remove path label first, waiting for later fix // TODO(shuiyisong): add dynamic path label trim for opendal - let layer = PrometheusLayer::builder() - .path_label(0) - .register_default() - .unwrap(); - + let layer = PrometheusLayer::builder().register_default().unwrap(); Mutex::new(layer) }) .lock() diff --git a/src/object-store/src/util.rs b/src/object-store/src/util.rs index 6e8426a494..0e26a00022 100644 --- a/src/object-store/src/util.rs +++ b/src/object-store/src/util.rs @@ -16,7 +16,7 @@ use std::fmt::Display; use std::path; use std::time::Duration; -use common_telemetry::{debug, error, info, trace, warn}; +use common_telemetry::{debug, error, info, warn}; use opendal::layers::{LoggingInterceptor, LoggingLayer, RetryInterceptor, TracingLayer}; use opendal::raw::{AccessorInfo, HttpClient, Operation}; use opendal::{Error, ErrorKind}; @@ -183,24 +183,13 @@ impl LoggingInterceptor for DefaultLoggingInterceptor { }; } - // Print debug message if operation is oneshot, otherwise in trace. - if operation.is_oneshot() { - debug!( - target: LOGGING_TARGET, - "service={} name={} {}: {operation} {message}", - info.scheme(), - info.name(), - LoggingContext(context), - ); - } else { - trace!( - target: LOGGING_TARGET, - "service={} name={} {}: {operation} {message}", - info.scheme(), - info.name(), - LoggingContext(context), - ); - }; + debug!( + target: LOGGING_TARGET, + "service={} name={} {}: {operation} {message}", + info.scheme(), + info.name(), + LoggingContext(context), + ); } } diff --git a/src/operator/src/expr_helper.rs b/src/operator/src/expr_helper.rs index 8a5d44c0a0..c854f5a9ce 100644 --- a/src/operator/src/expr_helper.rs +++ b/src/operator/src/expr_helper.rs @@ -45,7 +45,7 @@ use query::sql::{ use session::context::QueryContextRef; use session::table_name::table_idents_to_full_name; use snafu::{ensure, OptionExt, ResultExt}; -use sql::ast::{ColumnOption, ObjectName}; +use sql::ast::{ColumnOption, ObjectName, ObjectNamePartExt}; use sql::statements::alter::{ AlterDatabase, AlterDatabaseOperation, AlterTable, AlterTableOperation, }; @@ -819,7 +819,7 @@ fn sanitize_flow_name(mut flow_name: ObjectName) -> Result { } ); // safety: we've checked flow_name.0 has exactly one element. - Ok(flow_name.0.swap_remove(0).value) + Ok(flow_name.0.swap_remove(0).to_string_unquoted()) } #[cfg(test)] diff --git a/src/operator/src/expr_helper/trigger.rs b/src/operator/src/expr_helper/trigger.rs index 37ed64d6ee..041f9018ee 100644 --- a/src/operator/src/expr_helper/trigger.rs +++ b/src/operator/src/expr_helper/trigger.rs @@ -5,7 +5,7 @@ use api::v1::{ }; use session::context::QueryContextRef; use snafu::ensure; -use sql::ast::ObjectName; +use sql::ast::{ObjectName, ObjectNamePartExt}; use sql::statements::create::trigger::{ChannelType, CreateTrigger}; use crate::error::Result; @@ -67,7 +67,7 @@ fn sanitize_trigger_name(mut trigger_name: ObjectName) -> Result { } ); // safety: we've checked trigger_name.0 has exactly one element. - Ok(trigger_name.0.swap_remove(0).value) + Ok(trigger_name.0.swap_remove(0).to_string_unquoted()) } #[cfg(test)] @@ -81,15 +81,15 @@ mod tests { #[test] fn test_sanitize_trigger_name() { - let name = ObjectName(vec![sql::ast::Ident::new("my_trigger")]); + let name = vec![sql::ast::Ident::new("my_trigger")].into(); let sanitized = sanitize_trigger_name(name).unwrap(); assert_eq!(sanitized, "my_trigger"); - let name = ObjectName(vec![sql::ast::Ident::with_quote('`', "my_trigger")]); + let name = vec![sql::ast::Ident::with_quote('`', "my_trigger")].into(); let sanitized = sanitize_trigger_name(name).unwrap(); assert_eq!(sanitized, "my_trigger"); - let name = ObjectName(vec![sql::ast::Ident::with_quote('\'', "trigger")]); + let name = vec![sql::ast::Ident::with_quote('\'', "trigger")].into(); let sanitized = sanitize_trigger_name(name).unwrap(); assert_eq!(sanitized, "trigger"); } diff --git a/src/operator/src/req_convert/insert/stmt_to_region.rs b/src/operator/src/req_convert/insert/stmt_to_region.rs index d11fee0605..d82fc56f49 100644 --- a/src/operator/src/req_convert/insert/stmt_to_region.rs +++ b/src/operator/src/req_convert/insert/stmt_to_region.rs @@ -22,6 +22,7 @@ use datatypes::schema::{ColumnSchema, SchemaRef}; use partition::manager::PartitionRuleManager; use session::context::{QueryContext, QueryContextRef}; use snafu::{ensure, OptionExt, ResultExt}; +use sql::ast::ObjectNamePartExt; use sql::statements::insert::Insert; use sqlparser::ast::{ObjectName, Value as SqlValue}; use table::metadata::TableInfoRef; @@ -172,17 +173,17 @@ impl<'a> StatementToRegion<'a> { [table] => Ok(( self.ctx.current_catalog().to_owned(), self.ctx.current_schema(), - table.value.clone(), + table.to_string_unquoted(), )), [schema, table] => Ok(( self.ctx.current_catalog().to_owned(), - schema.value.clone(), - table.value.clone(), + schema.to_string_unquoted(), + table.to_string_unquoted(), )), [catalog, schema, table] => Ok(( - catalog.value.clone(), - schema.value.clone(), - table.value.clone(), + catalog.to_string_unquoted(), + schema.to_string_unquoted(), + table.to_string_unquoted(), )), _ => InvalidSqlSnafu { err_msg: format!( diff --git a/src/operator/src/statement.rs b/src/operator/src/statement.rs index 4975d87154..8fb98daa80 100644 --- a/src/operator/src/statement.rs +++ b/src/operator/src/statement.rs @@ -55,6 +55,7 @@ use session::context::{Channel, QueryContextRef}; use session::table_name::table_idents_to_full_name; use set::{set_query_timeout, set_read_preference}; use snafu::{ensure, OptionExt, ResultExt}; +use sql::ast::ObjectNamePartExt; use sql::statements::copy::{ CopyDatabase, CopyDatabaseArgument, CopyQueryToArgument, CopyTable, CopyTableArgument, }; @@ -736,9 +737,9 @@ fn idents_to_full_database_name( match &obj_name.0[..] { [database] => Ok(( query_ctx.current_catalog().to_owned(), - database.value.clone(), + database.to_string_unquoted(), )), - [catalog, database] => Ok((catalog.value.clone(), database.value.clone())), + [catalog, database] => Ok((catalog.to_string_unquoted(), database.to_string_unquoted())), _ => InvalidSqlSnafu { err_msg: format!( "expect database name to be ., , found: {obj_name}", diff --git a/src/operator/src/statement/admin.rs b/src/operator/src/statement/admin.rs index a36538ff17..9890af6497 100644 --- a/src/operator/src/statement/admin.rs +++ b/src/operator/src/statement/admin.rs @@ -69,7 +69,7 @@ impl StatementExecutor { } .fail(); }; - Ok(value) + Ok(&value.value) }) .collect::>>()?; diff --git a/src/operator/src/statement/copy_table_from.rs b/src/operator/src/statement/copy_table_from.rs index 6ee85ada67..90529ded01 100644 --- a/src/operator/src/statement/copy_table_from.rs +++ b/src/operator/src/statement/copy_table_from.rs @@ -20,7 +20,6 @@ use std::sync::Arc; use client::{Output, OutputData, OutputMeta}; use common_base::readable_size::ReadableSize; use common_datasource::file_format::csv::CsvFormat; -use common_datasource::file_format::json::JsonFormat; use common_datasource::file_format::orc::{infer_orc_schema, new_orc_stream_reader, ReaderAdapter}; use common_datasource::file_format::{FileFormat, Format}; use common_datasource::lister::{Lister, Source}; @@ -33,12 +32,11 @@ use common_telemetry::{debug, tracing}; use datafusion::datasource::listing::PartitionedFile; use datafusion::datasource::object_store::ObjectStoreUrl; use datafusion::datasource::physical_plan::{ - CsvConfig, CsvOpener, FileOpener, FileScanConfig, FileStream, JsonOpener, + CsvSource, FileGroup, FileScanConfigBuilder, FileSource, FileStream, JsonSource, }; use datafusion::parquet::arrow::arrow_reader::ArrowReaderMetadata; use datafusion::parquet::arrow::ParquetRecordBatchStreamBuilder; use datafusion::physical_plan::metrics::ExecutionPlanMetricsSet; -use datafusion_common::{Constraints, Statistics}; use datafusion_expr::Expr; use datatypes::arrow::compute::can_cast_types; use datatypes::arrow::datatypes::{DataType as ArrowDataType, Schema, SchemaRef}; @@ -69,7 +67,6 @@ enum FileMetadata { }, Json { schema: SchemaRef, - format: JsonFormat, path: String, }, Csv { @@ -150,7 +147,6 @@ impl StatementExecutor { .await .context(error::InferSchemaSnafu { path: &path })?, ), - format, path, }), Format::Parquet(_) => { @@ -199,30 +195,29 @@ impl StatementExecutor { } } - async fn build_file_stream( + async fn build_file_stream( &self, - opener: F, + store: &ObjectStore, filename: &str, file_schema: SchemaRef, + file_source: Arc, + projection: Option>, ) -> Result { - let statistics = Statistics::new_unknown(file_schema.as_ref()); - let stream = FileStream::new( - &FileScanConfig { - object_store_url: ObjectStoreUrl::parse("empty://").unwrap(), // won't be used - file_schema, - file_groups: vec![vec![PartitionedFile::new(filename.to_string(), 10)]], - statistics, - projection: None, - limit: None, - table_partition_cols: vec![], - output_ordering: vec![], - constraints: Constraints::empty(), - }, - 0, - opener, - &ExecutionPlanMetricsSet::new(), + let config = FileScanConfigBuilder::new( + ObjectStoreUrl::local_filesystem(), + file_schema, + file_source.clone(), ) - .context(error::BuildFileStreamSnafu)?; + .with_file_group(FileGroup::new(vec![PartitionedFile::new(filename, 0)])) + .with_projection(projection) + .build(); + + let store = Arc::new(object_store_opendal::OpendalStore::new(store.clone())); + let file_opener = file_source + .with_projection(&config) + .create_file_opener(store, &config, 0); + let stream = FileStream::new(&config, 0, file_opener, &ExecutionPlanMetricsSet::new()) + .context(error::BuildFileStreamSnafu)?; Ok(Box::pin(stream)) } @@ -246,29 +241,18 @@ impl StatementExecutor { .project(&projection) .context(error::ProjectSchemaSnafu)?, ); - let csv_config = Arc::new(CsvConfig::new( - DEFAULT_BATCH_SIZE, - schema.clone(), - Some(projection.clone()), - format.has_header, - format.delimiter, - b'"', - None, - Arc::new(object_store_opendal::OpendalStore::new( - object_store.clone(), - )), - None, - )); - let projected_file_schema = Arc::new( - schema - .project(&projection) - .context(error::ProjectSchemaSnafu)?, - ); + + let csv_source = CsvSource::new(format.has_header, format.delimiter, b'"') + .with_schema(schema.clone()) + .with_batch_size(DEFAULT_BATCH_SIZE); + let stream = self .build_file_stream( - CsvOpener::new(csv_config, format.compression_type.into()), + object_store, path, - projected_file_schema, + schema.clone(), + csv_source, + Some(projection), ) .await?; @@ -280,32 +264,24 @@ impl StatementExecutor { .context(error::PhysicalExprSnafu)?, )) } - FileMetadata::Json { - format, - path, - schema, - } => { - let projected_file_schema = Arc::new( - schema - .project(&projection) - .context(error::ProjectSchemaSnafu)?, - ); + FileMetadata::Json { path, schema } => { let output_schema = Arc::new( compat_schema .project(&projection) .context(error::ProjectSchemaSnafu)?, ); - let store = object_store_opendal::OpendalStore::new(object_store.clone()); + + let json_source = JsonSource::new() + .with_schema(schema.clone()) + .with_batch_size(DEFAULT_BATCH_SIZE); + let stream = self .build_file_stream( - JsonOpener::new( - DEFAULT_BATCH_SIZE, - projected_file_schema.clone(), - format.compression_type.into(), - Arc::new(store), - ), + object_store, path, - projected_file_schema, + schema.clone(), + json_source, + Some(projection), ) .await?; diff --git a/src/operator/src/statement/ddl.rs b/src/operator/src/statement/ddl.rs index 83b3878e60..76e066aae4 100644 --- a/src/operator/src/statement/ddl.rs +++ b/src/operator/src/statement/ddl.rs @@ -1817,27 +1817,27 @@ fn convert_one_expr( // col, val (Expr::Identifier(ident), Expr::Value(value)) => { let (column_name, data_type) = convert_identifier(ident, column_name_and_type)?; - let value = convert_value(value, data_type, timezone, None)?; + let value = convert_value(&value.value, data_type, timezone, None)?; (Operand::Column(column_name), op, Operand::Value(value)) } (Expr::Identifier(ident), Expr::UnaryOp { op: unary_op, expr }) if let Expr::Value(v) = &**expr => { let (column_name, data_type) = convert_identifier(ident, column_name_and_type)?; - let value = convert_value(v, data_type, timezone, Some(*unary_op))?; + let value = convert_value(&v.value, data_type, timezone, Some(*unary_op))?; (Operand::Column(column_name), op, Operand::Value(value)) } // val, col (Expr::Value(value), Expr::Identifier(ident)) => { let (column_name, data_type) = convert_identifier(ident, column_name_and_type)?; - let value = convert_value(value, data_type, timezone, None)?; + let value = convert_value(&value.value, data_type, timezone, None)?; (Operand::Value(value), op, Operand::Column(column_name)) } (Expr::UnaryOp { op: unary_op, expr }, Expr::Identifier(ident)) if let Expr::Value(v) = &**expr => { let (column_name, data_type) = convert_identifier(ident, column_name_and_type)?; - let value = convert_value(v, data_type, timezone, Some(*unary_op))?; + let value = convert_value(&v.value, data_type, timezone, Some(*unary_op))?; (Operand::Value(value), op, Operand::Column(column_name)) } (Expr::BinaryOp { .. }, Expr::BinaryOp { .. }) => { diff --git a/src/operator/src/statement/set.rs b/src/operator/src/statement/set.rs index ea1bed1787..0f7492b6ea 100644 --- a/src/operator/src/statement/set.rs +++ b/src/operator/src/statement/set.rs @@ -25,6 +25,7 @@ use session::ReadPreference; use snafu::{ensure, OptionExt, ResultExt}; use sql::ast::{Expr, Ident, Value}; use sql::statements::set_variables::SetVariables; +use sqlparser::ast::ValueWithSpan; use crate::error::{InvalidConfigValueSnafu, InvalidSqlSnafu, NotSupportedSnafu, Result}; @@ -43,8 +44,14 @@ pub fn set_read_preference(exprs: Vec, ctx: QueryContextRef) -> Result<()> })?; match read_preference_expr { - Expr::Value(Value::SingleQuotedString(expr)) - | Expr::Value(Value::DoubleQuotedString(expr)) => { + Expr::Value(ValueWithSpan { + value: Value::SingleQuotedString(expr), + .. + }) + | Expr::Value(ValueWithSpan { + value: Value::DoubleQuotedString(expr), + .. + }) => { match ReadPreference::from_str(expr.as_str().to_lowercase().as_str()) { Ok(read_preference) => ctx.set_read_preference(read_preference), Err(_) => { @@ -74,7 +81,14 @@ pub fn set_timezone(exprs: Vec, ctx: QueryContextRef) -> Result<()> { feat: "No timezone find in set variable statement", })?; match tz_expr { - Expr::Value(Value::SingleQuotedString(tz)) | Expr::Value(Value::DoubleQuotedString(tz)) => { + Expr::Value(ValueWithSpan { + value: Value::SingleQuotedString(tz), + .. + }) + | Expr::Value(ValueWithSpan { + value: Value::DoubleQuotedString(tz), + .. + }) => { match Timezone::from_tz_string(tz.as_str()) { Ok(timezone) => ctx.set_timezone(timezone), Err(_) => { @@ -110,7 +124,7 @@ pub fn set_bytea_output(exprs: Vec, ctx: QueryContextRef) -> Result<()> { .fail(); }; ctx.configuration_parameter().set_postgres_bytea_output( - PGByteaOutputValue::try_from(value.clone()).context(InvalidConfigValueSnafu)?, + PGByteaOutputValue::try_from(value.value.clone()).context(InvalidConfigValueSnafu)?, ); Ok(()) } @@ -120,8 +134,14 @@ pub fn set_search_path(exprs: Vec, ctx: QueryContextRef) -> Result<()> { feat: "No search path find in set variable statement", })?; match search_expr { - Expr::Value(Value::SingleQuotedString(search_path)) - | Expr::Value(Value::DoubleQuotedString(search_path)) => { + Expr::Value(ValueWithSpan { + value: Value::SingleQuotedString(search_path), + .. + }) + | Expr::Value(ValueWithSpan { + value: Value::DoubleQuotedString(search_path), + .. + }) => { ctx.set_current_schema(search_path); Ok(()) } @@ -147,7 +167,10 @@ pub fn validate_client_encoding(set: SetVariables) -> Result<()> { .fail(); }; let encoding = match encoding { - Expr::Value(Value::SingleQuotedString(x)) + Expr::Value(ValueWithSpan { + value: Value::SingleQuotedString(x), + .. + }) | Expr::Identifier(Ident { value: x, quote_style: _, @@ -210,19 +233,20 @@ fn try_parse_datestyle(expr: &Expr) -> Result<(Option, Option

{ - s.split(',') - .map(|s| s.trim()) - .try_fold((None, None), |(style, order), s| match try_parse_str(s)? { - ParsedDateStyle::Order(o) => { - Ok((style, merge_datestyle_value(order, Some(o))?)) - } - ParsedDateStyle::Style(s) => { - Ok((merge_datestyle_value(style, Some(s))?, order)) - } - }) - } + | Expr::Value(ValueWithSpan { + value: Value::SingleQuotedString(s), + .. + }) + | Expr::Value(ValueWithSpan { + value: Value::DoubleQuotedString(s), + .. + }) => s + .split(',') + .map(|s| s.trim()) + .try_fold((None, None), |(style, order), s| match try_parse_str(s)? { + ParsedDateStyle::Order(o) => Ok((style, merge_datestyle_value(order, Some(o))?)), + ParsedDateStyle::Style(s) => Ok((merge_datestyle_value(style, Some(s))?, order)), + }), _ => NotSupportedSnafu { feat: "Not supported expression for datestyle", } @@ -237,7 +261,10 @@ pub fn set_allow_query_fallback(exprs: Vec, ctx: QueryContextRef) -> Resul feat: "No allow query fallback value find in set variable statement", })?; match allow_fallback_expr { - Expr::Value(Value::Boolean(allow)) => { + Expr::Value(ValueWithSpan { + value: Value::Boolean(allow), + span: _, + }) => { ctx.configuration_parameter() .set_allow_query_fallback(*allow); Ok(()) @@ -279,7 +306,10 @@ pub fn set_query_timeout(exprs: Vec, ctx: QueryContextRef) -> Result<()> { feat: "No timeout value find in set query timeout statement", })?; match timeout_expr { - Expr::Value(Value::Number(timeout, _)) => { + Expr::Value(ValueWithSpan { + value: Value::Number(timeout, _), + .. + }) => { match timeout.parse::() { Ok(timeout) => ctx.set_query_timeout(Duration::from_millis(timeout)), Err(_) => { @@ -292,8 +322,14 @@ pub fn set_query_timeout(exprs: Vec, ctx: QueryContextRef) -> Result<()> { Ok(()) } // postgres support time units i.e. SET STATEMENT_TIMEOUT = '50ms'; - Expr::Value(Value::SingleQuotedString(timeout)) - | Expr::Value(Value::DoubleQuotedString(timeout)) => { + Expr::Value(ValueWithSpan { + value: Value::SingleQuotedString(timeout), + .. + }) + | Expr::Value(ValueWithSpan { + value: Value::DoubleQuotedString(timeout), + .. + }) => { if ctx.channel() != Postgres { return NotSupportedSnafu { feat: format!("Invalid timeout expr {} in set variable statement", timeout), diff --git a/src/operator/src/statement/show.rs b/src/operator/src/statement/show.rs index 2f4d09c811..9cf2f7ff04 100644 --- a/src/operator/src/statement/show.rs +++ b/src/operator/src/statement/show.rs @@ -20,6 +20,7 @@ use partition::manager::PartitionInfo; use session::context::QueryContextRef; use session::table_name::table_idents_to_full_name; use snafu::{OptionExt, ResultExt}; +use sql::ast::ObjectNamePartExt; use sql::statements::create::Partitions; use sql::statements::show::{ ShowColumns, ShowCreateFlow, ShowCreateView, ShowDatabases, ShowFlows, ShowIndex, ShowKind, @@ -245,8 +246,8 @@ impl StatementExecutor { ) -> Result { let obj_name = &show.flow_name; let (catalog_name, flow_name) = match &obj_name.0[..] { - [table] => (query_ctx.current_catalog().to_string(), table.value.clone()), - [catalog, table] => (catalog.value.clone(), table.value.clone()), + [table] => (query_ctx.current_catalog().to_string(), table.to_string_unquoted()), + [catalog, table] => (catalog.to_string_unquoted(), table.to_string_unquoted()), _ => { return InvalidSqlSnafu { err_msg: format!( diff --git a/src/partition/src/expr.rs b/src/partition/src/expr.rs index a86e9d843c..460c789008 100644 --- a/src/partition/src/expr.rs +++ b/src/partition/src/expr.rs @@ -218,13 +218,13 @@ impl PartitionExpr { // Otherwise it will be rejected by the parser. let lhs = match &*self.lhs { Operand::Column(c) => ParserExpr::Identifier(Ident::new(c.clone())), - Operand::Value(v) => ParserExpr::Value(value_to_sql_value(v).unwrap()), + Operand::Value(v) => ParserExpr::Value(value_to_sql_value(v).unwrap().into()), Operand::Expr(e) => e.to_parser_expr(), }; let rhs = match &*self.rhs { Operand::Column(c) => ParserExpr::Identifier(Ident::new(c.clone())), - Operand::Value(v) => ParserExpr::Value(value_to_sql_value(v).unwrap()), + Operand::Value(v) => ParserExpr::Value(value_to_sql_value(v).unwrap().into()), Operand::Expr(e) => e.to_parser_expr(), }; diff --git a/src/pipeline/src/manager/table.rs b/src/pipeline/src/manager/table.rs index 4ca656a008..28b8d23bd7 100644 --- a/src/pipeline/src/manager/table.rs +++ b/src/pipeline/src/manager/table.rs @@ -23,8 +23,10 @@ use common_query::OutputData; use common_recordbatch::util as record_util; use common_telemetry::{debug, info}; use common_time::timestamp::{TimeUnit, Timestamp}; -use datafusion_common::{TableReference, ToDFSchema}; -use datafusion_expr::{col, DmlStatement, LogicalPlan}; +use datafusion::datasource::DefaultTableSource; +use datafusion::logical_expr::col; +use datafusion_common::TableReference; +use datafusion_expr::{DmlStatement, LogicalPlan}; use datatypes::prelude::ScalarVector; use datatypes::timestamp::TimestampNanosecond; use datatypes::vectors::{StringVector, TimestampNanosecondVector, Vector}; @@ -36,6 +38,7 @@ use query::QueryEngineRef; use session::context::{QueryContextBuilder, QueryContextRef}; use snafu::{ensure, OptionExt, ResultExt}; use table::metadata::TableInfo; +use table::table::adapter::DfTableProviderAdapter; use table::TableRef; use crate::error::{ @@ -424,20 +427,13 @@ impl PipelineTable { table_info.name.clone(), ); - let df_schema = Arc::new( - table_info - .meta - .schema - .arrow_schema() - .clone() - .to_dfschema() - .context(BuildDfLogicalPlanSnafu)?, - ); + let table_provider = Arc::new(DfTableProviderAdapter::new(self.table.clone())); + let table_source = Arc::new(DefaultTableSource::new(table_provider)); // create dml stmt let stmt = DmlStatement::new( table_name, - df_schema, + table_source, datafusion_expr::WriteOp::Delete, Arc::new(dataframe.into_parts().1), ); diff --git a/src/promql/src/extension_plan/absent.rs b/src/promql/src/extension_plan/absent.rs index ff051d244a..904da75aa0 100644 --- a/src/promql/src/extension_plan/absent.rs +++ b/src/promql/src/extension_plan/absent.rs @@ -23,7 +23,9 @@ use datafusion::arrow::array::Array; use datafusion::common::{DFSchemaRef, Result as DataFusionResult}; use datafusion::execution::context::TaskContext; use datafusion::logical_expr::{Expr, LogicalPlan, UserDefinedLogicalNodeCore}; -use datafusion::physical_expr::{EquivalenceProperties, LexRequirement, PhysicalSortRequirement}; +use datafusion::physical_expr::{ + EquivalenceProperties, LexRequirement, OrderingRequirements, PhysicalSortRequirement, +}; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; use datafusion::physical_plan::expressions::Column as ColumnExpr; use datafusion::physical_plan::metrics::{BaselineMetrics, ExecutionPlanMetricsSet, MetricsSet}; @@ -278,8 +280,8 @@ impl ExecutionPlan for AbsentExec { vec![Distribution::SinglePartition] } - fn required_input_ordering(&self) -> Vec> { - vec![Some(LexRequirement::new(vec![PhysicalSortRequirement { + fn required_input_ordering(&self) -> Vec> { + let requirement = LexRequirement::from([PhysicalSortRequirement { expr: Arc::new( ColumnExpr::new_with_schema(&self.time_index_column, &self.input.schema()).unwrap(), ), @@ -287,7 +289,8 @@ impl ExecutionPlan for AbsentExec { descending: false, nulls_first: false, }), - }]))] + }]); + vec![Some(OrderingRequirements::new(requirement))] } fn maintains_input_order(&self) -> Vec { @@ -358,7 +361,9 @@ impl ExecutionPlan for AbsentExec { impl DisplayAs for AbsentExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!( f, "PromAbsentExec: start={}, end={}, step={}", @@ -509,7 +514,8 @@ mod tests { use datafusion::arrow::datatypes::{DataType, Field, Schema, TimeUnit}; use datafusion::arrow::record_batch::RecordBatch; - use datafusion::physical_plan::memory::MemoryExec; + use datafusion::catalog::memory::DataSourceExec; + use datafusion::datasource::memory::MemorySourceConfig; use datafusion::prelude::SessionContext; use datatypes::arrow::array::{Float64Array, TimestampMillisecondArray}; @@ -532,7 +538,9 @@ mod tests { let batch = RecordBatch::try_new(schema.clone(), vec![timestamp_array, value_array]).unwrap(); - let memory_exec = MemoryExec::try_new(&[vec![batch]], schema, None).unwrap(); + let memory_exec = DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![batch]], schema, None).unwrap(), + )); let output_schema = Arc::new(Schema::new(vec![ Field::new( @@ -599,7 +607,9 @@ mod tests { ])); // Empty input - let memory_exec = MemoryExec::try_new(&[vec![]], schema, None).unwrap(); + let memory_exec = DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![]], schema, None).unwrap(), + )); let output_schema = Arc::new(Schema::new(vec![ Field::new( diff --git a/src/promql/src/extension_plan/empty_metric.rs b/src/promql/src/extension_plan/empty_metric.rs index fa0a4e3f9a..48864ae32d 100644 --- a/src/promql/src/extension_plan/empty_metric.rs +++ b/src/promql/src/extension_plan/empty_metric.rs @@ -26,6 +26,7 @@ use datafusion::common::stats::Precision; use datafusion::common::{ DFSchema, DFSchemaRef, Result as DataFusionResult, Statistics, TableReference, }; +use datafusion::datasource::{provider_as_source, MemTable}; use datafusion::error::DataFusionError; use datafusion::execution::context::{SessionState, TaskContext}; use datafusion::logical_expr::{ExprSchemable, LogicalPlan, UserDefinedLogicalNodeCore}; @@ -38,6 +39,7 @@ use datafusion::physical_plan::{ }; use datafusion::physical_planner::PhysicalPlanner; use datafusion::prelude::{col, lit, Expr}; +use datafusion_expr::LogicalPlanBuilder; use datatypes::arrow::array::TimestampMillisecondArray; use datatypes::arrow::datatypes::SchemaRef; use datatypes::arrow::record_batch::RecordBatch; @@ -60,6 +62,12 @@ pub struct EmptyMetric { time_index_schema: DFSchemaRef, /// Schema of the output record batch result_schema: DFSchemaRef, + // This dummy input's sole purpose is to provide a schema for use in DataFusion's + // `SimplifyExpressions`. Otherwise it may report a "no field name ..." error. + // The error is caused by an optimization that tries to rewrite "A = A", during + // which will find the field in plan's schema. However, the schema is empty if the + // plan does not have an input. + dummy_input: LogicalPlan, } impl EmptyMetric { @@ -83,6 +91,11 @@ impl EmptyMetric { } let schema = Arc::new(DFSchema::new_with_metadata(fields, HashMap::new())?); + let table = MemTable::try_new(Arc::new(schema.as_arrow().clone()), vec![vec![]])?; + let source = provider_as_source(Arc::new(table)); + let dummy_input = + LogicalPlanBuilder::scan("dummy", source, None).and_then(|x| x.build())?; + Ok(Self { start, end, @@ -90,6 +103,7 @@ impl EmptyMetric { time_index_schema: Arc::new(ts_only_schema), result_schema: schema, expr: field_expr, + dummy_input, }) } @@ -135,7 +149,7 @@ impl UserDefinedLogicalNodeCore for EmptyMetric { } fn inputs(&self) -> Vec<&LogicalPlan> { - vec![] + vec![&self.dummy_input] } fn schema(&self) -> &DFSchemaRef { @@ -170,6 +184,7 @@ impl UserDefinedLogicalNodeCore for EmptyMetric { expr: exprs.into_iter().next(), time_index_schema: self.time_index_schema.clone(), result_schema: self.result_schema.clone(), + dummy_input: self.dummy_input.clone(), }) } } @@ -258,7 +273,11 @@ impl ExecutionPlan for EmptyMetricExec { Some(self.metric.clone_inner()) } - fn statistics(&self) -> DataFusionResult { + fn partition_statistics(&self, partition: Option) -> DataFusionResult { + if partition.is_some() { + return Ok(Statistics::new_unknown(self.schema().as_ref())); + } + let estimated_row_num = if self.end > self.start { (self.end - self.start) as f64 / self.interval as f64 } else { @@ -281,7 +300,9 @@ impl ExecutionPlan for EmptyMetricExec { impl DisplayAs for EmptyMetricExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => write!( + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => write!( f, "EmptyMetric: range=[{}..{}], interval=[{}]", self.start, self.end, self.interval, @@ -328,7 +349,7 @@ impl Stream for EmptyMetricStream { let num_rows = time_array.len(); let input_record_batch = RecordBatch::try_new(self.time_index_schema.clone(), vec![time_array.clone()]) - .map_err(|e| DataFusionError::ArrowError(e, None))?; + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; let mut result_arrays: Vec = vec![time_array]; // evaluate the field expr and get the result @@ -342,7 +363,7 @@ impl Stream for EmptyMetricStream { // assemble the output record batch let batch = RecordBatch::try_new(self.result_schema.clone(), result_arrays) - .map_err(|e| DataFusionError::ArrowError(e, None)); + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None)); Poll::Ready(Some(batch)) } else { diff --git a/src/promql/src/extension_plan/histogram_fold.rs b/src/promql/src/extension_plan/histogram_fold.rs index 905e2482a7..4f89c32a4b 100644 --- a/src/promql/src/extension_plan/histogram_fold.rs +++ b/src/promql/src/extension_plan/histogram_fold.rs @@ -29,7 +29,9 @@ use datafusion::common::{ColumnStatistics, DFSchema, DFSchemaRef, Statistics}; use datafusion::error::{DataFusionError, Result as DataFusionResult}; use datafusion::execution::TaskContext; use datafusion::logical_expr::{LogicalPlan, UserDefinedLogicalNodeCore}; -use datafusion::physical_expr::{EquivalenceProperties, LexRequirement, PhysicalSortRequirement}; +use datafusion::physical_expr::{ + EquivalenceProperties, LexRequirement, OrderingRequirements, PhysicalSortRequirement, +}; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; use datafusion::physical_plan::expressions::{CastExpr as PhyCast, Column as PhyColumn}; use datafusion::physical_plan::metrics::{BaselineMetrics, ExecutionPlanMetricsSet, MetricsSet}; @@ -150,10 +152,10 @@ impl HistogramFold { let check_column = |col| { if !input_schema.has_column_with_unqualified_name(col) { Err(DataFusionError::SchemaError( - datafusion::common::SchemaError::FieldNotFound { + Box::new(datafusion::common::SchemaError::FieldNotFound { field: Box::new(Column::new(None::, col)), valid_fields: input_schema.columns(), - }, + }), Box::new(None), )) } else { @@ -266,7 +268,7 @@ impl ExecutionPlan for HistogramFoldExec { &self.properties } - fn required_input_ordering(&self) -> Vec> { + fn required_input_ordering(&self) -> Vec> { let mut cols = self .tag_col_exprs() .into_iter() @@ -299,7 +301,10 @@ impl ExecutionPlan for HistogramFoldExec { }), }); - vec![Some(LexRequirement::new(cols))] + // Safety: `cols` is not empty + let requirement = LexRequirement::new(cols).unwrap(); + + vec![Some(OrderingRequirements::Hard(vec![requirement]))] } fn required_input_distribution(&self) -> Vec { @@ -370,7 +375,7 @@ impl ExecutionPlan for HistogramFoldExec { Some(self.metric.clone_inner()) } - fn statistics(&self) -> DataFusionResult { + fn partition_statistics(&self, _: Option) -> DataFusionResult { Ok(Statistics { num_rows: Precision::Absent, total_byte_size: Precision::Absent, @@ -414,7 +419,9 @@ impl HistogramFoldExec { impl DisplayAs for HistogramFoldExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!( f, "HistogramFoldExec: le=@{}, field=@{}, quantile={}", @@ -629,7 +636,7 @@ impl HistogramFoldStream { self.output_buffered_rows = 0; RecordBatch::try_new(self.output_schema.clone(), columns) .map(Some) - .map_err(|e| DataFusionError::ArrowError(e, None)) + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None)) } /// Find the first `+Inf` which indicates the end of the bucket group @@ -729,13 +736,14 @@ mod test { use datafusion::arrow::array::Float64Array; use datafusion::arrow::datatypes::{Field, Schema}; use datafusion::common::ToDFSchema; - use datafusion::physical_plan::memory::MemoryExec; + use datafusion::datasource::memory::MemorySourceConfig; + use datafusion::datasource::source::DataSourceExec; use datafusion::prelude::SessionContext; use datatypes::arrow_array::StringArray; use super::*; - fn prepare_test_data() -> MemoryExec { + fn prepare_test_data() -> DataSourceExec { let schema = Arc::new(Schema::new(vec![ Field::new("host", DataType::Utf8, true), Field::new("le", DataType::Utf8, true), @@ -788,7 +796,9 @@ mod test { ) .unwrap(); - MemoryExec::try_new(&[vec![data_1, data_2, data_3]], schema, None).unwrap() + DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![data_1, data_2, data_3]], schema, None).unwrap(), + )) } #[tokio::test] diff --git a/src/promql/src/extension_plan/instant_manipulate.rs b/src/promql/src/extension_plan/instant_manipulate.rs index f06af7d629..40d5520cac 100644 --- a/src/promql/src/extension_plan/instant_manipulate.rs +++ b/src/promql/src/extension_plan/instant_manipulate.rs @@ -283,8 +283,8 @@ impl ExecutionPlan for InstantManipulateExec { Some(self.metric.clone_inner()) } - fn statistics(&self) -> DataFusionResult { - let input_stats = self.input.statistics()?; + fn partition_statistics(&self, partition: Option) -> DataFusionResult { + let input_stats = self.input.partition_statistics(partition)?; let estimated_row_num = (self.end - self.start) as f64 / self.interval as f64; let estimated_total_bytes = input_stats @@ -315,7 +315,9 @@ impl ExecutionPlan for InstantManipulateExec { impl DisplayAs for InstantManipulateExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!( f, "PromInstantManipulateExec: range=[{}..{}], lookback=[{}], interval=[{}], time index=[{}]", @@ -500,7 +502,7 @@ impl InstantManipulateStream { arrays[self.time_index] = Arc::new(TimestampMillisecondArray::from(aligned_ts)); let result = RecordBatch::try_new(record_batch.schema(), arrays) - .map_err(|e| DataFusionError::ArrowError(e, None))?; + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; Ok(result) } } diff --git a/src/promql/src/extension_plan/normalize.rs b/src/promql/src/extension_plan/normalize.rs index 78f809491c..89ade7cccb 100644 --- a/src/promql/src/extension_plan/normalize.rs +++ b/src/promql/src/extension_plan/normalize.rs @@ -254,8 +254,8 @@ impl ExecutionPlan for SeriesNormalizeExec { Some(self.metric.clone_inner()) } - fn statistics(&self) -> DataFusionResult { - self.input.statistics() + fn partition_statistics(&self, partition: Option) -> DataFusionResult { + self.input.partition_statistics(partition) } fn name(&self) -> &str { @@ -266,7 +266,9 @@ impl ExecutionPlan for SeriesNormalizeExec { impl DisplayAs for SeriesNormalizeExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!( f, "PromSeriesNormalizeExec: offset=[{}], time index=[{}], filter NaN: [{}]", @@ -332,7 +334,7 @@ impl SeriesNormalizeStream { } let result = compute::filter_record_batch(&result_batch, &BooleanArray::from(filter)) - .map_err(|e| DataFusionError::ArrowError(e, None))?; + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; Ok(result) } } @@ -371,7 +373,8 @@ mod test { use datafusion::arrow::datatypes::{ ArrowPrimitiveType, DataType, Field, Schema, TimestampMillisecondType, }; - use datafusion::physical_plan::memory::MemoryExec; + use datafusion::datasource::memory::MemorySourceConfig; + use datafusion::datasource::source::DataSourceExec; use datafusion::prelude::SessionContext; use datatypes::arrow::array::TimestampMillisecondArray; use datatypes::arrow_array::StringArray; @@ -380,7 +383,7 @@ mod test { const TIME_INDEX_COLUMN: &str = "timestamp"; - fn prepare_test_data() -> MemoryExec { + fn prepare_test_data() -> DataSourceExec { let schema = Arc::new(Schema::new(vec![ Field::new(TIME_INDEX_COLUMN, TimestampMillisecondType::DATA_TYPE, true), Field::new("value", DataType::Float64, true), @@ -397,7 +400,9 @@ mod test { ) .unwrap(); - MemoryExec::try_new(&[vec![data]], schema, None).unwrap() + DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![data]], schema, None).unwrap(), + )) } #[tokio::test] diff --git a/src/promql/src/extension_plan/range_manipulate.rs b/src/promql/src/extension_plan/range_manipulate.rs index 6e1e41e65e..cffe9a17e7 100644 --- a/src/promql/src/extension_plan/range_manipulate.rs +++ b/src/promql/src/extension_plan/range_manipulate.rs @@ -430,8 +430,8 @@ impl ExecutionPlan for RangeManipulateExec { Some(self.metric.clone_inner()) } - fn statistics(&self) -> DataFusionResult { - let input_stats = self.input.statistics()?; + fn partition_statistics(&self, partition: Option) -> DataFusionResult { + let input_stats = self.input.partition_statistics(partition)?; let estimated_row_num = (self.end - self.start) as f64 / self.interval as f64; let estimated_total_bytes = input_stats @@ -459,7 +459,9 @@ impl ExecutionPlan for RangeManipulateExec { impl DisplayAs for RangeManipulateExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!( f, "PromRangeManipulateExec: req range=[{}..{}], interval=[{}], eval range=[{}], time index=[{}]", @@ -569,7 +571,7 @@ impl RangeManipulateStream { RecordBatch::try_new(self.output_schema.clone(), new_columns) .map(Some) - .map_err(|e| DataFusionError::ArrowError(e, None)) + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None)) } fn build_aligned_ts_array(start: i64, end: i64, interval: i64) -> ArrayRef { @@ -665,9 +667,10 @@ mod test { ArrowPrimitiveType, DataType, Field, Int64Type, Schema, TimestampMillisecondType, }; use datafusion::common::ToDFSchema; + use datafusion::datasource::memory::MemorySourceConfig; + use datafusion::datasource::source::DataSourceExec; use datafusion::physical_expr::Partitioning; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; - use datafusion::physical_plan::memory::MemoryExec; use datafusion::prelude::SessionContext; use datatypes::arrow::array::TimestampMillisecondArray; @@ -675,7 +678,7 @@ mod test { const TIME_INDEX_COLUMN: &str = "timestamp"; - fn prepare_test_data() -> MemoryExec { + fn prepare_test_data() -> DataSourceExec { let schema = Arc::new(Schema::new(vec![ Field::new(TIME_INDEX_COLUMN, TimestampMillisecondType::DATA_TYPE, true), Field::new("value_1", DataType::Float64, true), @@ -700,7 +703,9 @@ mod test { ) .unwrap(); - MemoryExec::try_new(&[vec![data]], schema, None).unwrap() + DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![data]], schema, None).unwrap(), + )) } async fn do_normalize_test( diff --git a/src/promql/src/extension_plan/scalar_calculate.rs b/src/promql/src/extension_plan/scalar_calculate.rs index 86363cc154..d4a5420827 100644 --- a/src/promql/src/extension_plan/scalar_calculate.rs +++ b/src/promql/src/extension_plan/scalar_calculate.rs @@ -123,10 +123,10 @@ impl ScalarCalculate { let input_schema = exec_input.schema(); let ts_index = input_schema .index_of(&self.time_index) - .map_err(|e| DataFusionError::ArrowError(e, None))?; + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; let val_index = input_schema .index_of(&self.field_column) - .map_err(|e| DataFusionError::ArrowError(e, None))?; + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; let schema = Arc::new(Schema::new(fields)); let properties = exec_input.properties(); let properties = PlanProperties::new( @@ -366,8 +366,8 @@ impl ExecutionPlan for ScalarCalculateExec { Some(self.metric.clone_inner()) } - fn statistics(&self) -> DataFusionResult { - let input_stats = self.input.statistics()?; + fn partition_statistics(&self, partition: Option) -> DataFusionResult { + let input_stats = self.input.partition_statistics(partition)?; let estimated_row_num = (self.end - self.start) as f64 / self.interval as f64; let estimated_total_bytes = input_stats @@ -395,7 +395,9 @@ impl ExecutionPlan for ScalarCalculateExec { impl DisplayAs for ScalarCalculateExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!(f, "ScalarCalculateExec: tags={:?}", self.tag_columns) } } @@ -535,22 +537,25 @@ impl Stream for ScalarCalculateStream { #[cfg(test)] mod test { use datafusion::arrow::datatypes::{DataType, Field, Schema}; + use datafusion::datasource::memory::MemorySourceConfig; + use datafusion::datasource::source::DataSourceExec; use datafusion::physical_plan::execution_plan::{Boundedness, EmissionType}; - use datafusion::physical_plan::memory::MemoryExec; use datafusion::prelude::SessionContext; use datatypes::arrow::array::{Float64Array, TimestampMillisecondArray}; use datatypes::arrow::datatypes::TimeUnit; use super::*; - fn prepare_test_data(series: Vec) -> MemoryExec { + fn prepare_test_data(series: Vec) -> DataSourceExec { let schema = Arc::new(Schema::new(vec![ Field::new("ts", DataType::Timestamp(TimeUnit::Millisecond, None), true), Field::new("tag1", DataType::Utf8, true), Field::new("tag2", DataType::Utf8, true), Field::new("val", DataType::Float64, true), ])); - MemoryExec::try_new(&[series], schema, None).unwrap() + DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[series], schema, None).unwrap(), + )) } async fn run_test(series: Vec, expected: &str) { diff --git a/src/promql/src/extension_plan/series_divide.rs b/src/promql/src/extension_plan/series_divide.rs index cd23bdc9c3..032566d2ad 100644 --- a/src/promql/src/extension_plan/series_divide.rs +++ b/src/promql/src/extension_plan/series_divide.rs @@ -24,7 +24,7 @@ use datafusion::common::{DFSchema, DFSchemaRef}; use datafusion::error::Result as DataFusionResult; use datafusion::execution::context::TaskContext; use datafusion::logical_expr::{EmptyRelation, Expr, LogicalPlan, UserDefinedLogicalNodeCore}; -use datafusion::physical_expr::{LexRequirement, PhysicalSortRequirement}; +use datafusion::physical_expr::{LexRequirement, OrderingRequirements, PhysicalSortRequirement}; use datafusion::physical_plan::expressions::Column as ColumnExpr; use datafusion::physical_plan::metrics::{ BaselineMetrics, Count, ExecutionPlanMetricsSet, MetricBuilder, MetricValue, MetricsSet, @@ -175,7 +175,7 @@ impl ExecutionPlan for SeriesDivideExec { )] } - fn required_input_ordering(&self) -> Vec> { + fn required_input_ordering(&self) -> Vec> { let input_schema = self.input.schema(); let mut exprs: Vec = self .tag_columns @@ -199,7 +199,11 @@ impl ExecutionPlan for SeriesDivideExec { nulls_first: true, }), }); - vec![Some(LexRequirement::new(exprs))] + + // Safety: `exprs` is not empty + let requirement = LexRequirement::new(exprs).unwrap(); + + vec![Some(OrderingRequirements::Hard(vec![requirement]))] } fn maintains_input_order(&self) -> Vec { @@ -273,7 +277,9 @@ impl ExecutionPlan for SeriesDivideExec { impl DisplayAs for SeriesDivideExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!(f, "PromSeriesDivideExec: tags={:?}", self.tag_columns) } } @@ -486,12 +492,13 @@ impl SeriesDivideStream { #[cfg(test)] mod test { use datafusion::arrow::datatypes::{DataType, Field, Schema}; - use datafusion::physical_plan::memory::MemoryExec; + use datafusion::datasource::memory::MemorySourceConfig; + use datafusion::datasource::source::DataSourceExec; use datafusion::prelude::SessionContext; use super::*; - fn prepare_test_data() -> MemoryExec { + fn prepare_test_data() -> DataSourceExec { let schema = Arc::new(Schema::new(vec![ Field::new("host", DataType::Utf8, true), Field::new("path", DataType::Utf8, true), @@ -547,7 +554,9 @@ mod test { ) .unwrap(); - MemoryExec::try_new(&[vec![data_1, data_2, data_3]], schema, None).unwrap() + DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![data_1, data_2, data_3]], schema, None).unwrap(), + )) } #[tokio::test] @@ -792,8 +801,8 @@ mod test { .unwrap(); // Create MemoryExec with these batches, keeping same combinations adjacent - let memory_exec = Arc::new( - MemoryExec::try_new( + let memory_exec = DataSourceExec::from_data_source( + MemorySourceConfig::try_new( &[vec![batch1, batch2, batch3, batch4, batch5, batch6]], schema.clone(), None, diff --git a/src/promql/src/extension_plan/test_util.rs b/src/promql/src/extension_plan/test_util.rs index f751cb9fa8..5521d151c2 100644 --- a/src/promql/src/extension_plan/test_util.rs +++ b/src/promql/src/extension_plan/test_util.rs @@ -21,13 +21,14 @@ use datafusion::arrow::array::Float64Array; use datafusion::arrow::datatypes::{ ArrowPrimitiveType, DataType, Field, Schema, TimestampMillisecondType, }; -use datafusion::physical_plan::memory::MemoryExec; +use datafusion::datasource::memory::MemorySourceConfig; +use datafusion::datasource::source::DataSourceExec; use datatypes::arrow::array::TimestampMillisecondArray; use datatypes::arrow_array::StringArray; pub(crate) const TIME_INDEX_COLUMN: &str = "timestamp"; -pub(crate) fn prepare_test_data() -> MemoryExec { +pub(crate) fn prepare_test_data() -> DataSourceExec { let schema = Arc::new(Schema::new(vec![ Field::new(TIME_INDEX_COLUMN, TimestampMillisecondType::DATA_TYPE, true), Field::new("value", DataType::Float64, true), @@ -46,10 +47,12 @@ pub(crate) fn prepare_test_data() -> MemoryExec { ) .unwrap(); - MemoryExec::try_new(&[vec![data]], schema, None).unwrap() + DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![data]], schema, None).unwrap(), + )) } -pub(crate) fn prepare_test_data_with_nan() -> MemoryExec { +pub(crate) fn prepare_test_data_with_nan() -> DataSourceExec { let schema = Arc::new(Schema::new(vec![ Field::new(TIME_INDEX_COLUMN, TimestampMillisecondType::DATA_TYPE, true), Field::new("value", DataType::Float64, true), @@ -60,5 +63,7 @@ pub(crate) fn prepare_test_data_with_nan() -> MemoryExec { let field_column = Arc::new(Float64Array::from(vec![0.0, f64::NAN, 6.0, f64::NAN, 12.0])) as _; let data = RecordBatch::try_new(schema.clone(), vec![timestamp_column, field_column]).unwrap(); - MemoryExec::try_new(&[vec![data]], schema, None).unwrap() + DataSourceExec::new(Arc::new( + MemorySourceConfig::try_new(&[vec![data]], schema, None).unwrap(), + )) } diff --git a/src/promql/src/extension_plan/union_distinct_on.rs b/src/promql/src/extension_plan/union_distinct_on.rs index 892a56ec1e..a943ae3b4d 100644 --- a/src/promql/src/extension_plan/union_distinct_on.rs +++ b/src/promql/src/extension_plan/union_distinct_on.rs @@ -292,7 +292,9 @@ impl ExecutionPlan for UnionDistinctOnExec { impl DisplayAs for UnionDistinctOnExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!( f, "UnionDistinctOnExec: on col=[{:?}], ts_col=[{}]", @@ -507,7 +509,7 @@ fn interleave_batches( // assemble new record batch RecordBatch::try_new(schema, interleaved_arrays) - .map_err(|e| DataFusionError::ArrowError(e, None)) + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None)) } /// Utility function to take rows from a record batch. Based on [take](datafusion::arrow::compute::take) @@ -525,10 +527,10 @@ fn take_batch(batch: &RecordBatch, indices: &[usize]) -> DataFusionResult, _>>() - .map_err(|e| DataFusionError::ArrowError(e, None))?; + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; - let result = - RecordBatch::try_new(schema, arrays).map_err(|e| DataFusionError::ArrowError(e, None))?; + let result = RecordBatch::try_new(schema, arrays) + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; Ok(result) } diff --git a/src/promql/src/functions/round.rs b/src/promql/src/functions/round.rs index 0847142e2e..ee9065c071 100644 --- a/src/promql/src/functions/round.rs +++ b/src/promql/src/functions/round.rs @@ -97,7 +97,7 @@ impl Round { (a / nearest).round() * nearest } }) - .map_err(|err: ArrowError| DataFusionError::ArrowError(err, None))?; + .map_err(|err: ArrowError| DataFusionError::ArrowError(Box::new(err), None))?; Ok(ColumnarValue::Array(Arc::new(result) as _)) } @@ -107,8 +107,10 @@ impl Round { #[cfg(test)] mod tests { + use datafusion_common::config::ConfigOptions; use datafusion_expr::ScalarFunctionArgs; use datatypes::arrow::array::Float64Array; + use datatypes::arrow::datatypes::Field; use super::*; @@ -118,10 +120,17 @@ mod tests { ColumnarValue::Array(Arc::new(Float64Array::from(value))), ColumnarValue::Scalar(ScalarValue::Float64(Some(nearest))), ]; + let arg_fields = vec![ + Arc::new(Field::new("a", input[0].data_type(), false)), + Arc::new(Field::new("b", input[1].data_type(), false)), + ]; + let return_field = Arc::new(Field::new("c", DataType::Float64, false)); let args = ScalarFunctionArgs { args: input, + arg_fields, number_rows: 1, - return_type: &DataType::Float64, + return_field, + config_options: Arc::new(ConfigOptions::default()), }; let result = round_udf.invoke_with_args(args).unwrap(); let result_array = extract_array(&result).unwrap(); diff --git a/src/promql/src/functions/test_util.rs b/src/promql/src/functions/test_util.rs index fb76ca52b5..a01216ef90 100644 --- a/src/promql/src/functions/test_util.rs +++ b/src/promql/src/functions/test_util.rs @@ -17,9 +17,10 @@ use std::sync::Arc; use datafusion::arrow::array::Float64Array; use datafusion::logical_expr::ScalarUDF; use datafusion::physical_plan::ColumnarValue; +use datafusion_common::config::ConfigOptions; use datafusion_common::ScalarValue; use datafusion_expr::ScalarFunctionArgs; -use datatypes::arrow::datatypes::DataType; +use datatypes::arrow::datatypes::{DataType, Field}; use crate::functions::extract_array; use crate::range_array::RangeArray; @@ -40,10 +41,17 @@ pub fn simple_range_udf_runner( .into_iter() .chain(other_args.into_iter().map(ColumnarValue::Scalar)) .collect::>(); + let arg_fields = vec![ + Arc::new(Field::new("a", input[0].data_type(), false)), + Arc::new(Field::new("b", input[1].data_type(), false)), + ]; + let return_field = Arc::new(Field::new("c", DataType::Float64, false)); let args = ScalarFunctionArgs { args: input, + arg_fields, number_rows: num_rows, - return_type: &DataType::Float64, + return_field, + config_options: Arc::new(ConfigOptions::default()), }; let value = range_fn.invoke_with_args(args).unwrap(); let eval_result: Vec> = extract_array(&value) diff --git a/src/query/src/analyze.rs b/src/query/src/analyze.rs index ec5a30f556..00f1f68a4d 100644 --- a/src/query/src/analyze.rs +++ b/src/query/src/analyze.rs @@ -89,7 +89,9 @@ impl DistAnalyzeExec { impl DisplayAs for DistAnalyzeExec { fn fmt_as(&self, t: DisplayFormatType, f: &mut std::fmt::Formatter) -> std::fmt::Result { match t { - DisplayFormatType::Default | DisplayFormatType::Verbose => { + DisplayFormatType::Default + | DisplayFormatType::Verbose + | DisplayFormatType::TreeRender => { write!(f, "DistAnalyzeExec",) } } diff --git a/src/query/src/dist_plan/analyzer.rs b/src/query/src/dist_plan/analyzer.rs index af290e4ade..a5d4d21729 100644 --- a/src/query/src/dist_plan/analyzer.rs +++ b/src/query/src/dist_plan/analyzer.rs @@ -206,6 +206,7 @@ impl DistPlannerAnalyzer { Ok(Subquery { subquery: Arc::new(rewrote_subquery), outer_ref_columns: subquery.outer_ref_columns, + spans: Default::default(), }) } } diff --git a/src/query/src/dist_plan/analyzer/test.rs b/src/query/src/dist_plan/analyzer/test.rs index db850cbfc8..bbd78b64d0 100644 --- a/src/query/src/dist_plan/analyzer/test.rs +++ b/src/query/src/dist_plan/analyzer/test.rs @@ -646,7 +646,8 @@ fn expand_part_col_aggr_part_col_aggr() { .unwrap(); let expected_original = [ - "Aggregate: groupBy=[[t.pk1, t.pk2, max(t.number)]], aggr=[[min(max(t.number))]]", // notice here `max(t.number)` is added to groupBy due to aggr exprs depend on this column + // See DataFusion #14860 for change details. + "Aggregate: groupBy=[[t.pk1, t.pk2]], aggr=[[min(max(t.number))]]", " Aggregate: groupBy=[[t.pk1, t.pk2]], aggr=[[max(t.number)]]", " TableScan: t", ] @@ -657,9 +658,9 @@ fn expand_part_col_aggr_part_col_aggr() { let result = DistPlannerAnalyzer {}.analyze(plan, &config).unwrap(); let expected = [ - "Projection: t.pk1, t.pk2, max(t.number), min(max(t.number))", + "Projection: t.pk1, t.pk2, min(max(t.number))", " MergeScan [is_placeholder=false, remote_input=[", - "Aggregate: groupBy=[[t.pk1, t.pk2, max(t.number)]], aggr=[[min(max(t.number))]]", + "Aggregate: groupBy=[[t.pk1, t.pk2]], aggr=[[min(max(t.number))]]", " Aggregate: groupBy=[[t.pk1, t.pk2]], aggr=[[max(t.number)]]", " TableScan: t", "]]", diff --git a/src/query/src/dist_plan/commutativity.rs b/src/query/src/dist_plan/commutativity.rs index 9327ba4792..d1455b36e6 100644 --- a/src/query/src/dist_plan/commutativity.rs +++ b/src/query/src/dist_plan/commutativity.rs @@ -78,7 +78,7 @@ pub fn step_aggr_to_upper_aggr( pub fn is_all_aggr_exprs_steppable(aggr_exprs: &[Expr]) -> bool { aggr_exprs.iter().all(|expr| { if let Some(aggr_func) = get_aggr_func(expr) { - if aggr_func.distinct { + if aggr_func.params.distinct { // Distinct aggregate functions are not steppable(yet). return false; } @@ -259,10 +259,11 @@ impl Categorizer { } pub fn check_expr(expr: &Expr) -> Commutativity { + #[allow(deprecated)] match expr { Expr::Column(_) | Expr::ScalarVariable(_, _) - | Expr::Literal(_) + | Expr::Literal(_, _) | Expr::BinaryExpr(_) | Expr::Not(_) | Expr::IsNotNull(_) diff --git a/src/query/src/dist_plan/merge_scan.rs b/src/query/src/dist_plan/merge_scan.rs index b6dbda9125..4d44fc5e51 100644 --- a/src/query/src/dist_plan/merge_scan.rs +++ b/src/query/src/dist_plan/merge_scan.rs @@ -40,9 +40,7 @@ use datafusion::physical_plan::{ use datafusion_common::{Column as ColumnExpr, Result}; use datafusion_expr::{Expr, Extension, LogicalPlan, UserDefinedLogicalNodeCore}; use datafusion_physical_expr::expressions::Column; -use datafusion_physical_expr::{ - Distribution, EquivalenceProperties, LexOrdering, PhysicalSortExpr, -}; +use datafusion_physical_expr::{Distribution, EquivalenceProperties, PhysicalSortExpr}; use datatypes::schema::{Schema, SchemaRef}; use futures_util::StreamExt; use greptime_proto::v1::region::RegionRequestHeader; @@ -209,10 +207,7 @@ impl MergeScanExec { )) }) .collect::>>()?; - EquivalenceProperties::new_with_orderings( - arrow_schema.clone(), - &[LexOrdering::new(lex_ordering)], - ) + EquivalenceProperties::new_with_orderings(arrow_schema.clone(), vec![lex_ordering]) } else { EquivalenceProperties::new(arrow_schema.clone()) }; diff --git a/src/query/src/dist_plan/predicate_extractor.rs b/src/query/src/dist_plan/predicate_extractor.rs index 5b6e5345b1..8bd21d4e72 100644 --- a/src/query/src/dist_plan/predicate_extractor.rs +++ b/src/query/src/dist_plan/predicate_extractor.rs @@ -398,7 +398,7 @@ impl DataFusionExprConverter { }; Ok(Operand::Column(column_name)) } - Expr::Literal(scalar_value) => { + Expr::Literal(scalar_value, _) => { let value = Value::try_from(scalar_value.clone()).unwrap(); Ok(Operand::Value(value)) } diff --git a/src/query/src/lib.rs b/src/query/src/lib.rs index 9f9a901910..afe2a0209d 100644 --- a/src/query/src/lib.rs +++ b/src/query/src/lib.rs @@ -17,6 +17,7 @@ #![feature(try_blocks)] #![feature(stmt_expr_attributes)] #![feature(iterator_try_collect)] +#![feature(box_patterns)] mod analyze; pub mod dataframe; diff --git a/src/query/src/log_query/planner.rs b/src/query/src/log_query/planner.rs index 99bb47e94c..66d915a941 100644 --- a/src/query/src/log_query/planner.rs +++ b/src/query/src/log_query/planner.rs @@ -1546,7 +1546,7 @@ mod tests { .unwrap(); // Verify the nested structure is properly created - let expected_expr_debug = "BinaryExpr(BinaryExpr { left: BinaryExpr(BinaryExpr { left: Column(Column { relation: None, name: \"age\" }), op: Plus, right: Literal(Int32(5)) }), op: Gt, right: Literal(Int32(30)) })"; + let expected_expr_debug = r#"BinaryExpr(BinaryExpr { left: BinaryExpr(BinaryExpr { left: Column(Column { relation: None, name: "age" }), op: Plus, right: Literal(Int32(5), None) }), op: Gt, right: Literal(Int32(30), None) })"#; assert_eq!(format!("{:?}", expr), expected_expr_debug); } } diff --git a/src/query/src/optimizer/constant_term.rs b/src/query/src/optimizer/constant_term.rs index ac22434dc5..121f3470b2 100644 --- a/src/query/src/optimizer/constant_term.rs +++ b/src/query/src/optimizer/constant_term.rs @@ -13,6 +13,7 @@ // limitations under the License. use std::fmt; +use std::fmt::Formatter; use std::hash::{Hash, Hasher}; use std::sync::Arc; @@ -129,6 +130,10 @@ impl PhysicalExpr for PreCompiledMatchesTermExpr { probes: self.probes.clone(), })) } + + fn fmt_sql(&self, f: &mut Formatter<'_>) -> fmt::Result { + write!(f, "{}", self) + } } /// Optimizer rule that pre-compiles constant term in `matches_term` function. @@ -236,13 +241,14 @@ mod tests { use common_function::scalars::matches_term::MatchesTermFunction; use common_function::scalars::udf::create_udf; use common_function::state::FunctionState; + use datafusion::datasource::memory::MemorySourceConfig; + use datafusion::datasource::source::DataSourceExec; use datafusion::physical_optimizer::PhysicalOptimizerRule; use datafusion::physical_plan::filter::FilterExec; use datafusion::physical_plan::get_plan_string; - use datafusion::physical_plan::memory::MemoryExec; - use datafusion_common::{Column, DFSchema, ScalarValue}; + use datafusion_common::{Column, DFSchema}; use datafusion_expr::expr::ScalarFunction; - use datafusion_expr::{Expr, ScalarUDF}; + use datafusion_expr::{Expr, Literal, ScalarUDF}; use datafusion_physical_expr::{create_physical_expr, ScalarFunctionExpr}; use datatypes::prelude::ConcreteDataType; use datatypes::schema::ColumnSchema; @@ -335,18 +341,16 @@ mod tests { let predicate = create_physical_expr( &Expr::ScalarFunction(ScalarFunction::new_udf( matches_term_udf(), - vec![ - Expr::Column(Column::from_name("text")), - Expr::Literal(ScalarValue::Utf8(Some("hello".to_string()))), - ], + vec![Expr::Column(Column::from_name("text")), "hello".lit()], )), &DFSchema::try_from(batch.schema().clone()).unwrap(), &Default::default(), ) .unwrap(); - let input = - Arc::new(MemoryExec::try_new(&[vec![batch.clone()]], batch.schema(), None).unwrap()); + let input = DataSourceExec::from_data_source( + MemorySourceConfig::try_new(&[vec![batch.clone()]], batch.schema(), None).unwrap(), + ); let filter = FilterExec::try_new(predicate, input).unwrap(); // Apply the optimizer @@ -385,8 +389,9 @@ mod tests { ) .unwrap(); - let input = - Arc::new(MemoryExec::try_new(&[vec![batch.clone()]], batch.schema(), None).unwrap()); + let input = DataSourceExec::from_data_source( + MemorySourceConfig::try_new(&[vec![batch.clone()]], batch.schema(), None).unwrap(), + ); let filter = FilterExec::try_new(predicate, input).unwrap(); let optimizer = MatchesConstantTermOptimizer; diff --git a/src/query/src/optimizer/count_wildcard.rs b/src/query/src/optimizer/count_wildcard.rs index 9621a8e159..cdfb057ac0 100644 --- a/src/query/src/optimizer/count_wildcard.rs +++ b/src/query/src/optimizer/count_wildcard.rs @@ -16,7 +16,7 @@ use datafusion::datasource::DefaultTableSource; use datafusion_common::tree_node::{ Transformed, TransformedResult, TreeNode, TreeNodeRecursion, TreeNodeVisitor, }; -use datafusion_common::{Column, Result as DataFusionResult}; +use datafusion_common::{Column, Result as DataFusionResult, ScalarValue}; use datafusion_expr::expr::{AggregateFunction, WindowFunction}; use datafusion_expr::utils::COUNT_STAR_EXPANSION; use datafusion_expr::{col, lit, Expr, LogicalPlan, WindowFunctionDefinition}; @@ -62,13 +62,13 @@ impl CountWildcardToTimeIndexRule { Expr::WindowFunction(mut window_function) if Self::is_count_star_window_aggregate(&window_function) => { - window_function.args.clone_from(&new_arg); + window_function.params.args.clone_from(&new_arg); Ok(Transformed::yes(Expr::WindowFunction(window_function))) } Expr::AggregateFunction(mut aggregate_function) if Self::is_count_star_aggregate(&aggregate_function) => { - aggregate_function.args.clone_from(&new_arg); + aggregate_function.params.args.clone_from(&new_arg); Ok(Transformed::yes(Expr::AggregateFunction( aggregate_function, ))) @@ -105,24 +105,30 @@ impl CountWildcardToTimeIndexRule { /// Utility functions from the original rule. impl CountWildcardToTimeIndexRule { - fn is_wildcard(expr: &Expr) -> bool { - matches!(expr, Expr::Wildcard { .. }) + #[expect(deprecated)] + fn args_at_most_wildcard_or_literal_one(args: &[Expr]) -> bool { + match args { + [] => true, + [Expr::Literal(ScalarValue::Int64(Some(v)), _)] => *v == 1, + [Expr::Wildcard { .. }] => true, + _ => false, + } } fn is_count_star_aggregate(aggregate_function: &AggregateFunction) -> bool { + let args = &aggregate_function.params.args; matches!(aggregate_function, AggregateFunction { func, - args, .. - } if func.name() == "count" && (args.len() == 1 && Self::is_wildcard(&args[0]) || args.is_empty())) + } if func.name() == "count" && Self::args_at_most_wildcard_or_literal_one(args)) } fn is_count_star_window_aggregate(window_function: &WindowFunction) -> bool { - let args = &window_function.args; + let args = &window_function.params.args; matches!(window_function.fun, WindowFunctionDefinition::AggregateUDF(ref udaf) - if udaf.name() == "count" && (args.len() == 1 && Self::is_wildcard(&args[0]) || args.is_empty())) + if udaf.name() == "count" && Self::args_at_most_wildcard_or_literal_one(args)) } } @@ -184,8 +190,8 @@ impl TimeIndexFinder { mod test { use std::sync::Arc; - use datafusion::functions_aggregate::count::count; - use datafusion_expr::{wildcard, LogicalPlanBuilder}; + use datafusion::functions_aggregate::count::count_all; + use datafusion_expr::LogicalPlanBuilder; use table::table::numbers::NumbersTable; use super::*; @@ -199,7 +205,7 @@ mod test { let plan = LogicalPlanBuilder::scan_with_filters("t", table_source, None, vec![]) .unwrap() - .aggregate(Vec::::new(), vec![count(wildcard())]) + .aggregate(Vec::::new(), vec![count_all()]) .unwrap() .alias(r#""FgHiJ""#) .unwrap() diff --git a/src/query/src/optimizer/parallelize_scan.rs b/src/query/src/optimizer/parallelize_scan.rs index 7824fd0961..c554f65bed 100644 --- a/src/query/src/optimizer/parallelize_scan.rs +++ b/src/query/src/optimizer/parallelize_scan.rs @@ -57,7 +57,7 @@ impl ParallelizeScan { .transform_down(|plan| { if let Some(sort_exec) = plan.as_any().downcast_ref::() { // save the first order expr - first_order_expr = sort_exec.expr().first().cloned(); + first_order_expr = Some(sort_exec.expr().first()).cloned(); } else if let Some(region_scan_exec) = plan.as_any().downcast_ref::() { diff --git a/src/query/src/optimizer/scan_hint.rs b/src/query/src/optimizer/scan_hint.rs index e8cc95c7f1..cd3907ca4f 100644 --- a/src/query/src/optimizer/scan_hint.rs +++ b/src/query/src/optimizer/scan_hint.rs @@ -217,13 +217,16 @@ impl TreeNodeVisitor<'_> for ScanHintVisitor { is_all_last_value = false; break; }; - if func.func.name() != "last_value" || func.filter.is_some() || func.distinct { + if func.func.name() != "last_value" + || func.params.filter.is_some() + || func.params.distinct + { is_all_last_value = false; break; } // check order by requirement - if let Some(order_by) = &func.order_by - && let Some(first_order_by) = order_by.first() + let order_by = &func.params.order_by; + if let Some(first_order_by) = order_by.first() && order_by.len() == 1 { if let Some(existing_order_by) = &order_by_expr { @@ -298,7 +301,7 @@ mod test { use std::sync::Arc; use datafusion::functions_aggregate::first_last::last_value_udaf; - use datafusion_expr::expr::AggregateFunction; + use datafusion_expr::expr::{AggregateFunction, AggregateFunctionParams}; use datafusion_expr::{col, LogicalPlanBuilder}; use datafusion_optimizer::OptimizerContext; use store_api::storage::RegionId; @@ -320,7 +323,6 @@ mod test { .unwrap(); let context = OptimizerContext::default(); - assert!(ScanHintRule.supports_rewrite()); ScanHintRule.rewrite(plan, &context).unwrap(); // should read the first (with `.sort(true, false)`) sort option @@ -347,15 +349,17 @@ mod test { vec![col("k0")], vec![Expr::AggregateFunction(AggregateFunction { func: last_value_udaf(), - args: vec![col("v0")], - distinct: false, - filter: None, - order_by: Some(vec![Sort { - expr: col("ts"), - asc: true, - nulls_first: true, - }]), - null_treatment: None, + params: AggregateFunctionParams { + args: vec![col("v0")], + distinct: false, + filter: None, + order_by: vec![Sort { + expr: col("ts"), + asc: true, + nulls_first: true, + }], + null_treatment: None, + }, })], ) .unwrap() @@ -363,7 +367,6 @@ mod test { .unwrap(); let context = OptimizerContext::default(); - assert!(ScanHintRule.supports_rewrite()); ScanHintRule.rewrite(plan, &context).unwrap(); let scan_req = provider.scan_request(); diff --git a/src/query/src/optimizer/string_normalization.rs b/src/query/src/optimizer/string_normalization.rs index 4277a3a5d1..071ea5bf1b 100644 --- a/src/query/src/optimizer/string_normalization.rs +++ b/src/query/src/optimizer/string_normalization.rs @@ -90,9 +90,9 @@ impl TreeNodeRewriter for StringNormalizationConverter { Expr::Cast(Cast { expr, data_type }) => { let expr = match data_type { DataType::Timestamp(_, _) => match *expr { - Expr::Literal(value) => match value { + Expr::Literal(value, _) => match value { ScalarValue::Utf8(Some(s)) => trim_utf_expr(s), - _ => Expr::Literal(value), + _ => Expr::Literal(value, None), }, expr => expr, }, @@ -112,7 +112,7 @@ impl TreeNodeRewriter for StringNormalizationConverter { fn trim_utf_expr(s: String) -> Expr { let parts: Vec<_> = s.split_whitespace().collect(); let trimmed = parts.join(" "); - Expr::Literal(ScalarValue::Utf8(Some(trimmed))) + Expr::Literal(ScalarValue::Utf8(Some(trimmed)), None) } #[cfg(test)] @@ -195,7 +195,7 @@ mod tests { fn prepare_test_plan_builder() -> LogicalPlanBuilder { let schema = Schema::new(vec![Field::new("f", DataType::Float64, false)]); - let table = MemTable::try_new(SchemaRef::from(schema), vec![]).unwrap(); + let table = MemTable::try_new(SchemaRef::from(schema), vec![vec![]]).unwrap(); LogicalPlanBuilder::scan("t", provider_as_source(Arc::new(table)), None).unwrap() } } diff --git a/src/query/src/optimizer/transcribe_atat.rs b/src/query/src/optimizer/transcribe_atat.rs index 3292f19f08..5f27707685 100644 --- a/src/query/src/optimizer/transcribe_atat.rs +++ b/src/query/src/optimizer/transcribe_atat.rs @@ -125,7 +125,7 @@ mod tests { Field::new("a", DataType::Utf8, false), Field::new("b", DataType::Utf8, false), ]); - let table = MemTable::try_new(SchemaRef::from(schema), vec![]).unwrap(); + let table = MemTable::try_new(SchemaRef::from(schema), vec![vec![]]).unwrap(); LogicalPlanBuilder::scan("t", provider_as_source(Arc::new(table)), None).unwrap() } diff --git a/src/query/src/optimizer/type_conversion.rs b/src/query/src/optimizer/type_conversion.rs index 5dcca3d95a..8c44b098fd 100644 --- a/src/query/src/optimizer/type_conversion.rs +++ b/src/query/src/optimizer/type_conversion.rs @@ -87,7 +87,6 @@ impl ExtensionAnalyzerRule for TypeConversionRule { | LogicalPlan::Extension { .. } | LogicalPlan::Sort { .. } | LogicalPlan::Union { .. } - | LogicalPlan::Join { .. } | LogicalPlan::Values { .. } | LogicalPlan::Analyze { .. } => { let mut converter = TypeConverter { @@ -116,7 +115,8 @@ impl ExtensionAnalyzerRule for TypeConversionRule { | LogicalPlan::Statement(_) | LogicalPlan::Ddl(_) | LogicalPlan::Copy(_) - | LogicalPlan::RecursiveQuery(_) => Ok(Transformed::no(plan)), + | LogicalPlan::RecursiveQuery(_) + | LogicalPlan::Join { .. } => Ok(Transformed::no(plan)), }) .map(|x| x.data) } @@ -154,7 +154,7 @@ impl TypeConverter { (target_type, value) => { let value_arr = value.to_array()?; let arr = compute::cast(&value_arr, target_type) - .map_err(|e| DataFusionError::ArrowError(e, None))?; + .map_err(|e| DataFusionError::ArrowError(Box::new(e), None))?; ScalarValue::try_from_array( &arr, @@ -180,23 +180,23 @@ impl TypeConverter { } match (left, right) { - (Expr::Column(col), Expr::Literal(value)) => { + (Expr::Column(col), Expr::Literal(value, _)) => { let casted_right = self.cast_scalar_value(value, target_type)?; if casted_right.is_null() { return Err(DataFusionError::Plan(format!( "column:{col:?}. Casting value:{value:?} to {target_type:?} is invalid", ))); } - Ok((left.clone(), Expr::Literal(casted_right))) + Ok((left.clone(), Expr::Literal(casted_right, None))) } - (Expr::Literal(value), Expr::Column(col)) => { + (Expr::Literal(value, _), Expr::Column(col)) => { let casted_left = self.cast_scalar_value(value, target_type)?; if casted_left.is_null() { return Err(DataFusionError::Plan(format!( "column:{col:?}. Casting value:{value:?} to {target_type:?} is invalid", ))); } - Ok((Expr::Literal(casted_left), right.clone())) + Ok((Expr::Literal(casted_left, None), right.clone())) } _ => Ok((left.clone(), right.clone())), } @@ -255,7 +255,7 @@ impl TreeNodeRewriter for TypeConverter { negated, }) } - Expr::Literal(value) => match value { + Expr::Literal(value, _) => match value { ScalarValue::TimestampSecond(Some(i), _) => { timestamp_to_timestamp_ms_expr(i, TimeUnit::Second) } @@ -268,7 +268,7 @@ impl TreeNodeRewriter for TypeConverter { ScalarValue::TimestampNanosecond(Some(i), _) => { timestamp_to_timestamp_ms_expr(i, TimeUnit::Nanosecond) } - _ => Expr::Literal(value), + _ => Expr::Literal(value, None), }, expr => expr, }; @@ -284,7 +284,10 @@ fn timestamp_to_timestamp_ms_expr(val: i64, unit: TimeUnit) -> Expr { TimeUnit::Nanosecond => val / 1_000 / 1_000, }; - Expr::Literal(ScalarValue::TimestampMillisecond(Some(timestamp), None)) + Expr::Literal( + ScalarValue::TimestampMillisecond(Some(timestamp), None), + None, + ) } fn string_to_timestamp_ms(string: &str, timezone: Option<&Timezone>) -> Result { @@ -308,7 +311,7 @@ mod tests { use datafusion_common::arrow::datatypes::Field; use datafusion_common::{Column, DFSchema}; - use datafusion_expr::LogicalPlanBuilder; + use datafusion_expr::{Literal, LogicalPlanBuilder}; use datafusion_sql::TableReference; use session::context::QueryContext; @@ -348,36 +351,36 @@ mod tests { fn test_timestamp_to_timestamp_ms_expr() { assert_eq!( timestamp_to_timestamp_ms_expr(123, TimeUnit::Second), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(123000), None)) + ScalarValue::TimestampMillisecond(Some(123000), None).lit() ); assert_eq!( timestamp_to_timestamp_ms_expr(123, TimeUnit::Millisecond), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(123), None)) + ScalarValue::TimestampMillisecond(Some(123), None).lit() ); assert_eq!( timestamp_to_timestamp_ms_expr(123, TimeUnit::Microsecond), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(0), None)) + ScalarValue::TimestampMillisecond(Some(0), None).lit() ); assert_eq!( timestamp_to_timestamp_ms_expr(1230, TimeUnit::Microsecond), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(1), None)) + ScalarValue::TimestampMillisecond(Some(1), None).lit() ); assert_eq!( timestamp_to_timestamp_ms_expr(123000, TimeUnit::Microsecond), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(123), None)) + ScalarValue::TimestampMillisecond(Some(123), None).lit() ); assert_eq!( timestamp_to_timestamp_ms_expr(1230, TimeUnit::Nanosecond), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(0), None)) + ScalarValue::TimestampMillisecond(Some(0), None).lit() ); assert_eq!( timestamp_to_timestamp_ms_expr(123_000_000, TimeUnit::Nanosecond), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(123), None)) + ScalarValue::TimestampMillisecond(Some(123), None).lit() ); } @@ -405,16 +408,13 @@ mod tests { }; assert_eq!( - Expr::Column(Column::from_name("ts")).gt(Expr::Literal(ScalarValue::TimestampSecond( + Expr::Column(Column::from_name("ts")).gt(ScalarValue::TimestampSecond( Some(1599514949), None - ))), + ) + .lit()), converter - .f_up( - Expr::Column(Column::from_name("ts")).gt(Expr::Literal(ScalarValue::Utf8( - Some("2020-09-08T05:42:29+08:00".to_string()), - ))) - ) + .f_up(Expr::Column(Column::from_name("ts")).gt("2020-09-08T05:42:29+08:00".lit())) .unwrap() .data ); @@ -439,13 +439,9 @@ mod tests { }; assert_eq!( - Expr::Column(Column::from_name(col_name)) - .eq(Expr::Literal(ScalarValue::Boolean(Some(true)))), + Expr::Column(Column::from_name(col_name)).eq(true.lit()), converter - .f_up( - Expr::Column(Column::from_name(col_name)) - .eq(Expr::Literal(ScalarValue::Utf8(Some("true".to_string())))) - ) + .f_up(Expr::Column(Column::from_name(col_name)).eq("true".lit())) .unwrap() .data ); @@ -453,40 +449,36 @@ mod tests { #[test] fn test_retrieve_type_from_aggr_plan() { - let plan = - LogicalPlanBuilder::values(vec![vec![ - Expr::Literal(ScalarValue::Int64(Some(1))), - Expr::Literal(ScalarValue::Float64(Some(1.0))), - Expr::Literal(ScalarValue::TimestampMillisecond(Some(1), None)), - ]]) - .unwrap() - .filter(Expr::Column(Column::from_name("column3")).gt(Expr::Literal( - ScalarValue::Utf8(Some("1970-01-01 00:00:00+08:00".to_string())), - ))) - .unwrap() - .filter( - Expr::Literal(ScalarValue::Utf8(Some( - "1970-01-01 00:00:00+08:00".to_string(), - ))) + let plan = LogicalPlanBuilder::values(vec![vec![ + ScalarValue::Int64(Some(1)).lit(), + ScalarValue::Float64(Some(1.0)).lit(), + ScalarValue::TimestampMillisecond(Some(1), None).lit(), + ]]) + .unwrap() + .filter(Expr::Column(Column::from_name("column3")).gt("1970-01-01 00:00:00+08:00".lit())) + .unwrap() + .filter( + "1970-01-01 00:00:00+08:00" + .lit() .lt_eq(Expr::Column(Column::from_name("column3"))), - ) - .unwrap() - .aggregate( - Vec::::new(), - vec![Expr::AggregateFunction( - datafusion_expr::expr::AggregateFunction::new_udf( - datafusion::functions_aggregate::count::count_udaf(), - vec![Expr::Column(Column::from_name("column1"))], - false, - None, - None, - None, - ), - )], - ) - .unwrap() - .build() - .unwrap(); + ) + .unwrap() + .aggregate( + Vec::::new(), + vec![Expr::AggregateFunction( + datafusion_expr::expr::AggregateFunction::new_udf( + datafusion::functions_aggregate::count::count_udaf(), + vec![Expr::Column(Column::from_name("column1"))], + false, + None, + vec![], + None, + ), + )], + ) + .unwrap() + .build() + .unwrap(); let context = QueryEngineContext::mock(); let transformed_plan = TypeConversionRule @@ -505,21 +497,18 @@ mod tests { fn test_reverse_non_ts_type() { let context = QueryEngineContext::mock(); - let plan = - LogicalPlanBuilder::values(vec![vec![Expr::Literal(ScalarValue::Float64(Some(1.0)))]]) - .unwrap() - .filter( - Expr::Column(Column::from_name("column1")) - .gt_eq(Expr::Literal(ScalarValue::Utf8(Some("1.2345".to_string())))), - ) - .unwrap() - .filter( - Expr::Literal(ScalarValue::Utf8(Some("1.2345".to_string()))) - .lt(Expr::Column(Column::from_name("column1"))), - ) - .unwrap() - .build() - .unwrap(); + let plan = LogicalPlanBuilder::values(vec![vec![1.0f64.lit()]]) + .unwrap() + .filter(Expr::Column(Column::from_name("column1")).gt_eq("1.2345".lit())) + .unwrap() + .filter( + "1.2345" + .lit() + .lt(Expr::Column(Column::from_name("column1"))), + ) + .unwrap() + .build() + .unwrap(); let transformed_plan = TypeConversionRule .analyze(plan, &context, &ConfigOptions::default()) .unwrap(); diff --git a/src/query/src/optimizer/windowed_sort.rs b/src/query/src/optimizer/windowed_sort.rs index 590e277ede..5f9fa92bac 100644 --- a/src/query/src/optimizer/windowed_sort.rs +++ b/src/query/src/optimizer/windowed_sort.rs @@ -18,6 +18,7 @@ use std::sync::Arc; use datafusion::physical_optimizer::PhysicalOptimizerRule; use datafusion::physical_plan::coalesce_batches::CoalesceBatchesExec; use datafusion::physical_plan::coalesce_partitions::CoalescePartitionsExec; +use datafusion::physical_plan::coop::CooperativeExec; use datafusion::physical_plan::filter::FilterExec; use datafusion::physical_plan::projection::ProjectionExec; use datafusion::physical_plan::repartition::RepartitionExec; @@ -27,7 +28,6 @@ use datafusion::physical_plan::ExecutionPlan; use datafusion_common::tree_node::{Transformed, TreeNode}; use datafusion_common::Result as DataFusionResult; use datafusion_physical_expr::expressions::Column as PhysicalColumn; -use datafusion_physical_expr::LexOrdering; use store_api::region_engine::PartitionRange; use table::table::scan::RegionScanExec; @@ -89,11 +89,11 @@ impl WindowedSortPhysicalRule { }; let input_schema = sort_input.schema(); - if let Some(first_sort_expr) = sort_exec.expr().first() - && let Some(column_expr) = first_sort_expr - .expr - .as_any() - .downcast_ref::() + let first_sort_expr = sort_exec.expr().first(); + if let Some(column_expr) = first_sort_expr + .expr + .as_any() + .downcast_ref::() && scanner_info .time_index .contains(input_schema.field(column_expr.index()).name()) @@ -101,7 +101,6 @@ impl WindowedSortPhysicalRule { } else { return Ok(Transformed::no(plan)); } - let first_sort_expr = sort_exec.expr().first().unwrap().clone(); // PartSortExec is unnecessary if: // - there is no tag column, and @@ -120,7 +119,7 @@ impl WindowedSortPhysicalRule { }; let windowed_sort_exec = WindowedSortExec::try_new( - first_sort_expr, + first_sort_expr.clone(), sort_exec.fetch(), scanner_info.partition_ranges, new_input, @@ -128,7 +127,7 @@ impl WindowedSortPhysicalRule { if !preserve_partitioning { let order_preserving_merge = SortPreservingMergeExec::new( - LexOrdering::new(sort_exec.expr().to_vec()), + sort_exec.expr().clone(), Arc::new(windowed_sort_exec), ); return Ok(Transformed { @@ -168,6 +167,10 @@ fn fetch_partition_range(input: Arc) -> DataFusionResult() { + return Ok(Transformed::no(plan)); + } + // Unappliable case, reset the state. if plan.as_any().is::() || plan.as_any().is::() diff --git a/src/query/src/part_sort.rs b/src/query/src/part_sort.rs index 29b7307801..4d953420fa 100644 --- a/src/query/src/part_sort.rs +++ b/src/query/src/part_sort.rs @@ -35,7 +35,7 @@ use datafusion::physical_plan::{ DisplayAs, DisplayFormatType, ExecutionPlan, ExecutionPlanProperties, PlanProperties, TopK, }; use datafusion_common::{internal_err, DataFusionError}; -use datafusion_physical_expr::{LexOrdering, PhysicalSortExpr}; +use datafusion_physical_expr::PhysicalSortExpr; use futures::{Stream, StreamExt}; use itertools::Itertools; use snafu::location; @@ -243,11 +243,13 @@ impl PartSortStream { TopK::try_new( partition, sort.schema().clone(), - LexOrdering::new(vec![sort.expression.clone()]), + vec![], + [sort.expression.clone()].into(), limit, context.session_config().batch_size(), context.runtime_env(), &sort.metrics, + None, )?, 0, ) @@ -429,14 +431,14 @@ impl PartSortStream { let sort_column = concat(&sort_columns.iter().map(|a| a.as_ref()).collect_vec()).map_err(|e| { DataFusionError::ArrowError( - e, + Box::new(e), Some(format!("Fail to concat sort columns at {}", location!())), ) })?; let indices = sort_to_indices(&sort_column, opt, self.limit).map_err(|e| { DataFusionError::ArrowError( - e, + Box::new(e), Some(format!("Fail to sort to indices at {}", location!())), ) })?; @@ -468,7 +470,7 @@ impl PartSortStream { let full_input = concat_batches(&self.schema, &buffer).map_err(|e| { DataFusionError::ArrowError( - e, + Box::new(e), Some(format!( "Fail to concat input batches when sorting at {}", location!() @@ -478,7 +480,7 @@ impl PartSortStream { let sorted = take_record_batch(&full_input, &indices).map_err(|e| { DataFusionError::ArrowError( - e, + Box::new(e), Some(format!( "Fail to take result record batch when sorting at {}", location!() @@ -498,11 +500,13 @@ impl PartSortStream { let new_top_buffer = TopK::try_new( self.partition, self.schema().clone(), - LexOrdering::new(vec![self.expression.clone()]), + vec![], + [self.expression.clone()].into(), self.limit.unwrap(), self.context.session_config().batch_size(), self.context.runtime_env(), &self.root_metrics, + None, )?; let PartSortBuffer::Top(top_k, _) = std::mem::replace(&mut self.buffer, PartSortBuffer::Top(new_top_buffer, 0)) @@ -532,7 +536,7 @@ impl PartSortStream { let concat_batch = concat_batches(&self.schema, &results).map_err(|e| { DataFusionError::ArrowError( - e, + Box::new(e), Some(format!( "Fail to concat top k result record batch when sorting at {}", location!() diff --git a/src/query/src/plan.rs b/src/query/src/plan.rs index 8d5586607e..eb6765093e 100644 --- a/src/query/src/plan.rs +++ b/src/query/src/plan.rs @@ -17,7 +17,7 @@ use std::collections::HashSet; use datafusion::datasource::DefaultTableSource; use datafusion_common::tree_node::{Transformed, TreeNode, TreeNodeRewriter}; use datafusion_common::TableReference; -use datafusion_expr::{BinaryExpr, Expr, Join, LogicalPlan, Operator}; +use datafusion_expr::{Expr, LogicalPlan}; use session::context::QueryContextRef; pub use table::metadata::TableType; use table::table::adapter::DfTableProviderAdapter; @@ -132,24 +132,7 @@ pub trait ExtractExpr { impl ExtractExpr for LogicalPlan { fn expressions_consider_join(&self) -> Vec { - match self { - LogicalPlan::Join(Join { on, filter, .. }) => { - // The first part of expr is equi-exprs, - // and the struct of each equi-expr is like `left-expr = right-expr`. - // We only normalize the filter_expr (non equality predicate from ON clause). - on.iter() - .map(|(left, right)| { - Expr::BinaryExpr(BinaryExpr { - left: Box::new(left.clone()), - op: Operator::Eq, - right: Box::new(right.clone()), - }) - }) - .chain(filter.clone()) - .collect() - } - _ => self.expressions(), - } + self.expressions() } } diff --git a/src/query/src/planner.rs b/src/query/src/planner.rs index 69a3ed2968..24d9028f37 100644 --- a/src/query/src/planner.rs +++ b/src/query/src/planner.rs @@ -97,7 +97,15 @@ impl DfLogicalPlanner { is_tql_cte = true; } - let df_stmt = stmt.as_ref().try_into().context(SqlSnafu)?; + let mut df_stmt = stmt.as_ref().try_into().context(SqlSnafu)?; + + // TODO(LFC): Remove this when Datafusion supports **both** the syntax and implementation of "explain with format". + if let datafusion::sql::parser::Statement::Statement( + box datafusion::sql::sqlparser::ast::Statement::Explain { format, .. }, + ) = &mut df_stmt + { + format.take(); + } let table_provider = DfTableSourceProvider::new( self.engine_state.catalog_manager().clone(), @@ -124,11 +132,8 @@ impl DfLogicalPlanner { let config_options = self.session_state.config().options(); let parser_options = &config_options.sql_parser; let parser_options = ParserOptions { - enable_ident_normalization: parser_options.enable_ident_normalization, - parse_float_as_decimal: parser_options.parse_float_as_decimal, - support_varchar_with_length: parser_options.support_varchar_with_length, - enable_options_value_normalization: parser_options.enable_options_value_normalization, - collect_spans: parser_options.collect_spans, + map_string_types_to_utf8view: false, + ..parser_options.into() }; let sql_to_rel = SqlToRel::new_with_options(&context_provider, parser_options); @@ -183,12 +188,10 @@ impl DfLogicalPlanner { let config_options = self.session_state.config().options(); let parser_options = &config_options.sql_parser; - let parser_options = ParserOptions { + let parser_options: ParserOptions = ParserOptions { + map_string_types_to_utf8view: false, enable_ident_normalization: normalize_ident, - parse_float_as_decimal: parser_options.parse_float_as_decimal, - support_varchar_with_length: parser_options.support_varchar_with_length, - enable_options_value_normalization: parser_options.enable_options_value_normalization, - collect_spans: parser_options.collect_spans, + ..parser_options.into() }; let sql_to_rel = SqlToRel::new_with_options(&context_provider, parser_options); diff --git a/src/query/src/promql/label_values.rs b/src/query/src/promql/label_values.rs index e1dcdf968b..f15f19b405 100644 --- a/src/query/src/promql/label_values.rs +++ b/src/query/src/promql/label_values.rs @@ -29,8 +29,8 @@ use crate::promql::error::{ fn build_time_filter(time_index_expr: Expr, start: Timestamp, end: Timestamp) -> Expr { time_index_expr .clone() - .gt_eq(Expr::Literal(timestamp_to_scalar_value(start))) - .and(time_index_expr.lt_eq(Expr::Literal(timestamp_to_scalar_value(end)))) + .gt_eq(Expr::Literal(timestamp_to_scalar_value(start), None)) + .and(time_index_expr.lt_eq(Expr::Literal(timestamp_to_scalar_value(end), None))) } fn timestamp_to_scalar_value(timestamp: Timestamp) -> ScalarValue { diff --git a/src/query/src/promql/planner.rs b/src/query/src/promql/planner.rs index c7de23974c..0edaf8328e 100644 --- a/src/query/src/promql/planner.rs +++ b/src/query/src/promql/planner.rs @@ -44,9 +44,10 @@ use datafusion::prelude as df_prelude; use datafusion::prelude::{Column, Expr as DfExpr, JoinType}; use datafusion::scalar::ScalarValue; use datafusion::sql::TableReference; -use datafusion_common::DFSchema; +use datafusion_common::{DFSchema, NullEquality}; +use datafusion_expr::expr::WindowFunctionParams; use datafusion_expr::utils::conjunction; -use datafusion_expr::{col, lit, ExprSchemable, SortExpr}; +use datafusion_expr::{col, lit, ExprSchemable, Literal, SortExpr}; use datatypes::arrow::datatypes::{DataType as ArrowDataType, TimeUnit as ArrowTimeUnit}; use datatypes::data_type::ConcreteDataType; use itertools::Itertools; @@ -1299,11 +1300,11 @@ impl PromPlanner { .field_with_unqualified_name(&matcher.name) .is_err() { - DfExpr::Literal(ScalarValue::Utf8(Some(String::new()))).alias(matcher.name) + DfExpr::Literal(ScalarValue::Utf8(Some(String::new())), None).alias(matcher.name) } else { DfExpr::Column(Column::from_name(matcher.name)) }; - let lit = DfExpr::Literal(ScalarValue::Utf8(Some(matcher.value))); + let lit = DfExpr::Literal(ScalarValue::Utf8(Some(matcher.value)), None); let expr = match matcher.op { MatchOp::Equal => col.eq(lit), MatchOp::NotEqual => col.not_eq(lit), @@ -1315,17 +1316,13 @@ impl PromPlanner { DfExpr::BinaryExpr(BinaryExpr { left: Box::new(col), op: Operator::RegexMatch, - right: Box::new(DfExpr::Literal(ScalarValue::Utf8(Some( - re.as_str().to_string(), - )))), + right: Box::new(re.as_str().lit()), }) } MatchOp::NotRe(re) => DfExpr::BinaryExpr(BinaryExpr { left: Box::new(col), op: Operator::RegexNotMatch, - right: Box::new(DfExpr::Literal(ScalarValue::Utf8(Some( - re.as_str().to_string(), - )))), + right: Box::new(re.as_str().lit()), }), }; exprs.push(expr); @@ -1367,16 +1364,20 @@ impl PromPlanner { if (end - start) / interval > MAX_SCATTER_POINTS || interval <= INTERVAL_1H { let single_time_range = time_index_expr .clone() - .gt_eq(DfExpr::Literal(ScalarValue::TimestampMillisecond( - Some(self.ctx.start + offset_duration - self.ctx.lookback_delta - range), + .gt_eq(DfExpr::Literal( + ScalarValue::TimestampMillisecond( + Some(self.ctx.start + offset_duration - self.ctx.lookback_delta - range), + None, + ), None, - ))) - .and( - time_index_expr.lt_eq(DfExpr::Literal(ScalarValue::TimestampMillisecond( + )) + .and(time_index_expr.lt_eq(DfExpr::Literal( + ScalarValue::TimestampMillisecond( Some(self.ctx.end + offset_duration + self.ctx.lookback_delta), None, - ))), - ); + ), + None, + ))); return Ok(Some(single_time_range)); } @@ -1386,15 +1387,19 @@ impl PromPlanner { filters.push( time_index_expr .clone() - .gt_eq(DfExpr::Literal(ScalarValue::TimestampMillisecond( - Some(timestamp + offset_duration - lookback_delta - range), + .gt_eq(DfExpr::Literal( + ScalarValue::TimestampMillisecond( + Some(timestamp + offset_duration - lookback_delta - range), + None, + ), None, - ))) + )) .and(time_index_expr.clone().lt_eq(DfExpr::Literal( ScalarValue::TimestampMillisecond( Some(timestamp + offset_duration + lookback_delta), None, ), + None, ))), ) } @@ -1457,6 +1462,7 @@ impl PromPlanner { table: table_ref.to_quoted_string(), })? .clone(), + metadata: None, }))) .collect::>(); scan_plan = LogicalPlanBuilder::from(scan_plan) @@ -1547,7 +1553,7 @@ impl PromPlanner { self.ctx.interval, SPECIAL_TIME_FUNCTION.to_string(), DEFAULT_FIELD_COLUMN.to_string(), - Some(DfExpr::Literal(ScalarValue::Float64(Some(0.0)))), + Some(lit(0.0f64)), ) .context(DataFusionPlanningSnafu)?, ), @@ -1700,13 +1706,14 @@ impl PromPlanner { // 'days', // (date_trunc('month',