diff --git a/Cargo.lock b/Cargo.lock index 6f5a4c85..bae02ae5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -39,9 +39,9 @@ checksum = "cc7bb162ec39d46ab1ca8c77bf72e890535becd1751bb45f64c597edb4c8c6b3" [[package]] name = "alloc-stdlib" -version = "0.2.2" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94fb8275041c72129eb51b7d0322c29b8387a0386127718b096429201a5d6ece" +checksum = "0e76a019e91224d279006ff972f1e984179a6e9feb050adba6ce8274aef23195" dependencies = [ "alloc-no-stdlib", ] @@ -113,24 +113,24 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.102" +version = "1.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f202df86484c868dbad7eaa557ef785d5c66295e41b460ef922eca0723b842c" +checksum = "330a5ed07fa54e4702c9d6c4174f74427fc0ef6e214bbd677ae50a5099946470" [[package]] name = "ar_archive_writer" -version = "0.5.2" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4087686b4b0a3427190bae57a1d9a478dbb2d40c5dc1bd6e2b6d797913bdd348" +checksum = "73cd58deff2140a0a8eae87e417bd01db68a33e148aa93d1e8cd837e55e312b6" dependencies = [ "object", ] [[package]] name = "arc-swap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a3a1fd6f75306b68087b831f025c712524bcb19aad54e557b1129cfa0a2b207" +checksum = "c049c0be4daef0b145cb3555416b3b8ef5b7888a38aea1a3a155801fe7b0810b" dependencies = [ "rustversion", ] @@ -143,15 +143,15 @@ checksum = "76a2e8124351fda1ef8aaaa3bbd7ebbcb486bbcd4225aca0aa0d84bb2db8fecb" [[package]] name = "arrayvec" -version = "0.7.6" +version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +checksum = "d3fb67a6e08acf24fdeccbac2cb6ac4305825bd1f117462e0e6f2f193345ad56" [[package]] name = "arrow" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "378530e55cd479eda3c14eb345310799717e6f76d0c332041e8487022166b471" +checksum = "6cfdd0833e32a9874d2b55089333ad310c0be208aafa277385ce2461dec90be3" dependencies = [ "arrow-arith", "arrow-array", @@ -170,9 +170,9 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0ab212d2c1886e802f51c5212d78ebbcbb0bec980fff9dadc1eb8d45cd0b738" +checksum = "0a41203398f0eaa6f7ec8e62c0da742a21abf282c148fc157f6c35c90e29981a" dependencies = [ "arrow-array", "arrow-buffer", @@ -184,9 +184,9 @@ dependencies = [ [[package]] name = "arrow-array" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfd33d3e92f207444098c75b42de99d329562be0cf686b307b097cc52b4e999e" +checksum = "ae33dad492b7df00a217563a7b0ef2874df68a0deea1b1a3acf628152f7f7a69" dependencies = [ "ahash", "arrow-buffer", @@ -203,9 +203,9 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c6cd424c2693bcdbc150d843dc9d4d137dd2de4782ce6df491ad11a3a0416c0" +checksum = "b9552f96391c005e6ab449fa941420935e7e062489b12b8b1b08879b2163f5b5" dependencies = [ "bytes", "half", @@ -215,9 +215,9 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c5aefb56a2c02e9e2b30746241058b85f8983f0fcff2ba0c6d09006e1cded7f" +checksum = "3a8a327c9649f30d8406995f27642b68df354713cca3baaaf100f076f18d5f34" dependencies = [ "arrow-array", "arrow-buffer", @@ -237,9 +237,9 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94e8cf7e517657a52b91ea1263acf38c4ca62a84655d72458a3359b12ab97de" +checksum = "af0dd6d90d1955e9f9a014c1e563ee8aeffc21909085d25623e1da44d96eca26" dependencies = [ "arrow-array", "arrow-cast", @@ -252,9 +252,9 @@ dependencies = [ [[package]] name = "arrow-data" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c88210023a2bfee1896af366309a3028fc3bcbd6515fa29a7990ee1baa08ee0" +checksum = "2b24852db04738907e06c04ea61e42fe7fda962a34513022dc0d0e754fb7976b" dependencies = [ "arrow-buffer", "arrow-schema", @@ -265,9 +265,9 @@ dependencies = [ [[package]] name = "arrow-flight" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28abfe8bf9f124e5fc83b334af4fa58f8d0323ad25312ccb2d1da50178415704" +checksum = "b2dbe34824c639e43136af8f106992792ab456540d54b880bc320a3192502d2e" dependencies = [ "arrow-array", "arrow-buffer", @@ -285,9 +285,9 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "238438f0834483703d88896db6fe5a7138b2230debc31b34c0336c2996e3c64f" +checksum = "29a908a11fcfb3fb2f6730f4ac15e367bc644e419155e96238f68cf3adde572b" dependencies = [ "arrow-array", "arrow-buffer", @@ -301,9 +301,9 @@ dependencies = [ [[package]] name = "arrow-json" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "205ca2119e6d679d5c133c6f30e68f027738d95ed948cf77677ea69c7800036b" +checksum = "b8a96aed3931c076adee39ec2a40d8219fc7f09e79bcdaca1df16272993e1e14" dependencies = [ "arrow-array", "arrow-buffer", @@ -326,9 +326,9 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bffd8fd2579286a5d63bac898159873e5094a79009940bcb42bbfce4f19f1d0" +checksum = "63a083ec750f5c043f02946b4baf05fcdbb55f4560a3277055caca5cc99f3eb0" dependencies = [ "arrow-array", "arrow-buffer", @@ -339,9 +339,9 @@ dependencies = [ [[package]] name = "arrow-row" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bab5994731204603c73ba69267616c50f80780774c6bb0476f1f830625115e0c" +checksum = "514ba0ef0d4c5896202dae736251ce415abb43a950bed570fb7981b8716c0e4c" dependencies = [ "arrow-array", "arrow-buffer", @@ -352,9 +352,9 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f633dbfdf39c039ada1bf9e34c694816eb71fbb7dc78f613993b7245e078a1ed" +checksum = "21ca356ad6425cecb6eb7b28e4f659f1ee7880fbb1a16127de7dd62901efee9e" dependencies = [ "bitflags", "serde", @@ -364,9 +364,9 @@ dependencies = [ [[package]] name = "arrow-select" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd065c54172ac787cf3f2f8d4107e0d3fdc26edba76fdf4f4cc170258942222" +checksum = "c58da39eb3d8350ad4a549e5c2bc49284dac554016c69829310350f1731b0aad" dependencies = [ "ahash", "arrow-array", @@ -378,9 +378,9 @@ dependencies = [ [[package]] name = "arrow-string" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29dd7cda3ab9692f43a2e4acc444d760cc17b12bb6d8232ddf64e9bab7c06b42" +checksum = "b6789b388467525e3271326b6b4915666ecfdf5142aef09779445c954b67543c" dependencies = [ "arrow-array", "arrow-buffer", @@ -395,9 +395,9 @@ dependencies = [ [[package]] name = "async-compression" -version = "0.4.42" +version = "0.4.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e79b3f8a79cccc2898f31920fc69f304859b3bd567490f75ebf51ae1c792a9ac" +checksum = "3976abdc8fe7d1133d43d304afd42abdf5bc3e1319d263d223bde07b5efc4be8" dependencies = [ "compression-codecs", "compression-core", @@ -407,13 +407,13 @@ dependencies = [ [[package]] name = "async-trait" -version = "0.1.89" +version = "0.1.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" +checksum = "ae36dc4177970ef04fde5178d3e2429882def40e57a451f919c098f72baa6cec" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -439,9 +439,9 @@ checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "aws-config" -version = "1.8.18" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e33f815b73a3899c03b380d543532e5865f230dce9678d108dc10732a8682275" +checksum = "1b180a3c8b55960db3426d8964b8745e652466a1a49fe1a2eda828046d30b5e4" dependencies = [ "aws-credential-types", "aws-runtime", @@ -459,7 +459,7 @@ dependencies = [ "bytes", "fastrand", "hex", - "http 1.4.2", + "http 1.5.0", "sha1", "time", "tokio", @@ -470,9 +470,9 @@ dependencies = [ [[package]] name = "aws-credential-types" -version = "1.2.14" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f20799b373a1be121fe3005fba0c2090af9411573878f224df44b42727fcaf7" +checksum = "e93964ffdaf57857f544be3666a5f57570bb699e934700f11b49708f61bb556e" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", @@ -482,9 +482,9 @@ dependencies = [ [[package]] name = "aws-lc-rs" -version = "1.17.0" +version = "1.17.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ec2f1fc3ec205783a5da9a7e6c1509cc69dedf09a1949e412c1e18469326d00" +checksum = "00bdb5da18dac48ca2cc7cd4a98e533e8635a58e2361d13a1a4ee3888e0d72f1" dependencies = [ "aws-lc-sys", "zeroize", @@ -492,21 +492,22 @@ dependencies = [ [[package]] name = "aws-lc-sys" -version = "0.41.0" +version = "0.43.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a2f9779ce85b93ab6170dd940ad0169b5766ff848247aff13bb788b832fe3f4" +checksum = "43103168cc76fe62678a375e722fc9cb3a0146159ac5828bc4f0dfd755c2224c" dependencies = [ "cc", "cmake", "dunce", "fs_extra", + "pkg-config", ] [[package]] name = "aws-runtime" -version = "1.7.4" +version = "1.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ed8e8c52d2dc2390ad9f15647fe663f71e9780b4262c190fbb823a32721566" +checksum = "c9007227e10b5fed2f3e0a2beff489211e2b5604c400b7a9d5d81ca9d64c24bb" dependencies = [ "aws-credential-types", "aws-sigv4", @@ -519,8 +520,8 @@ dependencies = [ "bytes", "bytes-utils", "fastrand", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "percent-encoding", "pin-project-lite", "tracing", @@ -529,9 +530,9 @@ dependencies = [ [[package]] name = "aws-sdk-dynamodb" -version = "1.115.0" +version = "1.119.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "715fd8729709daa491b2d4aeed33e576d76031c164ad34b65062ea585d97ad5e" +checksum = "b0176c1927f2e065f43cecde84602f769959b34ab53a317da92a64022ba09345" dependencies = [ "arc-swap", "aws-credential-types", @@ -542,21 +543,22 @@ dependencies = [ "aws-smithy-observability", "aws-smithy-runtime", "aws-smithy-runtime-api", + "aws-smithy-schema", "aws-smithy-types", "aws-types", "bytes", "fastrand", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sso" -version = "1.101.0" +version = "1.105.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b647baea49ff551960b904f905681e9b4765a6c4ea08631e89dc52d8bd3f5896" +checksum = "6ffd0fbe7873cb548a7aa60f9573c268fff94155397fd4f14dc9f1ecaaab8516" dependencies = [ "arc-swap", "aws-credential-types", @@ -567,21 +569,22 @@ dependencies = [ "aws-smithy-observability", "aws-smithy-runtime", "aws-smithy-runtime-api", + "aws-smithy-schema", "aws-smithy-types", "aws-types", "bytes", "fastrand", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-ssooidc" -version = "1.103.0" +version = "1.107.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ae401c65ff288aa7873117fe535cd32b7b1bb0bc43751d28901a1d5f20636b9" +checksum = "175763eb222a46377df7aa257a3bca980ab3e96703fefc8f4d0b8da6ad2e254c" dependencies = [ "arc-swap", "aws-credential-types", @@ -592,21 +595,22 @@ dependencies = [ "aws-smithy-observability", "aws-smithy-runtime", "aws-smithy-runtime-api", + "aws-smithy-schema", "aws-smithy-types", "aws-types", "bytes", "fastrand", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sts" -version = "1.106.0" +version = "1.110.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c80de7bb7d03e9ca8c9fd7b489f20f3948d3f3be91a7953591347d238115408" +checksum = "dd8b14781dfbff48984017d57167b6ea0b6471c6920ec52b44a2677c7feb3c13" dependencies = [ "arc-swap", "aws-credential-types", @@ -618,21 +622,22 @@ dependencies = [ "aws-smithy-query", "aws-smithy-runtime", "aws-smithy-runtime-api", + "aws-smithy-schema", "aws-smithy-types", "aws-smithy-xml", "aws-types", "fastrand", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "regex-lite", "tracing", ] [[package]] name = "aws-sigv4" -version = "1.4.5" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bae38512beae0ffee7010fc24e7a8a123c53efdfef42a61e80fda4882418dc71" +checksum = "723c2234ad7511ceef63eab016b7ba6ff7c55590fefb96fa8467af014a07309f" dependencies = [ "aws-credential-types", "aws-smithy-http", @@ -643,7 +648,7 @@ dependencies = [ "hex", "hmac", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "percent-encoding", "sha2 0.11.0", "time", @@ -652,9 +657,9 @@ dependencies = [ [[package]] name = "aws-smithy-async" -version = "1.2.14" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffcaf626bdda484571968400c326a244598634dc75fd451325a54ad1a59acfc" +checksum = "f02e407fb3b54891734224b9ffac8a71fdd35f542500fa1af95754a6b2beb316" dependencies = [ "futures-util", "pin-project-lite", @@ -663,9 +668,9 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.63.6" +version = "0.64.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1ab2dc1c2c3749ead27180d333c42f11be8b0e934058fb4b2258ee8dbe5231" +checksum = "37843d9add67c3aff5856f409c6dc315d3cdff60f9c0cb5b670dab1e9920306d" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", @@ -673,8 +678,8 @@ dependencies = [ "bytes-utils", "futures-core", "futures-util", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "http-body-util", "percent-encoding", "pin-project-lite", @@ -684,15 +689,15 @@ dependencies = [ [[package]] name = "aws-smithy-http-client" -version = "1.1.13" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c3ef8931ad1c98aa6a55b4256f847f3116090819844e0dd41ea682cac5dd2d3" +checksum = "635d23afda0a6ab48d666c4d447c4873e8d1e83518a2be2093122397e50b838e" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", "h2", - "http 1.4.2", + "http 1.5.0", "hyper", "hyper-rustls", "hyper-util", @@ -708,9 +713,9 @@ dependencies = [ [[package]] name = "aws-smithy-json" -version = "0.62.7" +version = "0.63.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "701a947f4797e52a911e114a898667c746c39feea467bbd1abd7b3721f702ffa" +checksum = "3dc65a121adb4b33729919fcfa14fa36fb33c1555a8f06bb0e2188dbfdc1d9ef" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-schema", @@ -719,28 +724,31 @@ dependencies = [ [[package]] name = "aws-smithy-observability" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a06c2315d173edbf1920da8ba3a7189695827002e4c0fc961973ab1c54abca9c" +checksum = "8e86338c869539a581bf161247762a6e87f92c5c075060057b5ed6d06632ed0c" dependencies = [ "aws-smithy-runtime-api", ] [[package]] name = "aws-smithy-query" -version = "0.60.15" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a56d79744fb3edb5d722ef79d86081e121d3b9422cb209eb03aea6aa4f21ebd" +checksum = "512346c7212ab7436df2d77a16d976a468ae44a418835511d2a69269810aaf62" dependencies = [ + "aws-smithy-runtime-api", + "aws-smithy-schema", "aws-smithy-types", + "aws-smithy-xml", "urlencoding", ] [[package]] name = "aws-smithy-runtime" -version = "1.11.3" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e6f5caf6fea86f8c2206541ab5857cfcda9013426cdbe8fa0098b9e2d32182" +checksum = "07505b34e8f4b3591a4fa69e9792b52289b95488dbbc68c3c0075b7bedb245e1" dependencies = [ "aws-smithy-async", "aws-smithy-http", @@ -752,9 +760,9 @@ dependencies = [ "bytes", "fastrand", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "http-body 0.4.6", - "http-body 1.0.1", + "http-body 1.1.0", "http-body-util", "pin-project-lite", "pin-utils", @@ -764,16 +772,16 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api" -version = "1.12.3" +version = "1.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9db177daa6ba8afb9ee1aefcf548c907abcf52065e394ee11a92780057fe0e8c" +checksum = "3b98f2e1fd67ec06618f9c291e5e495a468e60519e44c9c1979cd0521f3affdb" dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api-macros", "aws-smithy-types", "bytes", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "pin-project-lite", "tokio", "tracing", @@ -782,40 +790,40 @@ dependencies = [ [[package]] name = "aws-smithy-runtime-api-macros" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d7396fd9500589e62e460e987ecb671bad374934e55ec3b5f498cc7a8a8a7b7" +checksum = "221eaa237ddf1ca79b60d1372aad77e47f9c0ea5b3ce5099da8c61d027dc77b3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "aws-smithy-schema" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7442cb268338f0eb8278140a107c046756aa01093d8ef5e99628d34ae09c94f5" +checksum = "7d56e0a4e53127a632224e43633b0fe045fa9e1e3cfc68b9830f1115e103f910" dependencies = [ "aws-smithy-runtime-api", "aws-smithy-types", - "http 1.4.2", + "http 1.5.0", ] [[package]] name = "aws-smithy-types" -version = "1.4.9" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53f93074121a1be41317b9aa607143ae17900631f7f59a99f2b905d519d6783b" +checksum = "d6dc683efb34b9e755675b37fedbe0103141e5b6df7bdc9eb6967756a8c167d8" dependencies = [ "base64-simd", "bytes", "bytes-utils", "futures-core", "http 0.2.12", - "http 1.4.2", + "http 1.5.0", "http-body 0.4.6", - "http-body 1.0.1", + "http-body 1.1.0", "http-body-util", "itoa", "num-integer", @@ -830,18 +838,21 @@ dependencies = [ [[package]] name = "aws-smithy-xml" -version = "0.60.15" +version = "0.62.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ce02add1aa3677d022f8adf81dcbe3046a95f17a1b1e8979c145cd21d3d22b3" +checksum = "ce84f71c72fee2cbbadde6e7d082f5fb466e3a84733855295fa7aafd1b31b7d8" dependencies = [ + "aws-smithy-runtime-api", + "aws-smithy-schema", + "aws-smithy-types", "xmlparser", ] [[package]] name = "aws-types" -version = "1.3.16" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d16bf10b03a3c01e6b3b7d47cd964e873ffe9e7d4e80fad16bd4c077cb068531" +checksum = "eec1cd5469f328c782dc3e33d4153cf118a54e33cbb3356d60d16f89883e1f94" dependencies = [ "aws-credential-types", "aws-smithy-async", @@ -861,8 +872,8 @@ dependencies = [ "axum-core", "bytes", "futures-util", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "http-body-util", "itoa", "matchit", @@ -885,8 +896,8 @@ checksum = "08c78f31d7b1291f7ee735c1c6780ccde7785daae9a9206026862dab7d8792d1" dependencies = [ "bytes", "futures-core", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "http-body-util", "mime", "pin-project-lite", @@ -957,9 +968,9 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" -version = "2.13.0" +version = "2.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4388bee8683e3d04af747c73422af53102d2bd24d9eadb6cbc100baef4b43f8" +checksum = "b588b76d00fde79687d7646a9b5bdf3cc0f655e0bbd080335a95d7e96f3587da" [[package]] name = "blake2" @@ -995,18 +1006,18 @@ dependencies = [ [[package]] name = "block-buffer" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdd35008169921d80bc60d3d0ab416eecb028c4cd653352907921d95084790be" +checksum = "d2f6c7dbe95a6ed67ad9f18e57daf93a2f034c524b99fd2b76d18fdfeb6660aa" dependencies = [ "hybrid-array", ] [[package]] name = "brotli" -version = "8.0.3" +version = "8.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8119e4516436f5708bbc474a9d395bf12f1b5395e93a92a56e647ac3388c8610" +checksum = "5cc91aac060a7a1e25823bdccbfb6af1875b88f17c6daac97894eed8207166b3" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1015,9 +1026,9 @@ dependencies = [ [[package]] name = "brotli-decompressor" -version = "5.0.1" +version = "5.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5962523e1b92ce1b5e793d9169b9943eece10d39f62550bc04bb605d75b94924" +checksum = "3a32acac15fe1967bc3986b2a6347dffc965602354ea6f450ad07e8bfd253583" dependencies = [ "alloc-no-stdlib", "alloc-stdlib", @@ -1046,7 +1057,7 @@ dependencies = [ "object_store", "parquet", "percent-encoding", - "rand 0.9.4", + "rand 0.9.5", "reqwest 0.13.4", "roaring", "rustc_version", @@ -1064,20 +1075,20 @@ dependencies = [ [[package]] name = "buoyant_kernel_derive" -version = "1.0.0" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3448e05bba811d98c73a466843abd8c16d0416dc083f92b66847693fcb0714f4" +checksum = "d5cdc90bb920438aa9a39089b76f0614183af303f181bf18d05b456a30dd9740" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "bytemuck" -version = "1.25.0" +version = "1.25.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8efb64bd706a16a1bdde310ae86b351e4d21550d98d056f22f8a7f7a2183fec" +checksum = "95832e849adfb21180ccb6826a99da14e5d266ae5c2e668e1602cf234f153797" [[package]] name = "byteorder" @@ -1087,9 +1098,9 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.11.1" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" +checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "bytes-utils" @@ -1112,9 +1123,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.63" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556e016178bb5662a08681bbe0f00f8e17631781a4dfc8c45e466e4b185ec27f" +checksum = "5add81bb678e6cb321aff7fa0dc7689ad82b112dbc032cea19f91d6b8e3582b9" dependencies = [ "find-msvc-tools", "jobserver", @@ -1130,15 +1141,15 @@ checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" [[package]] name = "cfg_aliases" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +checksum = "f079e83a288787bcd14a6aea84cee5c87a67c5a3e660c30f557a3d24761b3527" [[package]] name = "chacha20" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" dependencies = [ "cfg-if", "cpufeatures 0.3.0", @@ -1171,9 +1182,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.6.1" +version = "4.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ddb117e43bbf7dacf0a4190fef4d345b9bad68dfc649cb349e7d17d28428e51" +checksum = "301b56658598e48f3648647ac6fc887be7e7108eddfa4e9b63fcf3ec58c0cadf" dependencies = [ "clap_builder", "clap_derive", @@ -1181,9 +1192,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.6.0" +version = "4.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "714a53001bf66416adb0e2ef5ac857140e7dc3a0c48fb28b2f10762fc4b5069f" +checksum = "94a65403d1a1bd28f7dc68eb8506e8874808ee5eecb59298de588e2e1407a078" dependencies = [ "anstream", "anstyle", @@ -1193,14 +1204,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.6.1" +version = "4.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ce8604710f6733aa641a2b3731eaa1e8b3d9973d5e3565da11800813f997a9" +checksum = "d012d2b9d65aca7f18f4d9878a045bc17899bba951561ba5ec3c2ba1eed9a061" dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -1391,27 +1402,27 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.15" +version = "0.5.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "82b8f8f868b36967f9606790d1903570de9ceaf870a7bf9fbbd3016d636a2cb2" +checksum = "d85363c37faeca707aef026efa9f3b34d077bce547e48f770770625c6013679e" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-queue" -version = "0.3.12" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" +checksum = "803d13fb3b09d88be9f4dbc29062c66b19bf7170867ceb746d2a8689bf6c7a26" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.21" +version = "0.8.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" +checksum = "61803da095bee82a81bb1a452ecc25d3b2f1416d1897eb86430c6159ef717c17" [[package]] name = "crunchy" @@ -1506,7 +1517,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn", + "syn 2.0.119", ] [[package]] @@ -1517,7 +1528,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -1579,7 +1590,7 @@ dependencies = [ "object_store", "parking_lot", "parquet", - "rand 0.9.4", + "rand 0.9.5", "regex", "sqlparser", "tempfile", @@ -1701,7 +1712,7 @@ dependencies = [ "liblzma", "log", "object_store", - "rand 0.9.4", + "rand 0.9.5", "tokio", "tokio-util", "url", @@ -1833,7 +1844,7 @@ dependencies = [ "log", "object_store", "parking_lot", - "rand 0.9.4", + "rand 0.9.5", "tempfile", "url", ] @@ -1899,7 +1910,7 @@ dependencies = [ "md-5", "memchr", "num-traits", - "rand 0.9.4", + "rand 0.9.5", "regex", "sha2 0.10.9", "unicode-segmentation", @@ -2018,7 +2029,7 @@ checksum = "2e367e6a71051d0ebdd29b2f85d12059b38b1d1f172c6906e80016da662226bd" dependencies = [ "datafusion-doc", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -2173,7 +2184,7 @@ dependencies = [ "datafusion-proto-common", "object_store", "prost", - "rand 0.9.4", + "rand 0.9.5", ] [[package]] @@ -2317,7 +2328,7 @@ dependencies = [ "percent-encoding", "percent-encoding-rfc3986", "pin-project-lite", - "rand 0.10.1", + "rand 0.10.2", "regex", "serde", "serde_json", @@ -2341,7 +2352,7 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -2349,9 +2360,6 @@ name = "deranged" version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7cd812cc2bc1d69d4764bd80df88b4317eaef9e773c75226407d9bc0876b211c" -dependencies = [ - "powerfmt", -] [[package]] name = "digest" @@ -2370,7 +2378,7 @@ version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1dd6dbb5841937940781866fa1281a1ff7bd3bf827091440879f9994983d5c2" dependencies = [ - "block-buffer 0.12.0", + "block-buffer 0.12.1", "const-oid", "crypto-common 0.2.2", "ctutils", @@ -2399,13 +2407,13 @@ dependencies = [ [[package]] name = "displaydoc" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ac70aa55017e108007fbaf5aa0f54b021c98f92ff8af59d42eda9da96e3dd4f" +checksum = "c6232dd377dcc64799954cbd3a9bb882e9cdc1308ccd87b1c098f1fb2eaf82a8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -2431,9 +2439,9 @@ checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" [[package]] name = "either" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91622ff5e7162018101f2fea40d6ebf4a78bbe5a49736a2020649edf9693679e" +checksum = "9e5e8f6c15a24b9a3ee5efec809ccd006d3b30e8b3bb63c39af737c7f87daa1d" [[package]] name = "encoding_rs" @@ -2474,9 +2482,9 @@ checksum = "dea2df4cf52843e0452895c455a1a2cfbb842a1e7329671acf418fdc53ed4c59" [[package]] name = "fastrand" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f1f227452a390804cdb637b74a86990f2a7d7ba4b7d5693aac9b4dd6defd8d6" +checksum = "da7c62ceae207dd37ea5b845da6a0696c799f85e97da1ab5b7910be3c1c80223" [[package]] name = "find-msvc-tools" @@ -2546,9 +2554,9 @@ checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" [[package]] name = "futures" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b147ee9d1f6d097cef9ce628cd2ee62288d963e16fb287bd9286455b241382d" +checksum = "a88cf1f829d945f548cf8fec32c61b1f202b6d93b45848602fc02af4b12ad218" dependencies = [ "futures-channel", "futures-core", @@ -2561,9 +2569,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bbe89c50d7a535e539b8c17bc0b49bdb77747034daa8087407d655f3f7cc1d" +checksum = "262590f4fe6afeb0bc83be1daa64e52657fe185690a958af7f3ad0e92085c5ae" dependencies = [ "futures-core", "futures-sink", @@ -2571,15 +2579,15 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e3450815272ef58cec6d564423f6e755e25379b217b0bc688e295ba24df6b1d" +checksum = "2cd50c473c80f6d7c3670a752354b8e569b1a7cbfdc0419ec88e5edad85e0dc7" [[package]] name = "futures-executor" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf29c38818342a3b26b5b923639e7b1f4a61fc5e76102d4b1981c6dc7a7579d" +checksum = "6754879cc9f2c66f88c6e5c35344bb0bdb0708b0352b1201815667c7eabc7458" dependencies = [ "futures-core", "futures-task", @@ -2588,38 +2596,38 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cecba35d7ad927e23624b22ad55235f2239cfa44fd10428eecbeba6d6a717718" +checksum = "4577ecaa3c4f96589d473f679a71b596316f6641bc350038b962a5daf0085d7a" [[package]] name = "futures-macro" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e835b70203e41293343137df5c0664546da5745f82ec9b84d40be8336958447b" +checksum = "2d6d3cde68c518367be28956066ddfef33813991b77a55005a69dae04bf3b10b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "futures-sink" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c39754e157331b013978ec91992bde1ac089843443c49cbc7f46150b0fad0893" +checksum = "e34418ac499d6305c2fb5ad0ed2f6ac998c5f8ca209b4510f7f94242c647e307" [[package]] name = "futures-task" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "037711b3d59c33004d3856fbdc83b99d4ff37a24768fa1be9ce3538a1cde4393" +checksum = "b231ed28831efb4a61a08580c4bc233ec56bc009f4cd8f52da2c3cb97df0c109" [[package]] name = "futures-util" -version = "0.3.32" +version = "0.3.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "389ca41296e6190b48053de0321d02a77f32f8a5d2461dd38762c0593805c6d6" +checksum = "a77a90a256fce34da66415271e30f94ee91c57b04b8a2c042d9cf3220179deaa" dependencies = [ "futures-channel", "futures-core", @@ -2662,45 +2670,43 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", - "js-sys", "libc", "r-efi 5.3.0", "wasip2", - "wasm-bindgen", ] [[package]] name = "getrandom" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0de51e6874e94e7bf76d726fc5d13ba782deca734ff60d5bb2fb2607c7406555" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" dependencies = [ "cfg-if", + "js-sys", "libc", "r-efi 6.0.0", "rand_core 0.10.1", - "wasip2", - "wasip3", + "wasm-bindgen", ] [[package]] name = "glob" -version = "0.3.3" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0cc23270f6e1808e30a928bdc84dea0b9b4136a8bc82338574f23baf47bbd280" +checksum = "e4eba85ea1d0a966a983acd07deee566e67395d2d96b6fb39e62b5a833f1eb0b" [[package]] name = "h2" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171fefbc92fe4a4de27e0698d6a5b392d6a0e333506bc49133760b3bcf948733" +checksum = "6cb093c84e8bd9b188d4c4a8cb6579fc016968d14c99882163cd3ff402a4f155" dependencies = [ "atomic-waker", "bytes", "fnv", "futures-core", "futures-sink", - "http 1.4.2", + "http 1.5.0", "indexmap", "slab", "tokio", @@ -2801,9 +2807,9 @@ dependencies = [ [[package]] name = "http" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6970f50e31d6fc17d3fa27329444bfa74e196cf62e95052a3f6fee181dba6425" +checksum = "918d3568bebf352712bc2ef3d46a8bcf1a75b373be6539de198e9105cbbf9ce0" dependencies = [ "bytes", "itoa", @@ -2822,24 +2828,24 @@ dependencies = [ [[package]] name = "http-body" -version = "1.0.1" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +checksum = "ca2a8f2913ee65f60facd6a5905613afaa448497a0230cc41ce022d93290bc2c" dependencies = [ "bytes", - "http 1.4.2", + "http 1.5.0", ] [[package]] name = "http-body-util" -version = "0.1.3" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +checksum = "e9f41fd6a08e4d4ec69df65976da761afd5ad5e58a9d4acb46bd1c953a9e3ff2" dependencies = [ "bytes", "futures-core", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "pin-project-lite", ] @@ -2857,32 +2863,32 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "humantime" -version = "2.3.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" +checksum = "15cdd26707701c53297e2fa6afb323d55fbc1d0810c3aec078ae3ef0424c3c15" [[package]] name = "hybrid-array" -version = "0.4.12" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9155a582abd142abc056962c29e3ce5ff2ad5469f4246b537ed42c5deba857da" +checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" dependencies = [ "typenum", ] [[package]] name = "hyper" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55281c53a1894c864990125767da440a4e630446785086f52523b20033b74498" +checksum = "d22053281f852e11534f5198498373cbb59295120a20771d90f7ed1897490a72" dependencies = [ "atomic-waker", "bytes", "futures-channel", "futures-core", "h2", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "httparse", "httpdate", "itoa", @@ -2898,7 +2904,7 @@ version = "0.27.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33ca68d021ef39cf6463ab54c1d0f5daf03377b70561305bb89a8f83aab66e0f" dependencies = [ - "http 1.4.2", + "http 1.5.0", "hyper", "hyper-util", "rustls", @@ -2931,8 +2937,8 @@ dependencies = [ "bytes", "futures-channel", "futures-util", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "hyper", "ipnet", "libc", @@ -3052,12 +3058,6 @@ dependencies = [ "zerovec", ] -[[package]] -name = "id-arena" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" - [[package]] name = "ident_case" version = "1.0.1" @@ -3093,8 +3093,6 @@ checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", "hashbrown 0.17.1", - "serde", - "serde_core", ] [[package]] @@ -3105,9 +3103,9 @@ checksum = "8bb03732005da905c88227371639bf1ad885cc712789c011c31c5fb3ab3ccf02" [[package]] name = "ipnet" -version = "2.12.0" +version = "2.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d98f6fed1fde3f8c21bc40a1abb88dd75e67924f9cffc3ef95607bad8017f8e2" +checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78" [[package]] name = "is_terminal_polyfill" @@ -3157,7 +3155,7 @@ dependencies = [ "quote", "rustc_version", "simd_cesu8", - "syn", + "syn 2.0.119", ] [[package]] @@ -3176,24 +3174,24 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38c0b942f458fe50cdac086d2f946512305e5631e720728f2a61aabcd47a6264" dependencies = [ "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "jobserver" -version = "0.1.34" +version = "0.1.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +checksum = "1c00acbd29eabad4a2392fa0e921c874934dbbf4194312ad20f04a0ed67a3cb3" dependencies = [ - "getrandom 0.3.4", + "getrandom 0.4.3", "libc", ] [[package]] name = "js-sys" -version = "0.3.100" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2025f20d7a4fa7785846e7b63d10a76d3f1cee98ee5cb79ea59703f95e42162" +checksum = "53b44bfcdb3f8d5837a46dae1ca9660a837176eee74a28b229bc626816589102" dependencies = [ "cfg-if", "futures-util", @@ -3206,12 +3204,6 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "leb128fmt" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" - [[package]] name = "lexical-core" version = "1.0.6" @@ -3277,24 +3269,24 @@ checksum = "34b357333733e8260735ba5894eb928c02ecc69c78715f01a8019e7fa7f2db4c" [[package]] name = "libc" -version = "0.2.186" +version = "0.2.189" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68ab91017fe16c622486840e4c83c9a37afeff978bd239b5293d61ece587de66" +checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "liblzma" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6033b77c21d1f56deeae8014eb9fbe7bdf1765185a6c508b5ca82eeaed7f899" +checksum = "45aec2360b3933207e27908049d8e4df4e476b58180afb1e56b2a4fb72efe4ba" dependencies = [ "liblzma-sys", ] [[package]] name = "liblzma-sys" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a60851d15cd8c5346eca4ab8babff585be2ae4bc8097c067291d3ffe2add3b6" +checksum = "a046c7f353ba30f810545151e04f63545833803f5b86ee3ddf1517247fe560a5" dependencies = [ "cc", "libc", @@ -3309,9 +3301,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libredox" -version = "0.1.17" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f02ab6bace2054fb888a3c16f990117b579d14a3088e472d63c6011fa185c9d3" +checksum = "2026a5056764a10b2bf5d56488cba40da507f5493a6a429340e2004d9ed085fa" dependencies = [ "libc", ] @@ -3345,9 +3337,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.32" +version = "0.4.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "953f07c43838f8e6f9758cab68bf5bed85465e7587ebe0b823f1bcd81978ad3a" +checksum = "0ceec5bc11778974d1bcb055b18002eba7f4b3518b6a0081b3af5f21666da9ad" [[package]] name = "logos" @@ -3380,7 +3372,7 @@ dependencies = [ "quote", "regex-syntax", "rustc_version", - "syn", + "syn 2.0.119", ] [[package]] @@ -3394,7 +3386,7 @@ dependencies = [ "quote", "regex-automata", "regex-syntax", - "syn", + "syn 2.0.119", ] [[package]] @@ -3448,9 +3440,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.8.1" +version = "2.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b947ae49db0d222b1dbc6b113ce7248a3fc3a6ca21b696717bfc000ba4484d8" +checksum = "cf8baf1c55e62ffcace7a9f06f4bd9cd3f0c4beb022d3b367256b91b87513d98" [[package]] name = "miette" @@ -3471,7 +3463,7 @@ checksum = "db5b29714e950dbb20d5e6f74f9dcec4edbcc1067bb7f8ed198c097b8c1a818b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -3492,9 +3484,9 @@ dependencies = [ [[package]] name = "mio" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02bd0af71c67b473010cbbc60715ee815645a4dc942899111f494b4b737d6fda" +checksum = "30d65c71f1ce40ab09135ce117d742b9f8a19ff91a41a8b57ed50bc2de59c427" dependencies = [ "libc", "wasi", @@ -3571,6 +3563,13 @@ dependencies = [ "tonic", ] +[[package]] +name = "modelardb_macros" +version = "0.1.0" +dependencies = [ + "itertools", +] + [[package]] name = "modelardb_server" version = "0.1.0" @@ -3585,7 +3584,7 @@ dependencies = [ "datafusion", "deltalake", "futures", - "http 1.4.2", + "http 1.5.0", "http-body-util", "log", "modelardb_auth", @@ -3596,7 +3595,7 @@ dependencies = [ "object_store", "proptest", "prost", - "rand 0.10.1", + "rand 0.10.2", "serde", "snmalloc-rs", "sqlparser", @@ -3645,8 +3644,11 @@ dependencies = [ "arrow", "async-trait", "datafusion", + "modelardb_storage", "modelardb_types", - "rand 0.10.1", + "object_store", + "rand 0.10.2", + "url", ] [[package]] @@ -3712,9 +3714,9 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +checksum = "c89e69e7e0f03bea5ef08013795c25018e101932225a656383bd384495ecc367" dependencies = [ "num-integer", "num-traits", @@ -3785,9 +3787,9 @@ dependencies = [ [[package]] name = "object" -version = "0.37.3" +version = "0.39.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +checksum = "2e5a6c098c7a3b6547378093f5cc30bc54fd361ce711e05293a5cc589562739b" dependencies = [ "memchr", ] @@ -3806,7 +3808,7 @@ dependencies = [ "futures-channel", "futures-core", "futures-util", - "http 1.4.2", + "http 1.5.0", "http-body-util", "httparse", "humantime", @@ -3816,7 +3818,7 @@ dependencies = [ "parking_lot", "percent-encoding", "quick-xml", - "rand 0.10.1", + "rand 0.10.2", "reqwest 0.12.28", "ring", "rustls-pki-types", @@ -3896,9 +3898,9 @@ dependencies = [ [[package]] name = "parquet" -version = "58.3.0" +version = "58.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5dafa7d01085b62a47dd0c1829550a0a36710ea9c4fe358a05a85477cec8a908" +checksum = "d298093b2dec60289dce0684c986d0f7679e9dd15771c2c65406e1aaf604a704" dependencies = [ "ahash", "arrow-array", @@ -3995,7 +3997,7 @@ checksum = "c96395f0a926bc13b1c17622aaddda1ecb55d49c8f1bf9777e4d877800a43f8b" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -4047,7 +4049,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ "proc-macro2", - "syn", + "syn 2.0.119", ] [[package]] @@ -4069,14 +4071,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "proc-macro2" -version = "1.0.106" +version = "1.0.107" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fd00f0bb2e90d81d1044c2b32617f68fcb9fa3bb7640c23e9c748e53fb30934" +checksum = "985e7ec9bb745e6ce6535b544d84d6cd6f7ad8bd711c398938ae983b91a766d9" dependencies = [ "unicode-ident", ] @@ -4091,7 +4093,7 @@ dependencies = [ "bit-vec", "bitflags", "num-traits", - "rand 0.9.4", + "rand 0.9.5", "rand_chacha", "rand_xorshift", "regex-syntax", @@ -4125,7 +4127,7 @@ dependencies = [ "prost", "prost-types", "regex", - "syn", + "syn 2.0.119", "tempfile", ] @@ -4139,14 +4141,14 @@ dependencies = [ "itertools", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "prost-reflect" -version = "0.16.4" +version = "0.16.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "590aa145fee8f7a26b5a6055365e7c5e89a5c1caae9869de76ec0ee73181a2f9" +checksum = "01b80ea363c31af2de2b92e3c07ed1156628f7838c4afb4df75ee78a37fedbd1" dependencies = [ "logos 0.16.1", "miette", @@ -4192,9 +4194,9 @@ dependencies = [ [[package]] name = "psm" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "645dbe486e346d9b5de3ef16ede18c26e6c70ad97418f4874b8b1889d6e761ea" +checksum = "4dcd034599e63b970727f70d79e02d62390a4a84f7c6b827c27c46d5ac3fa622" dependencies = [ "ar_archive_writer", "cc", @@ -4218,9 +4220,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.9" +version = "0.11.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" +checksum = "0c1a41e437b6bbd489372cd4971de128e85c855f56c57f283d20ff016cf7c0a8" dependencies = [ "bytes", "cfg_aliases", @@ -4238,15 +4240,16 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.14" +version = "0.11.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "434b42fec591c96ef50e21e886936e66d3cc3f737104fdb9b737c40ffb94c098" +checksum = "2f4bfc015262b9df63c8845072ce59068853ff5872180c2ce2f13038b970e560" dependencies = [ "aws-lc-rs", "bytes", - "getrandom 0.3.4", + "getrandom 0.4.3", "lru-slab", - "rand 0.9.4", + "rand 0.10.2", + "rand_pcg", "ring", "rustc-hash", "rustls", @@ -4260,23 +4263,23 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.14" +version = "0.5.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" +checksum = "35a133f956daabe89a61a685c2649f13d82d5aa4bd5d12d1277e1072a21c0694" dependencies = [ "cfg_aliases", "libc", "once_cell", "socket2", "tracing", - "windows-sys 0.60.2", + "windows-sys 0.61.2", ] [[package]] name = "quote" -version = "1.0.45" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41f2619966050689382d2b44f664f4bc593e129785a36d6ee376ddf37259b924" +checksum = "1fbf4db142a473a8d80c26bbf18454ed458bf8d26c8219c331daecfdbd079001" dependencies = [ "proc-macro2", ] @@ -4305,9 +4308,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c5af06bb1b7d3216d91932aed5265164bf384dc89cd6ba05cf59a35f5f76ea" +checksum = "b9ef1d0d795eb7d84685bca4f72f3649f064e6641543d3a8c415898726a57b41" dependencies = [ "rand_chacha", "rand_core 0.9.5", @@ -4315,12 +4318,12 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" dependencies = [ "chacha20", - "getrandom 0.4.2", + "getrandom 0.4.3", "rand_core 0.10.1", ] @@ -4349,6 +4352,15 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" +[[package]] +name = "rand_pcg" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "caa0f4137e1c0a72f4c651489402276c8e8e1cf081f3b0ba156d2cbeef09e86a" +dependencies = [ + "rand_core 0.10.1", +] + [[package]] name = "rand_xorshift" version = "0.4.0" @@ -4375,7 +4387,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -4400,9 +4412,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.12.4" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1292b7759ae1cb9ec195452d1390a074f0cd8541ab7a5a8c31cd6db45d4a6ba" +checksum = "f020237b6c8eed93db2e2cb53c00c60a8e1bc73da7d073199a1180401450218d" dependencies = [ "aho-corasick", "memchr", @@ -4412,9 +4424,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.14" +version = "0.4.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e1dd4122fc1595e8162618945476892eefca7b88c52820e74af6262213cae8f" +checksum = "8fcfdb36bda0c880c5931cdc7a2bcdc8ba4556847b9d912bca70bc94708711ad" dependencies = [ "aho-corasick", "memchr", @@ -4444,8 +4456,8 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "http-body-util", "hyper", "hyper-rustls", @@ -4486,8 +4498,8 @@ dependencies = [ "encoding_rs", "futures-core", "h2", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "http-body-util", "hyper", "hyper-rustls", @@ -4539,9 +4551,9 @@ dependencies = [ [[package]] name = "rustc-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94300abf3f1ae2e2b8ffb7b58043de3d399c73fa6f4b73826402a5c457614dbe" +checksum = "6b1e7f9a428571be2dc5bc0505c13fb6bf936822b894ec87abf8a08a4e51742d" [[package]] name = "rustc_version" @@ -4567,9 +4579,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.40" +version = "0.23.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef86cd5876211988985292b91c96a8f2d298df24e75989a43a3c73f2d4d8168b" +checksum = "0283386ce02abc0151e1761d08802dfe86c173b0b494af5cbc086574e453da06" dependencies = [ "aws-lc-rs", "once_cell", @@ -4594,9 +4606,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.14.1" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30a7197ae7eb376e574fe940d068c30fe0462554a3ddbe4eca7838e049c937a9" +checksum = "2f4925028c7eb5d1fcdaf196971378ed9d2c1c4efc7dc5d011256f76c99c0a96" dependencies = [ "web-time", "zeroize", @@ -4643,9 +4655,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.22" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" +checksum = "cf54715a573b99ac80df0bc206da022bcd442c974952c7b9720069370852e21f" [[package]] name = "rusty-fork" @@ -4661,9 +4673,9 @@ dependencies = [ [[package]] name = "rustyline" -version = "18.0.0" +version = "18.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a990b25f351b25139ddc7f21ee3f6f56f86d6846b74ac8fad3a719a287cd4a0" +checksum = "53f6a737db68eb1a8ccff86b584b2fc13eca6a7bb6f78ebc7c529547e3ab9684" dependencies = [ "bitflags", "cfg-if", @@ -4747,9 +4759,9 @@ checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" +checksum = "4148590afebada386688f18773da617792bf2ef03ffc1e4cbd2b1d45b023e0ba" dependencies = [ "serde_core", "serde_derive", @@ -4757,29 +4769,29 @@ dependencies = [ [[package]] name = "serde_core" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" +checksum = "67dca2c9c51e58a4791a4b1ed58308b39c64224d349a935ab5039aa360942a48" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.228" +version = "1.0.229" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" +checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "serde_json" -version = "1.0.150" +version = "1.0.151" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8014e44b4736ed0538adeecded0fce2a272f22dc9578a7eb6b2d9993c74cfb9" +checksum = "c841b55ecdae098c80dcae9cf767f6f8a0c2cdb3416bbef72181df4d0fe73f14" dependencies = [ "itoa", "memchr", @@ -4811,9 +4823,9 @@ dependencies = [ [[package]] name = "sha1" -version = "0.10.6" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" +checksum = "a978451301f4db1d02937a4ab3ccce137717b81826e79b7d49ffe3244a13c3b8" dependencies = [ "cfg-if", "cpufeatures 0.2.17", @@ -4869,15 +4881,15 @@ dependencies = [ [[package]] name = "simd-adler32" -version = "0.3.9" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" +checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "simd_cesu8" -version = "1.1.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94f90157bb87cddf702797c5dadfa0be7d266cdf49e22da2fcaa32eff75b2c33" +checksum = "11031e251abf8611c80f460e19dbdeb54a66db918e49c65a7065b46ac7aec520" dependencies = [ "rustc_version", "simdutf8", @@ -4903,15 +4915,15 @@ checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "smallvec" -version = "1.15.1" +version = "1.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "8ed6a63f02c8539c91a8685a86f4099661ba3da017932f6ebbea6de3f0fa7c90" [[package]] name = "snap" -version = "1.1.1" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" +checksum = "199905e6153d6405f9728fe44daace35f8f837bbf830bb6e85fbd5828709a886" [[package]] name = "snmalloc-rs" @@ -4934,9 +4946,9 @@ dependencies = [ [[package]] name = "socket2" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52d1cfed4120b4d927bf7c0f86d2087a4a7d6027c906d9f9d525a80573b9be51" +checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", "windows-sys 0.61.2", @@ -4961,7 +4973,7 @@ checksum = "a6dd45d8fc1c79299bfbb7190e42ccbbdf6a5f52e4a6ad98d92357ea965bd289" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -4972,9 +4984,9 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" [[package]] name = "stacker" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "640c8cdd92b6b12f5bcb1803ca3bbf5ab96e5e6b6b96b9ab77dabe9e880b3190" +checksum = "707f49d46706bacf8a2b00d51dace3f9de527c13eec3778f570c411f89e69967" dependencies = [ "cc", "cfg-if", @@ -5007,7 +5019,7 @@ dependencies = [ "heck", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5018,9 +5030,20 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.117" +version = "2.0.119" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e665b8803e7b1d2a727f4023456bbbbe74da67099c585258af0ad9c5013b9b99" +checksum = "872831b642d1a07999a962a351ed35b955ea2cfc8f3862091e2a240a84f17297" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "3.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e9bae58849f64dfa4f5d5ae372c8341f7305f82a3868709269343628b659a3" dependencies = [ "proc-macro2", "quote", @@ -5044,7 +5067,7 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5089,7 +5112,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.4.2", + "getrandom 0.4.3", "once_cell", "rustix", "windows-sys 0.61.2", @@ -5097,29 +5120,29 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4288b5bcbc7920c07a1149a35cf9590a2aa808e0bc1eafaade0b80947865fbc4" +checksum = "09a43598840e33d5b0331f38c5e30d13bb11c11210a4b58f0d9b18a5a5eefcd9" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "2.0.18" +version = "2.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc4ee7f67670e9b64d05fa4253e753e016c6c95ff35b89b7941d6b856dec1d5" +checksum = "43cbfe0cf76104d42a574802844187e84a305e531ed54455f11fbde0f10541cd" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] name = "thread_local" -version = "1.1.9" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" +checksum = "1ad99c4c6d32803332c548b1af0540b357b3f5fc0be8f6c6bfe8b2e6ae784070" dependencies = [ "cfg-if", ] @@ -5137,9 +5160,9 @@ dependencies = [ [[package]] name = "time" -version = "0.3.47" +version = "0.3.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743bd48c283afc0388f9b8827b976905fb217ad9e647fae3a379a9283c4def2c" +checksum = "cdb87b95ec50ddfa440816d227a17b2ccbdda963a316a727fda0fc4334f7d134" dependencies = [ "deranged", "num-conv", @@ -5151,15 +5174,15 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7694e1cfe791f8d31026952abf09c69ca6f6fa4e1a1229e18988f06a04a12dca" +checksum = "9e1c906769ad99c88eaa54e728060edef082f8e358ff32030cb7c7d315e81109" [[package]] name = "time-macros" -version = "0.2.27" +version = "0.2.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e70e4c5a0e0a8a4823ad65dfe1a6930e4f4d756dcd9dd7939022b5e8c501215" +checksum = "7e689342a48d2ea927c87ea50cabf8594854bf940e9310208848d680d668ed85" dependencies = [ "num-conv", "time-core", @@ -5186,9 +5209,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e61e67053d25a4e82c844e8424039d9745781b3fc4f32b8d55ed50f5f667ef3" +checksum = "bb4ebadaa0af04fab11ae01eb5f9fdb5f9c5b875506e210e71c07873528baa7f" dependencies = [ "tinyvec_macros", ] @@ -5201,9 +5224,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.52.3" +version = "1.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fc7f01b389ac15039e4dc9531aa973a135d7a4135281b12d7c1bc79fd57fffe" +checksum = "202caea871b69668250d242070849eb495be178ed697a3e98aebce5bc81a0bed" dependencies = [ "bytes", "libc", @@ -5218,13 +5241,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.7.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "385a6cb71ab9ab790c5fe8d67f1645e6c450a7ce006a33de03daa956cf70a496" +checksum = "78773a2a397f451582ce068015985c33193cf6dea8b74d2a639fe457b2f07b0e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 3.0.3", ] [[package]] @@ -5239,9 +5262,9 @@ dependencies = [ [[package]] name = "tokio-stream" -version = "0.1.18" +version = "0.1.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32da49809aab5c3bc678af03902d4ccddea2a87d028d86392a4b1560c6906c70" +checksum = "a3d06f0b082ba57c26b79407372e57cf2a1e28124f78e9479fe80322cf53420b" dependencies = [ "futures-core", "pin-project-lite", @@ -5251,22 +5274,23 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.18" +version = "0.7.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae9cec805b01e8fc3fd2fe289f89149a9b66dd16786abd8b19cfa7b48cb0098" +checksum = "494815d09bf52b5548659851081238f0ca39ff638363907596da739561c62c52" dependencies = [ "bytes", "futures-core", "futures-sink", + "libc", "pin-project-lite", "tokio", ] [[package]] name = "toml" -version = "1.1.2+spec-1.1.0" +version = "1.1.4+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81f3d15e84cbcd896376e6730314d59fb5a87f31e4b038454184435cd57defee" +checksum = "3aace63f4bbcdfc2c965b059de67119c89c4017a70d633be6c104910f67056f5" dependencies = [ "indexmap", "serde_core", @@ -5288,18 +5312,18 @@ dependencies = [ [[package]] name = "toml_parser" -version = "1.1.2+spec-1.1.0" +version = "1.1.3+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2abe9b86193656635d2411dc43050282ca48aa31c2451210f4202550afb7526" +checksum = "1d38ac1cf9b95face32296c0a3ede1fdc270627c9d9c02a7274dd6d960dc4d56" dependencies = [ "winnow", ] [[package]] name = "toml_writer" -version = "1.1.1+spec-1.1.0" +version = "1.1.2+spec-1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "756daf9b1013ebe47a8776667b466417e2d4c5679d441c26230efd9ef78692db" +checksum = "7d56353a2a665ad0f41a421187180aab746c8c325620617ad883a99a1cbe66d2" [[package]] name = "tonic" @@ -5312,8 +5336,8 @@ dependencies = [ "base64", "bytes", "h2", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "http-body-util", "hyper", "hyper-timeout", @@ -5369,8 +5393,8 @@ dependencies = [ "bitflags", "bytes", "futures-util", - "http 1.4.2", - "http-body 1.0.1", + "http 1.5.0", + "http-body 1.1.0", "pin-project-lite", "tower", "tower-layer", @@ -5410,7 +5434,7 @@ checksum = "7490cfa5ec963746568740651ac6781f701c9c5ea257c58e057f3ba8cf69e8da" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5456,9 +5480,9 @@ checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "twox-hash" -version = "2.1.2" +version = "2.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea3136b675547379c4bd395ca6b938e5ad3c3d20fad76e7fe85f9e0d011419c" +checksum = "8464ec13c3691491391d9fce00f6416c9a48e46972f72d7865688be2080192c9" [[package]] name = "typed-builder" @@ -5477,7 +5501,7 @@ checksum = "076a02dc54dd46795c2e9c8282ed40bcfb1e22747e955de9389a1de28190fb26" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5516,12 +5540,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "untrusted" version = "0.9.0" @@ -5561,13 +5579,13 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.23.3" +version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "144d6b123cef80b301b8f72a9e2ca4370ddec21950d0a103dd22c437006d2db7" +checksum = "bf3923a6f5c4c6382e0b653c4117f48d631ea17f38ed86e2a828e6f7412f5239" dependencies = [ - "getrandom 0.4.2", + "getrandom 0.4.3", "js-sys", - "rand 0.10.1", + "rand 0.10.2", "serde_core", "wasm-bindgen", ] @@ -5599,7 +5617,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5656,27 +5674,18 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasip2" -version = "1.0.3+wasi-0.2.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20064672db26d7cdc89c7798c48a0fdfac8213434a1186e5ef29fd560ae223d6" -dependencies = [ - "wit-bindgen 0.57.1", -] - -[[package]] -name = "wasip3" -version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +version = "1.0.4+wasi-0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +checksum = "b67efb37e106e55ce722a510d6b5f9c17f083e5fc79afc2badeb12cc313d9487" dependencies = [ - "wit-bindgen 0.51.0", + "wit-bindgen", ] [[package]] name = "wasm-bindgen" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a254a4b10c19a76f09a27640e7ffbf9bc30bf67e16a3bf28aaefa4920fe81563" +checksum = "4b067c0c11094aef6b7a801c1e34a26affafdf3d051dba08456b868789aaf9a4" dependencies = [ "cfg-if", "once_cell", @@ -5687,9 +5696,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.73" +version = "0.4.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54568702fabf5d4849ce2b90fadfa64168a097eaf4b351ce9df8b687a0086aaf" +checksum = "c62df1340f32221cb9c54d6a27b030e3dba64361d4a95bed55f9aacb44da291d" dependencies = [ "js-sys", "wasm-bindgen", @@ -5697,9 +5706,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24a40fc75b0ec6f3746ceb10d36f53a93dcd68a93b11b6445983945d79eba0dc" +checksum = "167ce5e579f6bcf889c4f7175a8a5a585de84e8ff93976ce393efa5f2837aab1" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -5707,48 +5716,26 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "908f34bd9b9ce3d4caf07b72dfab63d61504d156856c6bd3cd87fa350cf3985b" +checksum = "f3997c7839262f4ef12cf90b818d6340c18e80f263f1a94bf157d0ec4420380e" dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.119", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.123" +version = "0.2.126" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7acbf7616c27b194bbb550bf77ed0c2c3e5b7fd1260a93082b95fb7f47959b92" +checksum = "dc1b4cb0cc549fcf58d7dfc081778139b3d283a081644e833e84682ad71cea24" dependencies = [ "unicode-ident", ] -[[package]] -name = "wasm-encoder" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" -dependencies = [ - "leb128fmt", - "wasmparser", -] - -[[package]] -name = "wasm-metadata" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" -dependencies = [ - "anyhow", - "indexmap", - "wasm-encoder", - "wasmparser", -] - [[package]] name = "wasm-streams" version = "0.4.2" @@ -5762,23 +5749,11 @@ dependencies = [ "web-sys", ] -[[package]] -name = "wasmparser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" -dependencies = [ - "bitflags", - "hashbrown 0.15.5", - "indexmap", - "semver", -] - [[package]] name = "web-sys" -version = "0.3.100" +version = "0.3.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e0871acf327f283dc6da28a1696cdc64fb355ba9f935d052021fa77f35cce69" +checksum = "8622dcb61c0bcc9fffa6938bed81210af2da9a7e4a1a834b2e37a59b6dfb6141" dependencies = [ "js-sys", "wasm-bindgen", @@ -5796,9 +5771,9 @@ dependencies = [ [[package]] name = "webpki-root-certs" -version = "1.0.7" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f31141ce3fc3e300ae89b78c0dd67f9708061d1d2eda54b8209346fd6be9a92c" +checksum = "b96554aa2acc8ccdb7e1c9a58a7a68dd5d13bccc69cd124cb09406db612a1c9b" dependencies = [ "rustls-pki-types", ] @@ -5887,7 +5862,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5898,7 +5873,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -5952,16 +5927,7 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.6", -] - -[[package]] -name = "windows-sys" -version = "0.60.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" -dependencies = [ - "windows-targets 0.53.5", + "windows-targets", ] [[package]] @@ -5979,31 +5945,14 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.6", - "windows_aarch64_msvc 0.52.6", - "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm 0.52.6", - "windows_i686_msvc 0.52.6", - "windows_x86_64_gnu 0.52.6", - "windows_x86_64_gnullvm 0.52.6", - "windows_x86_64_msvc 0.52.6", -] - -[[package]] -name = "windows-targets" -version = "0.53.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" -dependencies = [ - "windows-link", - "windows_aarch64_gnullvm 0.53.1", - "windows_aarch64_msvc 0.53.1", - "windows_i686_gnu 0.53.1", - "windows_i686_gnullvm 0.53.1", - "windows_i686_msvc 0.53.1", - "windows_x86_64_gnu 0.53.1", - "windows_x86_64_gnullvm 0.53.1", - "windows_x86_64_msvc 0.53.1", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] [[package]] @@ -6021,110 +5970,53 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" -[[package]] -name = "windows_aarch64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" - [[package]] name = "windows_i686_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" -[[package]] -name = "windows_i686_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" - [[package]] name = "windows_i686_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" -[[package]] -name = "windows_i686_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" - [[package]] name = "windows_i686_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" -[[package]] -name = "windows_i686_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" -[[package]] -name = "windows_x86_64_gnu" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" -[[package]] -name = "windows_x86_64_msvc" -version = "0.53.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" - [[package]] name = "winnow" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0592e1c9d151f854e6fd382574c3a0855250e1d9b2f99d9281c6e6391af352f1" - -[[package]] -name = "wit-bindgen" -version = "0.51.0" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" -dependencies = [ - "wit-bindgen-rust-macro", -] +checksum = "23b97319f7b8343df12cc98938e5c3eb436064524c8d2b4e30a1d3a36eecdf81" [[package]] name = "wit-bindgen" @@ -6132,85 +6024,6 @@ version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "wit-bindgen-core" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" -dependencies = [ - "anyhow", - "heck", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" -dependencies = [ - "anyhow", - "heck", - "indexmap", - "prettyplease", - "syn", - "wasm-metadata", - "wit-bindgen-core", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.51.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" -dependencies = [ - "anyhow", - "prettyplease", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", -] - -[[package]] -name = "wit-component" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" -dependencies = [ - "anyhow", - "bitflags", - "indexmap", - "log", - "serde", - "serde_derive", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.244.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" -dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "semver", - "serde", - "serde_derive", - "serde_json", - "unicode-xid", - "wasmparser", -] - [[package]] name = "writeable" version = "0.6.3" @@ -6242,7 +6055,7 @@ checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] @@ -6254,22 +6067,22 @@ checksum = "c6e61e59a957b7ccee15d2049f86e8bfd6f66968fcd88f018950662d9b86e675" [[package]] name = "zerocopy" -version = "0.8.52" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce1022995ff5ff5d841ad7d994facc23098cd40152f2c1d11cd607c6f530653f" +checksum = "b5a105cd7b140f6eeec8acff2ea38135d3cab283ada58540f629fe51e46696eb" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.52" +version = "0.8.55" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ae7f38b72ec2a254e2b87ef277cf2cd4fb97cbebf944faa6f33354da0867930" +checksum = "0fe976fb70c78cd64cccfe3a6fc142244e8a77b70959b30faf9d0ac37ee228eb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] @@ -6289,15 +6102,15 @@ checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", "synstructure", ] [[package]] name = "zeroize" -version = "1.8.2" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +checksum = "e13c156562582aa81c60cb29407084cdb54c4164760106ab78e6c5b0858cf64e" [[package]] name = "zerotrie" @@ -6329,20 +6142,20 @@ checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.119", ] [[package]] name = "zlib-rs" -version = "0.6.3" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3be3d40e40a133f9c916ee3f9f4fa2d9d63435b5fbe1bfc6d9dae0aa0ada1513" +checksum = "b142a20ec14a91d5bc708c1dc21b080c550113d8aa77afa29635673a65dd02c5" [[package]] name = "zmij" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8848ee67ecc8aedbaf3e4122217aff892639231befc6a1b58d29fff4c2cabaa" +checksum = "29666d0abbfad1e3dc4dcf6144730dd3a3ab225bbbdac83319345b1b44ccfc1b" [[package]] name = "zstd" diff --git a/Cargo.toml b/Cargo.toml index 346c167b..79beb02a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -34,7 +34,18 @@ dirs = "6.0.0" futures = "0.3.32" http = "1.4.0" http-body-util = "0.1.3" +itertools = "0.14.0" log = "0.4.29" +modelardb_auth = { path = "crates/modelardb_auth"} +modelardb_bulkloader = { path = "crates/modelardb_bulkloader"} +modelardb_client = { path = "crates/modelardb_client"} +modelardb_compression = { path = "crates/modelardb_compression"} +modelardb_embedded = { path = "crates/modelardb_embedded"} +modelardb_macros = { path = "crates/modelardb_macros"} +modelardb_server = { path = "crates/modelardb_server"} +modelardb_storage = { path = "crates/modelardb_storage"} +modelardb_test = { path = "crates/modelardb_test"} +modelardb_types = { path = "crates/modelardb_types"} object_store = "0.13.2" proptest = "1.11.0" prost = "0.14.3" diff --git a/crates/modelardb_bulkloader/Cargo.toml b/crates/modelardb_bulkloader/Cargo.toml index b84fa11c..645525bd 100644 --- a/crates/modelardb_bulkloader/Cargo.toml +++ b/crates/modelardb_bulkloader/Cargo.toml @@ -30,9 +30,9 @@ datafusion.workspace = true delta_kernel.workspace = true deltalake.workspace = true futures.workspace = true -modelardb_compression = { path = "../modelardb_compression" } -modelardb_embedded = { path = "../modelardb_embedded" } -modelardb_storage = { path = "../modelardb_storage" } -modelardb_types = { path = "../modelardb_types" } +modelardb_compression.workspace = true +modelardb_embedded.workspace = true +modelardb_storage.workspace = true +modelardb_types.workspace = true sysinfo.workspace = true tokio.workspace = true diff --git a/crates/modelardb_client/Cargo.toml b/crates/modelardb_client/Cargo.toml index e29e5b59..dd768b13 100644 --- a/crates/modelardb_client/Cargo.toml +++ b/crates/modelardb_client/Cargo.toml @@ -29,7 +29,7 @@ arrow = { workspace = true, features = ["prettyprint"] } bytes.workspace = true clap.workspace = true dirs.workspace = true -modelardb_auth = { path = "../modelardb_auth" } +modelardb_auth.workspace = true rustyline.workspace = true tokio.workspace = true tonic.workspace = true diff --git a/crates/modelardb_compression/Cargo.toml b/crates/modelardb_compression/Cargo.toml index 98ae8d45..7490b411 100644 --- a/crates/modelardb_compression/Cargo.toml +++ b/crates/modelardb_compression/Cargo.toml @@ -21,8 +21,8 @@ authors = ["Soeren Kejser Jensen "] [dependencies] arrow.workspace = true -modelardb_types = { path = "../modelardb_types" } +modelardb_types.workspace = true [dev-dependencies] -modelardb_test = { path = "../modelardb_test" } +modelardb_test.workspace = true proptest.workspace = true diff --git a/crates/modelardb_embedded/Cargo.toml b/crates/modelardb_embedded/Cargo.toml index 530030c4..cd33b310 100644 --- a/crates/modelardb_embedded/Cargo.toml +++ b/crates/modelardb_embedded/Cargo.toml @@ -31,10 +31,10 @@ async-trait.workspace = true datafusion.workspace = true deltalake = { workspace = true, features = ["datafusion", "s3"] } futures.workspace = true -modelardb_auth = { path = "../modelardb_auth" } -modelardb_compression = { path = "../modelardb_compression" } -modelardb_storage = { path = "../modelardb_storage" } -modelardb_types = { path = "../modelardb_types" } +modelardb_auth.workspace = true +modelardb_compression.workspace = true +modelardb_storage.workspace = true +modelardb_types.workspace = true tokio.workspace = true tonic.workspace = true diff --git a/crates/modelardb_embedded/src/capi.rs b/crates/modelardb_embedded/src/capi.rs index 66f2550e..5447abf6 100644 --- a/crates/modelardb_embedded/src/capi.rs +++ b/crates/modelardb_embedded/src/capi.rs @@ -191,6 +191,7 @@ unsafe fn open_azure( account_name.to_owned(), access_key.to_owned(), container_name.to_owned(), + false, ))?; let data_sink = Arc::new(DataFolderDataSink::new()); TOKIO_RUNTIME.block_on(data_folder.register_tables(data_sink))?; diff --git a/crates/modelardb_macros/Cargo.toml b/crates/modelardb_macros/Cargo.toml new file mode 100644 index 00000000..1fea2d5d --- /dev/null +++ b/crates/modelardb_macros/Cargo.toml @@ -0,0 +1,26 @@ +# Copyright 2026 The ModelarDB Contributors +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +[package] +name = "modelardb_macros" +version = "0.1.0" +license = "Apache-2.0" +edition = "2024" +authors = ["Soeren Kejser Jensen "] + +[lib] +proc-macro = true + +[dependencies] +itertools.workspace = true \ No newline at end of file diff --git a/crates/modelardb_macros/src/error.rs b/crates/modelardb_macros/src/error.rs new file mode 100644 index 00000000..40676a2d --- /dev/null +++ b/crates/modelardb_macros/src/error.rs @@ -0,0 +1,47 @@ +/* Copyright 2026 The ModelarDB Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//! The [`Error`] and [`Result`] types used throughout `modelardb_macros`. + +use std::error::Error; +use std::fmt::{Display, Formatter}; +use std::result::Result as StdResult; + +/// Result type used throughout `modelardb_macros`. +pub type Result = StdResult; + +/// Error type used throughout `modelardb_macros`. +#[derive(Debug)] +pub enum ModelarDbMacrosError { + /// Error returned when parsing fails. + Parse(String), +} + +impl Display for ModelarDbMacrosError { + fn fmt(&self, f: &mut Formatter) -> std::fmt::Result { + match self { + Self::Parse(reason) => write!(f, "Parse Error: {reason}"), + } + } +} + +impl Error for ModelarDbMacrosError { + fn source(&self) -> Option<&(dyn Error + 'static)> { + // Return the error that caused self to occur if one exists. + match self { + Self::Parse(_reason) => None, + } + } +} diff --git a/crates/modelardb_macros/src/lib.rs b/crates/modelardb_macros/src/lib.rs new file mode 100644 index 00000000..52e2796c --- /dev/null +++ b/crates/modelardb_macros/src/lib.rs @@ -0,0 +1,412 @@ +/* Copyright 2026 The ModelarDB Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//! The procedural macros used throughout ModelarDB. The procedural macros purposely do not use +//! crates designed to simplify writing procedural macros like `syn`, `proc_macro2`, and `quote`, as +//! they made the code more complex when evaluated. The macros have no automatic tests as using +//! [`proc_macro`] outside procedural macros makes the compiler panic. + +mod error; + +use std::fmt::{self, Display, Formatter}; + +use itertools::Itertools; +use proc_macro::TokenTree::{Group, Ident, Punct}; +use proc_macro::{Group as GroupStruct, Ident as IdentStruct, TokenStream, TokenTree}; + +use crate::error::ModelarDbMacrosError; +use crate::error::Result; + +/// Specify the type of parameters a macro supports. +#[derive(Clone, Copy)] +enum ParameterType { + /// The annotated function must only contain `&DataFolder` parameters. + DataFolder, + /// The annotated function must only contain `&dyn ObjectStore` parameters. + ObjectStore, +} + +impl Display for ParameterType { + fn fmt(&self, f: &mut Formatter) -> fmt::Result { + match self { + ParameterType::DataFolder => write!(f, "&DataFolder"), + ParameterType::ObjectStore => write!(f, "&dyn ObjectStore"), + } + } +} + +/// This struct represents a function that will create an argument to be passed to a function as a +/// borrow. +struct BorrowedArgument { + /// Name of the function. + name: String, + /// Module containing the function. + module: String, + /// Specify if the function must be called with a path. + need_path: bool, + /// Specify if the function must be called with .await. + need_await: bool, +} + +impl BorrowedArgument { + fn new(name: &str, module: &str, need_path: bool, need_await: bool) -> Self { + BorrowedArgument { + name: name.to_owned(), + module: module.to_owned(), + need_path, + need_await, + } + } +} + +/// Macro for generating test functions that use all permutations with replacements of `DataFolder` +/// The macro must be placed on an `async` function without `#[test]` or `#[tokio::test]` that only +/// has `&DataFolder` parameters. It will generate one `#[tokio::test]` function for each +/// permutation with replacement of `DataFolder` configurations that call the annotated function. +/// +/// ```ignore +/// // This doc test is not tested as procedural macros cannot be used in their own crates. +/// use modelardb_macros::data_folder_test; +/// +/// #[data_folder_test] +/// async fn test_data_folder_drop_table(data_folder: &DataFolder) { +/// data_folder.drop_table("table_name").await.unwrap(); +/// } +/// ``` +///. +#[proc_macro_attribute] +pub fn data_folder_test( + _args: proc_macro::TokenStream, + input: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + // Extract and check the required parts of the annotated function. The input stream must be + // cloned as it must be read as part of this macro but also extended with the generated code. + let (function_name, data_folder_parameter_count) = + function_name_and_checked_parameter_count(input.clone(), ParameterType::DataFolder); + + // Generate the async tokio::test functions that will call the annotated function using all + // combinations of data folder configurations. A separate function is created for each + // permutation of data folder configurations instead of a single function with nested loops to + // make it simpler to see which combination of data folder configurations fail a test. The name + // for the generated function start with the name of the annotated function followed by the name + // of each data folder configuration used with each part of the name separated by two + // underscores. By using the annotated function name as a prefix, all the generated tests can be + // run with `cargo test annotated_function_name`. The names of the data folder configurations + // used are included to make it simple to identify which data folder configurations causes a + // test to fail. Finally, each part of the name is separated by two underscores to make it more + // readable and to avoid conflicts with user code as function names should not use two + // underscores. + let data_folders = &[ + BorrowedArgument::new( + "in_memory_data_folder", + "modelardb_test::data_folder", + false, + true, + ), + BorrowedArgument::new( + "local_file_system_data_folder", + "modelardb_test::data_folder", + true, + true, + ), + BorrowedArgument::new("s3_data_folder", "modelardb_test::data_folder", false, true), + BorrowedArgument::new( + "azure_data_folder", + "modelardb_test::data_folder", + false, + true, + ), + ]; + + // Create an iterator that produce all permutations with replacements of the items in + // data_folders. First the code creates an iterator that repeats the data_folders iterator + // data_folder_parameter_count times. Then these iterators are crossed together to produce each + // permutation with replacements. This should be the same as data_folder_parameter_count nested + // loops iterating over data_folders without the need to know the number of loops required + // beforehand since the value of data_folder_parameter_count is not known at development time. + let data_folder_permutations_with_replacements = + itertools::repeat_n(data_folders.iter(), data_folder_parameter_count as usize) + .multi_cartesian_product(); + + let mut code = String::new(); + for data_folder_permutation in data_folder_permutations_with_replacements { + code.push_str(&generate_test_function( + &function_name, + &data_folder_permutation, + )); + } + + // Append the generated functions to the existing token stream. + append_code_to_token_stream(input, code) +} + +/// Macro for generating test functions that use all permutations with replacements of object +/// stores. The macro must be placed on an `async` function without `#[test]` or `#[tokio::test]` +/// that only has `&dyn ObjectStore` parameters. It will generate one `#[tokio::test]` function for +/// each permutation with replacement of supported object stores that call the annotated function. +/// +/// ```ignore +/// // This doc test is not tested as procedural macros cannot be used in their own crates. +/// use modelardb_macros::object_store_test; +/// +/// use futures::StreamExt; +/// use object_store::ObjectStore; +/// +/// #[object_store_test] +/// async fn test_object_store_list(object_store: &dyn ObjectStore) { +/// let mut files = object_store.list(None); +/// while let Some(f) = files.next().await { +/// f.unwrap(); +/// } +/// } +/// ``` +///. +#[proc_macro_attribute] +pub fn object_store_test( + _args: proc_macro::TokenStream, + input: proc_macro::TokenStream, +) -> proc_macro::TokenStream { + // See the comments in data_folder_test as it follows the same structure as object_store_test. + let (function_name, object_store_parameter_count) = + function_name_and_checked_parameter_count(input.clone(), ParameterType::ObjectStore); + + let object_stores = &[ + BorrowedArgument::new( + "in_memory_object_store", + "modelardb_test::object_store", + false, + false, + ), + BorrowedArgument::new( + "local_file_system_object_store", + "modelardb_test::object_store", + true, + false, + ), + BorrowedArgument::new( + "s3_object_store", + "modelardb_test::object_store", + false, + false, + ), + BorrowedArgument::new( + "azure_object_store", + "modelardb_test::object_store", + false, + false, + ), + ]; + + let object_store_permutations_with_replacements = + itertools::repeat_n(object_stores.iter(), object_store_parameter_count as usize) + .multi_cartesian_product(); + + let mut code = String::new(); + for object_store_permutation in object_store_permutations_with_replacements { + code.push_str(&generate_test_function( + &function_name, + &object_store_permutation, + )); + } + + append_code_to_token_stream(input, code) +} + +/// Extracts the function name from `input`, checks that all its parameters are of type +/// `ParameterType`, and returns the number of parameters. The number of parameters is returned as a +/// `u16` as `rustc` returns an error if a function or method has more than 65,535 parameters at the +/// time of writing. A [`ModelarDbMacrosError`] is returned if `input` is not a function that only +/// accepts parameters of `parameter_type`. +fn function_name_and_checked_parameter_count( + input: TokenStream, + parameter_type: ParameterType, +) -> (String, u16) { + let (function_name_ident, function_parameter_group) = + next_ident_and_group(input.clone()).expect("Assumes input is a function with parameters."); + let function_name = function_name_ident.to_string(); + let parameter_count = expect_parameter_type_and_count(function_parameter_group, parameter_type) + .unwrap_or_else(|_| { + panic!("Assumes all of the function's parameters are of type {parameter_type}.") + }); + (function_name, parameter_count) +} + +/// Return the next pair of adjacent [`IdentStruct`] and [`GroupStruct`] tokens from `input` or +/// `None` if no adjacent [`IdentStruct`] and [`GroupStruct`] token exist in the rest of `input`. +fn next_ident_and_group(input: TokenStream) -> Option<(IdentStruct, GroupStruct)> { + let mut adjacent_ident = None; + for token in input { + if let Group(group) = &token + && let Some(ident) = adjacent_ident + { + // Clone is needed to avoid a partial move error with the next if let. + return Some((ident, group.clone())); + } else if let Ident(ident) = token { + adjacent_ident = Some(ident); + } else { + adjacent_ident = None; + } + } + None +} + +/// Returns the number of `parameter_type` parameters in `function_parameter_group`. The return type +/// is `u16` as `rustc` returns an error if a function or method have more than 65,535 parameters at +/// the time of writing. A [`ModelarDbMacrosError`] is returned if `function_parameter_group` +/// contain anything but multiple instances of `parameter_type`. +fn expect_parameter_type_and_count( + function_parameter_group: GroupStruct, + parameter_type: ParameterType, +) -> Result { + let mut token_peekable_iterator = function_parameter_group.stream().into_iter().peekable(); + + let mut parameter_count = 0; + loop { + // Return an error if the next parameter does not match parameter_type. + expect_parameter_type(&mut token_peekable_iterator, parameter_type)?; + parameter_count += 1; + + // Skip the comma between parameters. + token_peekable_iterator.next(); + + // End loop when iterator is empty, peek is used in case the stream is not empty. + if token_peekable_iterator.peek().is_none() { + break; + } + } + + Ok(parameter_count) +} + +/// Returns [`Ok`] if the next four tokens `token_iterator` returns is as expected according to +/// `parameter_type`, otherwise a [`ModelarDbMacrosError`] is returned. +fn expect_parameter_type( + token_iterator: &mut impl Iterator, + parameter_type: ParameterType, +) -> Result<()> { + // The contents of the first Ident token cannot be checked as it is the parameter name. + expect_ident_without_contents(token_iterator)?; + expect_punct_with_contents(token_iterator, ':')?; + expect_punct_with_contents(token_iterator, '&')?; + match parameter_type { + ParameterType::DataFolder => { + expect_ident_with_contents(token_iterator, "DataFolder")?; + } + ParameterType::ObjectStore => { + expect_ident_with_contents(token_iterator, "dyn")?; + expect_ident_with_contents(token_iterator, "ObjectStore")?; + } + } + Ok(()) +} + +/// Return [`Ok`] if the next [`TokenTree`] from `token_iterator` is an [`Ident`], otherwise a +/// [`ModelarDbMacrosError`] is returned. +fn expect_ident_without_contents( + token_iterator: &mut impl Iterator, +) -> Result<()> { + let error_message = match token_iterator.next() { + Some(Ident(_token)) => return Ok(()), + Some(token) => format!("Expected Ident, found {}.", token), + None => "Expected Ident, found an empty iterator.".to_owned(), + }; + Err(ModelarDbMacrosError::Parse(error_message)) +} + +/// Return [`Ok`] if the next [`TokenTree`] from `token_iterator` is an [`Ident`] that contains +/// `content`, otherwise a [`ModelarDbMacrosError`] is returned. +fn expect_ident_with_contents( + token_iterator: &mut impl Iterator, + contents: &str, +) -> Result<()> { + let error_message = match token_iterator.next() { + Some(Ident(token)) if token.to_string() == contents => return Ok(()), + Some(token) => format!("Expected Ident with {}, found {}.", contents, token), + None => format!("Expected Ident with {}, found an empty iterator.", contents), + }; + Err(ModelarDbMacrosError::Parse(error_message)) +} + +/// Return [`Ok`] if the next [`TokenTree`] from `token_iterator` is a [`Punct`] that contains +/// `content`, otherwise a [`ModelarDbMacrosError`] is returned. +fn expect_punct_with_contents( + token_iterator: &mut impl Iterator, + contents: char, +) -> Result<()> { + let error_message = match token_iterator.next() { + Some(Punct(token)) if token.as_char() == contents => return Ok(()), + Some(token) => format!("Expected Punct with {}, found {}.", contents, token), + None => format!("Expected Punct with {}, found an empty iterator.", contents), + }; + Err(ModelarDbMacrosError::Parse(error_message)) +} + +/// Appends `code` to `input`. +fn append_code_to_token_stream(mut input: TokenStream, code: String) -> TokenStream { + let implementation_tokens = code + .parse::() + .expect("The macro generated invalid Rust code."); + input.extend(implementation_tokens); + input +} + +/// Generate a call to `function_name` and pass it the `permutation` with replacements of arguments. +fn generate_test_function(function_name: &str, permutation: &[&BorrowedArgument]) -> String { + let permutation_name = permutation.iter().map(|ba| &ba.name).join("__"); + + let mut temp_dir_name_counter = 0; + let temp_dirs = permutation + .iter() + .filter_map(|ba| { + if ba.need_path { + temp_dir_name_counter += 1; + Some(format!( + "let temp_dir{temp_dir_name_counter} = tempfile::tempdir().unwrap();" + )) + } else { + None + } + }) + .join(" "); + + temp_dir_name_counter = 0; + let arguments = permutation + .iter() + .map(|ba| { + let mut argument = String::new(); + argument.push_str(&format!("&{}::{}", ba.module, ba.name)); + if ba.need_path { + temp_dir_name_counter += 1; + argument.push_str(&format!("(temp_dir{temp_dir_name_counter}.path())")); + } else { + argument.push_str("()"); + } + if ba.need_await { + argument.push_str(".await") + } + argument + }) + .join(", "); + + format!( + " + #[tokio::test] + async fn {function_name}__{permutation_name}() {{ + {temp_dirs} + {function_name}({arguments}).await + }} + " + ) +} diff --git a/crates/modelardb_server/Cargo.toml b/crates/modelardb_server/Cargo.toml index ca1ba761..8d837053 100644 --- a/crates/modelardb_server/Cargo.toml +++ b/crates/modelardb_server/Cargo.toml @@ -36,10 +36,10 @@ deltalake = { workspace = true, features = ["datafusion"] } futures.workspace = true http.workspace = true http-body-util.workspace = true -modelardb_auth = { path = "../modelardb_auth" } -modelardb_compression = { path = "../modelardb_compression" } -modelardb_storage = { path = "../modelardb_storage" } -modelardb_types = { path = "../modelardb_types" } +modelardb_auth.workspace = true +modelardb_compression.workspace = true +modelardb_storage.workspace = true +modelardb_types.workspace = true object_store = { workspace = true, features = ["aws", "azure"] } prost.workspace = true rand.workspace = true @@ -58,8 +58,8 @@ tracing = { workspace = true, features = ["max_level_debug", "release_max_level_ tracing-subscriber.workspace = true [dev-dependencies] -modelardb_test = { path = "../modelardb_test" } -modelardb_auth = { path = "../modelardb_auth", features = ["testing"] } +modelardb_test.workspace = true +modelardb_auth = { workspace = true, features = ["testing"] } proptest.workspace = true tempfile.workspace = true diff --git a/crates/modelardb_storage/Cargo.toml b/crates/modelardb_storage/Cargo.toml index 6f6a20e2..739ba2d4 100644 --- a/crates/modelardb_storage/Cargo.toml +++ b/crates/modelardb_storage/Cargo.toml @@ -30,8 +30,8 @@ datafusion-proto.workspace = true delta_kernel.workspace = true deltalake = { workspace = true, features = ["datafusion", "s3"] } futures.workspace = true -modelardb_compression = { path = "../modelardb_compression" } -modelardb_types = { path = "../modelardb_types" } +modelardb_compression.workspace = true +modelardb_types.workspace = true object_store = { workspace = true, features = ["aws", "azure"] } serde_json.workspace = true sqlparser.workspace = true @@ -42,6 +42,6 @@ uuid.workspace = true [dev-dependencies] futures.workspace = true -modelardb_test = { path = "../modelardb_test" } +modelardb_test.workspace = true tempfile.workspace = true tokio.workspace = true diff --git a/crates/modelardb_storage/src/data_folder/delta_table_writer.rs b/crates/modelardb_storage/src/data_folder/delta_table_writer.rs index 6a90a11f..515f7e8a 100644 --- a/crates/modelardb_storage/src/data_folder/delta_table_writer.rs +++ b/crates/modelardb_storage/src/data_folder/delta_table_writer.rs @@ -260,7 +260,7 @@ mod tests { use std::sync::Arc; - use modelardb_test::table as test; + use modelardb_test::table as test_table; use modelardb_test::table::{NORMAL_TABLE_NAME, TIME_SERIES_TABLE_NAME}; use tempfile::TempDir; @@ -277,7 +277,7 @@ mod tests { .unwrap(); let delta_table = writer - .write_all_and_commit(&[test::normal_table_record_batch()]) + .write_all_and_commit(&[test_table::normal_table_record_batch()]) .await .unwrap(); @@ -289,7 +289,7 @@ mod tests { let (_temp_dir, _data_folder, mut writer) = create_time_series_table_writer().await; writer - .write(&test::compressed_segments_record_batch()) + .write(&test_table::compressed_segments_record_batch()) .await .unwrap(); @@ -302,7 +302,7 @@ mod tests { let (_temp_dir, _data_folder, mut writer) = create_time_series_table_writer().await; let empty_batch = - RecordBatch::new_empty(test::time_series_table_metadata().compressed_schema); + RecordBatch::new_empty(test_table::time_series_table_metadata().compressed_schema); writer.write(&empty_batch).await.unwrap(); let delta_table = writer.commit().await.unwrap(); @@ -313,7 +313,7 @@ mod tests { async fn test_write_with_schema_mismatch() { let (_temp_dir, _data_folder, mut writer) = create_time_series_table_writer().await; - let result = writer.write(&test::normal_table_record_batch()).await; + let result = writer.write(&test_table::normal_table_record_batch()).await; assert!( result @@ -327,7 +327,7 @@ mod tests { async fn test_write_all_and_commit() { let (_temp_dir, data_folder, writer) = create_time_series_table_writer().await; - let batch = test::compressed_segments_record_batch(); + let batch = test_table::compressed_segments_record_batch(); let delta_table = writer .write_all_and_commit(&[batch.clone(), batch]) .await @@ -356,8 +356,8 @@ mod tests { async fn test_write_all_and_commit_rolls_back_on_error() { let (temp_dir, data_folder, writer) = create_time_series_table_writer().await; - let valid_batch = test::compressed_segments_record_batch(); - let invalid_batch = test::normal_table_record_batch(); + let valid_batch = test_table::compressed_segments_record_batch(); + let invalid_batch = test_table::normal_table_record_batch(); let result = writer .write_all_and_commit(&[valid_batch, invalid_batch]) .await; @@ -397,7 +397,7 @@ mod tests { let (temp_dir, _data_folder, mut writer) = create_time_series_table_writer().await; writer - .write(&test::compressed_segments_record_batch()) + .write(&test_table::compressed_segments_record_batch()) .await .unwrap(); @@ -417,7 +417,7 @@ mod tests { let data_folder = DataFolder::open_local(temp_dir.path()).await.unwrap(); data_folder - .create_normal_table(NORMAL_TABLE_NAME, &test::normal_table_schema()) + .create_normal_table(NORMAL_TABLE_NAME, &test_table::normal_table_schema()) .await .unwrap(); @@ -429,7 +429,7 @@ mod tests { let data_folder = DataFolder::open_local(temp_dir.path()).await.unwrap(); let delta_table = data_folder - .create_time_series_table(&test::time_series_table_metadata()) + .create_time_series_table(&test_table::time_series_table_metadata()) .await .unwrap(); diff --git a/crates/modelardb_storage/src/data_folder/mod.rs b/crates/modelardb_storage/src/data_folder/mod.rs index 99c8e449..4fe76801 100644 --- a/crates/modelardb_storage/src/data_folder/mod.rs +++ b/crates/modelardb_storage/src/data_folder/mod.rs @@ -173,7 +173,7 @@ impl DataFolder { ) })?; - Self::open_azure(account_name, access_key, container_name.to_owned()).await + Self::open_azure(account_name, access_key, container_name.to_owned(), false).await } _ => Err(ModelarDbStorageError::InvalidArgument( "Remote data folder URL must be s3://bucket-name or azureblobstorage://container-name." @@ -212,9 +212,9 @@ impl DataFolder { AmazonS3Builder::new() .with_url(url.to_string()) .with_allow_http(true), - |builder, (key, value)| match key.parse() { - Ok(k) => builder.with_config(k, value), - Err(_) => builder, + |builder, (key, value)| { + let key = key.parse().unwrap(); + builder.with_config(key, value) }, ) .build()?; @@ -229,14 +229,17 @@ impl DataFolder { account_name: String, access_key: String, container_name: String, + use_emulator: bool, ) -> Result { let location = format!("az://{container_name}"); + let use_emulator = use_emulator.to_string(); // TODO: Needs to be tested. let storage_options = HashMap::from([ ("azure_storage_account_name".to_owned(), account_name), ("azure_storage_account_key".to_owned(), access_key), ("azure_container_name".to_owned(), container_name), + ("azure_storage_use_emulator".to_owned(), use_emulator), ]); let url = Url::parse(&location) .map_err(|error| ModelarDbStorageError::InvalidArgument(error.to_string()))?; @@ -1108,7 +1111,7 @@ mod tests { use datafusion::arrow::datatypes::DataType; use datafusion::common::ScalarValue::Int64; use datafusion::logical_expr::Expr::Literal; - use modelardb_test::table as test; + use modelardb_test::table as test_table; use modelardb_test::table::{NoOpDataSink, TIME_SERIES_TABLE_NAME}; use modelardb_types::types::ArrowTimestamp; use tempfile::TempDir; @@ -1190,7 +1193,7 @@ mod tests { let (_temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; data_folder - .create_time_series_table(&test::time_series_table_metadata()) + .create_time_series_table(&test_table::time_series_table_metadata()) .await .unwrap(); @@ -1239,7 +1242,7 @@ mod tests { let (_temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; let result = data_folder - .create_normal_table("normal_table_1", &test::normal_table_schema()) + .create_normal_table("normal_table_1", &test_table::normal_table_schema()) .await; assert_eq!( @@ -1272,7 +1275,7 @@ mod tests { assert_eq!( **batch.column(1), BinaryViewArray::from_iter_values([&try_convert_schema_to_bytes( - &test::time_series_table_metadata().query_schema + &test_table::time_series_table_metadata().query_schema ) .unwrap()]) ); @@ -1303,7 +1306,7 @@ mod tests { let (_temp_dir, data_folder) = create_data_folder_and_create_time_series_table().await; let result = data_folder - .create_time_series_table(&test::time_series_table_metadata()) + .create_time_series_table(&test_table::time_series_table_metadata()) .await; assert_eq!( @@ -1401,7 +1404,10 @@ mod tests { let (_temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; let mut delta_table = data_folder - .write_record_batches("normal_table_1", vec![test::normal_table_record_batch()]) + .write_record_batches( + "normal_table_1", + vec![test_table::normal_table_record_batch()], + ) .await .unwrap(); @@ -1420,7 +1426,7 @@ mod tests { let mut delta_table = data_folder .write_record_batches( TIME_SERIES_TABLE_NAME, - vec![test::compressed_segments_record_batch()], + vec![test_table::compressed_segments_record_batch()], ) .await .unwrap(); @@ -1456,7 +1462,10 @@ mod tests { let (temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; data_folder - .write_record_batches("normal_table_1", vec![test::normal_table_record_batch()]) + .write_record_batches( + "normal_table_1", + vec![test_table::normal_table_record_batch()], + ) .await .unwrap(); @@ -1485,7 +1494,7 @@ mod tests { data_folder .write_record_batches( TIME_SERIES_TABLE_NAME, - vec![test::compressed_segments_record_batch()], + vec![test_table::compressed_segments_record_batch()], ) .await .unwrap(); @@ -1517,7 +1526,10 @@ mod tests { let (temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; data_folder - .write_record_batches("normal_table_1", vec![test::normal_table_record_batch()]) + .write_record_batches( + "normal_table_1", + vec![test_table::normal_table_record_batch()], + ) .await .unwrap(); @@ -1576,7 +1588,10 @@ mod tests { // Each write is a separate commit, so four writes produce four small files. for _ in 0..4 { data_folder - .write_record_batches("normal_table_1", vec![test::normal_table_record_batch()]) + .write_record_batches( + "normal_table_1", + vec![test_table::normal_table_record_batch()], + ) .await .unwrap(); } @@ -1604,7 +1619,7 @@ mod tests { data_folder .write_record_batches( TIME_SERIES_TABLE_NAME, - vec![test::compressed_segments_record_batch()], + vec![test_table::compressed_segments_record_batch()], ) .await .unwrap(); @@ -1648,7 +1663,10 @@ mod tests { // Each write is a separate commit, so four writes produce four small files. for _ in 0..4 { data_folder - .write_record_batches("normal_table_1", vec![test::normal_table_record_batch()]) + .write_record_batches( + "normal_table_1", + vec![test_table::normal_table_record_batch()], + ) .await .unwrap(); } @@ -1706,7 +1724,7 @@ mod tests { async fn test_write_record_batches_to_normal_table() { let (_temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; - let batch_to_write = test::normal_table_record_batch(); + let batch_to_write = test_table::normal_table_record_batch(); let delta_table = data_folder .write_record_batches("normal_table_1", vec![batch_to_write.clone()]) .await @@ -1734,7 +1752,7 @@ mod tests { async fn test_write_record_batches_to_time_series_table() { let (_temp_dir, data_folder) = create_data_folder_and_create_time_series_table().await; - let batch_to_write = test::compressed_segments_record_batch(); + let batch_to_write = test_table::compressed_segments_record_batch(); let delta_table = data_folder .write_record_batches(TIME_SERIES_TABLE_NAME, vec![batch_to_write.clone()]) .await @@ -1745,7 +1763,9 @@ mod tests { // Read the data back and verify the content. The partition column (field_column) is // moved to the end by Delta Lake, so SELECT the columns in the original schema order. - let schema = test::time_series_table_metadata().compressed_schema.clone(); + let schema = test_table::time_series_table_metadata() + .compressed_schema + .clone(); let column_names: Vec<&str> = schema.fields().iter().map(|f| f.name().as_str()).collect(); let table_provider = delta_table.table_provider().build().await.unwrap(); @@ -1784,7 +1804,7 @@ mod tests { async fn test_write_empty_record_batch_to_table() { let (_temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; - let empty_batch = RecordBatch::new_empty(Arc::new(test::normal_table_schema())); + let empty_batch = RecordBatch::new_empty(Arc::new(test_table::normal_table_schema())); let delta_table = data_folder .write_record_batches("normal_table_1", vec![empty_batch]) .await @@ -1799,7 +1819,10 @@ mod tests { let data_folder = DataFolder::open_local(temp_dir.path()).await.unwrap(); let result = data_folder - .write_record_batches("missing_table", vec![test::normal_table_record_batch()]) + .write_record_batches( + "missing_table", + vec![test_table::normal_table_record_batch()], + ) .await; assert_eq!( @@ -1875,7 +1898,7 @@ mod tests { async fn test_table_names() { let (_temp_dir, data_folder) = create_data_folder_and_create_normal_tables().await; - let time_series_table_metadata = test::time_series_table_metadata(); + let time_series_table_metadata = test_table::time_series_table_metadata(); data_folder .create_time_series_table(&time_series_table_metadata) .await @@ -1913,7 +1936,7 @@ mod tests { .await .unwrap(); - assert_eq!(schema.as_ref(), &test::normal_table_schema()); + assert_eq!(schema.as_ref(), &test_table::normal_table_schema()); } #[tokio::test] @@ -1933,7 +1956,7 @@ mod tests { assert_eq!( time_series_table_metadata.first().unwrap().name, - test::time_series_table_metadata().name, + test_table::time_series_table_metadata().name, ); } @@ -1948,7 +1971,7 @@ mod tests { assert_eq!( time_series_table_metadata.name, - test::time_series_table_metadata().name, + test_table::time_series_table_metadata().name, ); } @@ -1981,7 +2004,7 @@ mod tests { assert_eq!( metadata.unwrap().as_ref(), - &test::time_series_table_metadata(), + &test_table::time_series_table_metadata(), ); } @@ -2087,7 +2110,7 @@ mod tests { let temp_dir = tempfile::tempdir().unwrap(); let data_folder = DataFolder::open_local(temp_dir.path()).await.unwrap(); - let normal_table_schema = test::normal_table_schema(); + let normal_table_schema = test_table::normal_table_schema(); data_folder .create_normal_table("normal_table_1", &normal_table_schema) .await @@ -2105,7 +2128,7 @@ mod tests { let temp_dir = tempfile::tempdir().unwrap(); let data_folder = DataFolder::open_local(temp_dir.path()).await.unwrap(); - let time_series_table_metadata = test::time_series_table_metadata(); + let time_series_table_metadata = test_table::time_series_table_metadata(); data_folder .create_time_series_table(&time_series_table_metadata) .await diff --git a/crates/modelardb_storage/src/parser.rs b/crates/modelardb_storage/src/parser.rs index c3cdaeaa..6e4071e0 100644 --- a/crates/modelardb_storage/src/parser.rs +++ b/crates/modelardb_storage/src/parser.rs @@ -485,17 +485,13 @@ impl ModelarDbDialect { let mut addresses = vec![]; loop { - match self.parse_single_quoted_string(parser) { - Ok(address) => { - addresses.push(new_address_setting(address)); - if let Token::Comma = parser.peek_nth_token(0).token { - parser.next_token(); - } else { - break; - }; - } - Err(error) => return Err(error), - } + let address = self.parse_single_quoted_string(parser)?; + addresses.push(new_address_setting(address)); + if let Token::Comma = parser.peek_nth_token(0).token { + parser.next_token(); + } else { + break; + }; } // SELECT. @@ -727,17 +723,13 @@ impl ModelarDbDialect { let mut table_names = vec![]; loop { - match self.parse_word_value(parser) { - Ok(table_name) => { - table_names.push(table_name); - if Token::Comma == parser.peek_nth_token(0).token { - parser.next_token(); - } else { - return Ok(table_names); - }; - } - Err(error) => return Err(error), - } + let table_name = self.parse_word_value(parser)?; + table_names.push(table_name); + if Token::Comma == parser.peek_nth_token(0).token { + parser.next_token(); + } else { + return Ok(table_names); + }; } } } diff --git a/crates/modelardb_test/Cargo.toml b/crates/modelardb_test/Cargo.toml index 2ddc5065..f5c1ad2f 100644 --- a/crates/modelardb_test/Cargo.toml +++ b/crates/modelardb_test/Cargo.toml @@ -23,5 +23,8 @@ authors = ["Soeren Kejser Jensen "] arrow.workspace = true async-trait.workspace = true datafusion.workspace = true -modelardb_types = { path = "../modelardb_types" } +modelardb_types.workspace = true +modelardb_storage.workspace = true +object_store = { workspace = true, features = ["aws", "azure"] } rand.workspace = true +url.workspace = true diff --git a/crates/modelardb_test/src/data_folder.rs b/crates/modelardb_test/src/data_folder.rs new file mode 100644 index 00000000..b4c6fbfb --- /dev/null +++ b/crates/modelardb_test/src/data_folder.rs @@ -0,0 +1,57 @@ +/* Copyright 2026 The ModelarDB Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//! Functions for creating data folders used throughout ModelarDB for testing purposes. + +use std::path::Path as StdPath; + +use modelardb_storage::data_folder::DataFolder; + +use crate::BUCKET_AND_CONTAINER_NAME; + +/// Return a [`DataFolder`] storing data in memory for testing. +pub async fn in_memory_data_folder() -> DataFolder { + DataFolder::open_memory().await.unwrap() +} + +/// Return a [`DataFolder`] storing data on local disk for testing. +pub async fn local_file_system_data_folder(data_folder_path: &StdPath) -> DataFolder { + DataFolder::open_local(data_folder_path).await.unwrap() +} + +/// Return a [`DataFolder`] storing data in an Amazon S3 compatible object store for testing using MinIO. +pub async fn s3_data_folder() -> DataFolder { + DataFolder::open_s3( + "http://localhost:9000".to_owned(), + BUCKET_AND_CONTAINER_NAME.to_owned(), + "minioadmin".to_owned(), + "minioadmin".to_owned(), + ) + .await + .unwrap() +} + +/// Return a [`DataFolder`] storing data in Microsoft Azure Blob Storage for testing using Azurite. +pub async fn azure_data_folder() -> DataFolder { + DataFolder::open_azure( + "devstoreaccount1".to_owned(), + "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==" + .to_owned(), + BUCKET_AND_CONTAINER_NAME.to_owned(), + true, + ) + .await + .unwrap() +} diff --git a/crates/modelardb_test/src/lib.rs b/crates/modelardb_test/src/lib.rs index f84f2b6c..0812e145 100644 --- a/crates/modelardb_test/src/lib.rs +++ b/crates/modelardb_test/src/lib.rs @@ -15,9 +15,14 @@ //! Implementation of functions and types used throughout ModelarDB for testing purposes. +pub mod data_folder; pub mod data_generation; +pub mod object_store; pub mod table; +/// Bucket and container name used by MinIO and Azurite. +pub const BUCKET_AND_CONTAINER_NAME: &str = "modelardb"; + /// Expected size of the uncompressed data buffers produced in the tests. pub const UNCOMPRESSED_BUFFER_SIZE: usize = 1048576; diff --git a/crates/modelardb_test/src/object_store.rs b/crates/modelardb_test/src/object_store.rs new file mode 100644 index 00000000..b8c5c5d0 --- /dev/null +++ b/crates/modelardb_test/src/object_store.rs @@ -0,0 +1,88 @@ +/* Copyright 2026 The ModelarDB Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//! Functions for creating object stores used throughout ModelarDB for testing purposes. All return +//! `Box` to match the output of [`object_store::parse_url_opts()`]. + +use std::collections::HashMap; +use std::path::Path as StdPath; + +use object_store::{ObjectStore, aws::AmazonS3Builder, local::LocalFileSystem, memory::InMemory}; +use url::Url; + +use crate::BUCKET_AND_CONTAINER_NAME; + +/// Return an [`InMemory`] [`ObjectStore`] for testing. +pub fn in_memory_object_store() -> Box { + Box::new(InMemory::new()) +} + +/// Return a [`LocalFileSystem`] [`ObjectStore`] for testing. +pub fn local_file_system_object_store(object_store_path: &StdPath) -> Box { + let local_file_system = LocalFileSystem::new_with_prefix(object_store_path).unwrap(); + Box::new(local_file_system) +} + +/// Return an [`AmazonS3`](object_store::aws::AmazonS3) [`ObjectStore`] for testing. +pub fn s3_object_store() -> Box { + let storage_options = HashMap::from([ + ("aws_access_key_id".to_owned(), "minioadmin".to_owned()), + ("aws_secret_access_key".to_owned(), "minioadmin".to_owned()), + ( + "aws_endpoint_url".to_owned(), + "http://localhost:9000".to_owned(), + ), + ( + "aws_bucket_name".to_owned(), + BUCKET_AND_CONTAINER_NAME.to_owned(), + ), + ("aws_s3_allow_unsafe_rename".to_owned(), "true".to_owned()), + ]); + + // Build the Amazon S3 object store with the given storage options manually to allow http. + let location = format!("s3://{BUCKET_AND_CONTAINER_NAME}"); + let url = Url::parse(&location).unwrap(); + + let amazon_s3 = storage_options + .iter() + .fold( + AmazonS3Builder::new() + .with_url(url.to_string()) + .with_allow_http(true), + |builder, (key, value)| { + let key = key.parse().unwrap(); + builder.with_config(key, value) + }, + ) + .build() + .unwrap(); + Box::new(amazon_s3) +} + +/// Return a [`MicrosoftAzure`](object_store::azure::MicrosoftAzure) [`ObjectStore`] for testing. +pub fn azure_object_store() -> Box { + let location = format!("az://{BUCKET_AND_CONTAINER_NAME}"); + let url = Url::parse(&location).unwrap(); + + let storage_options = HashMap::from([ + ("azure_storage_account_name".to_owned(), "devstoreaccount1".to_owned()), + ("azure_storage_account_key".to_owned(), "Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==".to_owned()), + ("azure_container_name".to_owned(), BUCKET_AND_CONTAINER_NAME.to_owned()), + ("azure_storage_use_emulator".to_owned(), "true".to_owned()), + ]); + let (boxed_microsoft_azure, _path) = + object_store::parse_url_opts(&url, &storage_options).unwrap(); + boxed_microsoft_azure +} diff --git a/crates/modelardb_types/Cargo.toml b/crates/modelardb_types/Cargo.toml index 04bec60f..9606e9d0 100644 --- a/crates/modelardb_types/Cargo.toml +++ b/crates/modelardb_types/Cargo.toml @@ -32,7 +32,7 @@ prost-build.workspace = true protox.workspace = true [dev-dependencies] -modelardb_test = { path = "../modelardb_test" } +modelardb_test.workspace = true proptest.workspace = true [package.metadata.cargo-machete]