diff --git a/Cargo.lock b/Cargo.lock index 532f5d1321..5b50ce5241 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -14,19 +14,19 @@ dependencies = [ [[package]] name = "actix-codec" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57a7559404a7f3573127aab53c08ce37a6c6a315c374a31070f3c91cd1b4a7fe" +checksum = "617a8268e3537fe1d8c9ead925fca49ef6400927ee7bc26750e90ecee14ce4b8" dependencies = [ "bitflags 1.3.2", "bytes", "futures-core", "futures-sink", - "log", "memchr", "pin-project-lite", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", + "tracing", ] [[package]] @@ -78,9 +78,9 @@ dependencies = [ "actix-service", "actix-tls", "actix-utils", - "ahash 0.8.3", - "base64 0.21.0", - "bitflags 2.4.0", + "ahash 0.8.6", + "base64 0.21.5", + "bitflags 2.4.1", "brotli", "bytes", "bytestring", @@ -102,19 +102,19 @@ dependencies = [ "sha1", "smallvec", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "tracing", - "zstd", + "zstd 0.12.4", ] [[package]] name = "actix-macros" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "465a6172cf69b960917811022d8f29bc0b7fa1398bc4f78b3c466673db1213b6" +checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb" dependencies = [ - "quote 1.0.30", - "syn 1.0.109", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -132,9 +132,9 @@ dependencies = [ [[package]] name = "actix-rt" -version = "2.8.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15265b6b8e2347670eb363c47fc8c75208b4a4994b27192f345fcbe707804f3e" +checksum = "28f32d40287d3f402ae0028a9d54bef51af15c8769492826a69d28f81893151d" dependencies = [ "futures-core", "tokio", @@ -142,9 +142,9 @@ dependencies = [ [[package]] name = "actix-server" -version = "2.2.0" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e8613a75dd50cc45f473cee3c34d59ed677c0f7b44480ce3b8247d7dc519327" +checksum = "3eb13e7eef0423ea6eab0e59f6c72e7cb46d33691ad56a726b3cd07ddec2c2d4" dependencies = [ "actix-rt", "actix-service", @@ -152,8 +152,7 @@ dependencies = [ "futures-core", "futures-util", "mio", - "num_cpus", - "socket2 0.4.9", + "socket2 0.5.5", "tokio", "tracing", ] @@ -181,11 +180,11 @@ dependencies = [ "futures-core", "impl-more", "pin-project-lite", - "rustls 0.21.7", - "rustls-webpki 0.101.5", + "rustls 0.21.9", + "rustls-webpki 0.101.7", "tokio", "tokio-rustls 0.23.4", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "tracing", "webpki-roots 0.22.6", ] @@ -216,7 +215,7 @@ dependencies = [ "actix-tls", "actix-utils", "actix-web-codegen", - "ahash 0.8.3", + "ahash 0.8.6", "bytes", "bytestring", "cfg-if", @@ -237,20 +236,20 @@ dependencies = [ "serde_urlencoded", "smallvec", "socket2 0.5.5", - "time 0.3.20", + "time 0.3.30", "url", ] [[package]] name = "actix-web-codegen" -version = "4.2.0" +version = "4.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2262160a7ae29e3415554a3f1fc04c764b1540c116aa524683208078b7a75bc9" +checksum = "eb1f50ebbb30eca122b188319a4398b3f7bb4a8cdf50ecfb73bfc6a3c3ce54f5" dependencies = [ "actix-router", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -261,7 +260,7 @@ checksum = "1d613edf08a42ccc6864c941d30fe14e1b676a77d16f1dbadc1174d065a0a775" dependencies = [ "actix-utils", "actix-web", - "base64 0.21.0", + "base64 0.21.5", "futures-core", "futures-util", "log", @@ -270,9 +269,9 @@ dependencies = [ [[package]] name = "addr2line" -version = "0.20.0" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fa78e18c64fce05e902adecd7a5eed15a5e0a3439f7b0e169f0252214865e3" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" dependencies = [ "gimli", ] @@ -296,7 +295,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d122413f284cf2d62fb1b7db97e02edb8cda96d769b16e443a4f6195e35662b0" dependencies = [ "crypto-common", - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -349,9 +348,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.7.6" +version = "0.7.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" +checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd" dependencies = [ "getrandom 0.2.11", "once_cell", @@ -360,22 +359,23 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f" +checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" dependencies = [ "cfg-if", "const-random", "getrandom 0.2.11", "once_cell", "version_check", + "zerocopy 0.7.26", ] [[package]] name = "aho-corasick" -version = "1.0.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67fc08ce920c31afb70f013dcce1bfc3a3195de6a228474e45e1f145b36f8d04" +checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" dependencies = [ "memchr", ] @@ -424,9 +424,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.5.0" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" dependencies = [ "anstyle", "anstyle-parse", @@ -438,15 +438,15 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ed9a86bf92ae6580e0a31281f65a1b1d867c0cc68d5346e2ae128dddfa6a7d" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.0" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e765fd216e48e067936442276d1d57399e37bce53c264d6fefbe298080cb57ee" +checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" dependencies = [ "utf8parse", ] @@ -462,9 +462,9 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" dependencies = [ "anstyle", "windows-sys 0.48.0", @@ -498,7 +498,7 @@ dependencies = [ "thiserror", "typed-builder", "uuid", - "zerocopy", + "zerocopy 0.6.5", ] [[package]] @@ -527,23 +527,23 @@ checksum = "bddcadddf5e9015d310179a59bb28c4d4b9920ad0f11e8e14dbadf654890c9a6" [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" -version = "0.7.2" +version = "0.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" +checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" [[package]] name = "arrow" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fab9e93ba8ce88a37d5a30dce4b9913b75413dc1ac56cb5d72e5a840543f829" +checksum = "a8919668503a4f2d8b6da96fa7c16e93046bfb3412ffcfa1e5dc7d2e3adcb378" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow-arith", "arrow-array", "arrow-buffer", @@ -561,9 +561,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc1d4e368e87ad9ee64f28b9577a3834ce10fe2703a26b28417d485bbbdff956" +checksum = "ef983914f477d4278b068f13b3224b7d19eb2b807ac9048544d3bfebdf2554c4" dependencies = [ "arrow-array", "arrow-buffer", @@ -576,26 +576,26 @@ dependencies = [ [[package]] name = "arrow-array" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d02efa7253ede102d45a4e802a129e83bcc3f49884cab795b1ac223918e4318d" +checksum = "d6eaf89041fa5937940ae390294ece29e1db584f46d995608d6e5fe65a2e0e9b" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow-buffer", "arrow-data", "arrow-schema", "chrono", "chrono-tz", "half 2.3.1", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "num", ] [[package]] name = "arrow-buffer" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fda119225204141138cb0541c692fbfef0e875ba01bfdeaed09e9d354f9d6195" +checksum = "55512d988c6fbd76e514fd3ff537ac50b0a675da5a245e4fdad77ecfd654205f" dependencies = [ "bytes", "half 2.3.1", @@ -604,9 +604,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d825d51b9968868d50bc5af92388754056796dbc62a4e25307d588a1fc84dee" +checksum = "655ee51a2156ba5375931ce21c1b2494b1d9260e6dcdc6d4db9060c37dc3325b" dependencies = [ "arrow-array", "arrow-buffer", @@ -622,9 +622,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43ef855dc6b126dc197f43e061d4de46b9d4c033aa51c2587657f7508242cef1" +checksum = "258bb689997ad5b6660b3ce3638bd6b383d668ec555ed41ad7c6559cbb2e4f91" dependencies = [ "arrow-array", "arrow-buffer", @@ -641,9 +641,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475a4c3699c8b4095ca61cecf15da6f67841847a5f5aac983ccb9a377d02f73a" +checksum = "6dc2b9fec74763427e2e5575b8cc31ce96ba4c9b4eb05ce40e0616d9fad12461" dependencies = [ "arrow-buffer", "arrow-schema", @@ -653,9 +653,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1248005c8ac549f869b7a840859d942bf62471479c1a2d82659d453eebcd166a" +checksum = "6eaa6ab203cc6d89b7eaa1ac781c1dfeef325454c5d5a0419017f95e6bafc03c" dependencies = [ "arrow-array", "arrow-buffer", @@ -667,9 +667,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f03d7e3b04dd688ccec354fe449aed56b831679f03e44ee2c1cfc4045067b69c" +checksum = "fb64e30d9b73f66fdc5c52d5f4cf69bbf03d62f64ffeafa0715590a5320baed7" dependencies = [ "arrow-array", "arrow-buffer", @@ -678,7 +678,7 @@ dependencies = [ "arrow-schema", "chrono", "half 2.3.1", - "indexmap 2.0.0", + "indexmap 2.1.0", "lexical-core", "num", "serde", @@ -687,9 +687,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03b87aa408ea6a6300e49eb2eba0c032c88ed9dc19e0a9948489c55efdca71f4" +checksum = "f9a818951c0d11c428dda03e908175969c262629dd20bd0850bd6c7a8c3bfe48" dependencies = [ "arrow-array", "arrow-buffer", @@ -702,35 +702,35 @@ dependencies = [ [[package]] name = "arrow-row" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "114a348ab581e7c9b6908fcab23cb39ff9f060eb19e72b13f8fb8eaa37f65d22" +checksum = "a5d664318bc05f930559fc088888f0f7174d3c5bc888c0f4f9ae8f23aa398ba3" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow-array", "arrow-buffer", "arrow-data", "arrow-schema", "half 2.3.1", - "hashbrown 0.14.0", + "hashbrown 0.14.2", ] [[package]] name = "arrow-schema" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d1d179c117b158853e0101bfbed5615e86fe97ee356b4af901f1c5001e1ce4b" +checksum = "aaf4d737bba93da59f16129bec21e087aed0be84ff840e74146d4703879436cb" dependencies = [ "serde", ] [[package]] name = "arrow-select" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5c71e003202e67e9db139e5278c79f5520bb79922261dfe140e4637ee8b6108" +checksum = "374c4c3b812ecc2118727b892252a4a4308f87a8aca1dbf09f3ce4bc578e668a" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow-array", "arrow-buffer", "arrow-data", @@ -740,9 +740,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4cebbb282d6b9244895f4a9a912e55e57bce112554c7fa91fcec5459cb421ab" +checksum = "b15aed5624bb23da09142f58502b59c23f5bea607393298bb81dab1ce60fc769" dependencies = [ "arrow-array", "arrow-buffer", @@ -751,7 +751,7 @@ dependencies = [ "arrow-select", "num", "regex", - "regex-syntax 0.7.4", + "regex-syntax 0.8.2", ] [[package]] @@ -773,7 +773,7 @@ dependencies = [ "num-traits", "rusticata-macros", "thiserror", - "time 0.3.20", + "time 0.3.30", ] [[package]] @@ -782,8 +782,8 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "726535892e8eae7e70657b4c8ea93d26b8553afb1ce617caee529ef96d7dee6c" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "synstructure", ] @@ -794,8 +794,8 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2777730b2039ac0f95f093556e61b6d26cebed5393ca6f152717777cec3a42ed" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -806,17 +806,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c09c69dffe06d222d072c878c3afe86eee2179806f20503faec97250268b4c24" dependencies = [ "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] name = "async-compression" -version = "0.4.1" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b74f44609f0f91493e3082d3734d98497e094777144380ea4db9f9905dd5b6" +checksum = "bc2d0cfb2a7388d34f590e76686704c494ed7aaceed62ee1ba35cbf363abc2a5" dependencies = [ "brotli", "bzip2", @@ -827,19 +827,25 @@ dependencies = [ "pin-project-lite", "tokio", "xz2", - "zstd", - "zstd-safe", + "zstd 0.13.0", + "zstd-safe 7.0.0", ] +[[package]] +name = "async-once-cell" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9338790e78aa95a416786ec8389546c4b6a1dfc3dc36071ed9518a9413a542eb" + [[package]] name = "async-recursion" version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5fd55a5ba1179988837d24ab4c7cc8ed6efdeff578ede0416b4225a5fca35bd0" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -859,9 +865,9 @@ version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -870,19 +876,16 @@ version = "0.1.74" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "atomic" -version = "0.5.1" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b88d82667eca772c4aa12f0f1348b3ae643424c8876448f3f7bd5787032e234c" -dependencies = [ - "autocfg", -] +checksum = "c59bdb34bc650a32731b31bd8f0829cc15d24a708ee31559e0bb34f2bc320cba" [[package]] name = "atomic-polyfill" @@ -933,7 +936,7 @@ dependencies = [ "http", "hyper 0.14.27", "ring 0.16.20", - "time 0.3.20", + "time 0.3.30", "tokio", "tower", "tracing", @@ -1086,13 +1089,13 @@ dependencies = [ "bytes", "form_urlencoded", "hex", - "hmac 0.12.1", + "hmac", "http", "once_cell", "percent-encoding", "regex", - "sha2 0.10.6", - "time 0.3.20", + "sha2", + "time 0.3.30", "tracing", ] @@ -1122,10 +1125,10 @@ dependencies = [ "hex", "http", "http-body 0.4.5", - "md-5 0.10.5", + "md-5", "pin-project-lite", "sha1", - "sha2 0.10.6", + "sha2", "tracing", ] @@ -1144,10 +1147,10 @@ dependencies = [ "http", "http-body 0.4.5", "hyper 0.14.27", - "hyper-rustls 0.24.1", + "hyper-rustls", "lazy_static", "pin-project-lite", - "rustls 0.21.7", + "rustls 0.21.9", "tokio", "tower", "tracing", @@ -1183,7 +1186,7 @@ dependencies = [ "pin-project-lite", "pin-utils", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "tracing", ] @@ -1270,7 +1273,7 @@ dependencies = [ "num-integer", "ryu", "serde", - "time 0.3.20", + "time 0.3.30", ] [[package]] @@ -1300,9 +1303,9 @@ dependencies = [ [[package]] name = "axum" -version = "0.6.11" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13d8068b6ccb8b34db9de397c7043f91db8b4c66414952c6db944f238c4d3db3" +checksum = "3b829e4e32b91e643de6eafe82b1d90675f5874230191a4ffbc1b336dec4d6bf" dependencies = [ "async-trait", "axum-core", @@ -1328,9 +1331,9 @@ dependencies = [ [[package]] name = "axum-core" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2f958c80c248b34b9a877a643811be8dbca03ca5ba827f2b63baf3a81e5fc4e" +checksum = "759fa577a247914fd3f7f76d62972792636412fbfd634cd452f6a385a74d2d2c" dependencies = [ "async-trait", "bytes", @@ -1345,9 +1348,9 @@ dependencies = [ [[package]] name = "backtrace" -version = "0.3.68" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4319208da049c43661739c5fade2ba182f09d1dc2299b32298d3a31692b17e12" +checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" dependencies = [ "addr2line", "cc", @@ -1378,9 +1381,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.0" +version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4a4ddaa51a5bc52a6948f74c06d20aaaddb71924eab79b8c97a8c556e942d6a" +checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" [[package]] name = "base64-simd" @@ -1466,13 +1469,33 @@ dependencies = [ "lazy_static", "lazycell", "peeking_take_while", - "prettyplease 0.2.12", - "proc-macro2 1.0.63", - "quote 1.0.30", + "prettyplease 0.2.15", + "proc-macro2 1.0.69", + "quote 1.0.33", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.39", +] + +[[package]] +name = "bindgen" +version = "0.69.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ffcebc3849946a7170a05992aac39da343a90676ab392c51a4280981d6379c2" +dependencies = [ + "bitflags 2.4.1", + "cexpr", + "clang-sys", + "lazy_static", + "lazycell", + "peeking_take_while", + "proc-macro2 1.0.69", + "quote 1.0.33", "regex", "rustc-hash", "shlex", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -1498,9 +1521,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" [[package]] name = "bitvec" @@ -1537,16 +1560,15 @@ dependencies = [ [[package]] name = "blake3" -version = "1.3.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42ae2468a89544a466886840aa467a25b766499f4f04bf7d9fcd10ecee9fccef" +checksum = "0231f06152bf547e9c2b5194f247cd97aacf6dcd8b15d8e5ec0663f64580da87" dependencies = [ "arrayref", "arrayvec", "cc", "cfg-if", "constant_time_eq", - "digest 0.10.7", ] [[package]] @@ -1556,7 +1578,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" dependencies = [ "block-padding 0.2.1", - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -1565,7 +1587,7 @@ version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -1580,59 +1602,38 @@ version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8894febbff9f758034a5b8e12d87918f56dfc64a8e1fe757d65e29041538d93" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] name = "borsh" -version = "0.10.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40f9ca3698b2e4cb7c15571db0abc5551dca417a21ae8140460b50309bb2cc62" +checksum = "bf617fabf5cdbdc92f774bfe5062d870f228b80056d41180797abf48bed4056e" dependencies = [ "borsh-derive", - "hashbrown 0.13.2", + "cfg_aliases", ] [[package]] name = "borsh-derive" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "598b3eacc6db9c3ee57b22707ad8f6a8d2f6d442bfe24ffeb8cbb70ca59e6a35" -dependencies = [ - "borsh-derive-internal", - "borsh-schema-derive-internal", - "proc-macro-crate 0.1.5", - "proc-macro2 1.0.63", - "syn 1.0.109", -] - -[[package]] -name = "borsh-derive-internal" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "186b734fa1c9f6743e90c95d7233c9faab6360d1a96d4ffa19d9cfd1e9350f8a" -dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", -] - -[[package]] -name = "borsh-schema-derive-internal" -version = "0.10.2" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99b7ff1008316626f485991b960ade129253d4034014616b94f309a15366cc49" +checksum = "f404657a7ea7b5249e36808dff544bc88a28f26e0ac40009f674b7a009d14be3" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", + "once_cell", + "proc-macro-crate 2.0.0", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", + "syn_derive", ] [[package]] name = "brotli" -version = "3.3.4" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1a0b1dbcc8ae29329621f8d4f0d835787c1c38bb1401979b49d13b0b305ff68" +checksum = "516074a47ef4bce09577a3b379392300159ce5b1ba2e501ff1c819950066100f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1641,9 +1642,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "2.3.4" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b6561fd3f895a11e8f72af2cb7d22e08366bebc2b6b57f7744c4bda27034744" +checksum = "4e2e4afe60d7dd600fdd3de8d0f08c2b7ec039712e3b6137ff98b7004e82de4f" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1655,7 +1656,7 @@ version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58da0ae1e701ea752cc46c1bb9f39d5ecefc7395c3ecd526261a566d4f16e0c2" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "base64 0.13.1", "bitvec 1.0.1", "hex", @@ -1666,7 +1667,7 @@ dependencies = [ "serde", "serde_bytes", "serde_json", - "time 0.3.20", + "time 0.3.30", "uuid", ] @@ -1699,34 +1700,34 @@ version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7ec4c6f261935ad534c0c22dbef2201b45918860eb1c574b972bd213a76af61" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "bytemuck" -version = "1.13.1" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17febce684fd15d89027105661fec94afb475cb995fbc59d2865198446ba2eea" +checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89b2fd2a0dcf38d7971e2194b6b6eebab45ae01067456a7fd93d5547a61b70be" +checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" [[package]] name = "bytes-utils" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e47d3a8076e283f3acd27400535992edb3ba4b5bb72f8891ad8fbe7932a7d4b9" +checksum = "7dafe3a8757b027e2be6e4e5601ed563c55989fcf1546e933c66c8eb3a058d35" dependencies = [ "bytes", "either", @@ -1734,9 +1735,9 @@ dependencies = [ [[package]] name = "bytestring" -version = "1.3.0" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238e4886760d98c4f899360c834fa93e62cf7f721ac3c2da375cbdf4b8679aae" +checksum = "74d80203ea6b29df88012294f62733de21cfeab47f17b41af3a38bc30a03ee72" dependencies = [ "bytes", ] @@ -1820,6 +1821,12 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "cfg_aliases" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" + [[package]] name = "chrono" version = "0.4.31" @@ -1833,36 +1840,36 @@ dependencies = [ "num-traits", "serde", "wasm-bindgen", - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] name = "chrono-tz" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1369bc6b9e9a7dfdae2055f6ec151fe9c554a9d23d357c0237cee2e25eaabb7" +checksum = "e23185c0e21df6ed832a12e2bda87c7d1def6842881fb634a8511ced741b0d76" dependencies = [ "chrono", "chrono-tz-build", - "phf 0.11.1", + "phf 0.11.2", ] [[package]] name = "chrono-tz-build" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2f5ebdc942f57ed96d560a6d1a459bae5851102a25d5bf89dc04ae453e31ecf" +checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" dependencies = [ "parse-zoneinfo", - "phf 0.11.1", + "phf 0.11.2", "phf_codegen", ] [[package]] name = "ciborium" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f" +checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" dependencies = [ "ciborium-io", "ciborium-ll", @@ -1871,15 +1878,15 @@ dependencies = [ [[package]] name = "ciborium-io" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369" +checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" [[package]] name = "ciborium-ll" -version = "0.2.0" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b" +checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" dependencies = [ "ciborium-io", "half 1.8.2", @@ -1908,9 +1915,9 @@ dependencies = [ [[package]] name = "clap" -version = "3.2.23" +version = "3.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5" +checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" dependencies = [ "bitflags 1.3.2", "clap_lex 0.2.4", @@ -1920,37 +1927,36 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.1" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c8d502cbaec4595d2e7d5f61e318f05417bd2b66fdc3809498f0d3fdf0bea27" +checksum = "2275f18819641850fa26c89acc84d465c1bf91ce57bc2748b28c420473352f64" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.4.1" +version = "4.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5891c7bc0edb3e1c2204fc5e94009affabeb1821c9e5fdc3959536c5c0bb984d" +checksum = "07cdf1b148b25c1e1f7a42225e30a0d99a615cd4637eae7365548dd4529b95bc" dependencies = [ "anstream", "anstyle", - "clap_lex 0.5.0", + "clap_lex 0.6.0", "strsim", ] [[package]] name = "clap_derive" -version = "4.4.0" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -1964,9 +1970,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2da6da31387c7e4ef160ffab6d5e7f00c42626fe39aea70a7b0f1773f7dd6c1b" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "clipboard-win" @@ -1988,16 +1994,6 @@ dependencies = [ "cc", ] -[[package]] -name = "codespan-reporting" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" -dependencies = [ - "termcolor", - "unicode-width", -] - [[package]] name = "colorchoice" version = "1.0.0" @@ -2016,26 +2012,26 @@ dependencies = [ [[package]] name = "comfy-table" -version = "7.0.1" +version = "7.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ab77dbd8adecaf3f0db40581631b995f312a8a5ae3aa9993188bb8f23d83a5b" +checksum = "7c64043d6c7b7a4c58e39e7efccfdea7b93d885a795d0c054a69dbbf4dd52686" dependencies = [ - "strum 0.24.1", - "strum_macros 0.24.3", + "strum 0.25.0", + "strum_macros 0.25.3", "unicode-width", ] [[package]] name = "console" -version = "0.15.5" +version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3d79fbe8970a77e3e34151cc13d3b3e248aa0faaecb9f6091fa07ebefe5ad60" +checksum = "c926e00cc70edefdc64d3a5ff31cc65bb97a3460097762bd23afb4d8145fccf8" dependencies = [ "encode_unicode 0.3.6", "lazy_static", "libc", "unicode-width", - "windows-sys 0.42.0", + "windows-sys 0.45.0", ] [[package]] @@ -2045,9 +2041,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd326812b3fd01da5bb1af7d340d0d555fd3d4b641e7f1dfcf5962a902952787" dependencies = [ "futures-core", - "prost 0.12.2", - "prost-types 0.12.0", - "tonic 0.10.0", + "prost 0.12.3", + "prost-types 0.12.3", + "tonic 0.10.2", "tracing-core", ] @@ -2063,13 +2059,13 @@ dependencies = [ "futures-task", "hdrhistogram", "humantime", - "prost-types 0.12.0", + "prost-types 0.12.3", "serde", "serde_json", "thread_local", "tokio", "tokio-stream", - "tonic 0.10.0", + "tonic 0.10.2", "tracing", "tracing-core", "tracing-subscriber", @@ -2093,31 +2089,29 @@ checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "const-random" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "368a7a772ead6ce7e1de82bfb04c485f3db8ec744f72925af5735e29a22cc18e" +checksum = "5aaf16c9c2c612020bcfd042e170f6e32de9b9d75adb5277cdbbd2e2c8c8299a" dependencies = [ "const-random-macro", - "proc-macro-hack", ] [[package]] name = "const-random-macro" -version = "0.1.15" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d7d6ab3c3a2282db210df5f02c4dab6e0a7057af0fb7ebd4070f30fe05c0ddb" +checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ "getrandom 0.2.11", "once_cell", - "proc-macro-hack", "tiny-keccak", ] [[package]] name = "constant_time_eq" -version = "0.2.4" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ad85c1f65dc7b37604eb0e89748faf0b9653065f2a8ef69f96a687ec1e9279" +checksum = "f7144d30dcf0fafbce74250a3963025d8d52177934239851c917d29f1df280c2" [[package]] name = "convert_case" @@ -2132,23 +2126,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e859cd57d0710d9e06c381b550c06e76992472a8c6d527aecd2fc673dcc231fb" dependencies = [ "percent-encoding", - "time 0.3.20", + "time 0.3.30", "version_check", ] [[package]] name = "cookie_store" -version = "0.16.1" +version = "0.16.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e4b6aa369f41f5faa04bb80c9b1f4216ea81646ed6124d76ba5c49a7aafd9cd" +checksum = "d606d0fba62e13cf04db20536c05cb7f13673c161cb47a47a82b9b9e7d3f1daa" dependencies = [ "cookie", "idna 0.2.3", "log", "publicsuffix", "serde", + "serde_derive", "serde_json", - "time 0.3.20", + "time 0.3.30", "url", ] @@ -2164,24 +2159,24 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" dependencies = [ "libc", ] [[package]] name = "crc32c" -version = "0.6.3" +version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dfea2db42e9927a3845fb268a10a72faed6d416065f77873f05e411457c363e" +checksum = "d8f48d60e5b4d2c53d5c2b1d8a58c849a70ae5e5509b08a48d047e3b65714a74" dependencies = [ "rustc_version 0.4.0", ] @@ -2205,7 +2200,7 @@ dependencies = [ "atty", "cast", "ciborium", - "clap 3.2.23", + "clap 3.2.25", "criterion-plot", "itertools 0.10.5", "lazy_static", @@ -2233,9 +2228,9 @@ dependencies = [ [[package]] name = "critical-section" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6548a0ad5d2549e111e1f6a11a6c2e2d00ce6a3dafe22948d67c2b443f775e52" +checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" [[package]] name = "crossbeam" @@ -2253,9 +2248,9 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.7" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c" +checksum = "a33c2bf77f2df06183c3aa30d1e96c0695a313d4f9c453cc3762a6db39f99200" dependencies = [ "cfg-if", "crossbeam-utils", @@ -2274,14 +2269,14 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.14" +version = "0.9.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695" +checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", - "memoffset 0.8.0", + "memoffset 0.9.0", "scopeguard", ] @@ -2297,9 +2292,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b" +checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" dependencies = [ "cfg-if", ] @@ -2316,7 +2311,7 @@ version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "rand_core 0.6.4", "subtle", "zeroize", @@ -2324,11 +2319,11 @@ dependencies = [ [[package]] name = "crypto-bigint" -version = "0.5.3" +version = "0.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "740fe28e594155f10cfc383984cbefd529d7396050557148f79cb0f621204124" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "rand_core 0.6.4", "subtle", "zeroize", @@ -2340,26 +2335,16 @@ version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", "rand_core 0.6.4", "typenum", ] -[[package]] -name = "crypto-mac" -version = "0.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1d1a86f49236c215f271d40892d5fc950490551400b02ef360692c29815c714" -dependencies = [ - "generic-array 0.14.6", - "subtle", -] - [[package]] name = "csv" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b015497079b9a9d69c02ad25de6c0a6edef051ea6360a327d0bd05802ef64ad" +checksum = "ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe" dependencies = [ "csv-core", "itoa", @@ -2369,22 +2354,13 @@ dependencies = [ [[package]] name = "csv-core" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b2466559f260f48ad25fe6317b3c8dac77b5bdb5763ac7d9d6103530663bc90" +checksum = "5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70" dependencies = [ "memchr", ] -[[package]] -name = "ct-logs" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1a816186fa68d9e426e3cb4ae4dff1fcd8e4a2c34b781bf7a822574a0d0aac8" -dependencies = [ - "sct 0.6.1", -] - [[package]] name = "ctr" version = "0.9.2" @@ -2425,57 +2401,13 @@ dependencies = [ [[package]] name = "curve25519-dalek-derive" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83fdaf97f4804dcebfa5862639bc9ce4121e82140bec2a987ac5140294865b5b" -dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", -] - -[[package]] -name = "cxx" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a140f260e6f3f79013b8bfc65e7ce630c9ab4388c6a89c71e07226f49487b72" -dependencies = [ - "cc", - "cxxbridge-flags", - "cxxbridge-macro", - "link-cplusplus", -] - -[[package]] -name = "cxx-build" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da6383f459341ea689374bf0a42979739dc421874f112ff26f829b8040b8e613" -dependencies = [ - "cc", - "codespan-reporting", - "once_cell", - "proc-macro2 1.0.63", - "quote 1.0.30", - "scratch", - "syn 1.0.109", -] - -[[package]] -name = "cxxbridge-flags" -version = "1.0.92" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90201c1a650e95ccff1c8c0bb5a343213bdd317c6e600a93075bca2eff54ec97" - -[[package]] -name = "cxxbridge-macro" -version = "1.0.92" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b75aed41bb2e6367cae39e6326ef817a851db13c13e4f3263714ca3cfb8de56" +checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -2483,7 +2415,7 @@ name = "daggy" version = "0.8.0" source = "git+https://github.com/getdozer/daggy?branch=feat/try_map#4ff8ebbdba979ecd7f638b6636c33ec9c0d27ccc" dependencies = [ - "petgraph 0.6.3 (git+https://github.com/getdozer/petgraph?branch=feat/try_map)", + "petgraph 0.6.3", "serde", ] @@ -2515,8 +2447,8 @@ checksum = "859d65a907b6852c9361e3185c862aae7fafd2887876799fa55f5f99dc40d610" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "strsim", "syn 1.0.109", ] @@ -2529,10 +2461,10 @@ checksum = "177e3443818124b357d8e76f53be906d60937f0d3a90773a664fa63fa253e621" dependencies = [ "fnv", "ident_case", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "strsim", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -2542,7 +2474,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c972679f83bdf9c42bd905396b6c3588a843a17f0f16dfcfa3e2c5d57441835" dependencies = [ "darling_core 0.13.4", - "quote 1.0.30", + "quote 1.0.33", "syn 1.0.109", ] @@ -2553,8 +2485,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5" dependencies = [ "darling_core 0.20.3", - "quote 1.0.30", - "syn 2.0.29", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -2569,12 +2501,12 @@ dependencies = [ [[package]] name = "dashmap" -version = "5.4.0" +version = "5.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "907076dfda823b0b36d2a1bb5f90c96660a5bbcd7729e10727f07858f22c4edc" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" dependencies = [ "cfg-if", - "hashbrown 0.12.3", + "hashbrown 0.14.2", "lock_api", "once_cell", "parking_lot_core", @@ -2582,9 +2514,9 @@ dependencies = [ [[package]] name = "data-encoding" -version = "2.3.3" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d8666cb01533c39dde32bcbab8e227b4ed6679b2c925eba05feabea39508fb" +checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "data-url" @@ -2594,11 +2526,10 @@ checksum = "41b319d1b62ffbd002e057f36bebd1f42b9f97927c9577461d855f3513c4289f" [[package]] name = "datafusion" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7014432223f4d721cb9786cd88bb89e7464e0ba984d4a7f49db7787f5f268674" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow", "arrow-array", "arrow-schema", @@ -2607,7 +2538,7 @@ dependencies = [ "bytes", "bzip2", "chrono", - "dashmap 5.4.0", + "dashmap 5.5.3", "datafusion-common", "datafusion-execution", "datafusion-expr", @@ -2619,34 +2550,32 @@ dependencies = [ "futures", "glob", "half 2.3.1", - "hashbrown 0.14.0", - "indexmap 2.0.0", + "hashbrown 0.14.2", + "indexmap 2.1.0", "itertools 0.11.0", "log", "num_cpus", "object_store", "parking_lot", "parquet", - "percent-encoding", "pin-project-lite", "rand 0.8.5", - "sqlparser 0.38.0", + "sqlparser 0.39.0", "tempfile", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "url", "uuid", "xz2", - "zstd", + "zstd 0.13.0", ] [[package]] name = "datafusion-common" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb3903ed8f102892f17b48efa437f3542159241d41c564f0d1e78efdc5e663aa" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow", "arrow-array", "arrow-buffer", @@ -2656,22 +2585,21 @@ dependencies = [ "num_cpus", "object_store", "parquet", - "sqlparser 0.38.0", + "sqlparser 0.39.0", ] [[package]] name = "datafusion-execution" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "780b73b2407050e53f51a9781868593f694102c59e622de9a8aafc0343c4f237" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ "arrow", "chrono", - "dashmap 5.4.0", + "dashmap 5.5.3", "datafusion-common", "datafusion-expr", "futures", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "log", "object_store", "parking_lot", @@ -2682,24 +2610,22 @@ dependencies = [ [[package]] name = "datafusion-expr" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24c382676338d8caba6c027ba0da47260f65ffedab38fda78f6d8043f607557c" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow", "arrow-array", "datafusion-common", - "sqlparser 0.38.0", + "sqlparser 0.39.0", "strum 0.25.0", - "strum_macros 0.25.1", + "strum_macros 0.25.3", ] [[package]] name = "datafusion-optimizer" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f2904a432f795484fd45e29ded4537152adb60f636c05691db34fcd94c92c96" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ "arrow", "async-trait", @@ -2707,53 +2633,52 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datafusion-physical-expr", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "itertools 0.11.0", "log", - "regex-syntax 0.7.4", + "regex-syntax 0.8.2", ] [[package]] name = "datafusion-physical-expr" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57b4968e9a998dc0476c4db7a82f280e2026b25f464e4aa0c3bb9807ee63ddfd" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow", "arrow-array", "arrow-buffer", + "arrow-ord", "arrow-schema", - "base64 0.21.0", + "base64 0.21.5", "blake2", "blake3", "chrono", "datafusion-common", "datafusion-expr", "half 2.3.1", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "hex", - "indexmap 2.0.0", + "indexmap 2.1.0", "itertools 0.11.0", "libc", "log", - "md-5 0.10.5", + "md-5", "paste", - "petgraph 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.6.4", "rand 0.8.5", "regex", - "sha2 0.10.6", + "sha2", "unicode-segmentation", "uuid", ] [[package]] name = "datafusion-physical-plan" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd0d1fe54e37a47a2d58a1232c22786f2c28ad35805fdcd08f0253a8b0aaa90" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow", "arrow-array", "arrow-buffer", @@ -2766,8 +2691,8 @@ dependencies = [ "datafusion-physical-expr", "futures", "half 2.3.1", - "hashbrown 0.14.0", - "indexmap 2.0.0", + "hashbrown 0.14.2", + "indexmap 2.1.0", "itertools 0.11.0", "log", "once_cell", @@ -2780,9 +2705,8 @@ dependencies = [ [[package]] name = "datafusion-proto" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca1db9605e1f545b852fa9dd05f03339b333c9f2814a4e33b9ac7e9e586a1014" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ "arrow", "chrono", @@ -2790,21 +2714,20 @@ dependencies = [ "datafusion-common", "datafusion-expr", "object_store", - "prost 0.12.2", + "prost 0.12.3", ] [[package]] name = "datafusion-sql" -version = "32.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b568d44c87ead99604d704f942e257c8a236ee1bbf890ee3e034ad659dcb2c21" +version = "33.0.0" +source = "git+https://github.com/getdozer/arrow-datafusion#c3e381599c7938d1053cb10a600991169246f4a4" dependencies = [ "arrow", "arrow-schema", "datafusion-common", "datafusion-expr", "log", - "sqlparser 0.38.0", + "sqlparser 0.39.0", ] [[package]] @@ -2819,9 +2742,16 @@ dependencies = [ [[package]] name = "deltalake" -version = "0.16.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb694b21358cfa35ec1ccf9443269d6e21a9afba5e942dceb50019748271e811" +version = "0.17.0" +source = "git+https://github.com/delta-io/delta-rs?rev=72505449e9538371fe5fda35d545dbd662facd07#72505449e9538371fe5fda35d545dbd662facd07" +dependencies = [ + "deltalake-core", +] + +[[package]] +name = "deltalake-core" +version = "0.17.0" +source = "git+https://github.com/delta-io/delta-rs?rev=72505449e9538371fe5fda35d545dbd662facd07#72505449e9538371fe5fda35d545dbd662facd07" dependencies = [ "arrow", "arrow-array", @@ -2835,15 +2765,16 @@ dependencies = [ "bytes", "cfg-if", "chrono", - "dashmap 5.4.0", + "dashmap 5.5.3", "datafusion", "datafusion-common", "datafusion-expr", "datafusion-physical-expr", "datafusion-proto", "datafusion-sql", - "dynamodb_lock", - "errno 0.3.1", + "either", + "errno 0.3.7", + "fix-hidden-lifetime-bug", "futures", "itertools 0.11.0", "lazy_static", @@ -2859,17 +2790,15 @@ dependencies = [ "percent-encoding", "rand 0.8.5", "regex", - "rusoto_core", - "rusoto_credential", - "rusoto_dynamodb", - "rusoto_sts", + "roaring", "serde", "serde_json", - "sqlparser 0.38.0", + "sqlparser 0.39.0", "thiserror", "tokio", "url", "uuid", + "z85", ] [[package]] @@ -2879,8 +2808,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c65c2ffdafc1564565200967edc4851c7b55422d3913466688907efd05ea26f" dependencies = [ "deno-proc-macro-rules-macros", - "proc-macro2 1.0.63", - "syn 2.0.29", + "proc-macro2 1.0.69", + "syn 2.0.39", ] [[package]] @@ -2890,9 +2819,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3047b312b7451e3190865713a4dd6e1f821aed614ada219766ebc3024a690435" dependencies = [ "once_cell", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -2953,7 +2882,7 @@ dependencies = [ "deno_core", "rusqlite", "serde", - "sha2 0.10.6", + "sha2", "tokio", ] @@ -2965,7 +2894,7 @@ checksum = "99adf95f338a080bc159a2a0a41bed6204fb122920f6dbfed1f01de2bd9553ef" dependencies = [ "anyhow", "deno_media_type", - "indexmap 2.0.0", + "indexmap 2.1.0", "log", "once_cell", "parking_lot", @@ -2996,7 +2925,7 @@ dependencies = [ "deno_ops", "deno_unsync 0.3.0", "futures", - "indexmap 2.0.0", + "indexmap 2.1.0", "libc", "log", "once_cell", @@ -3006,7 +2935,7 @@ dependencies = [ "serde_json", "serde_v8", "smallvec", - "sourcemap 7.0.0", + "sourcemap 7.0.1", "tokio", "url", "v8", @@ -3040,7 +2969,7 @@ dependencies = [ "serde", "serde_bytes", "sha1", - "sha2 0.10.6", + "sha2", "signature 1.6.4", "spki 0.6.0", "tokio", @@ -3063,7 +2992,7 @@ dependencies = [ "reqwest", "serde", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", ] [[package]] @@ -3138,7 +3067,7 @@ dependencies = [ "smallvec", "thiserror", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", ] [[package]] @@ -3244,18 +3173,18 @@ dependencies = [ "digest 0.10.7", "dsa", "ecb", - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.8", "errno 0.2.8", "h2", "hex", "hkdf", "http", "idna 0.3.0", - "indexmap 2.0.0", + "indexmap 2.1.0", "lazy-regex", "libc", "libz-sys", - "md-5 0.10.5", + "md-5", "md4", "num-bigint", "num-bigint-dig", @@ -3277,7 +3206,7 @@ dependencies = [ "secp256k1 0.27.0", "serde", "sha-1 0.10.0", - "sha2 0.10.6", + "sha2", "signature 1.6.4", "tokio", "typenum", @@ -3299,12 +3228,12 @@ dependencies = [ "once_cell", "pmutil", "proc-macro-crate 1.3.1", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "regex", "strum 0.25.0", - "strum_macros 0.25.1", - "syn 2.0.29", + "strum_macros 0.25.3", + "syn 2.0.39", "thiserror", ] @@ -3372,12 +3301,12 @@ checksum = "127aa913635496873135691c34e54e058c0d3d8565a601c0422e5b1ab3c8447c" dependencies = [ "deno_core", "once_cell", - "rustls 0.21.7", - "rustls-native-certs 0.6.3", + "rustls 0.21.9", + "rustls-native-certs", "rustls-pemfile", - "rustls-webpki 0.101.5", + "rustls-webpki 0.101.7", "serde", - "webpki-roots 0.25.2", + "webpki-roots 0.25.3", ] [[package]] @@ -3453,7 +3382,7 @@ dependencies = [ "once_cell", "serde", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", ] [[package]] @@ -3504,14 +3433,23 @@ dependencies = [ "rusticata-macros", ] +[[package]] +name = "deranged" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f32d04922c60427da6f9fef14d042d9edddef64cb9d4ce0d64d0685fbeb1fd3" +dependencies = [ + "powerfmt", +] + [[package]] name = "derivative" version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -3521,8 +3459,8 @@ version = "0.5.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3418329ca0ad70234b9735dc4ceed10af4df60eff9c8e7b06cb5e520d92c3535" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -3532,9 +3470,9 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "67e77553c4162a157adbf834ebae5b415acbecbeafc7a74b0e886657506a7611" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -3544,8 +3482,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "rustc_version 0.4.0", "syn 1.0.109", ] @@ -3565,7 +3503,7 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" dependencies = [ - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -3607,9 +3545,9 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -3651,6 +3589,7 @@ dependencies = [ "actix-web", "actix-web-httpauth", "arc-swap", + "async-once-cell", "async-stream", "async-trait", "bytes", @@ -3661,7 +3600,9 @@ dependencies = [ "dozer-core", "dozer-tracing", "dozer-types", + "futures-sink", "futures-util", + "genawaiter", "gethostname", "handlebars", "http", @@ -3672,7 +3613,8 @@ dependencies = [ "openapiv3", "pgwire", "pin-project", - "prost-build 0.12.0", + "postgres-types", + "prost-build 0.12.3", "prost-reflect", "serde_json", "tempdir", @@ -3691,9 +3633,9 @@ dependencies = [ name = "dozer-cache" version = "0.3.0" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "bincode", - "clap 4.4.1", + "clap 4.4.8", "criterion", "dozer-log", "dozer-storage", @@ -3718,7 +3660,7 @@ version = "0.3.0" dependencies = [ "actix-files", "atty", - "clap 4.4.1", + "clap 4.4.8", "dozer-api", "dozer-cache", "dozer-core", @@ -3734,7 +3676,7 @@ dependencies = [ "handlebars", "include_dir", "metrics", - "notify 6.0.1", + "notify 6.1.1", "notify-debouncer-full", "page_size", "prometheus-parse", @@ -3745,7 +3687,7 @@ dependencies = [ "tempfile", "tokio", "tokio-stream", - "tonic 0.10.0", + "tonic 0.10.2", "tower", "uuid", "webbrowser", @@ -3876,7 +3818,7 @@ dependencies = [ name = "dozer-ingestion-kafka" version = "0.3.0" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "dozer-ingestion-connector", "rdkafka", "schema_registry_converter", @@ -3909,7 +3851,7 @@ dependencies = [ name = "dozer-ingestion-object-store" version = "0.3.0" dependencies = [ - "deltalake", + "datafusion", "dozer-ingestion-connector", "object_store", "url", @@ -3924,8 +3866,8 @@ dependencies = [ "postgres-types", "rand 0.8.5", "regex", - "rustls 0.21.7", - "rustls-native-certs 0.6.3", + "rustls 0.21.9", + "rustls-native-certs", "serial_test 1.0.0", "tokio-postgres", "tokio-postgres-rustls", @@ -3964,7 +3906,7 @@ dependencies = [ "aws-smithy-types", "bincode", "camino", - "clap 4.4.1", + "clap 4.4.8", "dozer-types", "dyn-clone", "env_logger", @@ -3974,7 +3916,7 @@ dependencies = [ "tempdir", "tokio", "tokio-stream", - "tokio-util 0.7.8", + "tokio-util 0.7.10", ] [[package]] @@ -4009,7 +3951,7 @@ dependencies = [ name = "dozer-sql" version = "0.3.0" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "bincode", "dozer-core", "dozer-recordstore", @@ -4020,7 +3962,7 @@ dependencies = [ "enum_dispatch", "linked-hash-map", "metrics", - "multimap 0.9.0", + "multimap 0.9.1", "proptest", "regex", "tempdir", @@ -4065,10 +4007,10 @@ dependencies = [ name = "dozer-tests" version = "0.3.0" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "async-trait", "bson", - "clap 4.4.1", + "clap 4.4.8", "crossbeam", "csv", "dozer-api", @@ -4084,7 +4026,7 @@ dependencies = [ "futures", "libtest-mimic", "mongodb", - "multimap 0.9.0", + "multimap 0.9.1", "reqwest", "rusqlite", "sqllogictest", @@ -4116,7 +4058,7 @@ dependencies = [ name = "dozer-types" version = "0.3.0" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arbitrary", "arrow", "arrow-cast", @@ -4126,14 +4068,14 @@ dependencies = [ "chrono", "geo", "ijson", - "indexmap 2.0.0", + "indexmap 1.9.3", "indicatif", "log", - "ordered-float 3.9.1", + "ordered-float 3.9.2", "parking_lot", "prettytable-rs", - "prost 0.12.2", - "prost-types 0.12.0", + "prost 0.12.3", + "prost-types 0.12.3", "pyo3", "regex", "rmp-serde", @@ -4145,7 +4087,7 @@ dependencies = [ "serde_yaml", "thiserror", "tokio-postgres", - "tonic 0.10.0", + "tonic 0.10.2", "tonic-build", "tracing", ] @@ -4175,41 +4117,25 @@ dependencies = [ [[package]] name = "dsa" -version = "0.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5638f6d17447bc0ffc46354949ee366847e83450e2a07895862942085cc9761" +checksum = "d88afbb2443ba68ef8593de497e830b2e276434e1408f85cd760b1107b44ead0" dependencies = [ "digest 0.10.7", "num-bigint-dig", "num-traits", "pkcs8 0.10.2", "rfc6979 0.4.0", - "sha2 0.10.6", - "signature 2.1.0", + "sha2", + "signature 2.2.0", "zeroize", ] [[package]] name = "dyn-clone" -version = "1.0.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d2f3407d9a573d666de4b5bdf10569d73ca9478087346697dcbae6244bfbcd" - -[[package]] -name = "dynamodb_lock" -version = "0.6.1" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c4242838952a07117a4444cdf59fdcb47f181525f2dd6ae4ca6281954d09c77" -dependencies = [ - "async-trait", - "log", - "maplit", - "rusoto_core", - "rusoto_dynamodb", - "thiserror", - "tokio", - "uuid", -] +checksum = "545b22097d44f8a9581187cdf93de7a71e4722bf51200cfaba810865b49a495d" [[package]] name = "dynasm" @@ -4221,8 +4147,8 @@ dependencies = [ "byteorder", "lazy_static", "proc-macro-error 1.0.4", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -4239,11 +4165,11 @@ dependencies = [ [[package]] name = "earcutr" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0812b44697951d35fde8fcb0da81c9de7e809e825a66bbf1ecb79d9829d4ca3d" +checksum = "79127ed59a85d7687c409e9978547cffb7dc79675355ed22da6b66fd5f6ead01" dependencies = [ - "itertools 0.10.5", + "itertools 0.11.0", "num-traits", ] @@ -4270,35 +4196,35 @@ dependencies = [ [[package]] name = "ecdsa" -version = "0.16.8" +version = "0.16.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4b1e0c257a9e9f25f90ff76d7a68360ed497ee519c8e428d1825ef0000799d4" +checksum = "ee27f32b5c5292967d2d4a9d7f1e0b0aed2c15daded5a60300e4abb9d8020bca" dependencies = [ "der 0.7.8", "digest 0.10.7", - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.8", "rfc6979 0.4.0", - "signature 2.1.0", + "signature 2.2.0", "spki 0.7.2", ] [[package]] name = "educe" -version = "0.4.22" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "079044df30bb07de7d846d41a184c4b00e66ebdac93ee459253474f3a47e50ae" +checksum = "0f0042ff8246a363dbe77d2ceedb073339e85a804b9a47636c6e016a9a32c05f" dependencies = [ "enum-ordinalize", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "either" -version = "1.8.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91" +checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" [[package]] name = "elliptic-curve" @@ -4311,7 +4237,7 @@ dependencies = [ "der 0.6.1", "digest 0.10.7", "ff 0.12.1", - "generic-array 0.14.6", + "generic-array 0.14.7", "group 0.12.1", "hkdf", "pem-rfc7468 0.6.0", @@ -4324,21 +4250,21 @@ dependencies = [ [[package]] name = "elliptic-curve" -version = "0.13.6" +version = "0.13.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d97ca172ae9dc9f9b779a6e3a65d308f2af74e5b8c921299075bdb4a0370e914" +checksum = "b5e6043086bf7973472e0c7dff2142ea0b680d30e18d9cc40f267efbf222bd47" dependencies = [ "base16ct 0.2.0", - "crypto-bigint 0.5.3", + "crypto-bigint 0.5.5", "digest 0.10.7", "ff 0.13.0", - "generic-array 0.14.6", + "generic-array 0.14.7", "group 0.13.0", "hkdf", "pem-rfc7468 0.7.0", "pkcs8 0.10.2", "rand_core 0.6.4", - "sec1 0.7.1", + "sec1 0.7.3", "subtle", "zeroize", ] @@ -4377,8 +4303,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21cdad81446a7f7dc43f6a77409efeb9733d2fa65553efef6018ef257c959b73" dependencies = [ "heck", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -4389,23 +4315,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9720bba047d567ffc8a3cba48bf19126600e249ab7f128e9233e6376976a116" dependencies = [ "heck", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "enum-ordinalize" -version = "3.1.12" +version = "3.1.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bb1df8b45ecb7ffa78dca1c17a438fb193eb083db0b1b494d2a61bcb5096a" +checksum = "1bf1fa3f06bbff1ea5b1a9c7b14aa992a39657db60a2759457328d7e058f49ee" dependencies = [ "num-bigint", "num-traits", - "proc-macro2 1.0.63", - "quote 1.0.30", - "rustc_version 0.4.0", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -4415,16 +4340,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f33313078bb8d4d05a2733a94ac4c2d8a0df9a2b84424ebf4f33bfc224a890e" dependencies = [ "once_cell", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "env_logger" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85cdab6a89accf66733ad5a1693a4dcced6aeff64602b634530dd73c1f3ee9f0" +checksum = "95b3f3e67048839cb0d0781f445682a35113da7121f7c949db0e2be96a4fbece" dependencies = [ "humantime", "is-terminal", @@ -4452,11 +4377,10 @@ dependencies = [ [[package]] name = "errno" -version = "0.3.1" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bcfec3a70f97c962c307b2d2c56e358cf1d00b558d74262b5f929ee8cc7e73a" +checksum = "f258a7194e7f7c2a7837a8913aeab7fd8c383457034fa20ce4dd3dcb813e8eb8" dependencies = [ - "errno-dragonfly", "libc", "windows-sys 0.48.0", ] @@ -4537,9 +4461,9 @@ checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] name = "fastrand" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6999dc1837253364c2ebb0704ba97994bd874e8f195d665c50b7548f6ea92764" +checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" [[package]] name = "fastwebsockets" @@ -4547,7 +4471,7 @@ version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9e6185b6dc9dddc4db0dedd2e213047e93bcbf7a0fb092abc4c4e4f3195efdb4" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "hyper 0.14.27", "pin-project", "rand 0.8.5", @@ -4560,13 +4484,13 @@ dependencies = [ [[package]] name = "fd-lock" -version = "3.0.10" +version = "3.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ef1a30ae415c3a691a4f41afddc2dbcd6d70baf338368d85ebc1e8ed92cedb9" +checksum = "ef033ed5e9bad94e55838ca0ca906db0e043f517adda0c8b79c7a8c66c93c1b5" dependencies = [ "cfg-if", - "rustix 0.36.16", - "windows-sys 0.45.0", + "rustix", + "windows-sys 0.48.0", ] [[package]] @@ -4591,9 +4515,9 @@ dependencies = [ [[package]] name = "fiat-crypto" -version = "0.2.2" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a481586acf778f1b1455424c343f71124b048ffa5f4fc3f8f6ae9dc432dcb3c7" +checksum = "27573eac26f4dd11e2b1916c3fe1baa56407c83c71a773a8ba17ec0bca03b6b7" [[package]] name = "file-id" @@ -4606,16 +4530,42 @@ dependencies = [ [[package]] name = "filetime" -version = "0.2.21" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cbc844cecaee9d4443931972e1289c8ff485cb4cc2767cb03ca139ed6885153" +checksum = "d4029edd3e734da6fe05b6cd7bd2960760a616bd2ddd0d59a0124746d6272af0" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.3.5", "windows-sys 0.48.0", ] +[[package]] +name = "finl_unicode" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" + +[[package]] +name = "fix-hidden-lifetime-bug" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ae9c2016a663983d4e40a9ff967d6dcac59819672f0b47f2b17574e99c33c8" +dependencies = [ + "fix-hidden-lifetime-bug-proc_macros", +] + +[[package]] +name = "fix-hidden-lifetime-bug-proc_macros" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4c81935e123ab0741c4c4f0d9b8377e5fb21d3de7e062fa4b1263b1fbcba1ea" +dependencies = [ + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 1.0.109", +] + [[package]] name = "fixed-hash" version = "0.7.0" @@ -4636,9 +4586,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flatbuffers" -version = "23.1.21" +version = "23.5.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77f5399c2c9c50ae9418e522842ad362f61ee48b346ac106807bd355a8a7c619" +checksum = "4dac53e22462d78c16d64a1cd22371b54cc3fe94aa15e7886a2fa6e5d1ab8640" dependencies = [ "bitflags 1.3.2", "rustc_version 0.4.0", @@ -4695,9 +4645,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -4709,9 +4659,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03ec5dc38ee19078d84a692b1c41181ff9f94331c76cee66ff0208c770b5e54f" dependencies = [ "pmutil", - "proc-macro2 1.0.63", + "proc-macro2 1.0.69", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -4738,8 +4688,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e" dependencies = [ "frunk_proc_macro_helpers", - "quote 1.0.30", - "syn 2.0.29", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -4749,9 +4699,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35b54add839292b743aeda6ebedbd8b11e93404f902c56223e51b9ec18a13d2c" dependencies = [ "frunk_core", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -4762,15 +4712,18 @@ checksum = "71b85a1d4a9a6b300b41c05e8e13ef2feca03e0334127f29eca9506a7fe13a93" dependencies = [ "frunk_core", "frunk_proc_macro_helpers", - "quote 1.0.30", - "syn 2.0.29", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "fs-err" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0845fa252299212f0389d64ba26f34fa32cfe41588355f21ed507c59a0f64541" +checksum = "88a41f105fe1d5b6b34b2055e3dc59bb79b46b48b2040b9e6c7b4b5de097aa41" +dependencies = [ + "autocfg", +] [[package]] name = "fs3" @@ -4822,9 +4775,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23342abe12aba583913b2e62f22225ff9c950774065e4bfb61a19cd9770fec40" +checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" dependencies = [ "futures-channel", "futures-core", @@ -4837,9 +4790,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" dependencies = [ "futures-core", "futures-sink", @@ -4847,15 +4800,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" [[package]] name = "futures-executor" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ccecee823288125bd88b4d7f565c9e58e41858e47ab72e8ea2d64e93624386e0" +checksum = "0f4fb8693db0cf099eadcca0efe2a5a22e4550f98ed16aba6c48700da29597bc" dependencies = [ "futures-core", "futures-task", @@ -4864,32 +4817,32 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fff74096e71ed47f8e023204cfd0aa1289cd54ae5430a9523be060cdb849964" +checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "53b153fd91e4b0147f4aced87be237c98248656bb01050b96bf3ee89220a8ddb" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" [[package]] name = "futures-timer" @@ -4899,9 +4852,9 @@ checksum = "e64b03909df88034c26dc1547e8970b91f98bdb65165d6a4e9110d94263dbb2c" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" dependencies = [ "futures-channel", "futures-core", @@ -4950,8 +4903,8 @@ checksum = "784f84eebc366e15251c4a8c3acee82a6a6f427949776ecb88377362a9621738" dependencies = [ "proc-macro-error 0.4.12", "proc-macro-hack", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -4966,9 +4919,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.6" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bff49e947297f3312447abdca79f45f4738097cc82b06e72054d2223f601f1b9" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -4994,9 +4947,9 @@ dependencies = [ [[package]] name = "geo-types" -version = "0.7.11" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9705398c5c7b26132e74513f4ee7c1d7dafd786004991b375c172be2be0eecaa" +checksum = "567495020b114f1ce9bed679b29975aa0bfae06ac22beacd5cfde5dabe7b05d6" dependencies = [ "approx", "num-traits", @@ -5033,7 +4986,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" dependencies = [ "libc", - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] @@ -5065,8 +5018,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" dependencies = [ "proc-macro-error 1.0.4", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -5082,9 +5035,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.27.3" +version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c80984affa11d98d1b88b66ac8853f143217b399d3c74116778ff8fdb4ed2e" +checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" [[package]] name = "glob" @@ -5116,9 +5069,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.17" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66b91535aa35fea1523ad1b86cb6b53c28e0ae566ba4a460f4457e936cad7c6f" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -5126,10 +5079,10 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap 2.1.0", "slab", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "tracing", ] @@ -5152,9 +5105,9 @@ dependencies = [ [[package]] name = "handlebars" -version = "4.4.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39b3bc2a8f715298032cf5087e58573809374b08160aa7d750582bdb82d2683" +checksum = "faa67bab9ff362228eb3d00bd024a4965d8231bbb7921167f0cfa66c6626b225" dependencies = [ "log", "pest", @@ -5179,44 +5132,44 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" dependencies = [ - "ahash 0.7.6", + "ahash 0.7.7", ] [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "33ff8ae62cd3a9102e5637afc8452c55acf3844001bd5374e0b0bd7b6616c038" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", ] [[package]] name = "hashbrown" -version = "0.14.0" +version = "0.14.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" +checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "allocator-api2", ] [[package]] name = "hashlink" -version = "0.8.1" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69fe1fcf8b4278d860ad0548329f892a3631fb63f82574df68275f34cdbe0ffa" +checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7" dependencies = [ - "hashbrown 0.12.3", + "hashbrown 0.14.2", ] [[package]] name = "hdrhistogram" -version = "7.5.2" +version = "7.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f19b9f54f7c7f55e31401bb647626ce0cf0f67b0004982ce815b3ee72a02aa8" +checksum = "765c9198f173dd59ce26ff9f95ef0aafd0a0fe01fb9d72841bc5066a4c06511d" dependencies = [ - "base64 0.13.1", + "base64 0.21.5", "byteorder", "flate2", "nom", @@ -5225,12 +5178,11 @@ dependencies = [ [[package]] name = "headers" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3e372db8e5c0d213e0cd0b9be18be2aca3d44cf2fe30a9d46a65581cd454584" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.13.1", - "bitflags 1.3.2", + "base64 0.21.5", "bytes", "headers-core", "http", @@ -5278,18 +5230,9 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" -dependencies = [ - "libc", -] - -[[package]] -name = "hermit-abi" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fed44880c466736ef9a5c5b5facefb5ed0785676d0c02d612db14e54f0d84286" +checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" [[package]] name = "hex" @@ -5309,17 +5252,7 @@ version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "791a029f6b9fc27657f6f188ec6e5e43f6911f6f878e0dc5501396e09809d437" dependencies = [ - "hmac 0.12.1", -] - -[[package]] -name = "hmac" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a2a2320eb7ec0ebe8da8f744d7812d9fc4cb4d09344ac01898dbcb6a20ae69b" -dependencies = [ - "crypto-mac", - "digest 0.9.0", + "hmac", ] [[package]] @@ -5353,9 +5286,9 @@ dependencies = [ [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -5391,9 +5324,9 @@ checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" [[package]] name = "http-range-header" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +checksum = "add0ab9360ddbd88cfeb3bd9574a1d85cfdfa14db10b3e21d3700dbc4328758f" [[package]] name = "httparse" @@ -5403,9 +5336,9 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" @@ -5430,7 +5363,7 @@ dependencies = [ "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", "tower-service", "tracing", @@ -5460,35 +5393,18 @@ dependencies = [ [[package]] name = "hyper-rustls" -version = "0.22.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" -dependencies = [ - "ct-logs", - "futures-util", - "hyper 0.14.27", - "log", - "rustls 0.19.1", - "rustls-native-certs 0.5.0", - "tokio", - "tokio-rustls 0.22.0", - "webpki 0.21.4", -] - -[[package]] -name = "hyper-rustls" -version = "0.24.1" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d78e1e73ec14cf7375674f74d7dde185c8206fd9dea6fb6295e8a98098aaa97" +checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", "http", "hyper 0.14.27", "log", - "rustls 0.21.7", - "rustls-native-certs 0.6.3", + "rustls 0.21.9", + "rustls-native-certs", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", ] [[package]] @@ -5518,26 +5434,25 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.53" +version = "0.1.58" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64c122667b287044802d6ce17ee2ddf13207ed924c712de9a66a5814d5b64765" +checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "winapi", + "windows-core", ] [[package]] name = "iana-time-zone-haiku" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "cxx", - "cxx-build", + "cc", ] [[package]] @@ -5634,8 +5549,8 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11d7a9f6330b71fea57921c9b61c47ee6e84f72d394754eff6163ae67e7395eb" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -5654,8 +5569,8 @@ version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b139284b5cf57ecfa712bcc66950bb635b31aff41c188e8a4cfc758eca374a3f" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", ] [[package]] @@ -5666,16 +5581,17 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] name = "indexmap" -version = "2.0.0" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" +checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.0", + "hashbrown 0.14.2", "serde", ] @@ -5725,7 +5641,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" dependencies = [ "block-padding 0.3.3", - "generic-array 0.14.6", + "generic-array 0.14.7", ] [[package]] @@ -5743,33 +5659,23 @@ version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" -[[package]] -name = "io-lifetimes" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfa919a82ea574332e2de6e74b4c36e74d41982b335080fa59d4ef31be20fdf3" -dependencies = [ - "libc", - "windows-sys 0.45.0", -] - [[package]] name = "ipconfig" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd302af1b90f2463a98fa5ad469fc212c8e3175a41c3068601bfa2727591c5be" +checksum = "b58db92f96b720de98181bbbe63c831e87005ab460c1bf306eb2622b4707997f" dependencies = [ - "socket2 0.4.9", + "socket2 0.5.5", "widestring", - "winapi", - "winreg 0.10.1", + "windows-sys 0.48.0", + "winreg", ] [[package]] name = "ipnet" -version = "2.7.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30e22bd8629359895450b59ea7a776c850561b96a3b1d31321c1949d9e6c9146" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "iri-string" @@ -5789,21 +5695,20 @@ checksum = "f4467ed1321b310c2625c5aa6c1b1ffc5de4d9e42668cf697a08fb033ee8265e" dependencies = [ "Inflector", "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "is-terminal" -version = "0.4.4" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21b6b32576413a8e69b90e952e4a026476040d81017b80445deda5f2d3921857" +checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" dependencies = [ - "hermit-abi 0.3.1", - "io-lifetimes", - "rustix 0.36.16", - "windows-sys 0.45.0", + "hermit-abi 0.3.3", + "rustix", + "windows-sys 0.48.0", ] [[package]] @@ -5826,9 +5731,9 @@ dependencies = [ [[package]] name = "itoa" -version = "1.0.6" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6" +checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "jni" @@ -5854,18 +5759,18 @@ checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" [[package]] name = "jobserver" -version = "0.1.26" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "936cfd212a0155903bcbc060e316fb6cc7cbf2e1907329391ebadc1fe0ce77c2" +checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" dependencies = [ "wasm-bindgen", ] @@ -5902,7 +5807,7 @@ version = "9.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "155c4d7e39ad04c172c5e3a99c434ea3b4a7ba7960b38ecd562b270b097cce09" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "pem 3.0.2", "ring 0.17.5", "serde", @@ -5912,18 +5817,18 @@ dependencies = [ [[package]] name = "keccak" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3afef3b6eff9ce9d8ff9b3601125eec7f0c8cbac7abd14f355d053fa56c98768" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" dependencies = [ "cpufeatures", ] [[package]] name = "kqueue" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c8fc60ba15bf51257aa9807a48a61013db043fcf3a78cb0d916e8e396dcad98" +checksum = "7447f1ca1b7b563588a205fe93dea8df60fd981423a768bc1c0ded35ed147d0c" dependencies = [ "kqueue-sys", "libc", @@ -5931,9 +5836,9 @@ dependencies = [ [[package]] name = "kqueue-sys" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8367585489f01bc55dd27404dcf56b95e6da061a256a666ab23be9ba96a2e587" +checksum = "ed9625ffda8729b85e45cf04090035ac368927b8cebc34898e7c120f52e4838b" dependencies = [ "bitflags 1.3.2", "libc", @@ -5947,9 +5852,9 @@ checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" [[package]] name = "lazy-regex" -version = "3.0.2" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e723bd417b2df60a0f6a2b6825f297ea04b245d4ba52b5a22cb679bdf58b05fa" +checksum = "5d12be4595afdf58bd19e4a9f4e24187da2a66700786ff660a418e9059937a4c" dependencies = [ "lazy-regex-proc_macros", "once_cell", @@ -5958,14 +5863,14 @@ dependencies = [ [[package]] name = "lazy-regex-proc_macros" -version = "3.0.1" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f0a1d9139f0ee2e862e08a9c5d0ba0470f2aa21cd1e1aa1b1562f83116c725f" +checksum = "44bcd58e6c97a7fcbaffcdc95728b393b8d98933bfadad49ed4097845b57ef0b" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "regex", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -6083,9 +5988,9 @@ dependencies = [ [[package]] name = "libflate" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97822bf791bd4d5b403713886a5fbe8bf49520fe78e323b0dc480ca1a03e50b0" +checksum = "5ff4ae71b685bbad2f2f391fe74f6b7659a34871c08b210fdc039e43bee07d18" dependencies = [ "adler32", "crc32fast", @@ -6123,9 +6028,20 @@ dependencies = [ [[package]] name = "libm" -version = "0.2.6" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" + +[[package]] +name = "libredox" +version = "0.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" +checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" +dependencies = [ + "bitflags 2.4.1", + "libc", + "redox_syscall 0.4.1", +] [[package]] name = "librocksdb-sys" @@ -6133,7 +6049,7 @@ version = "0.11.0+8.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d3386f101bcb4bd252d8e9d2fb41ec3b0862a15a62b478c355b2982efa469e3e" dependencies = [ - "bindgen", + "bindgen 0.65.1", "bzip2-sys", "cc", "glob", @@ -6160,7 +6076,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6d8de370f98a6cb8a4606618e53e802f93b094ddec0f96988eaec2c27e6e9ce7" dependencies = [ - "clap 4.4.1", + "clap 4.4.8", "termcolor", "threadpool", ] @@ -6177,9 +6093,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.9" +version = "1.1.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "56ee889ecc9568871456d42f603d6a0ce59ff328d291063a45cbdf0036baf6db" +checksum = "d97137b25e321a73eef1418d1d5d2eda4d77e12813f8e6dead84bc52c5870a7b" dependencies = [ "cc", "libc", @@ -6193,15 +6109,6 @@ version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc7281e4b2b1a1fae03463a7c49dd21464de50251a450f6da9715c40c7b21a70" -[[package]] -name = "link-cplusplus" -version = "1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecd207c9c713c34f95a097a5b029ac2ce6010530c7b49d7fea24d977dede04f5" -dependencies = [ - "cc", -] - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -6213,15 +6120,9 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f051f77a7c8e6957c0696eac88f26b0117e54f52d3fc682ab19397a8812846a4" - -[[package]] -name = "linux-raw-sys" -version = "0.4.5" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57bcfdad1b858c2db7c38303a6d2ad4dfaf5eb53dfeb0910128b2c26d6158503" +checksum = "969488b55f8ac402214f3f5fd243ebb7206cf82de60d3172994707a4bcc2b829" [[package]] name = "lmdb-rkv" @@ -6248,27 +6149,26 @@ dependencies = [ [[package]] name = "local-channel" -version = "0.1.3" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f303ec0e94c6c54447f84f3b0ef7af769858a9c4ef56ef2a986d3dcd4c3fc9c" +checksum = "b6cbc85e69b8df4b8bb8b89ec634e7189099cea8927a276b7384ce5488e53ec8" dependencies = [ "futures-core", "futures-sink", - "futures-util", "local-waker", ] [[package]] name = "local-waker" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e34f76eb3611940e0e7d53a9aaa4e6a3151f69541a282fd0dad5571420c53ff1" +checksum = "4d873d7c67ce09b42110d801813efbc9364414e356be9935700d368351657487" [[package]] name = "lock_api" -version = "0.4.9" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +checksum = "3c168f8615b12bc01f9c17e2eb0cc07dcae1940121185446edc3744920e8ef45" dependencies = [ "autocfg", "scopeguard", @@ -6297,10 +6197,10 @@ checksum = "dc487311295e0002e452025d6b580b77bb17286de87b57138f3b5db711cded68" dependencies = [ "beef", "fnv", - "proc-macro2 1.0.63", - "quote 1.0.30", - "regex-syntax 0.6.28", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "regex-syntax 0.6.29", + "syn 2.0.39", ] [[package]] @@ -6318,7 +6218,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "718e8fae447df0c7e1ba7f5189829e63fd536945c8988d61444c19039f16b670" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.13.1", ] [[package]] @@ -6331,23 +6231,22 @@ dependencies = [ ] [[package]] -name = "lz4" -version = "1.24.0" +name = "lz4-sys" +version = "1.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" dependencies = [ + "cc", "libc", - "lz4-sys", ] [[package]] -name = "lz4-sys" -version = "1.9.4" +name = "lz4_flex" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +checksum = "3ea9b256699eda7b0387ffbc776dd625e28bde3918446381781245b7a50349d8" dependencies = [ - "cc", - "libc", + "twox-hash", ] [[package]] @@ -6379,12 +6278,6 @@ dependencies = [ "libc", ] -[[package]] -name = "maplit" -version = "1.0.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" - [[package]] name = "match_cfg" version = "0.1.0" @@ -6408,15 +6301,15 @@ checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" [[package]] name = "matchit" -version = "0.7.0" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b87248edafb776e59e6ee64a79086f65890d3510f2c656c000bf2a7e8a0aea40" +checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94" [[package]] name = "matrixmultiply" -version = "0.3.7" +version = "0.3.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090126dc04f95dc0d1c1c91f61bdd474b3930ca064c1edc8a849da2c6cbe1e77" +checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" dependencies = [ "autocfg", "rawpointer", @@ -6424,21 +6317,11 @@ dependencies = [ [[package]] name = "md-5" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5a279bb9607f9f53c22d496eade00d138d1bdcccd07d74650387cf94942a15" -dependencies = [ - "block-buffer 0.9.0", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "md-5" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6365506850d44bff6e2fbcb5176cf63650e48bd45ef2fe2665ae1570e0f4b9ca" +checksum = "d89e7ee0cfbedfc4da3340218492196241d89eefb6dab27de5df917a6d2e78cf" dependencies = [ + "cfg-if", "digest 0.10.7", ] @@ -6496,13 +6379,22 @@ dependencies = [ "autocfg", ] +[[package]] +name = "memoffset" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" +dependencies = [ + "autocfg", +] + [[package]] name = "metrics" version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fde3af1a009ed76a778cb84fdef9e7dbbdf5775ae3e4cc1f434a6a307f6f76c5" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "metrics-macros", "portable-atomic", ] @@ -6513,7 +6405,7 @@ version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a4964177ddfdab1e3a2b37aec7cf320e14169abb0ed73999f558136409178d5" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "hyper 0.14.27", "indexmap 1.9.3", "ipnet", @@ -6531,20 +6423,20 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddece26afd34c31585c74a4db0630c376df271c285d682d1e55012197830b6df" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "metrics-util" -version = "0.15.0" +version = "0.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "111cb375987443c3de8d503580b536f77dc8416d32db62d9456db5d93bd7ac47" +checksum = "4de2ed6e491ed114b40b732e4d1659a9d53992ebd87490c44a6ffe23739d973e" dependencies = [ "crossbeam-epoch", "crossbeam-utils", - "hashbrown 0.13.2", + "hashbrown 0.13.1", "metrics", "num_cpus", "quanta", @@ -6596,9 +6488,9 @@ dependencies = [ [[package]] name = "mongodb" -version = "2.6.1" +version = "2.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16928502631c0db72214720aa479c722397fe5aed6bf1c740a3830b3fe4bfcfe" +checksum = "e7c926772050c3a3f87c837626bf6135c8ca688d91d31dd39a3da547fc2bc9fe" dependencies = [ "async-trait", "base64 0.13.1", @@ -6612,33 +6504,33 @@ dependencies = [ "futures-io", "futures-util", "hex", - "hmac 0.12.1", + "hmac", "lazy_static", - "md-5 0.10.5", + "md-5", "pbkdf2 0.11.0", "percent-encoding", "rand 0.8.5", "rustc_version_runtime", - "rustls 0.20.8", + "rustls 0.21.9", "rustls-pemfile", "serde", "serde_bytes", "serde_with", "sha-1 0.10.0", - "sha2 0.10.6", - "socket2 0.4.9", + "sha2", + "socket2 0.4.10", "stringprep", "strsim", "take_mut", "thiserror", "tokio", - "tokio-rustls 0.23.4", - "tokio-util 0.7.8", + "tokio-rustls 0.24.1", + "tokio-util 0.7.10", "trust-dns-proto 0.21.2", "trust-dns-resolver 0.21.2", "typed-builder", "uuid", - "webpki-roots 0.22.6", + "webpki-roots 0.25.3", ] [[package]] @@ -6649,13 +6541,19 @@ checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" [[package]] name = "multimap" -version = "0.9.0" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70db9248a93dc36a36d9a47898caa007a32755c7ad140ec64eeeb50d5a730631" +checksum = "e1a5d38b9b352dbd913288736af36af41c48d61b1a8cd34bcecd727561b7d511" dependencies = [ "serde", ] +[[package]] +name = "mutually_exclusive_features" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d02c0b00610773bb7fc61d85e13d86c7858cbdf00e1a120bfc41bc055dbaa0e" + [[package]] name = "mysql-common-derive" version = "0.30.2" @@ -6667,9 +6565,9 @@ dependencies = [ "num-bigint", "proc-macro-crate 1.3.1", "proc-macro-error 1.0.4", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", "termcolor", "thiserror", ] @@ -6695,18 +6593,18 @@ dependencies = [ "percent-encoding", "pin-project", "priority-queue", - "rustls 0.21.7", + "rustls 0.21.9", "rustls-pemfile", "serde", "serde_json", "socket2 0.5.5", "thiserror", "tokio", - "tokio-rustls 0.24.0", - "tokio-util 0.7.8", + "tokio-rustls 0.24.1", + "tokio-util 0.7.10", "twox-hash", "url", - "webpki 0.22.0", + "webpki", "webpki-roots 0.23.1", ] @@ -6716,10 +6614,10 @@ version = "0.30.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57349d5a326b437989b6ee4dc8f2f34b0cc131202748414712a8e7d98952fc8c" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "bigdecimal", - "bindgen", - "bitflags 2.4.0", + "bindgen 0.69.1", + "bitflags 2.4.1", "bitvec 1.0.1", "byteorder", "bytes", @@ -6741,11 +6639,11 @@ dependencies = [ "serde", "serde_json", "sha1", - "sha2 0.10.6", + "sha2", "smallvec", "subprocess", "thiserror", - "time 0.3.20", + "time 0.3.30", "uuid", ] @@ -6811,7 +6709,7 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b7288eac8b54af7913c60e0eb0e2a7683020dffa342ab3fd15e28f035ba897cf" dependencies = [ - "quote 1.0.30", + "quote 1.0.33", "syn 1.0.109", "syn-mid", ] @@ -6902,20 +6800,21 @@ dependencies = [ [[package]] name = "notify" -version = "6.0.1" +version = "6.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5738a2795d57ea20abec2d6d76c6081186709c0024187cd5977265eda6598b51" +checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "crossbeam-channel", "filetime", "fsevent-sys", "inotify", "kqueue", "libc", + "log", "mio", "walkdir", - "windows-sys 0.45.0", + "windows-sys 0.48.0", ] [[package]] @@ -6926,7 +6825,7 @@ checksum = "416969970ec751a5d702a88c6cd19ac1332abe997fce43f96db0418550426241" dependencies = [ "crossbeam-channel", "file-id", - "notify 6.0.1", + "notify 6.1.1", "parking_lot", "walkdir", ] @@ -6966,9 +6865,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" dependencies = [ "autocfg", "num-integer", @@ -6997,9 +6896,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e0d21255c828d6f128a1e41534206671e8c3ea0c62f32291e808dc82cff17d" +checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" dependencies = [ "num-traits", ] @@ -7039,9 +6938,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" dependencies = [ "autocfg", "libm", @@ -7049,11 +6948,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.15.0" +version = "1.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" +checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" dependencies = [ - "hermit-abi 0.2.6", + "hermit-abi 0.3.3", "libc", ] @@ -7073,8 +6972,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -7095,9 +6994,9 @@ dependencies = [ [[package]] name = "object" -version = "0.31.1" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bda667d9f2b5051b8833f59f3bf748b28ef54f850f4fcb389a252aa383866d1" +checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" dependencies = [ "memchr", ] @@ -7109,7 +7008,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f930c88a43b1c3f6e776dfe495b4afab89882dbc81530c632db2ed65451ebcb4" dependencies = [ "async-trait", - "base64 0.21.0", + "base64 0.21.5", "bytes", "chrono", "futures", @@ -7192,18 +7091,18 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75e56d5c441965b6425165b7e3223cc933ca469834f4a8b4786817a1f9dc4f13" dependencies = [ - "indexmap 2.0.0", + "indexmap 1.9.3", "serde", "serde_json", ] [[package]] name = "openssl" -version = "0.10.55" +version = "0.10.60" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "345df152bc43501c5eb9e4654ff05f794effb78d4efe3d53abc158baddc0703d" +checksum = "79a4c6c3a2b158f7f8f2a2fc5a969fa3a068df6fc9dbb4a43845436e3af7c800" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.4.1", "cfg-if", "foreign-types", "libc", @@ -7214,13 +7113,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -7231,9 +7130,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.90" +version = "0.9.96" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "374533b0e45f3a7ced10fcaeccca020e66656bc03dac384f852e4e5a7a8104a6" +checksum = "3812c071ba60da8b5677cc12bcb1d42989a65553772897a7e0355545a819838f" dependencies = [ "cc", "libc", @@ -7320,7 +7219,7 @@ dependencies = [ "futures-util", "once_cell", "opentelemetry_api", - "ordered-float 3.9.1", + "ordered-float 3.9.2", "percent-encoding", "rand 0.8.5", "regex", @@ -7332,18 +7231,18 @@ dependencies = [ [[package]] name = "ordered-float" -version = "2.10.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7940cf2ca942593318d07fcf2596cdca60a85c9e7fab408a5e21a4f9dcd40d87" +checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c" dependencies = [ "num-traits", ] [[package]] name = "ordered-float" -version = "3.9.1" +version = "3.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a54938017eacd63036332b4ae5c8a49fc8c0c1d6d629893057e4f13609edd06" +checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" dependencies = [ "num-traits", "rand 0.8.5", @@ -7352,9 +7251,9 @@ dependencies = [ [[package]] name = "ort" -version = "1.15.2" +version = "1.16.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e56c9c4185ee949ef961aca8777d1dbd52cb104b444669adad63e8181820a7" +checksum = "889dca4c98efa21b1ba54ddb2bde44fd4920d910f492b618351f839d8428d79d" dependencies = [ "flate2", "half 2.3.1", @@ -7372,9 +7271,9 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.4.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b7820b9daea5457c9f21c69448905d723fbd21136ccf521748f23fd49e723ee" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "outref" @@ -7400,10 +7299,10 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30c06436d66652bc2f01ade021592c80a2aad401570a18aa18b82e440d2b9aa1" dependencies = [ - "ecdsa 0.16.8", - "elliptic-curve 0.13.6", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "primeorder", - "sha2 0.10.6", + "sha2", ] [[package]] @@ -7414,7 +7313,7 @@ checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" dependencies = [ "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.6", + "sha2", ] [[package]] @@ -7423,10 +7322,10 @@ version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c9863ad85fa8f4460f9c48cb909d38a0d689dba1f6f6988a5e3e0d31071bcd4b" dependencies = [ - "ecdsa 0.16.8", - "elliptic-curve 0.13.6", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "primeorder", - "sha2 0.10.6", + "sha2", ] [[package]] @@ -7437,7 +7336,7 @@ checksum = "dfc8c5bf642dde52bb9e87c0ecd8ca5a76faac2eeed98dedb7c717997e1080aa" dependencies = [ "ecdsa 0.14.8", "elliptic-curve 0.12.3", - "sha2 0.10.6", + "sha2", ] [[package]] @@ -7446,10 +7345,10 @@ version = "0.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "70786f51bcc69f6a4c0360e063a4cac5419ef7c5cd5b3c99ad70f3be5ba79209" dependencies = [ - "ecdsa 0.16.8", - "elliptic-curve 0.13.6", + "ecdsa 0.16.9", + "elliptic-curve 0.13.8", "primeorder", - "sha2 0.10.6", + "sha2", ] [[package]] @@ -7483,8 +7382,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1557010476e0595c9b568d16dcfb81b93cdeb157612726f5170d31aa707bed27" dependencies = [ "proc-macro-crate 1.3.1", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -7500,24 +7399,24 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.7" +version = "0.9.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9069cbb9f99e3a5083476ccb29ceb1de18b9118cafa53e90c9551235de2b9521" +checksum = "4c42a9226546d68acdd9c0a280d17ce19bfe27a46bf68784e4066115788d008e" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.2.16", + "redox_syscall 0.4.1", "smallvec", - "windows-sys 0.45.0", + "windows-targets 0.48.5", ] [[package]] name = "parquet" -version = "47.0.0" +version = "48.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0463cc3b256d5f50408c49a4be3a16674f4c8ceef60941709620a062b1f6bf4d" +checksum = "6bfe55df96e3f02f11bf197ae37d91bb79801631f82f6195dd196ef521df3597" dependencies = [ - "ahash 0.8.3", + "ahash 0.8.6", "arrow-array", "arrow-buffer", "arrow-cast", @@ -7525,14 +7424,14 @@ dependencies = [ "arrow-ipc", "arrow-schema", "arrow-select", - "base64 0.21.0", + "base64 0.21.5", "brotli", "bytes", "chrono", "flate2", "futures", - "hashbrown 0.14.0", - "lz4", + "hashbrown 0.14.2", + "lz4_flex", "num", "num-bigint", "object_store", @@ -7542,7 +7441,7 @@ dependencies = [ "thrift", "tokio", "twox-hash", - "zstd", + "zstd 0.13.0", ] [[package]] @@ -7567,9 +7466,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f746c4065a8fa3fe23974dd82f15431cc8d40779821001404d10d2e79ca7d79" +checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "path-clean" @@ -7599,7 +7498,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8ed6a7761f76e3b9f92dfb0a60a6a6477c61024b775147ff0973a02653abaf2" dependencies = [ "digest 0.10.7", - "hmac 0.12.1", + "hmac", ] [[package]] @@ -7614,7 +7513,7 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b13fe415cdf3c8e44518e18a7c95a13431d9bdf6d15367d82b23c377fdd441a" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "serde", ] @@ -7624,7 +7523,7 @@ version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3163d2912b7c3b52d651a055f2c7eec9ba5cd22d26ef75b8dd3a59980b185923" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "serde", ] @@ -7654,19 +7553,20 @@ checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "pest" -version = "2.6.0" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e68e84bfb01f0507134eac1e9b410a12ba379d064eab48c50ba4ce329a527b70" +checksum = "ae9cee2a55a544be8b89dc6848072af97a20f2422603c10865be2a42b580fff5" dependencies = [ + "memchr", "thiserror", "ucd-trie", ] [[package]] name = "pest_derive" -version = "2.5.6" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a81186863f3d0a27340815be8f2078dd8050b14cd71913db9fbda795e5f707d7" +checksum = "81d78524685f5ef2a3b3bd1cafbc9fcabb036253d9b1463e726a91cd16e2dfc2" dependencies = [ "pest", "pest_generator", @@ -7674,47 +7574,47 @@ dependencies = [ [[package]] name = "pest_generator" -version = "2.5.6" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75a1ef20bf3193c15ac345acb32e26b3dc3223aff4d77ae4fc5359567683796b" +checksum = "68bd1206e71118b5356dae5ddc61c8b11e28b09ef6a31acbd15ea48a28e0c227" dependencies = [ "pest", "pest_meta", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "pest_meta" -version = "2.5.6" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e3b284b1f13a20dc5ebc90aff59a51b8d7137c221131b52a7260c08cbc1cc80" +checksum = "7c747191d4ad9e4a4ab9c8798f1e82a39affe7ef9648390b7e5548d18e099de6" dependencies = [ "once_cell", "pest", - "sha2 0.10.6", + "sha2", ] [[package]] name = "petgraph" version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dd7d28ee937e54fe3080c91faa1c3a46c06de6252988a7f4592ba2310ef22a4" +source = "git+https://github.com/getdozer/petgraph?branch=feat/try_map#2422a3a21d92e7a6446f0d0f172c8aa24258846e" dependencies = [ "fixedbitset", "indexmap 1.9.3", + "serde", + "serde_derive", ] [[package]] name = "petgraph" -version = "0.6.3" -source = "git+https://github.com/getdozer/petgraph?branch=feat/try_map#2422a3a21d92e7a6446f0d0f172c8aa24258846e" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 1.9.3", - "serde", - "serde_derive", + "indexmap 2.1.0", ] [[package]] @@ -7724,7 +7624,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06d04982366efd653d4365175426acbabd55efb07231869e92b9e1f5b3faf7df" dependencies = [ "async-trait", - "base64 0.21.0", + "base64 0.21.5", "bytes", "chrono", "derive-new", @@ -7738,10 +7638,10 @@ dependencies = [ "ring 0.16.20", "stringprep", "thiserror", - "time 0.3.20", + "time 0.3.30", "tokio", - "tokio-rustls 0.24.0", - "tokio-util 0.7.8", + "tokio-rustls 0.24.1", + "tokio-util 0.7.10", "x509-certificate", ] @@ -7758,11 +7658,11 @@ dependencies = [ [[package]] name = "phf" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928c6535de93548188ef63bb7c4036bd415cd8f36ad25af44b9789b2ee72a48c" +checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" dependencies = [ - "phf_shared 0.11.1", + "phf_shared 0.11.2", ] [[package]] @@ -7771,8 +7671,8 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" dependencies = [ - "phf_generator 0.11.1", - "phf_shared 0.11.1", + "phf_generator 0.11.2", + "phf_shared 0.11.2", ] [[package]] @@ -7787,11 +7687,11 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1181c94580fa345f50f19d738aaa39c0ed30a600d95cb2d3e23f94266f14fbf" +checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ - "phf_shared 0.11.1", + "phf_shared 0.11.2", "rand 0.8.5", ] @@ -7804,8 +7704,8 @@ dependencies = [ "phf_generator 0.10.0", "phf_shared 0.10.0", "proc-macro-hack", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -7820,9 +7720,9 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.1" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fb5f6f826b772a8d4c0394209441e7d37cbbb967ae9c7e0e8134365c9ee676" +checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ "siphasher", ] @@ -7842,16 +7742,16 @@ version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "pin-project-lite" -version = "0.2.12" +version = "0.2.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12cc1b0bf1727a77a54b6654e7b5f1af8604923edc8b81885f8ec92f9e3f0a05" +checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" [[package]] name = "pin-utils" @@ -7893,21 +7793,21 @@ dependencies = [ [[package]] name = "pkg-config" -version = "0.3.26" +version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" +checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" [[package]] name = "platforms" -version = "3.1.2" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4503fa043bf02cee09a9582e9554b4c6403b2ef55e4612e96561d294419429f8" +checksum = "14e6ab3f592e6fb464fc9712d8d6e6912de6473954635fd76a589d832cffcbb0" [[package]] name = "plotters" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97" +checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" dependencies = [ "num-traits", "plotters-backend", @@ -7918,15 +7818,15 @@ dependencies = [ [[package]] name = "plotters-backend" -version = "0.3.4" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142" +checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" [[package]] name = "plotters-svg" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f" +checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" dependencies = [ "plotters-backend", ] @@ -7937,9 +7837,9 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "52a40bc70c2c58040d2d8b167ba9a5ff59fc9dab7ad44771cfde3dcfde7a09c6" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -7956,9 +7856,9 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.3.2" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc59d1bcc64fc5d021d67521f818db868368028108d37f0e98d74e33f68297b5" +checksum = "3bccab0e7fd7cc19f820a1c8c91720af652d0c88dc9664dd72aef2614f04af3b" [[package]] name = "postgres" @@ -7982,11 +7882,11 @@ dependencies = [ "byteorder", "bytes", "fallible-iterator", - "hmac 0.12.1", - "md-5 0.10.5", + "hmac", + "md-5", "memchr", "rand 0.8.5", - "sha2 0.10.6", + "sha2", "stringprep", ] @@ -8005,6 +7905,12 @@ dependencies = [ "uuid", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.17" @@ -8023,18 +7929,18 @@ version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c8646e95016a7a6c4adea95bafa8a16baab64b583356217f2c85db4a39d9a86" dependencies = [ - "proc-macro2 1.0.63", + "proc-macro2 1.0.69", "syn 1.0.109", ] [[package]] name = "prettyplease" -version = "0.2.12" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c64d9ba0963cdcea2e1b2230fbae2bab30eb25a174be395c41e764bfb65dd62" +checksum = "ae005bd773ab59b4725093fd7df83fd7892f7d8eafb48dbd7de6e024e4215f9d" dependencies = [ - "proc-macro2 1.0.63", - "syn 2.0.29", + "proc-macro2 1.0.69", + "syn 2.0.39", ] [[package]] @@ -8053,11 +7959,11 @@ dependencies = [ [[package]] name = "primeorder" -version = "0.13.2" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c2fcef82c0ec6eefcc179b978446c399b3cdf73c392c35604e399eee6df1ee3" +checksum = "353e1ca18966c16d9deb1c69278edbc5f194139612772bd9537af60ac231e1e6" dependencies = [ - "elliptic-curve 0.13.6", + "elliptic-curve 0.13.8", ] [[package]] @@ -8085,21 +7991,21 @@ dependencies = [ [[package]] name = "proc-macro-crate" -version = "0.1.5" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ - "toml", + "once_cell", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro-crate" -version = "1.3.1" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" +checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8" dependencies = [ - "once_cell", - "toml_edit", + "toml_edit 0.20.7", ] [[package]] @@ -8109,8 +8015,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "18f33027081eba0a6d8aba6d1b1c3a3be58cbb12106341c2d5759fcd9b5277e7" dependencies = [ "proc-macro-error-attr 0.4.12", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "version_check", ] @@ -8122,8 +8028,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr 1.0.4", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "version_check", ] @@ -8134,8 +8040,8 @@ version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a5b4b77fdb63c1eca72173d68d24501c54ab1269409f6b672c85deb18af69de" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "syn-mid", "version_check", @@ -8147,8 +8053,8 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "version_check", ] @@ -8169,9 +8075,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.63" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b368fba921b0dce7e60f5e04ec15e565b3303972b42bcfde1d0713b881959eb" +checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" dependencies = [ "unicode-ident", ] @@ -8190,19 +8096,19 @@ dependencies = [ [[package]] name = "proptest" -version = "1.3.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" +checksum = "31b476131c3c86cb68032fdc5cb6d5a1045e3e42d96b69fa599fd77701e1f5bf" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.0", + "bitflags 2.4.1", "lazy_static", "num-traits", "rand 0.8.5", "rand_chacha", "rand_xorshift", - "regex-syntax 0.7.4", + "regex-syntax 0.8.2", "rusty-fork", "tempfile", "unarray", @@ -8220,12 +8126,12 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a5a410fc7882af66deb8d01d01737353cf3ad6204c408177ba494291a626312" +checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" dependencies = [ "bytes", - "prost-derive 0.12.2", + "prost-derive 0.12.3", ] [[package]] @@ -8240,7 +8146,7 @@ dependencies = [ "lazy_static", "log", "multimap 0.8.3", - "petgraph 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.6.4", "prettyplease 0.1.25", "prost 0.11.9", "prost-types 0.11.9", @@ -8252,9 +8158,9 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.12.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d3e647e9eb04ddfef78dfee2d5b3fefdf94821c84b710a3d8ebc89ede8b164" +checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" dependencies = [ "bytes", "heck", @@ -8262,12 +8168,12 @@ dependencies = [ "log", "multimap 0.8.3", "once_cell", - "petgraph 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", - "prettyplease 0.2.12", - "prost 0.12.2", - "prost-types 0.12.0", + "petgraph 0.6.4", + "prettyplease 0.2.15", + "prost 0.12.3", + "prost-types 0.12.3", "regex", - "syn 2.0.29", + "syn 2.0.39", "tempfile", "which", ] @@ -8280,22 +8186,22 @@ checksum = "e5d2d8d10f3c6ded6da8b05b5fb3b8a5082514344d56c9f871412d29b4e075b4" dependencies = [ "anyhow", "itertools 0.10.5", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "prost-derive" -version = "0.12.2" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "065717a5dfaca4a83d2fe57db3487b311365200000551d7a364e715dbf4346bc" +checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" dependencies = [ "anyhow", "itertools 0.11.0", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -8304,11 +8210,11 @@ version = "0.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "057237efdb71cf4b3f9396302a3d6599a92fa94063ba537b66130980ea9909f3" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "logos", "once_cell", - "prost 0.12.2", - "prost-types 0.12.0", + "prost 0.12.3", + "prost-types 0.12.3", "serde", "serde-value", ] @@ -8324,11 +8230,11 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.12.0" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cebe0a918c97f86c217b0f76fd754e966f8b9f41595095cf7d74cb4e59d730f6" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" dependencies = [ - "prost 0.12.2", + "prost 0.12.3", ] [[package]] @@ -8361,8 +8267,8 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -8378,9 +8284,9 @@ dependencies = [ [[package]] name = "pyo3" -version = "0.18.1" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06a3d8e8a46ab2738109347433cb7b96dffda2e4a218b03ef27090238886b147" +checksum = "e3b1ac5b3731ba34fdaa9785f8d74d17448cd18f30cf19e0c7e7b1fdb5272109" dependencies = [ "cfg-if", "indoc", @@ -8408,9 +8314,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.18.1" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75439f995d07ddfad42b192dfcf3bc66a7ecfd8b4a1f5f6f046aa5c2c5d7677d" +checksum = "9cb946f5ac61bb61a5014924910d936ebd2b23b705f7a4a3c40b05c720b079a3" dependencies = [ "once_cell", "target-lexicon", @@ -8418,9 +8324,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.18.1" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "839526a5c07a17ff44823679b68add4a58004de00512a95b6c1c98a6dcac0ee5" +checksum = "fd4d7c5337821916ea2a1d21d1092e8443cf34879e53a0ac653fbb98f44ff65c" dependencies = [ "libc", "pyo3-build-config", @@ -8428,24 +8334,24 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.18.1" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd44cf207476c6a9760c4653559be4f206efafb924d3e4cbf2721475fc0d6cc5" +checksum = "a9d39c55dab3fc5a4b25bbd1ac10a2da452c4aca13bb450f22818a002e29648d" dependencies = [ - "proc-macro2 1.0.63", + "proc-macro2 1.0.69", "pyo3-macros-backend", - "quote 1.0.30", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "pyo3-macros-backend" -version = "0.18.1" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1f43d8e30460f36350d18631ccf85ded64c059829208fe680904c65bcd0a4c" +checksum = "97daff08a4c48320587b5224cc98d609e3c27b6d437315bd40b605c98eeb5918" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -8457,9 +8363,9 @@ checksum = "658fa1faf7a4cc5f057c9ee5ef560f717ad9d8dc66d975267f709624d6e1ab88" [[package]] name = "quanta" -version = "0.11.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cc73c42f9314c4bdce450c77e6f09ecbddefbeddb1b5979ded332a3913ded33" +checksum = "a17e662a7a8291a865152364c20c7abc5e60486ab2001e8ec10b24862de0b9ab" dependencies = [ "crossbeam-utils", "libc", @@ -8498,11 +8404,11 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.30" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5907a1b7c277254a8b15170f6e7c97cfa60ee7872a3217663bb81151e48184bb" +checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" dependencies = [ - "proc-macro2 1.0.63", + "proc-macro2 1.0.69", ] [[package]] @@ -8666,9 +8572,9 @@ dependencies = [ [[package]] name = "rdkafka-sys" -version = "4.6.0+2.2.0" +version = "4.7.0+2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad63c279fca41a27c231c450a2d2ad18288032e9cbb159ad16c9d96eba35aaaf" +checksum = "55e0d2f9ba6253f6ec72385e453294f8618e9e15c2c6aba2a5c01ccf9622d615" dependencies = [ "libc", "libz-sys", @@ -8687,30 +8593,30 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_syscall" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" +checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" dependencies = [ "bitflags 1.3.2", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" dependencies = [ "getrandom 0.2.11", - "redox_syscall 0.2.16", + "libredox", "thiserror", ] @@ -8732,7 +8638,7 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax 0.6.28", + "regex-syntax 0.6.29", ] [[package]] @@ -8748,15 +8654,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.6.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" - -[[package]] -name = "regex-syntax" -version = "0.7.4" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ea92a5b6195c6ef2a0295ea818b312502c6fc94dde986c5553242e18fd4ce2" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] name = "regex-syntax" @@ -8775,21 +8675,21 @@ dependencies = [ [[package]] name = "rend" -version = "0.4.0" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "581008d2099240d37fb08d77ad713bcaec2c4d89d50b5b21a8bb1996bbab68ab" +checksum = "a2571463863a6bd50c32f94402933f03457a3fbaf697a707c5be741e459f08fd" dependencies = [ "bytecheck", ] [[package]] name = "reqwest" -version = "0.11.20" +version = "0.11.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e9ad3fe7488d7e34558a2033d45a0c90b72d97b4f80705666fea71472e2e6a1" +checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b" dependencies = [ "async-compression", - "base64 0.21.0", + "base64 0.21.5", "bytes", "cookie", "cookie_store", @@ -8800,7 +8700,7 @@ dependencies = [ "http", "http-body 0.4.5", "hyper 0.14.27", - "hyper-rustls 0.24.1", + "hyper-rustls", "hyper-tls", "ipnet", "js-sys", @@ -8810,24 +8710,25 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", - "rustls 0.21.7", + "rustls 0.21.9", "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "system-configuration", "tokio", "tokio-native-tls", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", "tokio-socks", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "wasm-streams", "web-sys", - "webpki-roots 0.25.2", - "winreg 0.50.0", + "webpki-roots 0.25.3", + "winreg", ] [[package]] @@ -8853,7 +8754,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ "crypto-bigint 0.4.9", - "hmac 0.12.1", + "hmac", "zeroize", ] @@ -8863,7 +8764,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2" dependencies = [ - "hmac 0.12.1", + "hmac", "subtle", ] @@ -8928,8 +8829,8 @@ version = "0.7.42" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2e06b915b5c230a17d7a736d1e2e63ee753c256a8614ef3f5147b13a4f5541d" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -9030,111 +8931,13 @@ dependencies = [ "smallvec", ] -[[package]] -name = "rusoto_core" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b4f000e8934c1b4f70adde180056812e7ea6b1a247952db8ee98c94cd3116cc" -dependencies = [ - "async-trait", - "base64 0.13.1", - "bytes", - "crc32fast", - "futures", - "http", - "hyper 0.14.27", - "hyper-rustls 0.22.1", - "lazy_static", - "log", - "rusoto_credential", - "rusoto_signature", - "rustc_version 0.4.0", - "serde", - "serde_json", - "tokio", - "xml-rs", -] - -[[package]] -name = "rusoto_credential" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a46b67db7bb66f5541e44db22b0a02fed59c9603e146db3a9e633272d3bac2f" -dependencies = [ - "async-trait", - "chrono", - "dirs-next", - "futures", - "hyper 0.14.27", - "serde", - "serde_json", - "shlex", - "tokio", - "zeroize", -] - -[[package]] -name = "rusoto_dynamodb" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7935e1f9ca57c4ee92a4d823dcd698eb8c992f7e84ca21976ae72cd2b03016e7" -dependencies = [ - "async-trait", - "bytes", - "futures", - "rusoto_core", - "serde", - "serde_json", -] - -[[package]] -name = "rusoto_signature" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6264e93384b90a747758bcc82079711eacf2e755c3a8b5091687b5349d870bcc" -dependencies = [ - "base64 0.13.1", - "bytes", - "chrono", - "digest 0.9.0", - "futures", - "hex", - "hmac 0.11.0", - "http", - "hyper 0.14.27", - "log", - "md-5 0.9.1", - "percent-encoding", - "pin-project-lite", - "rusoto_credential", - "rustc_version 0.4.0", - "serde", - "sha2 0.9.9", - "tokio", -] - -[[package]] -name = "rusoto_sts" -version = "0.47.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e7edd42473ac006fd54105f619e480b0a94136e7f53cf3fb73541363678fd92" -dependencies = [ - "async-trait", - "bytes", - "chrono", - "futures", - "rusoto_core", - "serde_urlencoded", - "xml-rs", -] - [[package]] name = "rusqlite" version = "0.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "549b9d036d571d42e6e85d1c1425e2ac83491075078ca9a15be021c56b1641f2" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "fallible-iterator", "fallible-streaming-iterator", "hashlink", @@ -9144,9 +8947,9 @@ dependencies = [ [[package]] name = "rust_decimal" -version = "1.32.0" +version = "1.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" +checksum = "06676aec5ccb8fc1da723cc8c0f9a46549f21ebb8753d3915c6c41db1e7f1dc4" dependencies = [ "arbitrary", "arrayvec", @@ -9193,7 +8996,7 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" dependencies = [ - "semver 1.0.16", + "semver 1.0.20", ] [[package]] @@ -9217,78 +9020,39 @@ dependencies = [ [[package]] name = "rustix" -version = "0.36.16" +version = "0.38.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6da3636faa25820d8648e0e31c5d519bbb01f72fdf57131f0f5f7da5fed36eab" +checksum = "dc99bc2d4f1fed22595588a013687477aedf3cdcfb26558c559edb67b4d9b22e" dependencies = [ - "bitflags 1.3.2", - "errno 0.3.1", - "io-lifetimes", + "bitflags 2.4.1", + "errno 0.3.7", "libc", - "linux-raw-sys 0.1.4", - "windows-sys 0.45.0", -] - -[[package]] -name = "rustix" -version = "0.38.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0c3dde1fc030af041adc40e79c0e7fbcf431dd24870053d187d7c66e4b87453" -dependencies = [ - "bitflags 2.4.0", - "errno 0.3.1", - "libc", - "linux-raw-sys 0.4.5", + "linux-raw-sys", "windows-sys 0.48.0", ] [[package]] name = "rustls" -version = "0.19.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" -dependencies = [ - "base64 0.13.1", - "log", - "ring 0.16.20", - "sct 0.6.1", - "webpki 0.21.4", -] - -[[package]] -name = "rustls" -version = "0.20.8" +version = "0.20.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fff78fc74d175294f4e83b28343315ffcfb114b156f0185e9741cb5570f50e2f" +checksum = "1b80e3dec595989ea8510028f30c408a4630db12c9cbb8de34203b89d6577e99" dependencies = [ "log", "ring 0.16.20", - "sct 0.7.0", - "webpki 0.22.0", + "sct", + "webpki", ] [[package]] name = "rustls" -version = "0.21.7" +version = "0.21.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd8d6c9f025a446bc4d18ad9632e69aec8f287aa84499ee335599fabd20c3fd8" +checksum = "629648aced5775d558af50b2b4c7b02983a04b312126d45eeead26e7caa498b9" dependencies = [ "log", - "ring 0.16.20", - "rustls-webpki 0.101.5", - "sct 0.7.0", -] - -[[package]] -name = "rustls-native-certs" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a07b7c1885bd8ed3831c289b7870b13ef46fe0e856d288c30d9cc17d75a2092" -dependencies = [ - "openssl-probe", - "rustls 0.19.1", - "schannel", - "security-framework", + "ring 0.17.5", + "rustls-webpki 0.101.7", + "sct", ] [[package]] @@ -9305,18 +9069,18 @@ dependencies = [ [[package]] name = "rustls-pemfile" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d194b56d58803a43635bdc398cd17e383d6f71f9182b9a192c127ca42494a59b" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", ] [[package]] name = "rustls-webpki" -version = "0.100.2" +version = "0.100.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e98ff011474fa39949b7e5c0428f9b4937eda7da7848bbb947786b7be0b27dab" +checksum = "5f6a5fc258f1c1276dfe3016516945546e2d5383911efc0fc4f1cdc5df3a4ae3" dependencies = [ "ring 0.16.20", "untrusted 0.7.1", @@ -9324,19 +9088,19 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.101.5" +version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45a27e3b59326c16e23d30aeb7a36a24cc0d29e71d68ff611cdfb4a01d013bed" +checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.5", + "untrusted 0.9.0", ] [[package]] name = "rustversion" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f3208ce4d8448b3f3e7d168a73f5e0c43a61e32930de3bceeccedb388b6bf06" +checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" [[package]] name = "rusty-fork" @@ -9356,7 +9120,7 @@ version = "12.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "994eca4bca05c87e86e15d90fc7a91d1be64b4482b38cb2d27474568fe7c9db9" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "cfg-if", "clipboard-win", "fd-lock", @@ -9379,16 +9143,16 @@ version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a32af5427251d2e4be14fc151eabe18abb4a7aad5efee7044da9f096c906a43" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "ryu" -version = "1.0.13" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041" +checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" [[package]] name = "salsa20" @@ -9416,11 +9180,11 @@ checksum = "ece8e78b2f38ec51c51f5d475df0a7187ba5111b2a28bdc761ee05b075d40a71" [[package]] name = "schannel" -version = "0.1.21" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "713cfb06c7059f3588fb8044c0fad1d09e3c01d225e25b9220dbfdcf16dbb1b3" +checksum = "0c3733bf4cf7ea0880754e19cb5a462007c4a8c1914bff372ccc95b464f1df88" dependencies = [ - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] @@ -9431,7 +9195,7 @@ checksum = "5ea1c251bea837ece3126074d9e01c5868e5ae6135946404ceb20b5b2e264f7c" dependencies = [ "apache-avro", "byteorder", - "dashmap 5.4.0", + "dashmap 5.5.3", "futures", "reqwest", "serde", @@ -9440,9 +9204,9 @@ dependencies = [ [[package]] name = "schemars" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f7b0ce13155372a76ee2e1c5ffba1fe61ede73fbea5630d61eee6fac4929c0c" +checksum = "45a28f4c49489add4ce10783f7911893516f15afe45d015608d41faca6bc4d29" dependencies = [ "dyn-clone", "schemars_derive", @@ -9452,12 +9216,12 @@ dependencies = [ [[package]] name = "schemars_derive" -version = "0.8.15" +version = "0.8.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e85e2a16b12bdb763244c69ab79363d71db2b4b918a2def53f80b02e0574b13c" +checksum = "c767fd6fa65d9ccf9cf026122c1b555f2ef9a4f0cea69da4d7dbc3e258d30967" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "serde_derive_internals", "syn 1.0.109", ] @@ -9474,12 +9238,6 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "scratch" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1792db035ce95be60c3f8853017b3999209281c24e2ba5bc8e59bf97a0c590c1" - [[package]] name = "scroll" version = "0.11.0" @@ -9495,27 +9253,17 @@ dependencies = [ "password-hash", "pbkdf2 0.12.2", "salsa20", - "sha2 0.10.6", + "sha2", ] [[package]] name = "sct" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b362b83898e0e69f38515b82ee15aa80636befe47c3b6d3d89a911e78fc228ce" -dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", -] - -[[package]] -name = "sct" -version = "0.7.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" +checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.5", + "untrusted 0.9.0", ] [[package]] @@ -9532,7 +9280,7 @@ checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" dependencies = [ "base16ct 0.1.1", "der 0.6.1", - "generic-array 0.14.6", + "generic-array 0.14.7", "pkcs8 0.9.0", "subtle", "zeroize", @@ -9540,13 +9288,13 @@ dependencies = [ [[package]] name = "sec1" -version = "0.7.1" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48518a2b5775ba8ca5b46596aae011caa431e6ce7e4a67ead66d92f08884220e" +checksum = "d3e97a565f76233a6003f9f5c54be1d9c5bdfa3eccfb189469f11ec4901c47dc" dependencies = [ "base16ct 0.2.0", "der 0.7.8", - "generic-array 0.14.6", + "generic-array 0.14.7", "pkcs8 0.10.2", "subtle", "zeroize", @@ -9591,9 +9339,9 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.8.2" +version = "2.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a332be01508d814fed64bf28f798a146d73792121129962fdf335bb3c49a4254" +checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" dependencies = [ "bitflags 1.3.2", "core-foundation", @@ -9604,9 +9352,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.8.0" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31c9bb296072e961fcbd8853511dd39c2d8be2deb1e17c6860b1d30732b323b4" +checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" dependencies = [ "core-foundation-sys", "libc", @@ -9623,9 +9371,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.16" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" +checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" [[package]] name = "semver-parser" @@ -9635,15 +9383,15 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "seq-macro" -version = "0.3.3" +version = "0.3.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e6b44e8fc93a14e66336d230954dda83d18b4605ccace8fe09bc7514a71ad0bc" +checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" [[package]] name = "serde" -version = "1.0.189" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e422a44e74ad4001bdc8eede9a4570ab52f71190e9c076d14369f38b9200537" +checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" dependencies = [ "serde_derive", ] @@ -9654,7 +9402,7 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c" dependencies = [ - "ordered-float 2.10.0", + "ordered-float 2.10.1", "serde", ] @@ -9669,13 +9417,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.189" +version = "1.0.193" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e48d1f918009ce3145511378cf68d613e3b3d9137d67272562080d68a2b32d5" +checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -9684,8 +9432,8 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "85bf8229e7920a9f636479437026331ce11aa132b4dde37d121944a44d6e5f3c" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -9695,7 +9443,7 @@ version = "1.0.108" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.1.0", "itoa", "ryu", "serde", @@ -9746,18 +9494,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e182d6ec6f05393cc0e5ed1bf81ad6db3a8feedf8ee515ecdd369809bcce8082" dependencies = [ "darling 0.13.4", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "serde_yaml" -version = "0.9.25" +version = "0.9.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a49e178e4452f45cb61d0cd8cebc1b0fafd3e41929e996cef79aa3aca91f574" +checksum = "3cc7a1570e38322cfe4154732e5110f887ea57e22b76f4bfd32b5bdd3368666c" dependencies = [ - "indexmap 2.0.0", + "indexmap 2.1.0", "itoa", "ryu", "serde", @@ -9770,7 +9518,7 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "538c30747ae860d6fb88330addbbd3e0ddbe46d662d032855596d8a8ca260611" dependencies = [ - "dashmap 5.4.0", + "dashmap 5.5.3", "futures", "lazy_static", "log", @@ -9784,7 +9532,7 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0e56dd856803e253c8f298af3f4d7eb0ae5e23a737252cd90bb4f3b435033b2d" dependencies = [ - "dashmap 5.4.0", + "dashmap 5.5.3", "futures", "lazy_static", "log", @@ -9798,8 +9546,8 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "079a83df15f85d89a68d64ae1238f142f172b1fa915d0d76b26a7cba1b659a69" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -9809,9 +9557,9 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -9840,9 +9588,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.5" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f04293dc80c3993519f2d7f6f511707ee7094fe0c6d3406feb330cdb3540eba3" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -9851,22 +9599,9 @@ dependencies = [ [[package]] name = "sha2" -version = "0.9.9" +version = "0.10.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d58a1e1bf39749807d89cf2d98ac2dfa0ff1cb3faa38fbb64dd88ac8013d800" -dependencies = [ - "block-buffer 0.9.0", - "cfg-if", - "cpufeatures", - "digest 0.9.0", - "opaque-debug", -] - -[[package]] -name = "sha2" -version = "0.10.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" dependencies = [ "cfg-if", "cpufeatures", @@ -9887,18 +9622,18 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] [[package]] name = "shlex" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43b2853a4d09f215c24cc5489c992ce46052d359b5109343cbafbf26bc62f8a3" +checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" [[package]] name = "signal-hook-registry" @@ -9921,9 +9656,9 @@ dependencies = [ [[package]] name = "signature" -version = "2.1.0" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e1788eed21689f9cf370582dfc467ef36ed9c707f073528ddafa8d83e3b8500" +checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest 0.10.7", "rand_core 0.6.4", @@ -9937,9 +9672,9 @@ checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" [[package]] name = "similar" -version = "2.2.1" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "420acb44afdae038210c99e69aae24109f32f15500aa708e81d46c9f29d55fcf" +checksum = "2aeaf503862c419d66959f5d7ca015337d864e9c49485d771b732e2a20453597" [[package]] name = "simple_asn1" @@ -9950,14 +9685,14 @@ dependencies = [ "num-bigint", "num-traits", "thiserror", - "time 0.3.20", + "time 0.3.30", ] [[package]] name = "siphasher" -version = "0.3.10" +version = "0.3.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" [[package]] name = "sketches-ddsketch" @@ -9967,18 +9702,18 @@ checksum = "68a406c1882ed7f29cd5e248c9848a80e7cb6ae0fea82346d2746f2f941c07e1" [[package]] name = "slab" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg", ] [[package]] name = "smallvec" -version = "1.10.0" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" +checksum = "4dccd0940a2dcdf68d092b8cbab7dc0ad8fa938bf95787e1b916b0e3d0e8e970" [[package]] name = "smartstring" @@ -9993,9 +9728,9 @@ dependencies = [ [[package]] name = "snafu" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0656e7e3ffb70f6c39b3c2a86332bb74aa3c679da781642590f3c1118c5045" +checksum = "e4de37ad025c587a29e8f3f5605c00f70b98715ef90b9061a815b9e59e9042d6" dependencies = [ "doc-comment", "snafu-derive", @@ -10003,13 +9738,13 @@ dependencies = [ [[package]] name = "snafu-derive" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "475b3bbe5245c26f2d8a6f62d67c1f30eb9fffeccee721c45d162c3ebbdf81b2" +checksum = "990079665f075b699031e9c08fd3ab99be5029b96f3b78dc0709e8f77e4efebf" dependencies = [ "heck", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -10021,9 +9756,9 @@ checksum = "5e9f0ab6ef7eb7353d9119c170a436d1bf248eea575ac42d19d12f4e34130831" [[package]] name = "socket2" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "64a4a911eed85daf18834cfaa86a79b7d266ff93ff5ba14005426219480ed662" +checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" dependencies = [ "libc", "winapi", @@ -10072,9 +9807,9 @@ dependencies = [ [[package]] name = "sourcemap" -version = "7.0.0" +version = "7.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbecc42a2b6131acc3bf9a25c9fe4161dba438eb52131bba83c5d781b5b70be3" +checksum = "10da010a590ed2fa9ca8467b00ce7e9c5a8017742c0c09c45450efc172208c4b" dependencies = [ "data-encoding", "debugid", @@ -10123,9 +9858,9 @@ dependencies = [ [[package]] name = "sqllogictest" -version = "0.17.1" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a1e74af2f280e063ed8346f0b1bec1403dc3540e90e7f3fed54f96cadc64fed" +checksum = "78ea1056caa9180e7e5727eed1a377d96c9f4615303fa82d2f4c202c64736dee" dependencies = [ "async-trait", "educe", @@ -10135,7 +9870,7 @@ dependencies = [ "humantime", "itertools 0.11.0", "libtest-mimic", - "md-5 0.10.5", + "md-5", "owo-colors", "regex", "similar", @@ -10156,9 +9891,9 @@ dependencies = [ [[package]] name = "sqlparser" -version = "0.38.0" +version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0272b7bb0a225320170c99901b4b5fb3a4384e255a7f2cc228f61e2ba3893e75" +checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7" dependencies = [ "log", "sqlparser_derive", @@ -10179,8 +9914,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55fe75cb4a364c7f7ae06c7dbbc8d84bddd85d6cdf9975963c3935bc1991761e" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] @@ -10237,8 +9972,8 @@ checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" dependencies = [ "phf_generator 0.10.0", "phf_shared 0.10.0", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", ] [[package]] @@ -10248,18 +9983,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fa4d4f81d7c05b9161f8de839975d3326328b8ba2831164b465524cc2f55252" dependencies = [ "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] name = "stringprep" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ee348cb74b87454fff4b551cbf727025810a004f88aeacae7f85b87f4e9a1c1" +checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" dependencies = [ + "finl_unicode", "unicode-bidi", "unicode-normalization", ] @@ -10282,7 +10018,7 @@ version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290d54ea6f91c969195bdbcd7442c8c2a2ba87da8bf60a7ee86a235d4bc1e125" dependencies = [ - "strum_macros 0.25.1", + "strum_macros 0.25.3", ] [[package]] @@ -10292,23 +10028,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e385be0d24f186b4ce2f9982191e7101bb737312ad61c1f2f984f34bcf85d59" dependencies = [ "heck", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "rustversion", "syn 1.0.109", ] [[package]] name = "strum_macros" -version = "0.25.1" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6069ca09d878a33f883cc06aaa9718ede171841d3832450354410b718b097232" +checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" dependencies = [ "heck", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "rustversion", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -10333,9 +10069,9 @@ dependencies = [ [[package]] name = "subtle" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" [[package]] name = "swc_atoms" @@ -10397,10 +10133,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5b5aaca9a0082be4515f0fbbecc191bf5829cd25b5b9c0a2810f6a2bb0d6829" dependencies = [ "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -10409,7 +10145,7 @@ version = "0.109.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7bc2286cedd688a68f214faa1c19bb5cceab7c9c54d0cbe3273e4c1704e38f69" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.4.1", "is-macro", "num-bigint", "scoped-tls", @@ -10446,10 +10182,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dcdff076dccca6cc6a0e0b2a2c8acfb066014382bc6df98ec99e755484814384" dependencies = [ "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -10492,7 +10228,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01ffd4a8149052bfc1ec1832fcbe04f317846ce635a49ec438df33b06db27d26" dependencies = [ "better_scoped_tls", - "bitflags 2.4.0", + "bitflags 2.4.1", "indexmap 1.9.3", "once_cell", "phf 0.10.1", @@ -10529,10 +10265,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8188eab297da773836ef5cf2af03ee5cca7a563e1be4b146f8141452c28cc690" dependencies = [ "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -10562,7 +10298,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "675b5c755b0448268830e85e59429095d3423c0ce4a850b209c6f0eeab069f63" dependencies = [ "base64 0.13.1", - "dashmap 5.4.0", + "dashmap 5.5.3", "indexmap 1.9.3", "once_cell", "serde", @@ -10634,9 +10370,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "05a95d367e228d52484c53336991fdcf47b6b553ef835d9159db4ba40efb0ee8" dependencies = [ "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -10646,9 +10382,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a273205ccb09b51fabe88c49f3b34c5a4631c4c00a16ae20e03111d6a42e832" dependencies = [ "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -10669,10 +10405,10 @@ checksum = "0f322730fb82f3930a450ac24de8c98523af7d34ab8cb2f46bcb405839891a99" dependencies = [ "Inflector", "pmutil", - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "swc_macros_common", - "syn 2.0.29", + "syn 2.0.39", ] [[package]] @@ -10692,19 +10428,19 @@ version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "unicode-ident", ] [[package]] name = "syn" -version = "2.0.29" +version = "2.0.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "unicode-ident", ] @@ -10714,11 +10450,23 @@ version = "0.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fea305d57546cc8cd04feb14b62ec84bf17f50e3f7b12560d7bfa9265f39d9ed" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] +[[package]] +name = "syn_derive" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1329189c02ff984e9736652b1631330da25eaa6bc639089ed4915d25446cbe7b" +dependencies = [ + "proc-macro-error 1.0.4", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -10731,12 +10479,33 @@ version = "0.12.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f36bdaa60a83aca3921b5259d5400cbf5e90fc51931376a9bd4a0eb79aa7210f" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", "unicode-xid 0.2.4", ] +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "take_mut" version = "0.2.2" @@ -10762,9 +10531,9 @@ dependencies = [ [[package]] name = "target-lexicon" -version = "0.12.6" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae9980cab1db3fceee2f6c6f643d5d8de2997c58ee8d25fb0cc8a9e9e7348e5" +checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" [[package]] name = "tempdir" @@ -10778,14 +10547,14 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "7ef1adac450ad7f4b3c28589471ade84f25f731a7a0fe30d71dfa9f60fd808e5" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", - "rustix 0.38.11", + "redox_syscall 0.4.1", + "rustix", "windows-sys 0.48.0", ] @@ -10802,9 +10571,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be55cf8942feac5c765c2c993422806843c9a9a45d4d5c407ad6dd2ea95eb9b6" +checksum = "ff1bc3d3f05aff0403e8ac0d92ced918ec05b666a43f83297ccef5bea8a3d449" dependencies = [ "winapi-util", ] @@ -10826,22 +10595,22 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d6d7a740b8a666a7e828dd00da9c0dc290dff53154ea77ac109281de90589b7" +checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.48" +version = "1.0.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49922ecae66cc8a249b77e68d1d0623c1b2c514f0060c27cdc68bd62a1219d35" +checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -10871,7 +10640,7 @@ checksum = "7e54bc85fc7faa8bc175c4bab5b92ba8d9a3ce893d0e9f42cc455c8ab16a9e09" dependencies = [ "byteorder", "integer-encoding", - "ordered-float 2.10.0", + "ordered-float 2.10.1", ] [[package]] @@ -10887,11 +10656,13 @@ dependencies = [ [[package]] name = "time" -version = "0.3.20" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890" +checksum = "c4a34ab300f2dee6e562c10a046fc05e358b29f9bf92277f30c3c8d82275f6f5" dependencies = [ + "deranged", "itoa", + "powerfmt", "serde", "time-core", "time-macros", @@ -10899,15 +10670,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" +checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" [[package]] name = "time-macros" -version = "0.2.8" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36" +checksum = "4ad70d68dba9e1f8aceda7aa6711965dfec1cac869f311a51bd08b3a2ccbce20" dependencies = [ "time-core", ] @@ -10982,9 +10753,9 @@ version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -11024,13 +10795,13 @@ dependencies = [ "log", "parking_lot", "percent-encoding", - "phf 0.11.1", + "phf 0.11.2", "pin-project-lite", "postgres-protocol", "postgres-types", - "socket2 0.4.9", + "socket2 0.4.10", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", ] [[package]] @@ -11041,21 +10812,10 @@ checksum = "dd5831152cb0d3f79ef5523b357319ba154795d64c7078b2daa95a803b54057f" dependencies = [ "futures", "ring 0.16.20", - "rustls 0.21.7", + "rustls 0.21.9", "tokio", "tokio-postgres", - "tokio-rustls 0.24.0", -] - -[[package]] -name = "tokio-rustls" -version = "0.22.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" -dependencies = [ - "rustls 0.19.1", - "tokio", - "webpki 0.21.4", + "tokio-rustls 0.24.1", ] [[package]] @@ -11064,18 +10824,18 @@ version = "0.23.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c43ee83903113e03984cb9e5cebe6c04a5116269e900e3ddba8f068a62adda59" dependencies = [ - "rustls 0.20.8", + "rustls 0.20.9", "tokio", - "webpki 0.22.0", + "webpki", ] [[package]] name = "tokio-rustls" -version = "0.24.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0d409377ff5b1e3ca6437aa86c1eb7d40c134bfec254e44c830defa92669db5" +checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls 0.21.7", + "rustls 0.21.9", "tokio", ] @@ -11119,9 +10879,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.8" +version = "0.7.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "806fe8c2c87eccc8b3267cbae29ed3ab2d0bd37fca70ab622e46aaa9375ddb7d" +checksum = "5419f34732d9eb6ee4c3578b7989078579b7f039cbbb9ca2c4da015749371e15" dependencies = [ "bytes", "futures-core", @@ -11143,17 +10903,28 @@ dependencies = [ [[package]] name = "toml_datetime" -version = "0.6.1" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622" +checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" [[package]] name = "toml_edit" -version = "0.19.4" +version = "0.19.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a1eb0622d28f4b9c90adc4ea4b2b46b47663fde9ac5fafcb14a1369d5508825" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ - "indexmap 1.9.3", + "indexmap 2.1.0", + "toml_datetime", + "winnow", +] + +[[package]] +name = "toml_edit" +version = "0.20.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70f427fce4d84c72b5b732388bf4a9f4531b53f74e2887e3ecb2481f68f66d81" +dependencies = [ + "indexmap 2.1.0", "toml_datetime", "winnow", ] @@ -11166,7 +10937,7 @@ checksum = "3082666a3a6433f7f511c7192923fa1fe07c69332d3c6a2e6bb040b569199d5a" dependencies = [ "async-trait", "axum", - "base64 0.21.0", + "base64 0.21.5", "bytes", "futures-core", "futures-util", @@ -11188,14 +10959,14 @@ dependencies = [ [[package]] name = "tonic" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5469afaf78a11265c343a88969045c1568aa8ecc6c787dbf756e92e70f199861" +checksum = "d560933a0de61cf715926b9cac824d4c883c2c43142f787595e48280c40a1d0e" dependencies = [ "async-stream", "async-trait", "axum", - "base64 0.21.0", + "base64 0.21.5", "bytes", "h2", "http", @@ -11204,11 +10975,12 @@ dependencies = [ "hyper-timeout", "percent-encoding", "pin-project", - "prost 0.12.2", - "rustls-native-certs 0.6.3", + "prost 0.12.3", + "rustls 0.21.9", + "rustls-native-certs", "rustls-pemfile", "tokio", - "tokio-rustls 0.24.0", + "tokio-rustls 0.24.1", "tokio-stream", "tower", "tower-layer", @@ -11218,28 +10990,28 @@ dependencies = [ [[package]] name = "tonic-build" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b477abbe1d18c0b08f56cd01d1bc288668c5b5cfd19b2ae1886bbf599c546f1" +checksum = "9d021fc044c18582b9a2408cd0dd05b1596e3ecdb5c4df822bb0183545683889" dependencies = [ - "prettyplease 0.2.12", - "proc-macro2 1.0.63", - "prost-build 0.12.0", - "quote 1.0.30", - "syn 2.0.29", + "prettyplease 0.2.15", + "proc-macro2 1.0.69", + "prost-build 0.12.3", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "tonic-reflection" -version = "0.10.0" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16e61add39c1426d5f21eae2cc196e97e1f5a5ea7bcf491df3885797992a86eb" +checksum = "3fa37c513df1339d197f4ba21d28c918b9ef1ac1768265f11ecb6b7f1cba1b76" dependencies = [ - "prost 0.12.2", - "prost-types 0.12.0", + "prost 0.12.3", + "prost-types 0.12.3", "tokio", "tokio-stream", - "tonic 0.10.0", + "tonic 0.10.2", ] [[package]] @@ -11248,14 +11020,14 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0fddb2a37b247e6adcb9f239f4e5cefdcc5ed526141a416b943929f13aea2cce" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "bytes", "http", "http-body 0.4.5", "hyper 0.14.27", "pin-project", "tokio-stream", - "tonic 0.10.0", + "tonic 0.10.2", "tower-http", "tower-layer", "tower-service", @@ -11276,7 +11048,7 @@ dependencies = [ "rand 0.8.5", "slab", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "tower-layer", "tower-service", "tracing", @@ -11289,8 +11061,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "61c5bb1d698276a2443e5ecfabc1008bf15a36c12e6a7176e7bf089ea9131140" dependencies = [ "async-compression", - "base64 0.21.0", - "bitflags 2.4.0", + "base64 0.21.5", + "bitflags 2.4.1", "bytes", "futures-core", "futures-util", @@ -11304,7 +11076,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "tokio", - "tokio-util 0.7.8", + "tokio-util 0.7.10", "tower", "tower-layer", "tower-service", @@ -11326,11 +11098,10 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -11339,11 +11110,12 @@ dependencies = [ [[package]] name = "tracing-actix-web" -version = "0.7.6" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c0b08ce08cbde6a96fc1e4ebb8132053e53ec7a5cd27eef93ede6b73ebbda06" +checksum = "1fe0d5feac3f4ca21ba33496bcb1ccab58cca6412b1405ae80f0581541e0ca78" dependencies = [ "actix-web", + "mutually_exclusive_features", "pin-project", "tracing", "uuid", @@ -11351,20 +11123,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.23" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4017f8f45139870ca7e672686113917c71c7a6e02d4924eda67186083c03081a" +checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", "valuable", @@ -11372,12 +11144,23 @@ dependencies = [ [[package]] name = "tracing-log" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +checksum = "f751112709b4e791d8ce53e32c4ed2d353565a795ce84da2285393f41557bdf2" dependencies = [ - "lazy_static", "log", + "once_cell", + "tracing-core", +] + +[[package]] +name = "tracing-log" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" +dependencies = [ + "log", + "once_cell", "tracing-core", ] @@ -11391,15 +11174,15 @@ dependencies = [ "opentelemetry", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.1.4", "tracing-subscriber", ] [[package]] name = "tracing-subscriber" -version = "0.3.17" +version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a651bc37f915e81f087d86e62a18eec5f79550c7faff886f7090b4ea757c77" +checksum = "ad0f048c97dbd9faa9b7df56362b8ebcaa52adb06b498c050d2f4e32f90a7a8b" dependencies = [ "matchers", "nu-ansi-term", @@ -11410,7 +11193,7 @@ dependencies = [ "thread_local", "tracing", "tracing-core", - "tracing-log", + "tracing-log 0.2.0", ] [[package]] @@ -11544,22 +11327,22 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "89851716b67b937e393b3daa8423e67ddfc4bbbf1654bcf05488e95e0828db0c" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", "syn 1.0.109", ] [[package]] name = "typenum" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "497961ef93d974e23eb6f433eb5fe1b7930b659f06d12dec6fc44a8f554c0bba" +checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e79c4d996edb816c91e4308506774452e55e95c3c9de07b6729e17e15a5ef81" +checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" [[package]] name = "uint" @@ -11622,18 +11405,18 @@ dependencies = [ [[package]] name = "unicase" -version = "2.6.0" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" dependencies = [ "version_check", ] [[package]] name = "unicode-bidi" -version = "0.3.11" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524b68aca1d05e03fdf03fcdce2c6c94b6daf6d16861ddaa7e4f2b6638a9052c" +checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" [[package]] name = "unicode-id" @@ -11643,9 +11426,9 @@ checksum = "b1b6def86329695390197b82c1e244a54a131ceb66c996f2088a3876e2ae083f" [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "unicode-normalization" @@ -11664,9 +11447,9 @@ checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" [[package]] name = "unicode-width" -version = "0.1.10" +version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" +checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" [[package]] name = "unicode-xid" @@ -11698,9 +11481,9 @@ dependencies = [ [[package]] name = "unsafe-libyaml" -version = "0.2.7" +version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad2024452afd3874bf539695e04af6732ba06517424dbf958fdb16a01f3bef6c" +checksum = "f28467d3e1d3c6586d8f25fa243f544f5800fec42d97032474e17222c2b75cfa" [[package]] name = "untrusted" @@ -11716,17 +11499,17 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.7.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b11c96ac7ee530603dcdf68ed1557050f374ce55a5a07193ebf8cbc9f8927e9" +checksum = "7830e33f6e25723d41a63f77e434159dad02919f18f55a512b5f16f3b1d77138" dependencies = [ - "base64 0.21.0", + "base64 0.21.5", "log", "once_cell", - "rustls 0.21.7", - "rustls-webpki 0.100.2", + "rustls 0.21.9", + "rustls-webpki 0.101.7", "url", - "webpki-roots 0.23.1", + "webpki-roots 0.25.3", ] [[package]] @@ -11743,9 +11526,9 @@ dependencies = [ [[package]] name = "urlencoding" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8db7427f936968176eaa7cdf81b7f98b980b18495ec28f1b5791ac3bfe3eea9" +checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "urlpattern" @@ -11863,8 +11646,8 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d257817081c7dffcdbab24b9e62d2def62e2ff7d00b1c20062551e6cccc145ff" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", + "proc-macro2 1.0.69", + "quote 1.0.33", ] [[package]] @@ -11888,11 +11671,10 @@ dependencies = [ [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -11916,9 +11698,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -11926,24 +11708,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.34" +version = "0.4.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f219e0d211ba40266969f6dbdd90636da12f75bee4fc9d6c23d1260dadb51454" +checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" dependencies = [ "cfg-if", "js-sys", @@ -11953,32 +11735,32 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" dependencies = [ - "quote 1.0.30", + "quote 1.0.33", "wasm-bindgen-macro-support", ] [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" [[package]] name = "wasm-streams" @@ -11995,9 +11777,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.61" +version = "0.3.65" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97" +checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" dependencies = [ "js-sys", "wasm-bindgen", @@ -12070,22 +11852,12 @@ dependencies = [ [[package]] name = "webpki" -version = "0.21.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e38c0608262c46d4a56202ebabdeb094cef7e560ca7a226c6bf055188aa4ea" -dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", -] - -[[package]] -name = "webpki" -version = "0.22.0" +version = "0.22.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "ed63aea5ce73d0ff405984102c42de94fc55a6b75765d621c65262469b3c9b53" dependencies = [ - "ring 0.16.20", - "untrusted 0.7.1", + "ring 0.17.5", + "untrusted 0.9.0", ] [[package]] @@ -12094,7 +11866,7 @@ version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b6c71e40d7d2c34a5106301fb632274ca37242cd0c9d3e64dbece371a40a2d87" dependencies = [ - "webpki 0.22.0", + "webpki", ] [[package]] @@ -12103,24 +11875,25 @@ version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b03058f88386e5ff5310d9111d53f48b17d732b401aeb83a8d5190f2ac459338" dependencies = [ - "rustls-webpki 0.100.2", + "rustls-webpki 0.100.3", ] [[package]] name = "webpki-roots" -version = "0.25.2" +version = "0.25.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14247bb57be4f377dfb94c72830b8ce8fc6beac03cf4bf7b9732eadd414123fc" +checksum = "1778a42e8b3b90bff8d0f5032bf22250792889a5cdc752aa0020c84abe3aaf10" [[package]] name = "which" -version = "4.4.0" +version = "4.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2441c784c52b289a054b7201fc93253e288f094e2f4be9058343127c4226a269" +checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" dependencies = [ "either", - "libc", + "home", "once_cell", + "rustix", ] [[package]] @@ -12135,9 +11908,9 @@ dependencies = [ [[package]] name = "widestring" -version = "0.5.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17882f045410753661207383517a6f62ec3dbeb6a4ed2acce01f0728238d1983" +checksum = "653f141f39ec16bba3c5abe400a0c60da7468261cc2cbf36805022876bc721a8" [[package]] name = "winapi" @@ -12157,9 +11930,9 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" dependencies = [ "winapi", ] @@ -12171,18 +11944,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" -version = "0.42.0" +name = "windows-core" +version = "0.51.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64" dependencies = [ - "windows_aarch64_gnullvm 0.42.1", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm 0.42.1", - "windows_x86_64_msvc 0.42.1", + "windows-targets 0.48.5", ] [[package]] @@ -12191,7 +11958,7 @@ version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows-targets 0.42.1", + "windows-targets 0.42.2", ] [[package]] @@ -12200,141 +11967,132 @@ version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets 0.48.0", + "windows-targets 0.48.5", ] [[package]] name = "windows-targets" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ - "windows_aarch64_gnullvm 0.42.1", - "windows_aarch64_msvc 0.42.1", - "windows_i686_gnu 0.42.1", - "windows_i686_msvc 0.42.1", - "windows_x86_64_gnu 0.42.1", - "windows_x86_64_gnullvm 0.42.1", - "windows_x86_64_msvc 0.42.1", + "windows_aarch64_gnullvm 0.42.2", + "windows_aarch64_msvc 0.42.2", + "windows_i686_gnu 0.42.2", + "windows_i686_msvc 0.42.2", + "windows_x86_64_gnu 0.42.2", + "windows_x86_64_gnullvm 0.42.2", + "windows_x86_64_msvc 0.42.2", ] [[package]] name = "windows-targets" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b1eb6f0cd7c80c79759c929114ef071b87354ce476d9d94271031c0497adfd5" +checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm 0.48.0", - "windows_aarch64_msvc 0.48.0", - "windows_i686_gnu 0.48.0", - "windows_i686_msvc 0.48.0", - "windows_x86_64_gnu 0.48.0", - "windows_x86_64_gnullvm 0.48.0", - "windows_x86_64_msvc 0.48.0", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91ae572e1b79dba883e0d315474df7305d12f569b400fcf90581b06062f7e1bc" +checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_aarch64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2ef27e0d7bdfcfc7b868b317c1d32c641a6fe4629c171b8928c7b08d98d7cf3" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "622a1962a7db830d6fd0a69683c80a18fda201879f0f447f065a3b7467daa241" +checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_i686_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4542c6e364ce21bf45d69fdd2a8e455fa38d316158cfd43b3ac1c5b1b19f8e00" +checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnu" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca2b8a661f7628cbd23440e50b05d705db3686f894fc9580820623656af974b1" +checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7896dbc1f41e08872e9d5e8f8baa8fdd2677f29468c4e156210174edc7f7b953" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" [[package]] name = "windows_x86_64_msvc" -version = "0.48.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a515f5799fe4961cb532f983ce2b23082366b898e52ffbce459c86f67c8378a" +checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" [[package]] name = "winnow" -version = "0.3.5" +version = "0.5.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee7b2c67f962bf5042bfd8b6a916178df33a26eec343ae064cb8e069f638fa6f" +checksum = "829846f3e3db426d4cee4510841b71a8e58aa2a76b1132579487ae430ccd9c7b" dependencies = [ "memchr", ] -[[package]] -name = "winreg" -version = "0.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" -dependencies = [ - "winapi", -] - [[package]] name = "winreg" version = "0.50.0" @@ -12406,7 +12164,7 @@ dependencies = [ "hex", "pem 2.0.1", "ring 0.16.20", - "signature 2.1.0", + "signature 2.2.0", "spki 0.7.2", "thiserror", ] @@ -12425,7 +12183,7 @@ dependencies = [ "oid-registry", "rusticata-macros", "thiserror", - "time 0.3.20", + "time 0.3.30", ] [[package]] @@ -12437,17 +12195,11 @@ dependencies = [ "libc", ] -[[package]] -name = "xml-rs" -version = "0.8.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52839dc911083a8ef63efa4d039d1f58b5e409f923e44c80828f206f66e5541c" - [[package]] name = "xmlparser" -version = "0.13.5" +version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d25c75bf9ea12c4040a97f829154768bbbce366287e2dc044af160cd79a13fd" +checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" [[package]] name = "xz2" @@ -12458,32 +12210,58 @@ dependencies = [ "lzma-sys", ] +[[package]] +name = "z85" +version = "3.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a599daf1b507819c1121f0bf87fa37eb19daac6aff3aefefd4e6e2e0f2020fc" + [[package]] name = "zerocopy" -version = "0.6.1" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "332f188cc1bcf1fe1064b8c58d150f497e697f49774aa846f2dc949d9a25f236" +checksum = "96f8f25c15a0edc9b07eb66e7e6e97d124c0505435c382fde1ab7ceb188aa956" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.6.5", +] + +[[package]] +name = "zerocopy" +version = "0.7.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0" +dependencies = [ + "zerocopy-derive 0.7.26", ] [[package]] name = "zerocopy-derive" -version = "0.3.2" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6505e6815af7de1746a08f69c69606bb45695a17149517680f3b2149713b19a3" +checksum = "855e0f6af9cd72b87d8a6c586f3cb583f5cdcc62c2c80869d8cd7e96fdf7ee20" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 1.0.109", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f" +dependencies = [ + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] name = "zeroize" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0956f1ba7c7909bfb66c2e9e4124ab6f6482560f6628b5aaeba39207c9aad9" +checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" dependencies = [ "zeroize_derive", ] @@ -12494,9 +12272,9 @@ version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ - "proc-macro2 1.0.63", - "quote 1.0.30", - "syn 2.0.29", + "proc-macro2 1.0.69", + "quote 1.0.33", + "syn 2.0.39", ] [[package]] @@ -12527,30 +12305,47 @@ dependencies = [ [[package]] name = "zstd" -version = "0.12.3+zstd.1.5.2" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76eea132fb024e0e13fd9c2f5d5d595d8a967aa72382ac2f9d39fcc95afd0806" +checksum = "1a27595e173641171fc74a1232b7b1c7a7cb6e18222c11e9dfb9888fa424c53c" dependencies = [ - "zstd-safe", + "zstd-safe 6.0.6", +] + +[[package]] +name = "zstd" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bffb3309596d527cfcba7dfc6ed6052f1d39dfbd7c867aa2e865e4a449c10110" +dependencies = [ + "zstd-safe 7.0.0", ] [[package]] name = "zstd-safe" -version = "6.0.4+zstd.1.5.4" +version = "6.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7afb4b54b8910cf5447638cb54bf4e8a65cbedd783af98b98c62ffe91f185543" +checksum = "ee98ffd0b48ee95e6c5168188e44a54550b1564d9d530ee21d5f0eaed1069581" dependencies = [ "libc", "zstd-sys", ] +[[package]] +name = "zstd-safe" +version = "7.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43747c7422e2924c11144d5229878b98180ef8b06cca4ab5af37afc8a8d8ea3e" +dependencies = [ + "zstd-sys", +] + [[package]] name = "zstd-sys" -version = "2.0.7+zstd.1.5.4" +version = "2.0.9+zstd.1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94509c3ba2fe55294d752b79842c530ccfab760192521df74a081a78d2b3c7f5" +checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" dependencies = [ "cc", - "libc", "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index d49bbf7ee3..13fa996c50 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,6 +21,8 @@ resolver = "2" [workspace.dependencies] bincode = { version = "2.0.0-rc.3", features = ["derive"]} +datafusion = { version = "33.0.0"} +datafusion-expr = { version = "33.0.0"} [patch.crates-io] postgres = { git = "https://github.com/getdozer/rust-postgres" } @@ -28,4 +30,10 @@ postgres-protocol = { git = "https://github.com/getdozer/rust-postgres" } postgres-types = { git = "https://github.com/getdozer/rust-postgres" } tokio-postgres = { git = "https://github.com/getdozer/rust-postgres" } - +datafusion = { git = "https://github.com/getdozer/arrow-datafusion" } +datafusion-expr = { git = "https://github.com/getdozer/arrow-datafusion" } +datafusion-physical-expr = { git = "https://github.com/getdozer/arrow-datafusion" } +datafusion-physical-plan = { git = "https://github.com/getdozer/arrow-datafusion" } +datafusion-sql = { git = "https://github.com/getdozer/arrow-datafusion" } +datafusion-proto = { git = "https://github.com/getdozer/arrow-datafusion" } +datafusion-common = { git = "https://github.com/getdozer/arrow-datafusion" } diff --git a/dozer-api/Cargo.toml b/dozer-api/Cargo.toml index 6b015e5936..afb9b641a4 100644 --- a/dozer-api/Cargo.toml +++ b/dozer-api/Cargo.toml @@ -53,8 +53,12 @@ pin-project = "1.1.3" async-stream = "0.3.5" uuid = "1.6.1" chrono = "0.4.31" -datafusion = "32.0.0" -datafusion-expr = "32.0.0" +datafusion = { workspace = true } +datafusion-expr = { workspace = true } serde_json = { version = "1.0.108", features = ["arbitrary_precision"] } pgwire = "0.16.1" tempdir = "0.3.7" +postgres-types = "0.2" +futures-sink = "0.3.29" +async-once-cell = "0.5.3" +genawaiter = "0.99.1" diff --git a/dozer-api/src/errors.rs b/dozer-api/src/errors.rs index 9c732b6d64..6ee8b0dc2f 100644 --- a/dozer-api/src/errors.rs +++ b/dozer-api/src/errors.rs @@ -44,6 +44,8 @@ pub enum ApiInitError { CacheNotFound(Labels), #[error("Failed to bind to address {0}: {1}")] FailedToBindToAddress(String, #[source] std::io::Error), + #[error("Failed to initialize SQL engine: {0}")] + SQLEngineError(#[source] DataFusionError), } #[derive(Error, Debug)] diff --git a/dozer-api/src/rest/api_generator.rs b/dozer-api/src/rest/api_generator.rs index 16d4ee22d5..08e7eeb003 100644 --- a/dozer-api/src/rest/api_generator.rs +++ b/dozer-api/src/rest/api_generator.rs @@ -2,6 +2,8 @@ use std::sync::Arc; use actix_web::web::ReqData; use actix_web::{web, HttpResponse}; +use datafusion::common::plan_datafusion_err; +use datafusion::error::DataFusionError; use dozer_cache::cache::expression::{QueryExpression, Skip}; use dozer_cache::cache::CacheRecord; use dozer_cache::{CacheReader, Phase}; @@ -14,7 +16,7 @@ use openapiv3::OpenAPI; use crate::api_helper::{get_record, get_records, get_records_count}; use crate::generator::oapi::generator::OpenApiGenerator; use crate::sql::datafusion::json::record_batches_to_json_rows; -use crate::sql::datafusion::SQLExecutor; +use crate::sql::datafusion::{PlannedStatement, SQLExecutor}; use crate::CacheEndpoint; use crate::{auth::Access, errors::ApiError}; use dozer_types::grpc_types::health::health_check_response::ServingStatus; @@ -177,16 +179,30 @@ pub async fn get_phase( Ok(web::Json(phase)) } -pub async fn sql( +pub(crate) async fn sql( // access: Option>, // TODO: - cache_endpoints: web::Data>>, + sql_executor: web::Data>>, sql: extractor::SQLQueryExtractor, ) -> Result { - let cache_endpoints = (*cache_endpoints.into_inner()).clone(); - let sql_executor = SQLExecutor::new(cache_endpoints); + let Some(sql_executor) = sql_executor.as_deref() else { + return Ok(HttpResponse::NotFound().json(json!({ "error": "SQL endpoint is disabled" }))); + }; let query = sql.0 .0; + let planned = sql_executor + .parse(&query) + .await + .map_err(ApiError::SQLQueryFailed)?; + if planned.len() > 1 { + return Err(ApiError::SQLQueryFailed(plan_datafusion_err!( + "More than one query supplied" + ))); + } + let Some(PlannedStatement::Query(plan)) = planned.first().cloned() else { + // This was a transaction statement, which doesn't require a result + return Ok(HttpResponse::Ok().json(json!({}))); + }; let record_batches = sql_executor - .execute(&query) + .execute(plan) .await .map_err(ApiError::SQLQueryFailed)? .collect() diff --git a/dozer-api/src/rest/mod.rs b/dozer-api/src/rest/mod.rs index e57ce1af14..04e0956976 100644 --- a/dozer-api/src/rest/mod.rs +++ b/dozer-api/src/rest/mod.rs @@ -4,6 +4,7 @@ use crate::api_helper::get_api_security; // Exports use crate::errors::ApiInitError; use crate::rest::api_generator::health_route; +use crate::sql::datafusion::SQLExecutor; use crate::{ auth::api::{auth_route, validate}, CacheEndpoint, @@ -49,6 +50,7 @@ pub struct ApiServer { security: Option, host: String, default_max_num_records: usize, + enable_sql: bool, } impl Default for ApiServer { @@ -60,6 +62,7 @@ impl Default for ApiServer { security: None, host: "0.0.0.0".to_owned(), default_max_num_records: 50, + enable_sql: true, } } } @@ -77,8 +80,10 @@ impl ApiServer { security, host: rest_config.host.unwrap_or_else(default_host), default_max_num_records, + enable_sql: rest_config.enable_sql.unwrap_or(true), } } + fn get_cors(cors: CorsOptions) -> Cors { match cors { CorsOptions::Permissive => Cors::permissive(), @@ -95,6 +100,7 @@ impl ApiServer { mut cache_endpoints: Vec>, labels: LabelsAndProgress, default_max_num_records: usize, + sql_executor: Option>, ) -> App< impl ServiceFactory< ServiceRequest, @@ -113,6 +119,7 @@ impl ApiServer { .app_data(web::Data::new(endpoint_paths)) .app_data(web::Data::new(default_max_num_records)) .app_data(web::Data::new(cache_endpoints.clone())) + .app_data(web::Data::new(sql_executor)) .app_data(cfg) .wrap(Logger::default()) .wrap(TracingLogger::default()) @@ -171,7 +178,7 @@ impl ApiServer { .wrap(cors_middleware) } - pub fn run( + pub async fn run( self, cache_endpoints: Vec>, shutdown: impl Future + Send + 'static, @@ -190,6 +197,14 @@ impl ApiServer { let address = format!("{}:{}", self.host, self.port); let default_max_num_records = self.default_max_num_records; + let sql_executor = if self.enable_sql { + let sql_executor = SQLExecutor::try_new(&cache_endpoints) + .await + .map_err(ApiInitError::SQLEngineError)?; + Some(Arc::new(sql_executor)) + } else { + None + }; let server = HttpServer::new(move || { ApiServer::create_app_entry( security.clone(), @@ -197,6 +212,7 @@ impl ApiServer { cache_endpoints.clone(), labels.clone(), default_max_num_records, + sql_executor.clone(), ) }) .bind(&address) diff --git a/dozer-api/src/rest/tests/auth.rs b/dozer-api/src/rest/tests/auth.rs index 6d4a2b0a50..aba37fa848 100644 --- a/dozer-api/src/rest/tests/auth.rs +++ b/dozer-api/src/rest/tests/auth.rs @@ -74,6 +74,7 @@ async fn check_status( )], Default::default(), 50, + None, ); let app = actix_web::test::init_service(api_server).await; @@ -104,6 +105,7 @@ async fn _call_auth_token_api( )], Default::default(), 50, + None, ); let app = actix_web::test::init_service(api_server).await; diff --git a/dozer-api/src/rest/tests/routes.rs b/dozer-api/src/rest/tests/routes.rs index d244b21f6e..85086bf00b 100644 --- a/dozer-api/src/rest/tests/routes.rs +++ b/dozer-api/src/rest/tests/routes.rs @@ -38,6 +38,7 @@ async fn list_route() { )], Default::default(), 50, + None, ); let app = actix_web::test::init_service(api_server).await; @@ -230,6 +231,7 @@ async fn path_collision_test() { ], Default::default(), 50, + None, ); let app = actix_web::test::init_service(api_server).await; @@ -257,6 +259,7 @@ async fn setup_service() -> ( )], Default::default(), 50, + None, ); (actix_web::test::init_service(api_server).await, endpoint) } diff --git a/dozer-api/src/sql/datafusion/mod.rs b/dozer-api/src/sql/datafusion/mod.rs index 143faa7e6e..a922ccb883 100644 --- a/dozer-api/src/sql/datafusion/mod.rs +++ b/dozer-api/src/sql/datafusion/mod.rs @@ -1,24 +1,43 @@ pub mod json; +mod pg_catalog; mod predicate_pushdown; -use std::{any::Any, sync::Arc}; +use std::any::Any; +use std::collections::hash_map::Entry; +use std::collections::HashMap; +use std::ops::ControlFlow; +use std::sync::Arc; use async_trait::async_trait; -use datafusion::arrow::datatypes::{DataType, Field, Schema}; -use datafusion::catalog::schema::{MemorySchemaProvider, SchemaProvider}; -use datafusion::datasource::{TableProvider, TableType}; + +use datafusion::arrow::array::{as_string_array, Array}; +use datafusion::arrow::datatypes::DataType; +use datafusion::catalog::schema::SchemaProvider; +use datafusion::common::not_impl_err; +use datafusion::config::ConfigOptions; +use datafusion::datasource::{DefaultTableSource, TableProvider, TableType}; use datafusion::error::{DataFusionError, Result}; -use datafusion::execution::context::{SessionState, TaskContext}; +use datafusion::execution::context::{SQLOptions, SessionState, TaskContext}; +use datafusion::physical_expr::var_provider::is_system_variables; use datafusion::physical_expr::PhysicalSortExpr; -use datafusion::physical_plan::memory::MemoryExec; use datafusion::physical_plan::stream::RecordBatchStreamAdapter; use datafusion::physical_plan::{ DisplayAs, DisplayFormatType, ExecutionPlan, Partitioning, SendableRecordBatchStream, Statistics, }; use datafusion::prelude::{DataFrame, SessionConfig, SessionContext}; -use datafusion::sql::TableReference; -use datafusion_expr::{Expr, TableProviderFilterPushDown}; +use datafusion::scalar::ScalarValue; +use datafusion::sql::parser::{DFParser, Statement}; +use datafusion::sql::planner::{ContextProvider, SqlToRel}; +use datafusion::sql::sqlparser::ast::{self, Function, FunctionArg, FunctionArgExpr}; +use datafusion::sql::sqlparser::parser::{Parser, ParserError}; +use datafusion::sql::sqlparser::tokenizer::Tokenizer; +use datafusion::sql::{sqlparser, ResolvedTableReference, TableReference}; +use datafusion::variable::{VarProvider, VarType}; +use datafusion_expr::{ + AggregateUDF, ColumnarValue, Expr, LogicalPlan, ScalarUDF, TableProviderFilterPushDown, + TableSource, TypeSignature, WindowUDF, +}; use dozer_types::arrow::datatypes::SchemaRef; use dozer_types::arrow::record_batch::RecordBatch; @@ -26,6 +45,7 @@ use dozer_cache::cache::{expression::QueryExpression, CacheRecord}; use dozer_types::arrow_types::to_arrow::{map_record_to_arrow, map_to_arrow_schema}; use dozer_types::log::debug; use dozer_types::types::Schema as DozerSchema; +use futures_util::future::try_join_all; use futures_util::stream::BoxStream; use futures_util::StreamExt; @@ -34,16 +54,471 @@ use crate::CacheEndpoint; use predicate_pushdown::{predicate_pushdown, supports_predicates_pushdown}; -pub struct SQLExecutor { - ctx: SessionContext, +pub(crate) struct SQLExecutor { + ctx: Arc, +} + +#[derive(Clone)] +pub(crate) enum PlannedStatement { + Query(LogicalPlan), + Statement(&'static str), +} + +struct ContextResolver { + tables: HashMap>, + state: Arc, +} + +impl ContextResolver { + async fn try_new_for_statement( + state: Arc, + statement: &Statement, + ) -> Result { + let mut table_refs = state.resolve_table_references(statement)?; + table_refs.push(TableReference::partial("information_schema", "tables")); + table_refs.push(TableReference::partial("information_schema", "columns")); + + let mut tables = HashMap::>::with_capacity(table_refs.len()); + let config = state.config_options(); + let default_catalog = &config.catalog.default_catalog; + let default_schema = &config.catalog.default_schema; + for table_ref in table_refs { + let table = table_ref.table(); + let resolved = resolve_table_ref(&table_ref, default_catalog, default_schema); + if let Entry::Vacant(v) = tables.entry(resolved.to_string()) { + if let Ok(schema) = Self::schema_for_ref(&state, resolved) { + if let Some(table) = schema.table(table).await { + v.insert(Arc::new(DefaultTableSource::new(table))); + } + } + } + } + Ok(Self { tables, state }) + } + + fn schema_for_ref( + state: &SessionState, + resolved_ref: ResolvedTableReference<'_>, + ) -> Result> { + state + .catalog_list() + .catalog(&resolved_ref.catalog) + .ok_or_else(|| { + DataFusionError::Plan(format!( + "failed to resolve catalog: {}", + resolved_ref.catalog + )) + })? + .schema(&resolved_ref.schema) + .ok_or_else(|| { + DataFusionError::Plan(format!("failed to resolve schema: {}", resolved_ref.schema)) + }) + } +} + +impl ContextProvider for ContextResolver { + fn get_table_source(&self, name: TableReference) -> Result> { + let catalog = &self.state.config_options().catalog; + let name = + resolve_table_ref(&name, &catalog.default_catalog, &catalog.default_schema).to_string(); + self.tables + .get(&name) + .ok_or_else(|| DataFusionError::Plan(format!("table '{name}' not found"))) + .cloned() + } + + fn get_function_meta(&self, name: &str) -> Option> { + let mut parts = name.splitn(3, '.'); + let first = parts.next()?; + let second = parts.next(); + let third = parts.next(); + match (first, second, third) { + (_, Some("pg_catalog"), Some(name)) + | ("pg_catalog", Some(name), None) + | (name, None, None) => match name { + "version" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.version".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(|_| { + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(Some(format!( + "PostgreSQL 9.0 (Dozer {})", + env!("CARGO_PKG_VERSION") + ))))) + }), + })) + } + "current_database" => { + let catalog = self.state.config_options().catalog.default_catalog.clone(); + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.current_database".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(Some( + catalog.clone(), + )))) + }), + })); + } + "current_schema" => { + let schema = self.state.config_options().catalog.default_schema.clone(); + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.current_schema".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(Some( + schema.clone(), + )))) + }), + })); + } + "pg_my_temp_schema" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_my_temp_schema".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::UInt32))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::UInt32(Some(0)))) + }), + })); + } + "pg_is_other_temp_schema" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_is_other_temp_schema".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![ + DataType::UInt32, + ]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Boolean))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Boolean(Some(false)))) + }), + })); + } + "pg_has_role" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_has_role".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Boolean))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Boolean(Some(true)))) + }), + })); + } + "has_table_privilege" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.has_table_privilege".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Boolean))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Boolean(Some(true)))) + }), + })); + } + "has_column_privilege" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.has_column_privilege".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Boolean))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Boolean(Some(true)))) + }), + })); + } + "has_any_column_privilege" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.has_any_column_privilege".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Boolean))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Boolean(Some(true)))) + }), + })); + } + "pg_column_is_updatable" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_column_is_updatable".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Boolean))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Boolean(Some(false)))) + }), + })); + } + "pg_relation_is_updatable" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_relation_is_updatable".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Int32))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Int32(Some(0)))) + }), + })); + } + "pg_get_viewdef" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_get_viewdef".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(Some("".into())))) + }), + })); + } + "format_type" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.format_type".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![ + DataType::UInt32, + DataType::Int32, + ]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(Some( + "".to_string(), + )))) + }), + })); + } + "format_typname" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.format_type".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![ + DataType::Utf8, + ]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(move |typname| { + let typname = match &typname[0] { + ColumnarValue::Array(array) => { + let array = as_string_array(array); + if array.len() == 0 { + None + } else { + Some(array.value(0)) + } + } + _ => unreachable!(), + }; + if typname.is_none() { + return Ok(ColumnarValue::Scalar(ScalarValue::Utf8(None))); + } + let typname = match typname.unwrap() { + "int2" => "smallint", + "int4" => "integer", + "int8" => "bigint", + "timestamp" => "timestamp without time zone", + "timestamptz" => "timestamp with time zone", + "bool" => "boolean", + "varchar" => "character varying", + "string" => "character varying", + "float4" => "real", + "float8" => "double precision", + "time" => "time without time zone", + "timetz" => "time with time zone", + typname => typname, + }; + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(Some( + typname.to_string(), + )))) + }), + })); + } + "pg_get_expr" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_get_expr".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::VariadicAny, + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Utf8(Some( + "".to_string(), + )))) + }), + })); + } + "pg_type_is_visible" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_get_expr".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Exact(vec![ + DataType::UInt32, + ]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Boolean))), + fun: Arc::new(move |_| { + Ok(ColumnarValue::Scalar(ScalarValue::Boolean(Some(true)))) + }), + })); + } + "unnest" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.unnest".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Any(1), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|input| match &input[0] { + DataType::List(field) + | DataType::FixedSizeList(field, _) + | DataType::LargeList(field) => { + Ok(Arc::new(field.data_type().to_owned())) + } + // This is invalid, but we need it for system + // table columns, as we can't express array types + // yet in datafusion sql + _ => Ok(Arc::new(DataType::Null)), + }), + // Dummy impl + fun: Arc::new(|_| not_impl_err!("unnest")), + })); + } + "generate_subscripts" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.generate_subscripts".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::Any(2), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|input| { + if matches!( + input[0], + DataType::List(_) + | DataType::FixedSizeList(_, _) + | DataType::LargeList(_) + ) && input[1].is_integer() + { + Ok(Arc::new(DataType::UInt32)) + } else { + // This is invalid, but we need it for system + // table columns, as we can't express array types + // yet in datafusion sql + Ok(Arc::new(DataType::Null)) + } + }), + fun: Arc::new(|_| not_impl_err!("generate_subscripts")), + })); + } + "pg_get_constraintdef" => { + return Some(Arc::new(ScalarUDF { + name: "pg_catalog.pg_get_constraintdef".to_owned(), + signature: datafusion_expr::Signature { + type_signature: datafusion_expr::TypeSignature::OneOf(vec![ + TypeSignature::Exact(vec![DataType::UInt32]), + TypeSignature::Exact(vec![DataType::UInt32, DataType::Boolean]), + ]), + volatility: datafusion_expr::Volatility::Immutable, + }, + return_type: Arc::new(|_| Ok(Arc::new(DataType::Utf8))), + fun: Arc::new(|_| not_impl_err!("pg_get_constraintdef")), + })); + } + _ => {} + }, + _ => {} + } + + self.state.scalar_functions().get(name).cloned() + } + + fn get_aggregate_meta(&self, name: &str) -> Option> { + self.state.aggregate_functions().get(name).cloned() + } + + fn get_window_meta(&self, name: &str) -> Option> { + self.state.window_functions().get(name).cloned() + } + + fn get_variable_type(&self, variable_names: &[String]) -> Option { + if variable_names.is_empty() { + return None; + } + + let provider_type = if is_system_variables(variable_names) { + VarType::System + } else { + VarType::UserDefined + }; + + self.state + .execution_props() + .var_providers + .as_ref() + .and_then(|provider| provider.get(&provider_type)?.get_type(variable_names)) + } + + fn options(&self) -> &ConfigOptions { + self.state.config_options() + } +} + +fn resolve_table_ref<'a>( + reference: &'a TableReference<'a>, + default_catalog: &'a str, + default_schema: &'a str, +) -> ResolvedTableReference<'a> { + let reference = { + if matches!(reference.schema(), Some("pg_catalog")) { + TableReference::partial(reference.schema().unwrap(), reference.table()) + } else if reference.table().to_ascii_lowercase().starts_with("pg_") { + TableReference::partial("pg_catalog", reference.table()) + } else { + reference.clone() + } + }; + reference.resolve(default_catalog, default_schema) } impl SQLExecutor { - pub fn new(cache_endpoints: Vec>) -> Self { + pub async fn try_new(cache_endpoints: &[Arc]) -> Result { let ctx = SessionContext::new_with_config( - SessionConfig::new() - .with_information_schema(true) - .with_default_catalog_and_schema("public", "dozer"), + SessionConfig::new().with_default_catalog_and_schema("dozer", "public"), ); for cache_endpoint in cache_endpoints { let data_source = CacheEndpointDataSource::new(cache_endpoint.clone()); @@ -56,20 +531,80 @@ impl SQLExecutor { ) .unwrap(); } - { - let schema = Arc::new(MemorySchemaProvider::new()) as Arc; - let pg_type = Arc::new(PgTypesView::new()); - schema.register_table("pg_type".into(), pg_type).unwrap(); - ctx.catalog("public") - .unwrap() - .register_schema("pg_catalog", schema.clone()) - .unwrap(); + + let variable_provider = Arc::new(SystemVariables); + ctx.register_variable(VarType::UserDefined, variable_provider.clone()); + ctx.register_variable(VarType::System, variable_provider); + + pg_catalog::create(&ctx).await?; + + Ok(Self { ctx: Arc::new(ctx) }) + } + + pub async fn execute(&self, plan: LogicalPlan) -> Result { + self.ctx.execute_logical_plan(plan).await + } + + async fn parse_statement( + &self, + mut statement: Statement, + ) -> Result { + let rewrite = if let Statement::Statement(ref stmt) = statement { + match stmt.as_ref() { + ast::Statement::StartTransaction { .. } => { + return Ok(PlannedStatement::Statement("BEGIN")) + } + ast::Statement::Commit { .. } => return Ok(PlannedStatement::Statement("COMMIT")), + ast::Statement::Rollback { .. } => { + return Ok(PlannedStatement::Statement("ROLLBACK")) + } + ast::Statement::SetVariable { .. } => { + // dbg!(stmt); + return Ok(PlannedStatement::Statement("SET")); + } + ast::Statement::ShowVariable { variable } => { + let variable = object_name_to_string(variable); + let variable = match variable.as_str() { + "transaction.isolation.level" => "transaction_isolation".to_string(), + _ => variable, + }; + Some(format!("SELECT \"@@{variable}\"")) + } + _ => None, + } + } else { + None + }; + + let state = self.ctx.state(); + + if let Some(query) = rewrite { + statement = state.sql_to_statement(&query, "postgres")?; } - Self { ctx } + + if let Statement::Statement(statement) = &mut statement { + sql_ast_rewrites(statement) + }; + + let context_provider = + ContextResolver::try_new_for_statement(Arc::new(state), &statement).await?; + let planner = SqlToRel::new(&context_provider); + let plan = planner.statement_to_plan(statement)?; + // Some BI tools use temporary tables. Let them + let options = SQLOptions::new().with_allow_ddl(true).with_allow_dml(true); + options.verify_plan(&plan)?; + Ok(PlannedStatement::Query(plan)) } - pub async fn execute(&self, sql: &str) -> Result { - self.ctx.sql(sql).await + pub async fn parse(&self, sql: &str) -> Result, DataFusionError> { + let statements = + DFParser::parse_sql_with_dialect(sql, &sqlparser::dialect::PostgreSqlDialect {})?; + try_join_all( + statements + .into_iter() + .map(|stmt| self.parse_statement(stmt)), + ) + .await } } @@ -125,10 +660,6 @@ impl TableProvider for CacheEndpointDataSource { )?)) } - // fn supports_filter_pushdown(&self, filter: &Expr) -> Result { - // supports_predicate_pushdown(filter) - // } - fn supports_filters_pushdown( &self, filters: &[&Expr], @@ -240,8 +771,8 @@ impl ExecutionPlan for CacheEndpointExec { ))) } - fn statistics(&self) -> Statistics { - Default::default() + fn statistics(&self) -> Result { + Ok(Statistics::new_unknown(self.schema().as_ref())) } } @@ -265,82 +796,149 @@ fn transpose( } #[derive(Debug)] -pub struct PgTypesView { - schema: SchemaRef, +struct SystemVariables; + +impl VarProvider for SystemVariables { + fn get_value(&self, var_names: Vec) -> Result { + if var_names.len() == 1 { + match var_names[0].as_str() { + "@@transaction_isolation" => { + return Ok(ScalarValue::Utf8(Some("read committed".into()))) + } + "@@standard_conforming_strings" => return Ok(ScalarValue::Utf8(Some("on".into()))), + "@@lc_collate" => return Ok(ScalarValue::Utf8(Some("en_US.utf8".into()))), + _ => (), + } + } + Err(DataFusionError::Internal(format!( + "unrecognized variable {var_names:?}" + ))) + } + + fn get_type(&self, var_names: &[String]) -> Option { + if var_names.len() == 1 { + match var_names[0].as_str() { + "@@transaction_isolation" | "@@standard_conforming_strings" | "@@lc_collate" => { + return Some(DataType::Utf8) + } + _ => (), + } + } + None + } } -impl Default for PgTypesView { - fn default() -> Self { - Self::new() +fn object_name_to_string(object_name: &[ast::Ident]) -> String { + object_name + .iter() + .map(ident_to_string) + .collect::>() + .join(".") +} + +fn ident_to_string(ident: &ast::Ident) -> String { + normalize_ident(ident.to_owned()) +} + +fn normalize_ident(id: ast::Ident) -> String { + match id.quote_style { + Some(_) => id.value, + None => id.value.to_ascii_lowercase(), } } -impl PgTypesView { - pub fn new() -> Self { - Self { - schema: Arc::new(Schema::new(vec![ - Field::new("oid", DataType::Utf8, false), - Field::new("typname", DataType::Utf8, false), - Field::new("typnamespace", DataType::Utf8, false), - Field::new("typowner", DataType::Utf8, false), - Field::new("typlen", DataType::Int16, false), - Field::new("typbyval", DataType::Boolean, false), - Field::new("typtype", DataType::Utf8, false), - Field::new("typcategory", DataType::Utf8, false), - Field::new("typispreferred", DataType::Boolean, false), - Field::new("typisdefined", DataType::Boolean, false), - Field::new("typdelim", DataType::Utf8, false), - Field::new("typrelid", DataType::Utf8, false), - Field::new("typelem", DataType::Utf8, false), - Field::new("typarray", DataType::Utf8, false), - Field::new("typinput", DataType::Utf8, false), - Field::new("typoutput", DataType::Utf8, false), - Field::new("typreceive", DataType::Utf8, false), - Field::new("typsend", DataType::Utf8, false), - Field::new("typmodin", DataType::Utf8, false), - Field::new("typmodout", DataType::Utf8, false), - Field::new("typanalyze", DataType::Utf8, false), - Field::new("typalign", DataType::Utf8, false), - Field::new("typstorage", DataType::Utf8, false), - Field::new("typnotnull", DataType::Boolean, false), - Field::new("typbasetype", DataType::Utf8, false), - Field::new("typtypmod", DataType::Int32, false), - Field::new("typndims", DataType::Int32, false), - Field::new("typcollation", DataType::Utf8, false), - Field::new("typdefaultbin", DataType::Binary, true), - Field::new("typdefault", DataType::Utf8, true), - Field::new("typacl", DataType::Utf8, true), - ])), +// SQL AST rewrites +fn sql_ast_rewrites(statement: &mut ast::Statement) { + rewrite_sum(statement); + rewrite_format_type(statement); + rewrite_eq_any(statement); + rewrite_cast_to_regclass(statement); +} + +fn rewrite_cast_to_regclass(statement: &mut ast::Statement) { + ast::visit_expressions_mut(statement, |cast: &mut ast::Expr| { + if let ast::Expr::Cast { + data_type: ast::DataType::Regclass, + .. + } = cast + { + *cast = ast::Expr::Value(ast::Value::Number("0".to_owned(), false)); } - } + ControlFlow::<()>::Continue(()) + }); } -#[async_trait] -impl TableProvider for PgTypesView { - fn as_any(&self) -> &dyn Any { - self - } +// SQL AST rewirte for SUM('1') to SUM(1) +fn rewrite_sum(statement: &mut ast::Statement) { + ast::visit_expressions_mut(statement, |expr: &mut ast::Expr| { + if let ast::Expr::Function(Function { name, args, .. }) = expr { + let name = &name.0; + if name.len() == 1 && name[0].value.eq_ignore_ascii_case("sum") && args.len() == 1 { + let arg = &mut args[0]; + if let FunctionArg::Unnamed(FunctionArgExpr::Expr(ast::Expr::Value(value))) = arg { + if let ast::Value::SingleQuotedString(literal) = value { + if literal.parse::().is_ok() { + *value = ast::Value::Number(literal.clone(), false); + return ControlFlow::<()>::Break(()); + } + } + } + } + }; + ControlFlow::<()>::Continue(()) + }); +} - fn schema(&self) -> SchemaRef { - self.schema.clone() - } +// SQL AST rewirte for format_type(arg) to format_typname((SELECT typname FROM pg_type WHERE oid = arg)) +fn rewrite_format_type(statement: &mut ast::Statement) { + ast::visit_expressions_mut(statement, |expr: &mut ast::Expr| { + if let ast::Expr::Function(Function { name, args, .. }) = expr { + if name + .0 + .last() + .unwrap() + .value + .eq_ignore_ascii_case("format_type") + && args.len() == 1 + { + let arg = &args[0]; + let sql_expr = + format!("format_typname((SELECT typname FROM pg_type WHERE oid = {arg}))"); + let result = try_parse_sql_expr(&sql_expr); + if let Ok(new_expr) = result { + *expr = new_expr; + } + return ControlFlow::<()>::Break(()); + } + }; + ControlFlow::<()>::Continue(()) + }); +} - fn table_type(&self) -> TableType { - TableType::Base - } +// SQL AST rewirte for left = ANY(right) to left in (right) +fn rewrite_eq_any(statement: &mut ast::Statement) { + ast::visit_expressions_mut(statement, |expr: &mut ast::Expr| { + if let ast::Expr::AnyOp { + left, + compare_op: ast::BinaryOperator::Eq, + right, + } = expr + { + let sql_expr = format!("{left} in ({right})"); + let result = try_parse_sql_expr(&sql_expr); + if let Ok(new_expr) = result { + *expr = new_expr; + } + return ControlFlow::<()>::Break(()); + }; + ControlFlow::<()>::Continue(()) + }); +} - async fn scan( - &self, - _state: &SessionState, - projection: Option<&Vec>, - // filters and limit can be used here to inject some push-down operations if needed - _filters: &[Expr], - _limit: Option, - ) -> Result> { - Ok(Arc::new(MemoryExec::try_new( - &[], - self.schema.clone(), - projection.cloned(), - )?)) - } +fn try_parse_sql_expr(sql: &str) -> Result { + let dialect = &sqlparser::dialect::PostgreSqlDialect {}; + let mut tokenizer = Tokenizer::new(dialect, sql); + let tokens = tokenizer.tokenize()?; + let mut parser = Parser::new(dialect).with_tokens(tokens); + parser.parse_expr() } diff --git a/dozer-api/src/sql/datafusion/pg_catalog.rs b/dozer-api/src/sql/datafusion/pg_catalog.rs new file mode 100644 index 0000000000..68feaeb913 --- /dev/null +++ b/dozer-api/src/sql/datafusion/pg_catalog.rs @@ -0,0 +1,1013 @@ +use std::sync::Arc; + +use datafusion::{ + arrow::datatypes::DataType, + error::DataFusionError, + execution::context::SessionContext, + scalar::ScalarValue, + sql::{parser::DFParser, planner::SqlToRel, sqlparser}, +}; + +use super::ContextResolver; + +pub async fn create(ctx: &SessionContext) -> Result<(), DataFusionError> { + let schema_query = " + + CREATE SCHEMA pg_catalog; + + CREATE TABLE pg_catalog.pg_authid ( + oid int unsigned NOT NULL, + rolname string NOT NULL, + rolsuper boolean NOT NULL, + rolinherit boolean NOT NULL, + rolcreaterole boolean NOT NULL, + rolcreatedb boolean NOT NULL, + rolcanlogin boolean NOT NULL, + rolreplication boolean NOT NULL, + rolbypassrls boolean NOT NULL, + rolconnlimit integer NOT NULL, + rolpassword text, + rolvaliduntil timestamp with time zone, + PRIMARY KEY (oid), + UNIQUE (rolname), + ); + + CREATE TABLE pg_catalog.pg_tablespace ( + oid int unsigned NOT NULL, + spcname string NOT NULL, + spcowner int unsigned NOT NULL, + spcacl string, + spcoptions text, + PRIMARY KEY (oid), + UNIQUE (spcname), + ); + + CREATE TABLE pg_catalog.pg_database ( + oid int unsigned NOT NULL, + datname string NOT NULL, + datdba int unsigned NOT NULL, + encoding integer NOT NULL, + datlocprovider string NOT NULL, + datistemplate boolean NOT NULL, + datallowconn boolean NOT NULL, + datconnlimit integer NOT NULL, + datfrozenxid int unsigned NOT NULL, + datminmxid int unsigned NOT NULL, + dattablespace int unsigned NOT NULL, + datcollate text NOT NULL, + datctype text NOT NULL, + daticulocale text, + daticurules text, + datcollversion text, + datacl string, + UNIQUE (datname), + PRIMARY KEY (oid), + ); + + CREATE TABLE pg_catalog.pg_namespace ( + oid int unsigned NOT NULL, + nspname string NOT NULL, + nspowner int unsigned NOT NULL, + nspacl string, + PRIMARY KEY (oid), + UNIQUE (nspname), + ); + + CREATE TABLE pg_catalog.pg_range ( + rngtypid int unsigned NOT NULL, + rngsubtype int unsigned NOT NULL, + rngmultitypid int unsigned NOT NULL, + rngcollation int unsigned NOT NULL, + rngsubopc int unsigned NOT NULL, + rngcanonical int unsigned NOT NULL, + rngsubdiff int unsigned NOT NULL, + PRIMARY KEY (rngtypid), + UNIQUE (rngmultitypid), + ); + + CREATE TABLE pg_catalog.pg_type ( + oid int unsigned NOT NULL, + typname string NOT NULL, + typnamespace int unsigned NOT NULL, + typowner int unsigned NOT NULL, + typlen smallint NOT NULL, + typbyval boolean NOT NULL, + typtype char NOT NULL, + typcategory string NOT NULL, + typispreferred boolean NOT NULL, + typisdefined boolean NOT NULL, + typdelim string NOT NULL, + typrelid int unsigned NOT NULL, + typsubscript int unsigned NOT NULL, + typelem int unsigned NOT NULL, + typarray int unsigned NOT NULL, + typinput int unsigned NOT NULL, + typoutput int unsigned NOT NULL, + typreceive int unsigned NOT NULL, + typsend int unsigned NOT NULL, + typmodin int unsigned NOT NULL, + typmodout int unsigned NOT NULL, + typanalyze int unsigned NOT NULL, + typalign string NOT NULL, + typstorage string NOT NULL, + typnotnull boolean NOT NULL, + typbasetype int unsigned NOT NULL, + typtypmod integer NOT NULL, + typndims integer NOT NULL, + typcollation int unsigned NOT NULL, + typdefaultbin string, + typdefault text, + typacl text, + PRIMARY KEY (oid), + UNIQUE (typname, typnamespace), + ); + + CREATE TABLE pg_catalog.pg_am ( + oid int unsigned NOT NULL, + amname string NOT NULL, + amhandler string NOT NULL, + amtype string NOT NULL, + UNIQUE (amname), + PRIMARY KEY (oid), + ); + + CREATE TABLE pg_catalog.pg_attribute ( + attrelid int unsigned NOT NULL, + attname string NOT NULL, + atttypid int unsigned NOT NULL, + attlen smallint NOT NULL, + attnum smallint NOT NULL, + attcacheoff integer NOT NULL, + atttypmod integer NOT NULL, + attndims smallint NOT NULL, + attbyval boolean NOT NULL, + attalign string NOT NULL, + attstorage string NOT NULL, + attcompression string NOT NULL, + attnotnull boolean NOT NULL, + atthasdef boolean NOT NULL, + atthasmissing boolean NOT NULL, + attidentity string NOT NULL, + attgenerated string NOT NULL, + attisdropped boolean NOT NULL, + attislocal boolean NOT NULL, + attinhcount smallint NOT NULL, + attstattarget smallint NOT NULL, + attcollation int unsigned NOT NULL, + attacl string, + attoptions string, + attfdwoptions string, + attmissingval string, + PRIMARY KEY (attrelid, attnum), + UNIQUE (attrelid, attname), + ); + + CREATE TABLE pg_catalog.pg_attrdef ( + oid int unsigned NOT NULL, + adrelid int unsigned NOT NULL, + adnum smallint NOT NULL, + adbin string NOT NULL, + PRIMARY KEY (oid), + UNIQUE (adrelid, adnum), + ); + + CREATE TABLE pg_catalog.pg_proc ( + oid int unsigned NOT NULL, + proname string NOT NULL, + pronamespace int unsigned NOT NULL, + proowner int unsigned NOT NULL, + prolang int unsigned NOT NULL, + procost real NOT NULL, + prorows real NOT NULL, + provariadic int unsigned NOT NULL, + prosupport string NOT NULL, + prokind string NOT NULL, + prosecdef boolean NOT NULL, + proleakproof boolean NOT NULL, + proisstrict boolean NOT NULL, + proretset boolean NOT NULL, + provolatile string NOT NULL, + proparallel string NOT NULL, + pronargs smallint NOT NULL, + pronargdefaults smallint NOT NULL, + prorettype int unsigned NOT NULL, + proargtypes string NOT NULL, + proallargtypes string, + proargmodes string, + proargnames text, + proargdefaults string, + protrftypes string, + prosrc text NOT NULL, + probin text, + prosqlbody string, + proconfig text, + proacl string, + PRIMARY KEY (oid), + UNIQUE (proname, proargtypes, pronamespace), + ); + + CREATE TABLE pg_catalog.pg_language ( + oid int unsigned NOT NULL, + lanname string NOT NULL, + lanowner int unsigned NOT NULL, + lanispl boolean NOT NULL, + lanpltrusted boolean NOT NULL, + lanplcallfoid int unsigned NOT NULL, + laninline int unsigned NOT NULL, + lanvalidator int unsigned NOT NULL, + lanacl string, + PRIMARY KEY (oid), + UNIQUE (lanname), + ); + + CREATE TABLE pg_catalog.pg_collation ( + oid int unsigned NOT NULL, + collname string NOT NULL, + collnamespace int unsigned NOT NULL, + collowner int unsigned NOT NULL, + collprovider string NOT NULL, + collisdeterministic boolean NOT NULL, + collencoding integer NOT NULL, + collcollate text, + collctype text, + colliculocale text, + collicurules text, + collversion text, + PRIMARY KEY (oid), + UNIQUE (collname, collencoding, collnamespace), + ); + + CREATE TABLE pg_catalog.pg_constraint ( + oid int unsigned NOT NULL, + conname string NOT NULL, + connamespace int unsigned NOT NULL, + contype string NOT NULL, + condeferrable boolean NOT NULL, + condeferred boolean NOT NULL, + convalidated boolean NOT NULL, + conrelid int unsigned NOT NULL, + contypid int unsigned NOT NULL, + conindid int unsigned NOT NULL, + conparentid int unsigned NOT NULL, + confrelid int unsigned NOT NULL, + confupdtype string NOT NULL, + confdeltype string NOT NULL, + confmatchtype string NOT NULL, + conislocal boolean NOT NULL, + coninhcount smallint NOT NULL, + connoinherit boolean NOT NULL, + conkey string, + confkey string, + conpfeqop string, + conppeqop string, + conffeqop string, + confdelsetcols string, + conexclop string, + conbin string, + PRIMARY KEY (oid), + UNIQUE (conrelid, contypid, conname), + ); + + CREATE TABLE pg_catalog.pg_rewrite ( + oid int unsigned NOT NULL, + rulename string NOT NULL, + ev_class int unsigned NOT NULL, + ev_type string NOT NULL, + ev_enabled string NOT NULL, + is_instead boolean NOT NULL, + ev_qual string NOT NULL, + ev_action string NOT NULL, + PRIMARY KEY (oid), + UNIQUE (ev_class, rulename), + ); + + CREATE TABLE pg_catalog.pg_trigger ( + oid int unsigned NOT NULL, + tgrelid int unsigned NOT NULL, + tgparentid int unsigned NOT NULL, + tgname string NOT NULL, + tgfoid int unsigned NOT NULL, + tgtype smallint NOT NULL, + tgenabled string NOT NULL, + tgisinternal boolean NOT NULL, + tgconstrrelid int unsigned NOT NULL, + tgconstrindid int unsigned NOT NULL, + tgconstraint int unsigned NOT NULL, + tgdeferrable boolean NOT NULL, + tginitdeferred boolean NOT NULL, + tgnargs smallint NOT NULL, + tgattr string NOT NULL, + tgargs string NOT NULL, + tgqual string, + tgoldtable string, + tgnewtable string, + PRIMARY KEY (oid), + UNIQUE (tgrelid, tgname), + ); + + CREATE TABLE pg_catalog.pg_operator ( + oid int unsigned NOT NULL, + oprname string NOT NULL, + oprnamespace int unsigned NOT NULL, + oprowner int unsigned NOT NULL, + oprkind string NOT NULL, + oprcanmerge boolean NOT NULL, + oprcanhash boolean NOT NULL, + oprleft int unsigned NOT NULL, + oprright int unsigned NOT NULL, + oprresult int unsigned NOT NULL, + oprcom int unsigned NOT NULL, + oprnegate int unsigned NOT NULL, + oprcode string NOT NULL, + oprrest string NOT NULL, + oprjoin string NOT NULL, + PRIMARY KEY (oid), + UNIQUE (oprname, oprleft, oprright, oprnamespace), + ); + + CREATE TABLE pg_catalog.pg_policy ( + oid int unsigned NOT NULL, + polname string NOT NULL, + polrelid int unsigned NOT NULL, + polcmd string NOT NULL, + polpermissive boolean NOT NULL, + polroles string NOT NULL, + polqual string, + polwithcheck string, + PRIMARY KEY (oid), + UNIQUE (polrelid, polname), + ); + + CREATE TABLE pg_catalog.pg_depend ( + classid int unsigned NOT NULL, + objid int unsigned NOT NULL, + objsubid integer NOT NULL, + refclassid int unsigned NOT NULL, + refobjid int unsigned NOT NULL, + refobjsubid integer NOT NULL, + deptype char NOT NULL, + ); + + CREATE TABLE pg_catalog.pg_description ( + objoid int unsigned NOT NULL, + classoid int unsigned NOT NULL, + objsubid integer NOT NULL, + description text NOT NULL, + PRIMARY KEY (objoid, classoid, objsubid), + ); + + CREATE TABLE pg_catalog.pg_enum ( + oid int unsigned NOT NULL, + enumtypid int unsigned NOT NULL, + enumsortorder real NOT NULL, + enumlabel string NOT NULL, + PRIMARY KEY (oid), + UNIQUE (enumtypid, enumlabel), + UNIQUE (enumtypid, enumsortorder), + ); + + CREATE TABLE pg_catalog.pg_index ( + indexrelid int unsigned NOT NULL, + indrelid int unsigned NOT NULL, + indnatts smallint NOT NULL, + indnkeyatts smallint NOT NULL, + indisunique boolean NOT NULL, + indnullsnotdistinct boolean NOT NULL, + indisprimary boolean NOT NULL, + indisexclusion boolean NOT NULL, + indimmediate boolean NOT NULL, + indisclustered boolean NOT NULL, + indisvalid boolean NOT NULL, + indcheckxmin boolean NOT NULL, + indisready boolean NOT NULL, + indislive boolean NOT NULL, + indisreplident boolean NOT NULL, + indkey string NOT NULL, + indcollation string NOT NULL, + indclass string NOT NULL, + indoption string NOT NULL, + indexprs string, + indpred string, + PRIMARY KEY (indexrelid), + ); + + CREATE TABLE pg_catalog.pg_class ( + oid int unsigned NOT NULL, + relname string NOT NULL, + relnamespace int unsigned NOT NULL, + reltype int unsigned NOT NULL, + reloftype int unsigned NOT NULL, + relowner int unsigned NOT NULL, + relam int unsigned NOT NULL, + relfilenode int unsigned NOT NULL, + reltablespace int unsigned NOT NULL, + relpages int NOT NULL, + reltuples real NOT NULL, + relallvisible int NOT NULL, + reltoastrelid int unsigned NOT NULL, + relhasindex boolean NOT NULL, + relisshared boolean NOT NULL, + relpersistence string NOT NULL, + relkind string NOT NULL, + relnatts smallint NOT NULL, + relchecks smallint NOT NULL, + relhasrules boolean NOT NULL, + relhastriggers boolean NOT NULL, + relhassubclass boolean NOT NULL, + relrowsecurity boolean NOT NULL, + relforcerowsecurity boolean NOT NULL, + relispopulated boolean NOT NULL, + relreplident string NOT NULL, + relispartition boolean NOT NULL, + relrewrite int unsigned NOT NULL, + relfrozenxid int unsigned NOT NULL, + relminmxid int unsigned NOT NULL, + relacl string, + reloptions string, + relpartbound string, + PRIMARY KEY (oid), + UNIQUE (relname, relnamespace), + ); + + + CREATE SCHEMA information_schema; + + CREATE VIEW information_schema.tables AS + SELECT (current_database()) AS table_catalog, + (nc.nspname) AS table_schema, + (c.relname) AS table_name, + ( + CASE + WHEN (nc.oid = pg_my_temp_schema()) THEN 'LOCAL TEMPORARY' + WHEN (c.relkind in ('r', 'p')) THEN 'BASE TABLE' + WHEN (c.relkind = 'v') THEN 'VIEW' + WHEN (c.relkind = 'f') THEN 'FOREIGN' + ELSE NULL + END) AS table_type, + (NULL) AS self_referencing_column_name, + (NULL) AS reference_generation, + ( + CASE + WHEN (t.typname IS NOT NULL) THEN current_database() + ELSE NULL + END) AS user_defined_type_catalog, + (nt.nspname) AS user_defined_type_schema, + (t.typname) AS user_defined_type_name, + ('NO') AS is_insertable_into, + ( + CASE + WHEN (t.typname IS NOT NULL) THEN 'YES' + ELSE 'NO' + END) AS is_typed, + (NULL) AS commit_action + FROM ((pg_namespace nc + JOIN pg_class c ON ((nc.oid = c.relnamespace))) + LEFT JOIN (pg_type t + JOIN pg_namespace nt ON ((t.typnamespace = nt.oid))) ON ((c.reloftype = t.oid))) + WHERE ((c.relkind in ('r', 'v', 'f', 'p')) + AND (NOT pg_is_other_temp_schema(nc.oid)) + AND (pg_has_role(c.relowner, 'USAGE') + OR has_table_privilege(c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER') + OR has_any_column_privilege(c.oid, 'SELECT, INSERT, UPDATE, REFERENCES'))); + + + CREATE VIEW information_schema.columns AS + SELECT (current_database()) AS table_catalog, + (nc.nspname) AS table_schema, + (c.relname) AS table_name, + (a.attname) AS column_name, + (a.attnum) AS ordinal_position, + ( + CASE + WHEN (a.attgenerated = '') THEN pg_get_expr(ad.adbin, ad.adrelid) + ELSE NULL + END) AS column_default, + ( + CASE + WHEN (a.attnotnull OR ((t.typtype = 'd') AND t.typnotnull)) THEN 'NO' + ELSE 'YES' + END) AS is_nullable, + ( + CASE + WHEN (t.typtype = 'd') THEN + CASE + WHEN ((bt.typelem <> (0)) AND (bt.typlen = '-1')) THEN 'ARRAY' + WHEN (nbt.nspname = 'pg_catalog') THEN format_typname((SELECT typname FROM pg_type WHERE oid = t.typbasetype)) + ELSE 'USER-DEFINED' + END + ELSE + CASE + WHEN ((t.typelem <> (0)) AND (t.typlen = '-1')) THEN 'ARRAY' + WHEN (nt.nspname = 'pg_catalog') THEN format_typname((SELECT typname FROM pg_type WHERE oid = a.atttypid)) + ELSE 'USER-DEFINED' + END + END) AS data_type, + (NULL::integer) AS character_maximum_length, + (NULL::integer) AS character_octet_length, + (NULL::integer) AS numeric_precision, + (NULL::integer) AS numeric_precision_radix, + (NULL::integer) AS numeric_scale, + (NULL::integer) AS datetime_precision, + (NULL::integer) AS interval_type, + (NULL::integer) AS interval_precision, + (NULL::string) AS character_set_catalog, + (NULL::string) AS character_set_schema, + (NULL::string) AS character_set_name, + ( + CASE + WHEN (nco.nspname IS NOT NULL) THEN current_database() + ELSE NULL::string + END) AS collation_catalog, + (nco.nspname) AS collation_schema, + (co.collname) AS collation_name, + ( + CASE + WHEN (t.typtype = 'd') THEN current_database() + ELSE NULL::string + END) AS domain_catalog, + ( + CASE + WHEN (t.typtype = 'd') THEN nt.nspname + ELSE NULL::string + END) AS domain_schema, + ( + CASE + WHEN (t.typtype = 'd') THEN t.typname + ELSE NULL::string + END) AS domain_name, + (current_database()) AS udt_catalog, + (COALESCE(nbt.nspname, nt.nspname)) AS udt_schema, + (COALESCE(bt.typname, t.typname)) AS udt_name, + (NULL::string) AS scope_catalog, + (NULL::string) AS scope_schema, + (NULL::string) AS scope_name, + (NULL::integer) AS maximum_cardinality, + (a.attnum) AS dtd_identifier, + ('NO') AS is_self_referencing, + ( + CASE + WHEN (a.attidentity in ('a', 'd')) THEN 'YES' + ELSE 'NO' + END) AS is_identity, + ( + CASE a.attidentity + WHEN 'a' THEN 'ALWAYS' + WHEN 'd' THEN 'BY DEFAULT' + ELSE NULL + END) AS identity_generation, + ( + CASE + WHEN (a.attgenerated <> '') THEN 'ALWAYS' + ELSE 'NEVER' + END) AS is_generated, + ( + CASE + WHEN (a.attgenerated <> '') THEN pg_get_expr(ad.adbin, ad.adrelid) + ELSE NULL + END) AS generation_expression, + ( + CASE + WHEN ((c.relkind in ('r', 'p')) OR ((c.relkind in ('v', 'f')) AND pg_column_is_updatable((c.oid), a.attnum, false))) THEN 'YES' + ELSE 'NO' + END) AS is_updatable + FROM ((((((pg_attribute a + LEFT JOIN pg_attrdef ad ON (((a.attrelid = ad.adrelid) AND (a.attnum = ad.adnum)))) + JOIN (pg_class c + JOIN pg_namespace nc ON ((c.relnamespace = nc.oid))) ON ((a.attrelid = c.oid))) + JOIN (pg_type t + JOIN pg_namespace nt ON ((t.typnamespace = nt.oid))) ON ((a.atttypid = t.oid))) + LEFT JOIN (pg_type bt + JOIN pg_namespace nbt ON ((bt.typnamespace = nbt.oid))) ON (((t.typtype = 'd') AND (t.typbasetype = bt.oid)))) + LEFT JOIN (pg_collation co + JOIN pg_namespace nco ON ((co.collnamespace = nco.oid))) ON (((a.attcollation = co.oid) AND ((nco.nspname <> 'pg_catalog') OR (co.collname <> 'default')))))) + WHERE ((NOT pg_is_other_temp_schema(nc.oid)) + AND (a.attnum > 0) + AND (NOT a.attisdropped) + AND (c.relkind in ('r', 'v', 'f', 'p')) + AND (pg_has_role(c.relowner, 'USAGE') + OR has_column_privilege(c.oid, a.attnum, 'SELECT, INSERT, UPDATE, REFERENCES'))); + + + CREATE VIEW information_schema.views AS + SELECT (current_database()) AS table_catalog, + (nc.nspname) AS table_schema, + (c.relname) AS table_name, + ( + CASE + WHEN pg_has_role(c.relowner, 'USAGE'::text) THEN pg_get_viewdef(c.oid) + ELSE NULL::text + END) AS view_definition, + ( + CASE + WHEN ('check_option=cascaded'::text in (c.reloptions)) THEN 'CASCADED'::text + WHEN ('check_option=local'::text in (c.reloptions)) THEN 'LOCAL'::text + ELSE 'NONE'::text + END) AS check_option, + ( + CASE + WHEN ((pg_relation_is_updatable((c.oid), false) & 20) = 20) THEN 'YES'::text + ELSE 'NO'::text + END) AS is_updatable, + ( + CASE + WHEN ((pg_relation_is_updatable((c.oid), false) & 8) = 8) THEN 'YES'::text + ELSE 'NO'::text + END) AS is_insertable_into, + ('NO'::text) AS is_trigger_updatable, + ('NO'::text) AS is_trigger_deletable, + ('NO'::text) AS is_trigger_insertable_into + FROM pg_namespace nc, + pg_class c + WHERE ((c.relnamespace = nc.oid) + AND (c.relkind = 'v'::char) + AND (NOT pg_is_other_temp_schema(nc.oid)) + AND (pg_has_role(c.relowner, 'USAGE'::text) + OR has_table_privilege(c.oid, 'SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text) + OR has_any_column_privilege(c.oid, 'SELECT, INSERT, UPDATE, REFERENCES'::text))); + + + CREATE VIEW information_schema.referential_constraints AS + SELECT (current_database()) AS constraint_catalog, + (ncon.nspname) AS constraint_schema, + (con.conname) AS constraint_name, + ( + CASE + WHEN (npkc.nspname IS NULL) THEN NULL::string + ELSE current_database() + END) AS unique_constraint_catalog, + (npkc.nspname) AS unique_constraint_schema, + (pkc.conname) AS unique_constraint_name, + ( + CASE con.confmatchtype + WHEN 'f'::char THEN 'FULL'::text + WHEN 'p'::char THEN 'PARTIAL'::text + WHEN 's'::char THEN 'NONE'::text + ELSE NULL::text + END) AS match_option, + ( + CASE con.confupdtype + WHEN 'c'::char THEN 'CASCADE'::text + WHEN 'n'::char THEN 'SET NULL'::text + WHEN 'd'::char THEN 'SET DEFAULT'::text + WHEN 'r'::char THEN 'RESTRICT'::text + WHEN 'a'::char THEN 'NO ACTION'::text + ELSE NULL::text + END) AS update_rule, + ( + CASE con.confdeltype + WHEN 'c'::char THEN 'CASCADE'::text + WHEN 'n'::char THEN 'SET NULL'::text + WHEN 'd'::char THEN 'SET DEFAULT'::text + WHEN 'r'::char THEN 'RESTRICT'::text + WHEN 'a'::char THEN 'NO ACTION'::text + ELSE NULL::text + END) AS delete_rule + FROM ((((((pg_namespace ncon + JOIN pg_constraint con ON ((ncon.oid = con.connamespace))) + JOIN pg_class c ON (((con.conrelid = c.oid) AND (con.contype = 'f'::char)))) + LEFT JOIN pg_depend d1 ON (((d1.objid = con.oid) AND (d1.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_constraint')) AND (d1.refclassid = (SELECT oid FROM pg_class WHERE relname = 'pg_class')) AND (d1.refobjsubid = 0)))) + LEFT JOIN pg_depend d2 ON (((d2.refclassid = (SELECT oid FROM pg_class WHERE relname = 'pg_constraint')) AND (d2.classid = (SELECT oid FROM pg_class WHERE relname = 'pg_class')) AND (d2.objid = d1.refobjid) AND (d2.objsubid = 0) AND (d2.deptype = 'i'::char)))) + LEFT JOIN pg_constraint pkc ON (((pkc.oid = d2.refobjid) AND (pkc.contype in ('p'::char, 'u'::char)) AND (pkc.conrelid = con.confrelid)))) + LEFT JOIN pg_namespace npkc ON ((pkc.connamespace = npkc.oid))) + WHERE (pg_has_role(c.relowner, 'USAGE'::text) + OR has_table_privilege(c.oid, 'INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER'::text) + OR has_any_column_privilege(c.oid, 'INSERT, UPDATE, REFERENCES'::text)); + + CREATE VIEW information_schema.character_sets AS + SELECT (NULL::string) AS character_set_catalog, + (NULL::string) AS character_set_schema, + 'UTF8' AS character_set_name, + 'UCS' AS character_repertoire, + 'UTF8' AS form_of_use, + current_database() AS default_collate_catalog, + nc.nspname AS default_collate_schema, + c.collname AS default_collate_name + FROM (pg_database d + LEFT JOIN (pg_collation c + JOIN pg_namespace nc ON ((c.collnamespace = nc.oid))) ON (((d.datcollate = c.collcollate) AND (d.datctype = c.collctype)))) + WHERE (d.datname = current_database()) + ORDER BY (char_length(default_collate_name)) DESC, default_collate_name + LIMIT 1; + + CREATE TABLE information_schema.key_column_usage( + constraint_catalog string, + constraint_schema string, + constraint_name string, + table_catalog string, + table_schema string, + table_name string, + column_name string, + ordinal_position int unsigned, + position_in_unique_constraint int unsigned, + ); + + CREATE TABLE information_schema.table_constraints( + constraint_catalog string, + constraint_schema string, + constraint_name string, + table_catalog string, + table_schema string, + table_name string, + constraint_type string, + is_deferrable string, + initially_deferred string, + enforced string, + nulls_distinct string, + ); + + "; + + let state = Arc::new(ctx.state()); + + { + let statements = DFParser::parse_sql_with_dialect( + schema_query, + &sqlparser::dialect::PostgreSqlDialect {}, + )?; + for statement in statements { + let context_provider = + ContextResolver::try_new_for_statement(state.clone(), &statement).await?; + let planner = SqlToRel::new(&context_provider); + let plan = planner.statement_to_plan(statement)?; + ctx.execute_logical_plan(plan).await?; + } + } + + // data + { + struct OIDFactory(u32); + impl OIDFactory { + fn new() -> Self { + Self(1) + } + + fn next(&mut self) -> u32 { + let oid = self.0; + self.0 += 1; + oid + } + } + + let mut oids = OIDFactory::new(); + + let owner_id = oids.next(); + let owner_name = "dozer"; + dml_sql_with_params( + ctx, + "INSERT + INTO pg_catalog.pg_authid + VALUES ($1, $2, true, true, true, true, true, true, true, -1, null, null)", + vec![owner_id.into(), owner_name.into()], + ) + .await?; + + let default_table_space_id = oids.next(); + let default_table_space_name = "pg_default"; + dml_sql_with_params( + ctx, + "INSERT INTO pg_catalog.pg_tablespace VALUES($1, $2, $3, null, null)", + vec![ + default_table_space_id.into(), + default_table_space_name.into(), + owner_id.into(), + ], + ) + .await?; + + struct SQLType { + pub id: u32, + pub name: &'static str, + pub len: i16, + pub category_code: &'static str, + pub preferred: bool, + } + + impl SQLType { + fn new( + id: u32, + name: &'static str, + len: i16, + category_code: &'static str, + preferred: bool, + ) -> Self { + Self { + id, + name, + len, + category_code, + preferred, + } + } + } + + let sqltypes = [ + SQLType::new(oids.next(), "bool", 1i16, "B", true), + SQLType::new(oids.next(), "bytea", -1, "U", false), + SQLType::new(oids.next(), "char", 1, "Z", false), + SQLType::new(oids.next(), "int2", 2, "N", false), + SQLType::new(oids.next(), "int4", 4, "N", false), + SQLType::new(oids.next(), "int8", 8, "N", false), + SQLType::new(oids.next(), "varchar", -1, "S", false), + SQLType::new(oids.next(), "text", -1, "S", true), + SQLType::new(oids.next(), "float4", 4, "N", false), + SQLType::new(oids.next(), "float8", 8, "N", true), + SQLType::new(oids.next(), "date", 4, "D", false), + SQLType::new(oids.next(), "time", 8, "D", false), + SQLType::new(oids.next(), "timestamp", 8, "D", false), + SQLType::new(oids.next(), "timestamptz", 8, "D", true), + SQLType::new(oids.next(), "interval", 16, "T", true), + SQLType::new(oids.next(), "numeric", -1, "N", false), + SQLType::new(oids.next(), "unknown", -2, "X", false), + ]; + + let sqltype_by_name = + |name| -> &SQLType { sqltypes.iter().find(|&t| t.name.eq(name)).unwrap() }; + + let sqltype_for_dftype = |dftype: &DataType| -> &SQLType { + match dftype { + DataType::Null => sqltype_by_name("unknown"), + DataType::Boolean => sqltype_by_name("bool"), + DataType::Int8 => sqltype_by_name("char"), + DataType::Int16 => sqltype_by_name("int2"), + DataType::Int32 => sqltype_by_name("int4"), + DataType::Int64 => sqltype_by_name("int8"), + DataType::UInt8 => sqltype_by_name("char"), + DataType::UInt16 => sqltype_by_name("int2"), + DataType::UInt32 => sqltype_by_name("int4"), + DataType::UInt64 => sqltype_by_name("int8"), + DataType::Float16 => sqltype_by_name("float4"), + DataType::Float32 => sqltype_by_name("float4"), + DataType::Float64 => sqltype_by_name("float8"), + DataType::Timestamp(_, None) => sqltype_by_name("timestamp"), + DataType::Timestamp(_, Some(_)) => sqltype_by_name("timestamptz"), + DataType::Date32 => sqltype_by_name("date"), + DataType::Date64 => sqltype_by_name("date"), + DataType::Time32(_) => sqltype_by_name("time"), + DataType::Time64(_) => sqltype_by_name("time"), + DataType::Duration(_) => sqltype_by_name("interval"), + DataType::Interval(_) => sqltype_by_name("interval"), + DataType::Binary => sqltype_by_name("bytea"), + DataType::FixedSizeBinary(_) => sqltype_by_name("bytea"), + DataType::LargeBinary => sqltype_by_name("bytea"), + DataType::Utf8 => sqltype_by_name("text"), + DataType::LargeUtf8 => sqltype_by_name("text"), + DataType::Decimal256(_, _) | DataType::Decimal128(_, _) => { + sqltype_by_name("numeric") + } + DataType::List(_) + | DataType::FixedSizeList(_, _) + | DataType::LargeList(_) + | DataType::Struct(_) + | DataType::Union(_, _) + | DataType::Dictionary(_, _) + | DataType::Map(_, _) + | DataType::RunEndEncoded(_, _) => unimplemented!("No SQLType for {dftype}"), + } + }; + + let pg_catalog_schema_id = oids.next(); + dml_sql_with_params( + ctx, + "INSERT INTO pg_catalog.pg_namespace VALUES($1, 'pg_catalog', $2, null)", + vec![pg_catalog_schema_id.into(), owner_id.into()], + ) + .await?; + + dml_sql_with_params(ctx, + "INSERT INTO pg_catalog.pg_proc VALUES(1, 'dummy', $1, $2, 0, 0, 0, 0, '', '', false, false, false, false, '', '', 0, 0, 0, '', null, null, null, null, null, '', null, null, null, null)", + vec![pg_catalog_schema_id.into(), owner_id.into()], + ) + .await?; + + for sqltype in sqltypes.iter() { + let pass_by_val = sqltype.len != -1; + dml_sql_with_params( + ctx, + "INSERT INTO pg_catalog.pg_type + VALUES($1, /* oid */ + $2, /* typname */ + $3, /* typnamespace */ + $4, /* typowner */ + $5, /* typlen */ + $6, /* typbyval */ + 'b', /* typtype */ + $7, /* typcategory */ + $8, /* typispreferred */ + true, /* typisdefined */ + '', /* typdelim */ + 0, /* typrelid */ + 0, /* typsubscript */ + 0, /* typelem */ + 0, /* typarray */ + 0, /* typinput */ + 0, /* typoutput */ + 1, /* typreceive */ + 0, /* typsend */ + 0, /* typmodin */ + 0, /* typmodout */ + 0, /* typanalyze */ + 'c', /* typalign */ + 'p', /* typstorage */ + false, /* typnotnull */ + 0, /* typbasetype */ + 0, /* typtypmod */ + 0, /* typndims */ + 0, /* typcollation */ + null, /* typdefaultbin */ + null, /* typdefault */ + null /* typacl */ + )", + vec![ + sqltype.id.into(), + sqltype.name.into(), + pg_catalog_schema_id.into(), + owner_id.into(), + sqltype.len.into(), + pass_by_val.into(), + sqltype.category_code.into(), + sqltype.preferred.into(), + ], + ) + .await?; + } + + let catalog_list = state.catalog_list(); + for catalog_name in catalog_list.catalog_names() { + let catalog_id = oids.next(); + dml_sql_with_params(ctx, + "INSERT INTO pg_catalog.pg_database + VALUES($1, $2, $3, 0, 'c', false, true, -1, 0, 0, $4, 'C.utf8', 'C.utf8', null, null, null, null)", + vec![catalog_id.into(), catalog_name.as_str().into(), owner_id.into(), default_table_space_id.into()], + ) + .await?; + + let catalog = catalog_list.catalog(&catalog_name).unwrap(); + for schema_name in catalog.schema_names().into_iter() { + let schema_id = oids.next(); + dml_sql_with_params( + ctx, + "INSERT INTO pg_catalog.pg_namespace VALUES($1, $2, $3, null)", + vec![ + schema_id.into(), + schema_name.as_str().into(), + owner_id.into(), + ], + ) + .await?; + + let schema = catalog.schema(&schema_name).unwrap(); + for table_name in schema.table_names() { + let table = schema.table(&table_name).await.unwrap(); + let table_id = oids.next(); + dml_sql_with_params(ctx, + "INSERT INTO pg_catalog.pg_class + VALUES($1, $2, $3, 0, 0, $4, 0, 0, 0, 0, -1, -1, 0, false, false, 'p', 'r', $5, 0, false, false, false, false, false, true, 'd', false, 0, 1, 1, null, null, null)", + vec![ + table_id.into(), + table_name.as_str().into(), + schema_id.into(), + owner_id.into(), + (table.schema().fields().len() as i16).into(), + ], + ) + .await?; + + for (i, field) in table.schema().fields().into_iter().enumerate() { + let sqltype = sqltype_for_dftype(field.data_type()); + let ordinal = i as i16 + 1; + let pass_by_val = sqltype.len != -1; + dml_sql_with_params(ctx, + "INSERT INTO pg_catalog.pg_attribute + VALUES($1, $2, $3, $4, $5, -1, -1, 0, $6, 'b', 'p', '', $7, false, false, '', '', false, true, 0, 0, 0, null, null, null, null)", + vec![ + table_id.into(), + field.name().as_str().into(), + sqltype.id.into(), + sqltype.len.into(), + ordinal.into(), + pass_by_val.into(), + (!field.is_nullable()).into(), + ], + ) + .await?; + } + } + } + } + } + + Ok(()) +} + +async fn dml_sql_with_params( + ctx: &SessionContext, + sql: &str, + param_values: Vec, +) -> Result<(), DataFusionError> { + ctx.sql(sql) + .await? + .with_param_values(param_values)? + .collect() + .await?; + Ok(()) +} diff --git a/dozer-api/src/sql/pgwire.rs b/dozer-api/src/sql/pgwire.rs index b5903e7029..add23ee61b 100644 --- a/dozer-api/src/sql/pgwire.rs +++ b/dozer-api/src/sql/pgwire.rs @@ -1,8 +1,10 @@ +use std::io::ErrorKind; use std::sync::Arc; use ::datafusion::arrow::datatypes::DECIMAL128_MAX_PRECISION; use ::datafusion::error::DataFusionError; use async_trait::async_trait; +use datafusion_expr::{LogicalPlan, LogicalPlanBuilder}; use dozer_types::arrow::array::{ Array, BinaryArray, BooleanArray, Date32Array, Date64Array, Decimal128Array, Decimal256Array, DurationMicrosecondArray, DurationMillisecondArray, DurationNanosecondArray, @@ -17,12 +19,13 @@ use dozer_types::arrow::array::{Int64Array, LargeBinaryArray}; use dozer_types::arrow::datatypes::{DataType, IntervalUnit}; use dozer_types::arrow::datatypes::{TimeUnit, DECIMAL_DEFAULT_SCALE}; use dozer_types::log::{debug, info}; -use dozer_types::models::api_config::{default_host, default_sql_port, SqlOptions}; +use dozer_types::models::api_config::{default_host, default_sql_port, PgWireOptions}; use dozer_types::rust_decimal::Decimal; +use futures_util::future::try_join_all; use futures_util::stream::BoxStream; use futures_util::{stream, StreamExt}; use pgwire::api::portal::Portal; -use pgwire::api::stmt::NoopQueryParser; +use pgwire::api::stmt::QueryParser; use pgwire::api::store::MemPortalStore; use pgwire::messages::data::DataRow; use tokio::net::TcpListener; @@ -30,7 +33,7 @@ use tokio::net::TcpListener; use pgwire::api::auth::noop::NoopStartupHandler; use pgwire::api::query::{ExtendedQueryHandler, SimpleQueryHandler, StatementOrPortal}; use pgwire::api::results::{ - DataRowEncoder, DescribeResponse, FieldFormat, FieldInfo, QueryResponse, Response, + DataRowEncoder, DescribeResponse, FieldFormat, FieldInfo, QueryResponse, Response, Tag, }; use pgwire::api::{ClientInfo, MakeHandler, StatelessMakeHandler, Type}; use pgwire::error::{ErrorInfo, PgWireError, PgWireResult}; @@ -41,14 +44,37 @@ use crate::shutdown::ShutdownReceiver; use crate::sql::datafusion::SQLExecutor; use crate::CacheEndpoint; +use super::datafusion::PlannedStatement; use super::util::Iso8601Duration; pub struct PgWireServer { - config: SqlOptions, + config: PgWireOptions, +} + +struct MakeQueryHandler { + sql_executor: Arc, +} + +impl MakeQueryHandler { + pub async fn try_new( + cache_endpoints: Vec>, + ) -> Result { + Ok(Self { + sql_executor: Arc::new(SQLExecutor::try_new(&cache_endpoints).await?), + }) + } +} + +impl MakeHandler for MakeQueryHandler { + type Handler = QueryProcessor; + + fn make(&self) -> Self::Handler { + QueryProcessor::new(self.sql_executor.clone()) + } } impl PgWireServer { - pub fn new(config: SqlOptions) -> Self { + pub fn new(config: PgWireOptions) -> Self { Self { config } } @@ -58,10 +84,11 @@ impl PgWireServer { cache_endpoints: Vec>, ) -> std::io::Result<()> { let config = self.config.clone(); - let query_processor = Arc::new(QueryProcessor::new(cache_endpoints)); - let processor = Arc::new(StatelessMakeHandler::new(query_processor.clone())); - // We have not implemented extended query in this server, use placeholder instead - let placeholder = Arc::new(StatelessMakeHandler::new(query_processor)); + let processor = Arc::new( + MakeQueryHandler::try_new(cache_endpoints) + .await + .map_err(|err| std::io::Error::new(ErrorKind::Other, err))?, + ); let authenticator = Arc::new(StatelessMakeHandler::new(Arc::new(NoopStartupHandler))); let host = config.host.unwrap_or_else(default_host); @@ -75,14 +102,14 @@ impl PgWireServer { let incoming_socket = accept_result?; let authenticator_ref = authenticator.make(); let processor_ref = processor.make(); - let placeholder_ref = placeholder.make(); + let placeholder_ref = processor.make(); tokio::spawn(async move { process_socket( incoming_socket.0, None, authenticator_ref, - processor_ref, - placeholder_ref, + Arc::new(processor_ref), + Arc::new(placeholder_ref), ) .await }); @@ -95,36 +122,26 @@ impl PgWireServer { } struct QueryProcessor { - sql_executor: SQLExecutor, - portal_store: Arc>, - query_parser: Arc, + sql_executor: Arc, + portal_store: Arc>>, } impl QueryProcessor { - pub fn new(cache_endpoints: Vec>) -> Self { - let sql_executor = SQLExecutor::new(cache_endpoints); + pub fn new(sql_executor: Arc) -> Self { Self { sql_executor, portal_store: Arc::new(MemPortalStore::new()), - query_parser: Arc::new(NoopQueryParser::new()), } } - async fn execute_query<'a>(&self, query: String) -> PgWireResult> { - debug!("Executing SQL query {:?}", query); - + async fn execute<'a>(&self, plan: LogicalPlan) -> PgWireResult> { fn error_info(err: DataFusionError) -> Box { Box::new(generic_error_info(err.to_string())) } - let result = self.sql_executor.execute(&query).await; - if let Err(err) = result { - return Ok(Response::Error(error_info(err))); - } - let dataframe = result.unwrap(); + debug!("Executing query plan {plan:?}"); let schema = Arc::new( - dataframe - .schema() + plan.schema() .fields() .iter() .map(|field| { @@ -139,10 +156,16 @@ impl QueryProcessor { }) .collect::>(), ); + let dataframe = match self.sql_executor.execute(plan).await { + Ok(df) => df, + Err(err) => { + return Err(PgWireError::UserError(error_info(err))); + } + }; let result = dataframe.execute_stream().await; if let Err(err) = result { - return Ok(Response::Error(error_info(err))); + return Err(PgWireError::UserError(error_info(err))); } let recordbatch_stream = result.unwrap(); @@ -174,6 +197,19 @@ impl QueryProcessor { Ok(Response::Query(QueryResponse::new(schema, data_row_stream))) } + + fn pg_schema(&self, stmt: &LogicalPlan) -> Vec { + let schema = stmt.schema(); + schema + .fields() + .iter() + .map(|df_field| { + let name = df_field.name().to_owned(); + let datatype = map_data_type(df_field.data_type()); + FieldInfo::new(name, None, None, datatype, FieldFormat::Text) + }) + .collect() + } } #[async_trait] @@ -182,24 +218,60 @@ impl SimpleQueryHandler for QueryProcessor { where C: ClientInfo + Unpin + Send + Sync, { - self.execute_query(query.to_string()) + let queries = self + .sql_executor + .parse(query) .await - .map(|response| vec![response]) + .map_err(|e| PgWireError::UserError(Box::new(generic_error_info(e.to_string()))))?; + + if queries.is_empty() { + return Ok(vec![Response::EmptyQuery]); + } + try_join_all(queries.into_iter().map(|q| async { + match q { + super::datafusion::PlannedStatement::Query(plan) => self.execute(plan).await, + super::datafusion::PlannedStatement::Statement(name) => { + Ok(Response::Execution(Tag::new_for_execution(name, None))) + } + } + })) + .await + } +} + +#[async_trait] +impl QueryParser for SQLExecutor { + type Statement = Option; + + async fn parse_sql(&self, sql: &str, _types: &[Type]) -> PgWireResult { + let mut plans = self + .parse(sql) + .await + .map_err(|e| PgWireError::UserError(Box::new(generic_error_info(e.to_string()))))?; + if plans.len() > 1 { + return Err(PgWireError::UserError(Box::new(generic_error_info( + "Multiple statements found".to_owned(), + )))); + } else if plans.is_empty() { + Ok(None) + } else { + Ok(Some(plans.remove(0))) + } } } #[async_trait] impl ExtendedQueryHandler for QueryProcessor { - type Statement = String; + type Statement = Option; type PortalStore = MemPortalStore; - type QueryParser = NoopQueryParser; + type QueryParser = SQLExecutor; fn portal_store(&self) -> Arc { self.portal_store.clone() } fn query_parser(&self) -> Arc { - self.query_parser.clone() + self.sql_executor.clone() } async fn do_query<'a, 'b: 'a, C>( @@ -211,8 +283,29 @@ impl ExtendedQueryHandler for QueryProcessor { where C: ClientInfo + Unpin + Send + Sync, { - let query = portal.statement().statement(); - self.execute_query(query.to_string()).await + let query = match portal.statement().statement() { + Some(PlannedStatement::Query(query)) => query, + Some(PlannedStatement::Statement(name)) => { + return Ok(Response::Execution(Tag::new_for_execution(name, None))) + } + None => { + return Ok(Response::EmptyQuery); + } + }; + let _params = query.get_parameter_types().map_err(|e| { + PgWireError::UserError(Box::new(ErrorInfo::new( + "FATAL".to_owned(), + "XXX01".to_owned(), + e.to_string(), + ))) + })?; + + let plan = LogicalPlanBuilder::from(query.clone()) + //.limit(0, Some(max_rows)) + //.unwrap() + .build() + .unwrap(); + self.execute(plan).await } async fn do_describe( @@ -223,19 +316,46 @@ impl ExtendedQueryHandler for QueryProcessor { where C: ClientInfo + Unpin + Send + Sync, { - let _query = match target { + match target { StatementOrPortal::Statement(stmt) => { - let query = stmt.statement(); - query - } - StatementOrPortal::Portal(portal) => { - let query = portal.statement().statement(); - query + let Some(PlannedStatement::Query(query)) = stmt.statement() else { + return Ok(DescribeResponse::no_data()); + }; + let unknown_type = Type::new( + "unknown".to_owned(), + 0, + postgres_types::Kind::Pseudo, + "pg_catalog".to_owned(), + ); + let types = query.get_parameter_types().map_err(|e| { + PgWireError::UserError(Box::new(ErrorInfo::new( + "FATAL".to_owned(), + "XXX01".to_owned(), + e.to_string(), + ))) + })?; + + let mut types = Vec::from_iter(types); + // The id's of types are always of the form `$1`, `$2` etc, so + // a simple sort works + types.sort(); + + let pg_types = types + .into_iter() + .map(|(_, ty)| { + ty.as_ref() + .map_or_else(|| unknown_type.clone(), map_data_type) + }) + .collect(); + return Ok(DescribeResponse::new(Some(pg_types), self.pg_schema(query))); } - }; - // TODO: proper implementations - Ok(DescribeResponse::new(None, Vec::new())) - // unimplemented!("Extended Query is not implemented on this server.") + StatementOrPortal::Portal(portal) => match portal.statement().statement() { + Some(PlannedStatement::Query(query)) => { + Ok(DescribeResponse::new(None, self.pg_schema(query))) + } + Some(PlannedStatement::Statement(_)) | None => Ok(DescribeResponse::no_data()), + }, + } } } @@ -243,20 +363,21 @@ fn map_data_type(datafusion_type: &DataType) -> Type { match datafusion_type { DataType::Null => Type::BOOL, DataType::Boolean => Type::BOOL, - DataType::Int8 => Type::INT2, + DataType::Int8 => Type::CHAR, DataType::Int16 => Type::INT2, DataType::Int32 => Type::INT4, DataType::Int64 => Type::INT8, DataType::UInt8 => Type::INT2, - DataType::UInt16 => Type::INT4, - DataType::UInt32 => Type::INT8, - DataType::UInt64 => Type::NUMERIC, + DataType::UInt16 => Type::INT2, + DataType::UInt32 => Type::INT4, + DataType::UInt64 => Type::INT8, DataType::Float16 => Type::FLOAT4, DataType::Float32 => Type::FLOAT4, DataType::Float64 => Type::FLOAT8, DataType::Timestamp(_, None) => Type::TIMESTAMP, DataType::Timestamp(_, Some(_)) => Type::TIMESTAMPTZ, DataType::Date32 => Type::DATE, + // This might lose data DataType::Date64 => Type::DATE, DataType::Time32(_) => Type::TIME, DataType::Time64(_) => Type::TIME, @@ -269,10 +390,41 @@ fn map_data_type(datafusion_type: &DataType) -> Type { DataType::LargeUtf8 => Type::VARCHAR, DataType::Decimal128(_, _) => Type::NUMERIC, DataType::Decimal256(_, _) => Type::NUMERIC, - DataType::List(_) - | DataType::FixedSizeList(_, _) - | DataType::LargeList(_) - | DataType::Struct(_) + DataType::List(f) | DataType::FixedSizeList(f, _) | DataType::LargeList(f) => { + match f.data_type() { + DataType::Boolean => Type::BOOL_ARRAY, + DataType::Int8 => Type::CHAR_ARRAY, + DataType::Int16 => Type::INT2_ARRAY, + DataType::Int32 => Type::INT4_ARRAY, + DataType::Int64 => Type::INT8_ARRAY, + DataType::UInt8 => Type::CHAR_ARRAY, + DataType::UInt16 => Type::INT2_ARRAY, + DataType::UInt32 => Type::INT4_ARRAY, + DataType::UInt64 => Type::INT8_ARRAY, + DataType::Float16 => Type::FLOAT4_ARRAY, + DataType::Float32 => Type::FLOAT4_ARRAY, + DataType::Float64 => Type::FLOAT8_ARRAY, + DataType::Timestamp(_, _) => Type::TIMESTAMP_ARRAY, + DataType::Date32 => Type::TIMESTAMPTZ_ARRAY, + DataType::Date64 => Type::TIMESTAMPTZ_ARRAY, + DataType::Time32(_) => Type::TIME_ARRAY, + DataType::Time64(_) => Type::TIME_ARRAY, + DataType::Duration(_) => Type::INTERVAL_ARRAY, + DataType::Interval(_) => Type::INTERVAL_ARRAY, + DataType::Binary => Type::BYTEA_ARRAY, + DataType::FixedSizeBinary(_) => Type::BYTEA_ARRAY, + DataType::LargeBinary => Type::BYTEA_ARRAY, + DataType::Utf8 => Type::VARCHAR_ARRAY, + DataType::LargeUtf8 => Type::VARCHAR_ARRAY, + DataType::List(_) => Type::ANYARRAY, + DataType::FixedSizeList(_, _) => Type::ANYARRAY, + DataType::LargeList(_) => Type::ANYARRAY, + DataType::Decimal128(_, _) => Type::NUMERIC_ARRAY, + DataType::Decimal256(_, _) => Type::NUMERIC_ARRAY, + _ => unimplemented!(), + } + } + DataType::Struct(_) | DataType::Union(_, _) | DataType::Dictionary(_, _) | DataType::Map(_, _) @@ -292,6 +444,9 @@ fn encode_field( column_data_type: &DataType, row_index: usize, ) -> Result<(), PgWireError> { + if column_data.is_null(row_index) { + return encoder.encode_field(&None::); + } match column_data_type { DataType::Null => encoder.encode_field(&None::), DataType::Boolean => { diff --git a/dozer-cli/src/simple/orchestrator.rs b/dozer-cli/src/simple/orchestrator.rs index d3f89d8e04..98e289c1a4 100644 --- a/dozer-cli/src/simple/orchestrator.rs +++ b/dozer-cli/src/simple/orchestrator.rs @@ -141,6 +141,7 @@ impl SimpleOrchestrator { shutdown_for_rest, self.labels.clone(), ) + .await .map_err(OrchestrationError::ApiInitFailed)?; tokio::spawn(api_server.map_err(OrchestrationError::RestServeFailed)) } else { @@ -171,8 +172,8 @@ impl SimpleOrchestrator { tokio::spawn(async move { Ok::<(), OrchestrationError>(()) }) }; - let pgwire_handle = { - let pgwire_config = self.config.api.sql.clone(); + let pgwire_config = self.config.api.pgwire.clone(); + let pgwire_handle = if pgwire_config.enabled.unwrap_or(true) { let pgwire_server = sql::pgwire::PgWireServer::new(pgwire_config); tokio::spawn(async move { pgwire_server @@ -180,6 +181,8 @@ impl SimpleOrchestrator { .await .map_err(OrchestrationError::PGWireServerFailed) }) + } else { + tokio::spawn(async move { Ok::<(), OrchestrationError>(()) }) }; futures.push(flatten_join_handle(rest_handle)); diff --git a/dozer-ingestion/Cargo.toml b/dozer-ingestion/Cargo.toml index 2214d571df..fabd820b84 100644 --- a/dozer-ingestion/Cargo.toml +++ b/dozer-ingestion/Cargo.toml @@ -33,7 +33,7 @@ criterion = { version = "0.4.0", features = ["html_reports"] } serial_test = "2.0.0" dozer-tracing = { path = "../dozer-tracing" } tempdir = "0.3.7" -parquet = "47.0.0" +parquet = "48.0.0" env_logger = "0.10.0" hex = "0.4.3" dozer-utils = { path = "../dozer-utils" } diff --git a/dozer-ingestion/deltalake/Cargo.toml b/dozer-ingestion/deltalake/Cargo.toml index dcf5f0cdfe..71394f1a74 100644 --- a/dozer-ingestion/deltalake/Cargo.toml +++ b/dozer-ingestion/deltalake/Cargo.toml @@ -8,6 +8,12 @@ edition = "2021" [dependencies] dozer-ingestion-connector = { path = "../connector" } dozer-ingestion-object-store = { path = "../object-store" } -deltalake = { version = "0.16.5", default-features = false, features = [ + +[dependencies.deltalake] +git = "https://github.com/delta-io/delta-rs" +rev = "72505449e9538371fe5fda35d545dbd662facd07" +version = "0.17" +default-features = false +features = [ "datafusion", -] } +] diff --git a/dozer-ingestion/object-store/Cargo.toml b/dozer-ingestion/object-store/Cargo.toml index 8643daf34a..60487806b6 100644 --- a/dozer-ingestion/object-store/Cargo.toml +++ b/dozer-ingestion/object-store/Cargo.toml @@ -7,9 +7,6 @@ edition = "2021" [dependencies] dozer-ingestion-connector = { path = "../connector" } -deltalake = { version = "0.16.5", default-features = false, features = [ - "s3", - "datafusion", -] } object_store = { version = "0.7.1", features = ["aws"] } url = "2.4.1" +datafusion = { workspace = true } diff --git a/dozer-ingestion/object-store/src/connection/validator.rs b/dozer-ingestion/object-store/src/connection/validator.rs index 4193ea91e0..34ff20767f 100644 --- a/dozer-ingestion/object-store/src/connection/validator.rs +++ b/dozer-ingestion/object-store/src/connection/validator.rs @@ -1,4 +1,4 @@ -use deltalake::datafusion::datasource::listing::ListingTableUrl; +use datafusion::datasource::listing::ListingTableUrl; use dozer_ingestion_connector::{ dozer_types::indicatif::{ProgressBar, ProgressStyle}, TableIdentifier, diff --git a/dozer-ingestion/object-store/src/helper.rs b/dozer-ingestion/object-store/src/helper.rs index 241098ad10..69476f720f 100644 --- a/dozer-ingestion/object-store/src/helper.rs +++ b/dozer-ingestion/object-store/src/helper.rs @@ -1,6 +1,7 @@ -use deltalake::datafusion::datasource::file_format::csv::CsvFormat; -use deltalake::datafusion::datasource::file_format::parquet::ParquetFormat; -use deltalake::datafusion::datasource::listing::ListingOptions; +use datafusion::datasource::{ + file_format::{csv::CsvFormat, parquet::ParquetFormat}, + listing::ListingOptions, +}; use dozer_ingestion_connector::dozer_types::models::ingestion_types::{Table, TableConfig}; use std::sync::Arc; diff --git a/dozer-ingestion/object-store/src/lib.rs b/dozer-ingestion/object-store/src/lib.rs index 9e5b44ba6e..69acbf8a39 100644 --- a/dozer-ingestion/object-store/src/lib.rs +++ b/dozer-ingestion/object-store/src/lib.rs @@ -1,4 +1,4 @@ -use deltalake::datafusion::{datasource::listing::ListingTableUrl, error::DataFusionError}; +use datafusion::{datasource::listing::ListingTableUrl, error::DataFusionError}; use dozer_ingestion_connector::dozer_types::{ arrow_types::errors::FromArrowError, thiserror::{self, Error}, diff --git a/dozer-ingestion/object-store/src/schema_helper.rs b/dozer-ingestion/object-store/src/schema_helper.rs index 7f9785105b..56735f80ae 100644 --- a/dozer-ingestion/object-store/src/schema_helper.rs +++ b/dozer-ingestion/object-store/src/schema_helper.rs @@ -1,6 +1,6 @@ use std::sync::Arc; -use deltalake::arrow::datatypes::{DataType, Field}; +use datafusion::arrow::datatypes::{DataType, Field}; use dozer_ingestion_connector::dozer_types::types::{FieldDefinition, FieldType, SourceDefinition}; use crate::ObjectStoreSchemaError; diff --git a/dozer-ingestion/object-store/src/schema_mapper.rs b/dozer-ingestion/object-store/src/schema_mapper.rs index b7fd069569..31f531e035 100644 --- a/dozer-ingestion/object-store/src/schema_mapper.rs +++ b/dozer-ingestion/object-store/src/schema_mapper.rs @@ -1,8 +1,8 @@ -use deltalake::arrow::datatypes::SchemaRef; -use deltalake::datafusion::datasource::file_format::csv::CsvFormat; -use deltalake::datafusion::datasource::file_format::parquet::ParquetFormat; -use deltalake::datafusion::datasource::listing::{ListingOptions, ListingTableUrl}; -use deltalake::datafusion::prelude::SessionContext; +use datafusion::arrow::datatypes::SchemaRef; +use datafusion::datasource::file_format::csv::CsvFormat; +use datafusion::datasource::file_format::parquet::ParquetFormat; +use datafusion::datasource::listing::{ListingOptions, ListingTableUrl}; +use datafusion::prelude::SessionContext; use dozer_ingestion_connector::dozer_types::log::error; use dozer_ingestion_connector::dozer_types::models::ingestion_types::TableConfig; use dozer_ingestion_connector::dozer_types::types::Schema; diff --git a/dozer-ingestion/object-store/src/table.rs b/dozer-ingestion/object-store/src/table.rs index 6576e7c98b..cbb8ccfcbe 100644 --- a/dozer-ingestion/object-store/src/table.rs +++ b/dozer-ingestion/object-store/src/table.rs @@ -1,9 +1,6 @@ use std::{collections::HashMap, sync::Arc, time::Duration}; -use deltalake::{ - datafusion::{common::DFSchema, datasource::listing::ListingTableUrl, prelude::SessionContext}, - Path, -}; +use datafusion::{common::DFSchema, datasource::listing::ListingTableUrl, prelude::SessionContext}; use dozer_ingestion_connector::{ dozer_types::{ chrono::{DateTime, Utc}, @@ -14,6 +11,7 @@ use dozer_ingestion_connector::{ tokio::{self, sync::mpsc::Sender}, TableInfo, }; +use object_store::path::Path; use object_store::ObjectStore; use crate::{ diff --git a/dozer-ingestion/object-store/src/table_reader.rs b/dozer-ingestion/object-store/src/table_reader.rs index 70a6fd470a..846a9c9b5f 100644 --- a/dozer-ingestion/object-store/src/table_reader.rs +++ b/dozer-ingestion/object-store/src/table_reader.rs @@ -1,8 +1,8 @@ -use deltalake::datafusion::common::DFSchema; -use deltalake::datafusion::datasource::listing::{ +use datafusion::common::DFSchema; +use datafusion::datasource::listing::{ ListingOptions, ListingTable, ListingTableConfig, ListingTableUrl, }; -use deltalake::datafusion::prelude::SessionContext; +use datafusion::prelude::SessionContext; use dozer_ingestion_connector::dozer_types::arrow_types::from_arrow::{ map_schema_to_dozer, map_value_to_dozer_field, }; diff --git a/dozer-tests/src/tests/e2e/fixtures/basic.yaml b/dozer-tests/src/tests/e2e/fixtures/basic.yaml index c06972eb78..812338b1e8 100644 --- a/dozer-tests/src/tests/e2e/fixtures/basic.yaml +++ b/dozer-tests/src/tests/e2e/fixtures/basic.yaml @@ -23,6 +23,12 @@ connections: } name: ingest +api: + rest: + enable_sql: false + pgwire: + enabled: false + sources: - name: users table_name: users diff --git a/dozer-tests/src/tests/e2e/fixtures/basic_sql.yaml b/dozer-tests/src/tests/e2e/fixtures/basic_sql.yaml index 0ccdacd87b..6e35802474 100644 --- a/dozer-tests/src/tests/e2e/fixtures/basic_sql.yaml +++ b/dozer-tests/src/tests/e2e/fixtures/basic_sql.yaml @@ -20,12 +20,13 @@ connections: api: rest: port: 7502 + enable_sql: false grpc: port: 7503 app_grpc: port: 7504 - sql: - port: 7501 + pgwire: + enabled: false sql: | SELECT trip_miles, trip_time, puz.Zone as pickup_location, doz.Zone as dropout_location diff --git a/dozer-tests/src/tests/e2e/fixtures/basic_sql_wildcard.yaml b/dozer-tests/src/tests/e2e/fixtures/basic_sql_wildcard.yaml index 3105bdbe66..75c1326088 100644 --- a/dozer-tests/src/tests/e2e/fixtures/basic_sql_wildcard.yaml +++ b/dozer-tests/src/tests/e2e/fixtures/basic_sql_wildcard.yaml @@ -43,10 +43,13 @@ connections: api: rest: port: 7511 + enable_sql: false grpc: port: 7512 app_grpc: port: 7513 + pgwire: + enabled: false sql: | SELECT table4.* diff --git a/dozer-tests/src/tests/e2e/fixtures/left_join.yaml b/dozer-tests/src/tests/e2e/fixtures/left_join.yaml index f6b64c1c06..97436177cf 100644 --- a/dozer-tests/src/tests/e2e/fixtures/left_join.yaml +++ b/dozer-tests/src/tests/e2e/fixtures/left_join.yaml @@ -33,12 +33,13 @@ connections: api: rest: port: 7505 + enable_sql: false grpc: port: 7506 app_grpc: port: 7507 - sql: - port: 7508 + pgwire: + enabled: false sql: SELECT id INTO table1_endpoint FROM table1 LEFT JOIN table2 ON table1.id = table2.table1_id diff --git a/dozer-types/Cargo.toml b/dozer-types/Cargo.toml index 5c69b472aa..8bef85e42d 100644 --- a/dozer-types/Cargo.toml +++ b/dozer-types/Cargo.toml @@ -17,7 +17,7 @@ ahash = "0.8.3" thiserror = "1.0.48" parking_lot = "0.12" bytes = "1.4.0" -indexmap = "2.0.0" +indexmap = "1.9.0" ordered-float = { version = "3.9.1", features = ["serde"] } tracing = "0.1.36" log = "0.4.17" @@ -29,9 +29,9 @@ pyo3 = { version = "0.18.1", optional = true } tonic = { version = "0.10.0" } prost-types = "0.12.0" prost = "0.12.2" -arrow = { version = "47.0.0" } -arrow-cast = { version = "47.0.0" } -arrow-schema = { version = "47.0.0", features = ["serde"] } +arrow = { version = "48.0.1" } +arrow-cast = { version = "48.0.1" } +arrow-schema = { version = "48.0.1", features = ["serde"] } tokio-postgres = { version = "0.7.7", features = [ "with-chrono-0_4", "with-geo-types-0_7", diff --git a/dozer-types/src/models/api_config.rs b/dozer-types/src/models/api_config.rs index ad99982e60..94caf5e5f5 100644 --- a/dozer-types/src/models/api_config.rs +++ b/dozer-types/src/models/api_config.rs @@ -19,7 +19,7 @@ pub struct ApiConfig { pub app_grpc: AppGrpcOptions, #[serde(default, skip_serializing_if = "equal_default")] - pub sql: SqlOptions, + pub pgwire: PgWireOptions, #[serde(skip_serializing_if = "Option::is_none")] // max records to be returned from the endpoints @@ -40,6 +40,9 @@ pub struct RestApiOptions { #[serde(skip_serializing_if = "Option::is_none")] pub enabled: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub enable_sql: Option, } #[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone, JsonSchema, Default)] @@ -73,12 +76,15 @@ pub struct AppGrpcOptions { #[derive(Debug, Serialize, Deserialize, Eq, PartialEq, Clone, Hash, JsonSchema, Default)] #[serde(deny_unknown_fields)] -pub struct SqlOptions { +pub struct PgWireOptions { #[serde(skip_serializing_if = "Option::is_none")] pub port: Option, #[serde(skip_serializing_if = "Option::is_none")] pub host: Option, + + #[serde(skip_serializing_if = "Option::is_none")] + pub enabled: Option, } pub fn default_app_grpc_port() -> u32 { diff --git a/dozer-types/src/tests/api_config_yaml_deserialize.rs b/dozer-types/src/tests/api_config_yaml_deserialize.rs index db3df2edd2..e64be614fe 100644 --- a/dozer-types/src/tests/api_config_yaml_deserialize.rs +++ b/dozer-types/src/tests/api_config_yaml_deserialize.rs @@ -21,6 +21,7 @@ fn override_rest_port() { host: None, cors: None, enabled: None, + enable_sql: None, }; assert_eq!(api_config.rest, expected_rest_config); } @@ -42,6 +43,7 @@ fn override_rest_host() { host: Some("localhost".to_owned()), cors: None, enabled: None, + enable_sql: None, }; assert_eq!(api_config.rest, expected_rest_config); } @@ -63,6 +65,7 @@ fn override_rest_enabled() { host: None, cors: None, enabled: Some(false), + enable_sql: None, }; assert_eq!(api_config.rest, expected_rest_config); } diff --git a/json_schemas/dozer.json b/json_schemas/dozer.json index 74b5717258..7bedfab13c 100644 --- a/json_schemas/dozer.json +++ b/json_schemas/dozer.json @@ -153,11 +153,11 @@ "grpc": { "$ref": "#/definitions/GrpcApiOptions" }, + "pgwire": { + "$ref": "#/definitions/PgWireOptions" + }, "rest": { "$ref": "#/definitions/RestApiOptions" - }, - "sql": { - "$ref": "#/definitions/SqlOptions" } }, "additionalProperties": false @@ -1362,6 +1362,32 @@ } } }, + "PgWireOptions": { + "type": "object", + "properties": { + "enabled": { + "type": [ + "boolean", + "null" + ] + }, + "host": { + "type": [ + "string", + "null" + ] + }, + "port": { + "type": [ + "integer", + "null" + ], + "format": "uint32", + "minimum": 0.0 + } + }, + "additionalProperties": false + }, "PostgresConfig": { "description": "Configuration for a Postgres connection", "examples": [ @@ -1474,6 +1500,12 @@ "null" ] }, + "enable_sql": { + "type": [ + "boolean", + "null" + ] + }, "enabled": { "type": [ "boolean", @@ -1757,26 +1789,6 @@ }, "additionalProperties": false }, - "SqlOptions": { - "type": "object", - "properties": { - "host": { - "type": [ - "string", - "null" - ] - }, - "port": { - "type": [ - "integer", - "null" - ], - "format": "uint32", - "minimum": 0.0 - } - }, - "additionalProperties": false - }, "Table": { "type": "object", "required": [