diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile deleted file mode 100644 index ee557c0..0000000 --- a/.devcontainer/Dockerfile +++ /dev/null @@ -1,2 +0,0 @@ -ARG VARIANT="bullseye" -FROM mcr.microsoft.com/vscode/devcontainers/rust:1-${VARIANT} diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json deleted file mode 100644 index 377300f..0000000 --- a/.devcontainer/devcontainer.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "name": "Rust", - "build": { - "dockerfile": "Dockerfile", - "args": { - "VARIANT": "bullseye" - } - }, - "runArgs": [ - "--cap-add=SYS_PTRACE", - "--security-opt", - "seccomp=unconfined" - ], - - "customizations": { - "vscode": { - "settings": { - "lldb.executable": "/usr/bin/lldb", - "files.watcherExclude": { - "**/target/**": true - }, - "rust-analyzer.checkOnSave.command": "clippy" - }, - - // Add the IDs of extensions you want installed when the container is created. - "extensions": [ - "mutantdino.resourcemonitor", - "rust-lang.rust-analyzer", - "serayuzgur.crates", - "tamasfe.even-better-toml", - "vadimcn.vscode-lldb" - ] - } - }, - - "remoteUser": "vscode" -} diff --git a/.github/workflows/benchmarks.yml b/.github/workflows/benchmarks.yml index 1ee2e8d..2851793 100644 --- a/.github/workflows/benchmarks.yml +++ b/.github/workflows/benchmarks.yml @@ -41,7 +41,7 @@ jobs: --ci-number "${{ github.event.number }}" \ --github-actions "${{ secrets.GITHUB_TOKEN }}" \ --err \ - "cargo bench" + "cargo bench --features blocking" - name: Run benchmarks if: ${{ github.event_name != 'pull_request' }} diff --git a/CHANGELOG.md b/CHANGELOG.md index 717c547..87abce6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,54 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## `postgresql_extensions` - [0.20.0](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_extensions-v0.19.0...postgresql_extensions-v0.20.0) - 2025-08-31 + +### Fixed +- always use the build version of postgresql when the bundled feature is enabled to avoid network access + +### Other +- remove devcontainer support + +## `postgresql_embedded` - [0.20.0](https://github.com/theseus-rs/postgresql-embedded/compare/v0.19.0...v0.20.0) - 2025-08-31 + +### Fixed +- always use the build version of postgresql when the bundled feature is enabled to avoid network access +- [**breaking**] rename pg_dump compression argument to compress + +### Other +- minor doc updates +- remove devcontainer support +- correct lint errors +- update to Rust 1.89.0 + +## `postgresql_commands` - [0.20.0](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_commands-v0.19.0...postgresql_commands-v0.20.0) - 2025-08-31 + +### Fixed +- [**breaking**] rename pg_dump compression argument to compress + +### Other +- remove devcontainer support + +## `postgresql_archive` - [0.20.0](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_archive-v0.19.0...postgresql_archive-v0.20.0) - 2025-08-31 + +### Other +- minor doc updates +- remove devcontainer support + +## `postgresql_embedded` - [0.19.0](https://github.com/theseus-rs/postgresql-embedded/compare/v0.18.7...v0.19.0) - 2025-06-24 + +### Added +- allow skipping the installation step during setup + +### Other +- correct typo in variable name +- update extractor feature documentation + +## `postgresql_archive` - [0.19.0](https://github.com/theseus-rs/postgresql-embedded/compare/postgresql_archive-v0.18.7...postgresql_archive-v0.19.0) - 2025-06-24 + +### Other +- update extractor feature documentation + ## `postgresql_embedded` - [0.18.7](https://github.com/theseus-rs/postgresql-embedded/compare/v0.18.6...v0.18.7) - 2025-06-20 ### Fixed diff --git a/Cargo.lock b/Cargo.lock index 979e68b..62a94d1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -40,9 +40,9 @@ checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" [[package]] name = "anstream" -version = "0.6.19" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301af1932e46185686725e0fad2f8f2aa7da69dd70bf6ecc44d6b703844a3933" +checksum = "3ae563653d1938f79b1ab1b5e668c87c76a9930414574a6583a7b7e11a8e6192" dependencies = [ "anstyle", "anstyle-parse", @@ -70,42 +70,42 @@ dependencies = [ [[package]] name = "anstyle-query" -version = "1.1.3" +version = "1.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" +checksum = "9e231f6134f61b71076a3eab506c379d4f36122f2af15a9ff04415ea4c3339e2" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anstyle-wincon" -version = "3.0.9" +version = "3.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "403f75924867bb1033c59fbf0797484329750cfbe3c4325cd33127941fabc882" +checksum = "3e0633414522a32ffaac8ac6cc8f748e090c5717661fddeea04219e2344f5f2a" dependencies = [ "anstyle", "once_cell_polyfill", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "anyhow" -version = "1.0.98" +version = "1.0.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" +checksum = "b0674a1ddeecb70197781e945de4b3b8ffb61fa939a5597bcf48503737663100" [[package]] name = "arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" +checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" dependencies = [ "derive_arbitrary", ] [[package]] name = "archive_async" -version = "0.18.7" +version = "0.20.0" dependencies = [ "postgresql_archive", "tempfile", @@ -114,7 +114,7 @@ dependencies = [ [[package]] name = "archive_sync" -version = "0.18.7" +version = "0.20.0" dependencies = [ "postgresql_archive", "tempfile", @@ -128,9 +128,9 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "async-trait" -version = "0.1.88" +version = "0.1.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" +checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", @@ -146,6 +146,12 @@ dependencies = [ "num-traits", ] +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" version = "1.5.0" @@ -208,7 +214,7 @@ dependencies = [ [[package]] name = "axum_embedded" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "axum", @@ -249,9 +255,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.9.1" +version = "2.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" +checksum = "34efbcccd345379ca2868b2b2c9d3782e9cc58ba87bc7d79d5b53d9c9ae6f25d" [[package]] name = "block-buffer" @@ -264,9 +270,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.18.1" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "793db76d6187cd04dff33004d8e6c9cc4e05cd330500379d2394209271b4aeee" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" @@ -288,9 +294,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" [[package]] name = "cc" -version = "1.2.27" +version = "1.2.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d487aa071b5f64da6f19a3e848e3578944b726ee5a4854b82172f02aa876bfdc" +checksum = "42bc4aea80032b7bf409b0bc7ccad88853858911b7713a8062fdc0623867bedc" dependencies = [ "jobserver", "libc", @@ -299,9 +305,9 @@ dependencies = [ [[package]] name = "cfg-if" -version = "1.0.1" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" +checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9" [[package]] name = "cfg_aliases" @@ -338,18 +344,18 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.40" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40b6887a1d8685cebccf115538db5c0efe625ccac9696ad45c409d96566e910f" +checksum = "2c5e4fcf9c21d2e544ca1ee9d8552de13019a42aa7dbf32747fa7aaf1df76e57" dependencies = [ "clap_builder", ] [[package]] name = "clap_builder" -version = "4.5.40" +version = "4.5.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0c66c08ce9f0c698cbce5c0279d0bb6ac936d8674174fe48f736533b964f59e" +checksum = "fecb53a0e6fcfb055f686001bc2e2592fa527efaf38dbe81a6a9563562e57d41" dependencies = [ "anstyle", "clap_lex", @@ -378,15 +384,15 @@ dependencies = [ [[package]] name = "console" -version = "0.15.11" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" +checksum = "2e09ced7ebbccb63b4c65413d821f2e00ce54c5ca4514ddc6b3c892fdbcbc69d" dependencies = [ "encode_unicode", "libc", "once_cell", "unicode-width 0.2.1", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -441,25 +447,25 @@ checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5" [[package]] name = "crc32fast" -version = "1.4.2" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" dependencies = [ "cfg-if", ] [[package]] name = "criterion" -version = "0.6.0" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3bf7af66b0989381bd0be551bd7cc91912a655a58c6918420c9527b1fd8b4679" +checksum = "e1c047a62b0cc3e145fa84415a3191f628e980b194c2755aa12300a4e6cbd928" dependencies = [ "anes", "cast", "ciborium", "clap", "criterion-plot", - "itertools 0.13.0", + "itertools", "num-traits", "oorandom", "plotters", @@ -473,12 +479,12 @@ dependencies = [ [[package]] name = "criterion-plot" -version = "0.5.0" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" +checksum = "9b1bcc0dc7dfae599d84ad0b1a55f80cde8af3725da8313b528da95ef783e338" dependencies = [ "cast", - "itertools 0.10.5", + "itertools", ] [[package]] @@ -517,9 +523,9 @@ checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crunchy" -version = "0.2.3" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43da5946c66ffcc7745f48db692ffbb10a83bfe0afd96235c5c2a4fb23994929" +checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" [[package]] name = "crypto-common" @@ -568,9 +574,9 @@ dependencies = [ [[package]] name = "derive_arbitrary" -version = "1.4.1" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" dependencies = [ "proc-macro2", "quote", @@ -579,11 +585,11 @@ dependencies = [ [[package]] name = "diesel" -version = "2.2.11" +version = "2.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a917a9209950404d5be011c81d081a2692a822f73c3d6af586f0cab5ff50f614" +checksum = "229850a212cd9b84d4f0290ad9d294afc0ae70fccaa8949dbe8b43ffafa1e20c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "byteorder", "diesel_derives", "itoa", @@ -593,9 +599,9 @@ dependencies = [ [[package]] name = "diesel_derives" -version = "2.2.6" +version = "2.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52841e97814f407b895d836fa0012091dff79c6268f39ad8155d384c21ae0d26" +checksum = "1b96984c469425cb577bf6f17121ecb3e4fe1e81de5d8f780dd372802858d756" dependencies = [ "diesel_table_macro_syntax", "dsl_auto_type", @@ -606,7 +612,7 @@ dependencies = [ [[package]] name = "diesel_embedded" -version = "0.18.7" +version = "0.20.0" dependencies = [ "diesel", "diesel_migrations", @@ -665,7 +671,7 @@ checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" [[package]] name = "download_progress_bar" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "indicatif", @@ -702,7 +708,7 @@ dependencies = [ [[package]] name = "embedded_async" -version = "0.18.7" +version = "0.20.0" dependencies = [ "postgresql_embedded", "tokio", @@ -710,7 +716,7 @@ dependencies = [ [[package]] name = "embedded_sync" -version = "0.18.7" +version = "0.20.0" dependencies = [ "postgresql_embedded", ] @@ -771,9 +777,9 @@ dependencies = [ [[package]] name = "event-listener" -version = "5.4.0" +version = "5.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3492acde4c3fc54c845eaab3eed8bd00c7a7d881f78bfc801e43a93dec1331ae" +checksum = "e13b66accf52311f30a0db42147dadea9850cb48cd070028831ae5f5d4b856ab" dependencies = [ "concurrent-queue", "parking", @@ -794,14 +800,14 @@ checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] name = "filetime" -version = "0.2.25" +version = "0.2.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35c0522e981e68cbfa8c3f978441a5f34b30b96e146b33cd3359176b50fe8586" +checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" dependencies = [ "cfg-if", "libc", "libredox", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -844,9 +850,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" +checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" dependencies = [ "percent-encoding", ] @@ -984,7 +990,7 @@ dependencies = [ "js-sys", "libc", "r-efi", - "wasi 0.14.2+wasi-0.2.4", + "wasi 0.14.3+wasi-0.2.4", "wasm-bindgen", ] @@ -1006,9 +1012,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.15.4" +version = "0.15.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" dependencies = [ "allocator-api2", "equivalent", @@ -1111,19 +1117,21 @@ checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "eb3aa54a13a0dfe7fbe3a59e0c76093041720fdc77b110cc0fc260fafb4dc51e" dependencies = [ + "atomic-waker", "bytes", "futures-channel", - "futures-util", + "futures-core", "http", "http-body", "httparse", "httpdate", "itoa", "pin-project-lite", + "pin-utils", "smallvec", "tokio", "want", @@ -1164,9 +1172,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.14" +version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +checksum = "8d9b05277c7e8da2c93a568989bb6207bef0112e8d17df7a6eda4a3cf143bc5e" dependencies = [ "base64", "bytes", @@ -1180,7 +1188,7 @@ dependencies = [ "libc", "percent-encoding", "pin-project-lite", - "socket2", + "socket2 0.6.0", "tokio", "tower-service", "tracing", @@ -1280,9 +1288,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "1.0.3" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" dependencies = [ "idna_adapter", "smallvec", @@ -1301,9 +1309,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.9.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cea70ddb795996207ad57735b50c5982d8844f38ba9ee5f1aedcfb708a2aa11e" +checksum = "f2481980430f9f78649238835720ddccc57e52df14ffce1c6f37391d61b563e9" dependencies = [ "equivalent", "hashbrown", @@ -1311,14 +1319,14 @@ dependencies = [ [[package]] name = "indicatif" -version = "0.17.11" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" +checksum = "70a646d946d06bedbbc4cac4c218acf4bbf2d87757a784857025f4d447e4e1cd" dependencies = [ "console", - "number_prefix", "portable-atomic", "unicode-width 0.2.1", + "unit-prefix", "vt100", "web-time", ] @@ -1341,6 +1349,17 @@ dependencies = [ "web-sys", ] +[[package]] +name = "io-uring" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "046fa2d4d00aea763528b4950358d0ead425372445dc8ff86312b3c69ff7727b" +dependencies = [ + "bitflags 2.9.3", + "cfg-if", + "libc", +] + [[package]] name = "ipnet" version = "2.11.0" @@ -1363,15 +1382,6 @@ version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.13.0" @@ -1389,9 +1399,9 @@ checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" [[package]] name = "jobserver" -version = "0.1.33" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f262f097c174adebe41eb73d66ae9c06b2844fb0da69969647bbddd9b0538a" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" dependencies = [ "getrandom 0.3.3", "libc", @@ -1415,15 +1425,15 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.174" +version = "0.2.175" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543" [[package]] name = "liblzma" -version = "0.4.2" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0791ab7e08ccc8e0ce893f6906eb2703ed8739d8e89b57c0714e71bad09024c8" +checksum = "10bf66f4598dc77ff96677c8e763655494f00ff9c1cf79e2eb5bb07bc31f807d" dependencies = [ "liblzma-sys", ] @@ -1441,13 +1451,13 @@ dependencies = [ [[package]] name = "libredox" -version = "0.1.3" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +checksum = "391290121bad3d37fbddad76d8f5d1c1c314cfc646d143d7e07a3086ddff0ce3" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "libc", - "redox_syscall 0.5.13", + "redox_syscall 0.5.17", ] [[package]] @@ -1495,11 +1505,11 @@ checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "matchers" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" +checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" dependencies = [ - "regex-automata 0.1.10", + "regex-automata", ] [[package]] @@ -1526,9 +1536,9 @@ checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "migrations_internals" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd01039851e82f8799046eabbb354056283fb265c8ec0996af940f4e85a380ff" +checksum = "3bda1634d70d5bd53553cf15dca9842a396e8c799982a3ad22998dc44d961f24" dependencies = [ "serde", "toml", @@ -1590,12 +1600,11 @@ dependencies = [ [[package]] name = "nu-ansi-term" -version = "0.46.0" +version = "0.50.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +checksum = "d4a28e057d01f97e61255210fcff094d74ed0466038633e95017f5beb68e4399" dependencies = [ - "overload", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -1617,12 +1626,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "object" version = "0.36.7" @@ -1656,7 +1659,7 @@ version = "0.10.73" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8505734d46c8ab1e19a1dce3aef597ad87dcb4c37e7188231769bd6bd51cebf8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "cfg-if", "foreign-types", "libc", @@ -1694,12 +1697,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "overload" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" - [[package]] name = "parking" version = "2.2.1" @@ -1749,16 +1746,16 @@ checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.13", + "redox_syscall 0.5.17", "smallvec", "windows-targets 0.52.6", ] [[package]] name = "percent-encoding" -version = "2.3.1" +version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" +checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" [[package]] name = "pgvector" @@ -1841,7 +1838,7 @@ checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" [[package]] name = "portal_corp_extension" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "indoc", @@ -1881,7 +1878,7 @@ dependencies = [ "hmac", "md-5", "memchr", - "rand 0.9.1", + "rand 0.9.2", "sha2", "stringprep", ] @@ -1899,7 +1896,7 @@ dependencies = [ [[package]] name = "postgres_embedded" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "postgres", @@ -1908,7 +1905,7 @@ dependencies = [ [[package]] name = "postgresql_archive" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "async-trait", @@ -1934,7 +1931,7 @@ dependencies = [ "target-triple", "tempfile", "test-log", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "tracing-indicatif", @@ -1944,29 +1941,29 @@ dependencies = [ [[package]] name = "postgresql_commands" -version = "0.18.7" +version = "0.20.0" dependencies = [ "test-log", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", ] [[package]] name = "postgresql_embedded" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "criterion", "postgresql_archive", "postgresql_commands", - "rand 0.9.1", + "rand 0.9.2", "semver", "sqlx", "target-triple", "tempfile", "test-log", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -1974,7 +1971,7 @@ dependencies = [ [[package]] name = "postgresql_extensions" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "async-trait", @@ -1989,7 +1986,7 @@ dependencies = [ "target-triple", "tempfile", "test-log", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tracing", "url", @@ -1997,9 +1994,9 @@ dependencies = [ [[package]] name = "potential_utf" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" dependencies = [ "zerovec", ] @@ -2025,18 +2022,18 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.95" +version = "1.0.101" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" +checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de" dependencies = [ "unicode-ident", ] [[package]] name = "quick-xml" -version = "0.37.5" +version = "0.38.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "331e97a1af0bf59823e6eadffe373d7b27f485be8748f71471c662c1f269b7fb" +checksum = "42a232e7487fc2ef313d96dde7948e7a3c05101870d8985e4fd8d26aedd27b89" dependencies = [ "memchr", "serde", @@ -2044,9 +2041,9 @@ dependencies = [ [[package]] name = "quinn" -version = "0.11.8" +version = "0.11.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +checksum = "b9e20a958963c291dc322d98411f541009df2ced7b5a4f2bd52337638cfccf20" dependencies = [ "bytes", "cfg_aliases", @@ -2055,8 +2052,8 @@ dependencies = [ "quinn-udp", "rustc-hash", "rustls", - "socket2", - "thiserror 2.0.12", + "socket2 0.6.0", + "thiserror 2.0.16", "tokio", "tracing", "web-time", @@ -2064,20 +2061,20 @@ dependencies = [ [[package]] name = "quinn-proto" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ "bytes", "getrandom 0.3.3", "lru-slab", - "rand 0.9.1", + "rand 0.9.2", "ring", "rustc-hash", "rustls", "rustls-pki-types", "slab", - "thiserror 2.0.12", + "thiserror 2.0.16", "tinyvec", "tracing", "web-time", @@ -2085,16 +2082,16 @@ dependencies = [ [[package]] name = "quinn-udp" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +checksum = "addec6a0dcad8a8d96a771f815f0eaf55f9d1805756410b39f5fa81332574cbd" dependencies = [ "cfg_aliases", "libc", "once_cell", - "socket2", + "socket2 0.6.0", "tracing", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -2146,9 +2143,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.9.1" +version = "0.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" dependencies = [ "rand_chacha 0.9.0", "rand_core 0.9.3", @@ -2194,9 +2191,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.10.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" +checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" dependencies = [ "either", "rayon-core", @@ -2204,9 +2201,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.1" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" +checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -2223,68 +2220,53 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.5.13" +version = "0.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" +checksum = "5407465600fb0548f1442edf71dd20683c6ed326200ace4b1ef0763521bb3b77" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", ] [[package]] name = "regex" -version = "1.11.1" +version = "1.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" +checksum = "23d7fd106d8c02486a8d64e778353d1cffe08ce79ac2e82f540c86d0facf6912" dependencies = [ "aho-corasick", "memchr", - "regex-automata 0.4.9", - "regex-syntax 0.8.5", -] - -[[package]] -name = "regex-automata" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" -dependencies = [ - "regex-syntax 0.6.29", + "regex-automata", + "regex-syntax", ] [[package]] name = "regex-automata" -version = "0.4.9" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +checksum = "6b9458fa0bfeeac22b5ca447c63aaf45f28439a709ccd244698632f9aa6394d6" dependencies = [ "aho-corasick", "memchr", - "regex-syntax 0.8.5", + "regex-syntax", ] [[package]] name = "regex-lite" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53a49587ad06b26609c52e423de037e7f57f20d53535d66e08c695f347df952a" - -[[package]] -name = "regex-syntax" -version = "0.6.29" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" +checksum = "943f41321c63ef1c92fd763bfe054d2668f7f225a5c29f0105903dc2fc04ba30" [[package]] name = "regex-syntax" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" +checksum = "caf4aa5b0f434c91fe5c7f1ecb6a5ece2130b02ad2a590589dda5146df959001" [[package]] name = "reqwest" -version = "0.12.20" +version = "0.12.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813" +checksum = "d429f34c8092b2d42c7c93cec323bb4adeb7c67698f70839adec842ec10c7ceb" dependencies = [ "base64", "bytes", @@ -2402,9 +2384,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.25" +version = "0.1.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" +checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" [[package]] name = "rustc-hash" @@ -2414,22 +2396,22 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" -version = "1.0.7" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +checksum = "11181fbabf243db407ef8df94a6ce0b2f9a733bd8be4ad02b4eda9602296cac8" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "errno", "libc", "linux-raw-sys", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "rustls" -version = "0.23.28" +version = "0.23.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" +checksum = "c0ebcbd2f03de0fc1122ad9bb24b127a5a6cd51d72604a3f3c50ac459762b6cc" dependencies = [ "once_cell", "ring", @@ -2448,7 +2430,7 @@ dependencies = [ "openssl-probe", "rustls-pki-types", "schannel", - "security-framework 3.2.0", + "security-framework 3.3.0", ] [[package]] @@ -2463,9 +2445,9 @@ dependencies = [ [[package]] name = "rustls-webpki" -version = "0.103.3" +version = "0.103.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" +checksum = "0a17884ae0c1b773f1ccd2bd4a8c72f16da897310a98b0e84bf349ad5ead92fc" dependencies = [ "ring", "rustls-pki-types", @@ -2474,9 +2456,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.21" +version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" [[package]] name = "ryu" @@ -2523,7 +2505,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "core-foundation 0.9.4", "core-foundation-sys", "libc", @@ -2532,11 +2514,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "3.2.0" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" +checksum = "80fb1d92c5028aa318b4b8bd7302a5bfcf48be96a37fc6fc790f806b0004ee0c" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "core-foundation 0.10.1", "core-foundation-sys", "libc", @@ -2584,9 +2566,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.140" +version = "1.0.143" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" +checksum = "d401abef1d108fbd9cbaebc3e46611f4b1021f714a0597a71f41ee463f5f4a5a" dependencies = [ "itoa", "memchr", @@ -2606,9 +2588,9 @@ dependencies = [ [[package]] name = "serde_spanned" -version = "0.6.9" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" +checksum = "40734c41988f7306bb04f0ecf60ec0f3f1caa34290e4e8ea471dcd3346483b83" dependencies = [ "serde", ] @@ -2664,9 +2646,9 @@ checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "signal-hook-registry" -version = "1.4.5" +version = "1.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" +checksum = "b2a4719bff48cee6b39d12c020eeb490953ad2443b7055bd0b21fca26bd8c28b" dependencies = [ "libc", ] @@ -2685,9 +2667,9 @@ checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" [[package]] name = "slab" -version = "0.4.10" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] name = "smallvec" @@ -2708,6 +2690,16 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "socket2" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "233504af464074f9d066d7b5416c5f9b894a5862a6506e306f7b816cdd6f1807" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "sqlx" version = "0.8.6" @@ -2748,7 +2740,7 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "thiserror 2.0.12", + "thiserror 2.0.16", "tokio", "tokio-stream", "tracing", @@ -2800,7 +2792,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64", - "bitflags 2.9.1", + "bitflags 2.9.3", "byteorder", "crc", "dotenvy", @@ -2824,14 +2816,14 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.12", + "thiserror 2.0.16", "tracing", "whoami", ] [[package]] name = "sqlx_embedded" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "postgresql_embedded", @@ -2870,9 +2862,9 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.103" +version = "2.0.106" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e4307e30089d6fd6aff212f2da3a1f9e32f3223b1f010fb09b7c95f90f3ca1e8" +checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6" dependencies = [ "proc-macro2", "quote", @@ -2918,20 +2910,20 @@ checksum = "1ac9aa371f599d22256307c24a9d748c041e548cbf599f35d890f9d365361790" [[package]] name = "tempfile" -version = "3.20.0" +version = "3.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" +checksum = "15b61f8f20e3a6f7e0649d825294eaf317edce30f82cf6026e7e4cb9222a7d1e" dependencies = [ "fastrand", "getrandom 0.3.3", "once_cell", "rustix", - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] name = "tensor_chord_extension" -version = "0.18.7" +version = "0.20.0" dependencies = [ "anyhow", "indoc", @@ -2945,9 +2937,9 @@ dependencies = [ [[package]] name = "test-log" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7f46083d221181166e5b6f6b1e5f1d499f3a76888826e6cb1d057554157cd0f" +checksum = "1e33b98a582ea0be1168eba097538ee8dd4bbe0f2b01b22ac92ea30054e5be7b" dependencies = [ "env_logger", "test-log-macros", @@ -2956,9 +2948,9 @@ dependencies = [ [[package]] name = "test-log-macros" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "888d0c3c6db53c0fdab160d2ed5e12ba745383d3e85813f2ea0f2b1475ab553f" +checksum = "451b374529930d7601b1eef8d32bc79ae870b6079b069401709c2a8bf9e75f36" dependencies = [ "proc-macro2", "quote", @@ -2976,11 +2968,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +checksum = "3467d614147380f2e4e374161426ff399c91084acd2363eaf549172b3d5e60c0" dependencies = [ - "thiserror-impl 2.0.12", + "thiserror-impl 2.0.16", ] [[package]] @@ -2996,9 +2988,9 @@ dependencies = [ [[package]] name = "thiserror-impl" -version = "2.0.12" +version = "2.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" +checksum = "6c5e1be1c48b9172ee610da68fd9cd2770e7a4056cb3fc98710ee6906f0c7960" dependencies = [ "proc-macro2", "quote", @@ -3036,9 +3028,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +checksum = "bfa5fdc3bce6191a1dbc8c02d5c8bffcf557bafa17c124c5264a458f1b0613fa" dependencies = [ "tinyvec_macros", ] @@ -3051,20 +3043,22 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.45.1" +version = "1.47.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75ef51a33ef1da925cea3e4eb122833cb377c61439ca401b770f54902b806779" +checksum = "89e49afdadebb872d3145a5638b59eb0691ea23e46ca484037cfab3b76b95038" dependencies = [ "backtrace", "bytes", + "io-uring", "libc", "mio", "parking_lot 0.12.4", "pin-project-lite", "signal-hook-registry", - "socket2", + "slab", + "socket2 0.6.0", "tokio-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] @@ -3107,8 +3101,8 @@ dependencies = [ "pin-project-lite", "postgres-protocol", "postgres-types", - "rand 0.9.1", - "socket2", + "rand 0.9.2", + "socket2 0.5.10", "tokio", "tokio-util", "whoami", @@ -3137,9 +3131,9 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.15" +version = "0.7.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66a539a9ad6d5d281510d5bd368c973d636c02dbf8a67300bfb6b950696ad7df" +checksum = "14307c986784f72ef81c89db7d9e28d6ac26d16213b109ea501696195e6e3ce5" dependencies = [ "bytes", "futures-core", @@ -3150,44 +3144,42 @@ dependencies = [ [[package]] name = "toml" -version = "0.8.23" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" +checksum = "75129e1dc5000bfbaa9fee9d1b21f974f9fbad9daec557a521ee6e080825f6e8" dependencies = [ + "indexmap", "serde", "serde_spanned", "toml_datetime", - "toml_edit", + "toml_parser", + "toml_writer", + "winnow", ] [[package]] name = "toml_datetime" -version = "0.6.11" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" +checksum = "bade1c3e902f58d73d3f294cd7f20391c1cb2fbcb643b73566bc773971df91e3" dependencies = [ "serde", ] [[package]] -name = "toml_edit" -version = "0.22.27" +name = "toml_parser" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" +checksum = "b551886f449aa90d4fe2bdaa9f4a2577ad2dde302c61ecf262d80b116db95c10" dependencies = [ - "indexmap", - "serde", - "serde_spanned", - "toml_datetime", - "toml_write", "winnow", ] [[package]] -name = "toml_write" -version = "0.1.2" +name = "toml_writer" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" +checksum = "fcc842091f2def52017664b53082ecbbeb5c7731092bad69d2c63050401dfd64" [[package]] name = "tower" @@ -3211,7 +3203,7 @@ version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags 2.9.1", + "bitflags 2.9.3", "bytes", "futures-util", "http", @@ -3270,9 +3262,9 @@ dependencies = [ [[package]] name = "tracing-indicatif" -version = "0.3.9" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8201ca430e0cd893ef978226fd3516c06d9c494181c8bf4e5b32e30ed4b40aa1" +checksum = "04d4e11e0e27acef25a47f27e9435355fecdc488867fa2bc90e75b0700d2823d" dependencies = [ "indicatif", "tracing", @@ -3293,14 +3285,14 @@ dependencies = [ [[package]] name = "tracing-subscriber" -version = "0.3.19" +version = "0.3.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" +checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" dependencies = [ "matchers", "nu-ansi-term", "once_cell", - "regex", + "regex-automata", "sharded-slab", "smallvec", "thread_local", @@ -3360,6 +3352,12 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a1a07cc7db3810833284e8d372ccdc6da29741639ecc70c9ec107df0fa6154c" +[[package]] +name = "unit-prefix" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "323402cff2dd658f39ca17c789b502021b3f18707c91cdf22e3838e1b4023817" + [[package]] name = "untrusted" version = "0.9.0" @@ -3368,13 +3366,14 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.5.4" +version = "2.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" +checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" dependencies = [ "form_urlencoded", "idna", "percent-encoding", + "serde", ] [[package]] @@ -3467,11 +3466,11 @@ checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.14.2+wasi-0.2.4" +version = "0.14.3+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +checksum = "6a51ae83037bdd272a9e28ce236db8c07016dd0d50c27038b3f407533c030c95" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", ] [[package]] @@ -3605,25 +3604,25 @@ version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki-roots 1.0.1", + "webpki-roots 1.0.2", ] [[package]] name = "webpki-roots" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" +checksum = "7e8983c3ab33d6fb807cfcdad2491c4ea8cbc8ed839181c7dfd9c67c83e261b2" dependencies = [ "rustls-pki-types", ] [[package]] name = "whoami" -version = "1.6.0" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6994d13118ab492c3c80c1f81928718159254c53c472bf9ce36f8dae4add02a7" +checksum = "5d4a4db5077702ca3015d3d02d74974948aba2ad9e12ab7df718ee64ccd7e97d" dependencies = [ - "redox_syscall 0.5.13", + "libredox", "wasite", "web-sys", ] @@ -3646,11 +3645,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +checksum = "0978bf7171b3d90bac376700cb56d606feb40f251a475a5d6634613564460b22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.60.2", ] [[package]] @@ -3659,6 +3658,12 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + [[package]] name = "windows-sys" version = "0.48.0" @@ -3692,7 +3697,7 @@ version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" dependencies = [ - "windows-targets 0.53.2", + "windows-targets 0.53.3", ] [[package]] @@ -3728,10 +3733,11 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.53.2" +version = "0.53.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +checksum = "d5fe6031c4041849d7c496a8ded650796e7b6ecc19df1a431c1a363342e5dc91" dependencies = [ + "windows-link", "windows_aarch64_gnullvm 0.53.0", "windows_aarch64_msvc 0.53.0", "windows_i686_gnu 0.53.0", @@ -3882,21 +3888,15 @@ checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" [[package]] name = "winnow" -version = "0.7.11" +version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" -dependencies = [ - "memchr", -] +checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" [[package]] -name = "wit-bindgen-rt" -version = "0.39.0" +name = "wit-bindgen" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.1", -] +checksum = "052283831dbae3d879dc7f51f3d92703a316ca49f91540417d38591826127814" [[package]] name = "writeable" @@ -3906,9 +3906,9 @@ checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" [[package]] name = "xattr" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d65cbf2f12c15564212d48f4e3dfb87923d25d611f2aed18f4cb23f0413d89e" +checksum = "af3a19837351dc82ba89f8a125e22a3c475f05aba604acc023d62b2739ae2909" dependencies = [ "libc", "rustix", @@ -3998,9 +3998,9 @@ dependencies = [ [[package]] name = "zerovec" -version = "0.11.2" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" dependencies = [ "yoke", "zerofrom", @@ -4020,9 +4020,9 @@ dependencies = [ [[package]] name = "zip" -version = "4.1.0" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af7dcdb4229c0e79c2531a24de7726a0e980417a74fb4d030a35f535665439a0" +checksum = "8835eb39822904d39cb19465de1159e05d371973f0c6df3a365ad50565ddc8b9" dependencies = [ "arbitrary", "crc32fast", @@ -4040,7 +4040,7 @@ checksum = "626bd9fa9734751fc50d6060752170984d7053f5a39061f524cda68023d4db8a" [[package]] name = "zonky" -version = "0.18.7" +version = "0.20.0" dependencies = [ "postgresql_archive", "postgresql_embedded", diff --git a/Cargo.toml b/Cargo.toml index 475f4a4..f32d35f 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -21,51 +21,51 @@ edition = "2024" keywords = ["postgresql", "postgres", "embedded", "database", "server"] license = "(Apache-2.0 OR MIT) AND PostgreSQL" repository = "https://github.com/theseus-rs/postgresql-embedded" -rust-version = "1.87.0" -version = "0.18.7" +rust-version = "1.89.0" +version = "0.20.0" [workspace.dependencies] -anyhow = "1.0.98" -async-trait = "0.1.88" +anyhow = "1.0.99" +async-trait = "0.1.89" axum = "0.8.4" -criterion = "0.6.0" -diesel = "2.2.11" +criterion = "0.7.0" +diesel = "2.2.12" diesel_migrations = "2.2.0" flate2 = "1.1.2" futures-util = "0.3.31" hex = "0.4.3" -indicatif = "0.17.11" +indicatif = "0.18.0" indoc = "2.0.6" -liblzma = "0.4.2" +liblzma = "0.4.4" md-5 = "0.10.6" num-format = "0.4.4" pgvector = "0.4.1" postgres = "0.19.10" -quick-xml = "0.37.5" +quick-xml = "0.38.3" r2d2_postgres = "0.18.2" -rand = "0.9.1" -regex-lite = "0.1.6" -reqwest = { version = "0.12.20", default-features = false } +rand = "0.9.2" +regex-lite = "0.1.7" +reqwest = { version = "0.12.23", default-features = false } reqwest-middleware = "0.4.2" reqwest-retry = "0.7.0" reqwest-tracing = "0.5.8" semver = "1.0.26" serde = "1.0.219" -serde_json = "1.0.140" +serde_json = "1.0.143" sha1 = "0.10.6" sha2 = "0.10.8" sqlx = { version = "0.8.6", default-features = false, features = ["postgres"] } tar = "0.4.44" target-triple = "0.1.4" -tempfile = "3.20.0" -test-log = "0.2.17" -thiserror = "2.0.12" -tokio = "1.45.1" +tempfile = "3.21.0" +test-log = "0.2.18" +thiserror = "2.0.16" +tokio = "1.47.1" tracing = "0.1.41" -tracing-indicatif = "0.3.9" -tracing-subscriber = "0.3.19" -url = "2.5.4" -zip = { version = "4.1.0", default-features = false, features = ["deflate"] } +tracing-indicatif = "0.3.13" +tracing-subscriber = "0.3.20" +url = "2.5.7" +zip = { version = "4.5.0", default-features = false, features = ["deflate"] } [workspace.metadata.release] shared-version = true diff --git a/README.md b/README.md index 5ea3b65..44f1eb9 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,13 @@ async fn main() -> Result<()> { } ``` +## Notes + +Supports using PostgreSQL binaries from: + +* [theseus-rs/postgresql-binaries](https://github.com/theseus-rs/postgresql-binaries) (default) +* [zonkyio/embedded-postgres-binaries](https://github.com/zonkyio/embedded-postgres-binaries) + ## Safety These crates use `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% safe Rust. @@ -69,32 +76,10 @@ at your option. PostgreSQL is covered under [The PostgreSQL License](https://opensource.org/licenses/postgresql). -## Notes - -Supports using PostgreSQL binaries from: - -* [theseus-rs/postgresql-binaries](https://github.com/theseus-rs/postgresql-binaries) (default) -* [zonkyio/embedded-postgres-binaries](https://github.com/zonkyio/embedded-postgres-binaries) - ## Contribution -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any -additional terms or conditions. - - -VSCode Development Container - -
- -GitHub Codespaces - +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as +defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. ## Prior Art diff --git a/deny.toml b/deny.toml index ffd7b58..f0aa4fd 100644 --- a/deny.toml +++ b/deny.toml @@ -19,7 +19,6 @@ allow = [ "BSD-2-Clause", "BSD-3-Clause", "BSL-1.0", - "ISC", "MIT", "PostgreSQL", "Unicode-3.0", diff --git a/examples/archive_async/src/main.rs b/examples/archive_async/src/main.rs index f8df153..71117fd 100644 --- a/examples/archive_async/src/main.rs +++ b/examples/archive_async/src/main.rs @@ -25,7 +25,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_archive_async_main() -> Result<()> { main() } } diff --git a/examples/archive_sync/src/main.rs b/examples/archive_sync/src/main.rs index 44a1643..d657f67 100644 --- a/examples/archive_sync/src/main.rs +++ b/examples/archive_sync/src/main.rs @@ -25,7 +25,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_archive_sync_main() -> Result<()> { main() } } diff --git a/examples/diesel_embedded/src/main.rs b/examples/diesel_embedded/src/main.rs index 2ee12a4..3ecbac4 100644 --- a/examples/diesel_embedded/src/main.rs +++ b/examples/diesel_embedded/src/main.rs @@ -72,7 +72,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_diesel_embedded_main() -> Result<()> { main() } } diff --git a/examples/download_progress_bar/src/main.rs b/examples/download_progress_bar/src/main.rs index 3b37fed..ab1f55f 100644 --- a/examples/download_progress_bar/src/main.rs +++ b/examples/download_progress_bar/src/main.rs @@ -43,7 +43,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_download_progress_bar_main() -> Result<()> { main() } } diff --git a/examples/embedded_async/src/main.rs b/examples/embedded_async/src/main.rs index bc675bb..2402107 100644 --- a/examples/embedded_async/src/main.rs +++ b/examples/embedded_async/src/main.rs @@ -27,7 +27,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_embedded_async_main() -> Result<()> { main() } } diff --git a/examples/embedded_sync/src/main.rs b/examples/embedded_sync/src/main.rs index 0f70a3f..3e8a79f 100644 --- a/examples/embedded_sync/src/main.rs +++ b/examples/embedded_sync/src/main.rs @@ -23,7 +23,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_embedded_sync_main() -> Result<()> { main() } } diff --git a/examples/portal_corp_extension/src/main.rs b/examples/portal_corp_extension/src/main.rs index 237bf4f..622d947 100644 --- a/examples/portal_corp_extension/src/main.rs +++ b/examples/portal_corp_extension/src/main.rs @@ -10,7 +10,7 @@ use tracing::info; use postgresql_embedded::{PostgreSQL, Settings, VersionReq}; -/// Example of how to install and configure the PortalCorp pgvector extension. +/// Example of how to install and configure the `PortalCorp` pgvector extension. /// /// See: #[tokio::main] @@ -18,13 +18,22 @@ async fn main() -> Result<()> { tracing_subscriber::fmt().compact().init(); info!("Installing PostgreSQL"); + let postgresql_version = VersionReq::parse("=16.4.0")?; let settings = Settings { - version: VersionReq::parse("=16.4.0")?, + version: postgresql_version.clone(), ..Default::default() }; let mut postgresql = PostgreSQL::new(settings); postgresql.setup().await?; + let settings = postgresql.settings(); + // Skip the test if the PostgreSQL version does not match; when testing with the 'bundled' + // feature, the version may vary and the test will fail. + if settings.version != postgresql_version { + eprintln!("Postgresql version does not match"); + return Ok(()); + } + info!("Installing the vector extension from PortalCorp"); postgresql_extensions::install( postgresql.settings(), @@ -120,10 +129,12 @@ async fn execute_query(pool: &PgPool, query: &str) -> Result<()> { #[cfg(test)] mod test { + #[cfg(not(all(target_os = "linux", target_arch = "x86_64")))] use super::*; + #[cfg(not(all(target_os = "linux", target_arch = "x86_64")))] #[test] - fn test_main() -> Result<()> { + fn test_portal_corp_extension_main() -> Result<()> { main() } } diff --git a/examples/postgres_embedded/src/main.rs b/examples/postgres_embedded/src/main.rs index d5a9ad5..eaddef9 100644 --- a/examples/postgres_embedded/src/main.rs +++ b/examples/postgres_embedded/src/main.rs @@ -93,7 +93,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_postgres_embedded_main() -> Result<()> { main() } } diff --git a/examples/sqlx_embedded/src/main.rs b/examples/sqlx_embedded/src/main.rs index 802227c..6152fac 100644 --- a/examples/sqlx_embedded/src/main.rs +++ b/examples/sqlx_embedded/src/main.rs @@ -92,7 +92,7 @@ mod test { use super::*; #[test] - fn test_main() -> Result<()> { + fn test_sqlx_embedded_main() -> Result<()> { main() } } diff --git a/examples/tensor_chord_extension/src/main.rs b/examples/tensor_chord_extension/src/main.rs index a4054d9..e6c6346 100644 --- a/examples/tensor_chord_extension/src/main.rs +++ b/examples/tensor_chord_extension/src/main.rs @@ -9,7 +9,7 @@ use tracing::info; use postgresql_embedded::{PostgreSQL, Settings, VersionReq}; -/// Example of how to install and configure the TensorChord vector extension. +/// Example of how to install and configure the `TensorChord` vector extension. /// /// See: #[tokio::main] @@ -147,13 +147,14 @@ async fn execute_query(pool: &PgPool, query: &str) -> Result<()> { Ok(()) } -#[cfg(target_os = "linux")] #[cfg(test)] mod test { + #[cfg(not(all(target_os = "linux", target_arch = "x86_64")))] use super::*; + #[cfg(not(all(target_os = "linux", target_arch = "x86_64")))] #[test] - fn test_main() -> Result<()> { + fn test_tensor_chord_extension_main() -> Result<()> { main() } } diff --git a/examples/zonky/src/main.rs b/examples/zonky/src/main.rs index 05c8880..96eda9c 100644 --- a/examples/zonky/src/main.rs +++ b/examples/zonky/src/main.rs @@ -27,10 +27,12 @@ async fn main() -> Result<()> { #[cfg(test)] mod test { + #[cfg(not(all(target_os = "linux", target_arch = "x86_64")))] use super::*; + #[cfg(not(all(target_os = "linux", target_arch = "x86_64")))] #[test] - fn test_main() -> Result<()> { + fn test_zonky_main() -> Result<()> { main() } } diff --git a/postgresql_archive/README.md b/postgresql_archive/README.md index 9bc0d87..3877e22 100644 --- a/postgresql_archive/README.md +++ b/postgresql_archive/README.md @@ -112,6 +112,5 @@ at your option. ## Contribution -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any -additional terms or conditions. +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as +defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. diff --git a/postgresql_archive/src/matcher/registry.rs b/postgresql_archive/src/matcher/registry.rs index 77ab836..2b64f72 100644 --- a/postgresql_archive/src/matcher/registry.rs +++ b/postgresql_archive/src/matcher/registry.rs @@ -27,8 +27,8 @@ impl MatchersRegistry { } } - /// Registers a matcher for a supports function. Newly registered matchers with the take - /// precedence over existing ones. + /// Registers a matcher for a supports function. Newly registered matchers will take precedence + /// over existing ones. fn register(&mut self, supports_fn: SupportsFn, matcher_fn: MatcherFn) { self.matchers.insert( 0, @@ -73,8 +73,8 @@ impl Default for MatchersRegistry { } } -/// Registers a matcher for a supports function. Newly registered matchers with the take -/// precedence over existing ones. +/// Registers a matcher for a supports function. Newly registered matchers will take precedence over +/// existing ones. /// /// # Errors /// * If the registry is poisoned. diff --git a/postgresql_commands/README.md b/postgresql_commands/README.md index 80e40f5..69cd6c1 100644 --- a/postgresql_commands/README.md +++ b/postgresql_commands/README.md @@ -52,6 +52,5 @@ at your option. ## Contribution -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any -additional terms or conditions. +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as +defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. diff --git a/postgresql_commands/src/pg_dump.rs b/postgresql_commands/src/pg_dump.rs index 703ced5..e6f5813 100644 --- a/postgresql_commands/src/pg_dump.rs +++ b/postgresql_commands/src/pg_dump.rs @@ -30,7 +30,7 @@ pub struct PgDumpBuilder { verbose: bool, version: bool, no_privileges: bool, - compression: Option, + compress: Option, binary_upgrade: bool, column_inserts: bool, attribute_inserts: bool, @@ -243,10 +243,10 @@ impl PgDumpBuilder { self } - /// Set the compression level to use + /// Set the compress level to use #[must_use] - pub fn compression>(mut self, compress: S) -> Self { - self.compression = Some(compress.as_ref().to_os_string()); + pub fn compress>(mut self, compress: S) -> Self { + self.compress = Some(compress.as_ref().to_os_string()); self } @@ -638,9 +638,9 @@ impl CommandBuilder for PgDumpBuilder { args.push("--no-privileges".into()); } - if let Some(compression) = &self.compression { - args.push("--compression".into()); - args.push(compression.into()); + if let Some(compress) = &self.compress { + args.push("--compress".into()); + args.push(compress.into()); } if self.binary_upgrade { @@ -887,7 +887,7 @@ mod tests { .verbose() .version() .no_privileges() - .compression("compression") + .compress("compress") .binary_upgrade() .column_inserts() .attribute_inserts() @@ -935,7 +935,7 @@ mod tests { assert_eq!( format!( - r#"{command_prefix}"pg_dump" "--data-only" "--large-objects" "--no-large-objects" "--clean" "--create" "--extension" "extension" "--encoding" "UTF8" "--file" "file" "--format" "format" "--jobs" "jobs" "--schema" "schema" "--exclude-schema" "exclude_schema" "--no-owner" "--no-reconnect" "--schema-only" "--superuser" "superuser" "--table" "table" "--exclude-table" "exclude_table" "--verbose" "--version" "--no-privileges" "--compression" "compression" "--binary-upgrade" "--column-inserts" "--attribute-inserts" "--disable-dollar-quoting" "--disable-triggers" "--enable-row-security" "--exclude-table-data-and-children" "exclude_table_data_and_children" "--extra-float-digits" "extra_float_digits" "--if-exists" "--include-foreign-data" "include_foreign_data" "--inserts" "--load-via-partition-root" "--lock-wait-timeout" "10" "--no-comments" "--no-publications" "--no-security-labels" "--no-subscriptions" "--no-table-access-method" "--no-tablespaces" "--no-toast-compression" "--no-unlogged-table-data" "--on-conflict-do-nothing" "--quote-all-identifiers" "--rows-per-insert" "100" "--section" "section" "--serializable-deferrable" "--snapshot" "snapshot" "--strict-names" "--table-and-children" "table_and_children" "--use-set-session-authorization" "--help" "--dbname" "dbname" "--host" "localhost" "--port" "5432" "--username" "postgres" "--no-password" "--password" "--role" "role""# + r#"{command_prefix}"pg_dump" "--data-only" "--large-objects" "--no-large-objects" "--clean" "--create" "--extension" "extension" "--encoding" "UTF8" "--file" "file" "--format" "format" "--jobs" "jobs" "--schema" "schema" "--exclude-schema" "exclude_schema" "--no-owner" "--no-reconnect" "--schema-only" "--superuser" "superuser" "--table" "table" "--exclude-table" "exclude_table" "--verbose" "--version" "--no-privileges" "--compress" "compress" "--binary-upgrade" "--column-inserts" "--attribute-inserts" "--disable-dollar-quoting" "--disable-triggers" "--enable-row-security" "--exclude-table-data-and-children" "exclude_table_data_and_children" "--extra-float-digits" "extra_float_digits" "--if-exists" "--include-foreign-data" "include_foreign_data" "--inserts" "--load-via-partition-root" "--lock-wait-timeout" "10" "--no-comments" "--no-publications" "--no-security-labels" "--no-subscriptions" "--no-table-access-method" "--no-tablespaces" "--no-toast-compression" "--no-unlogged-table-data" "--on-conflict-do-nothing" "--quote-all-identifiers" "--rows-per-insert" "100" "--section" "section" "--serializable-deferrable" "--snapshot" "snapshot" "--strict-names" "--table-and-children" "table_and_children" "--use-set-session-authorization" "--help" "--dbname" "dbname" "--host" "localhost" "--port" "5432" "--username" "postgres" "--no-password" "--password" "--role" "role""# ), command.to_command_string() ); diff --git a/postgresql_embedded/Cargo.toml b/postgresql_embedded/Cargo.toml index e6b17ca..5ef1efb 100644 --- a/postgresql_embedded/Cargo.toml +++ b/postgresql_embedded/Cargo.toml @@ -13,14 +13,14 @@ version.workspace = true [build-dependencies] anyhow = { workspace = true } -postgresql_archive = { path = "../postgresql_archive", version = "0.18.7", default-features = false } +postgresql_archive = { path = "../postgresql_archive", version = "0.20.0", default-features = false } target-triple = { workspace = true } tokio = { workspace = true, features = ["full"] } url = { workspace = true } [dependencies] -postgresql_archive = { path = "../postgresql_archive", version = "0.18.7", default-features = false } -postgresql_commands = { path = "../postgresql_commands", version = "0.18.7" } +postgresql_archive = { path = "../postgresql_archive", version = "0.20.0", default-features = false } +postgresql_commands = { path = "../postgresql_commands", version = "0.20.0" } rand = { workspace = true } semver = { workspace = true } sqlx = { workspace = true, features = ["runtime-tokio"] } diff --git a/postgresql_embedded/README.md b/postgresql_embedded/README.md index 76320ff..9e4b800 100644 --- a/postgresql_embedded/README.md +++ b/postgresql_embedded/README.md @@ -134,6 +134,13 @@ The PostgreSQL binaries can also be obtained from a different GitHub source by s environment variable. The repository must contain the releases with archives in same structure as [theseus-rs/postgresql_binaries](https://github.com/theseus-rs/postgresql-binaries). +## Notes + +Supports using PostgreSQL binaries from: + +* [theseus-rs/postgresql-binaries](https://github.com/theseus-rs/postgresql-binaries) (default) +* [zonkyio/embedded-postgres-binaries](https://github.com/zonkyio/embedded-postgres-binaries) + ## Safety This crate uses `#![forbid(unsafe_code)]` to ensure everything is implemented in 100% safe Rust. @@ -147,13 +154,7 @@ Licensed under either of at your option. -## Notes - -Uses PostgreSQL binaries from [theseus-rs/postgresql-binaries](https://github.com/theseus-rs/postgresql_binaries) by -default. - ## Contribution -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any -additional terms or conditions. +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as +defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. diff --git a/postgresql_embedded/build/bundle.rs b/postgresql_embedded/build/bundle.rs index fb2171e..1feda94 100644 --- a/postgresql_embedded/build/bundle.rs +++ b/postgresql_embedded/build/bundle.rs @@ -41,7 +41,7 @@ pub(crate) async fn stage_postgresql_archive() -> Result<()> { println!("Target: {}", target_triple::TARGET); let out_dir = PathBuf::from(env::var("OUT_DIR")?); - println!("OUT_DIR: {:?}", out_dir); + println!("OUT_DIR: {out_dir:?}"); let mut archive_version_file = out_dir.clone(); archive_version_file.push("postgresql.version"); @@ -49,7 +49,7 @@ pub(crate) async fn stage_postgresql_archive() -> Result<()> { archive_file.push("postgresql.tar.gz"); if archive_version_file.exists() && archive_file.exists() { - println!("PostgreSQL archive exists: {:?}", archive_file); + println!("PostgreSQL archive exists: {archive_file:?}"); return Ok(()); } @@ -59,7 +59,7 @@ pub(crate) async fn stage_postgresql_archive() -> Result<()> { let mut file = File::create(archive_file.clone())?; file.write_all(&archive)?; file.sync_data()?; - println!("PostgreSQL archive written to: {:?}", archive_file); + println!("PostgreSQL archive written to: {archive_file:?}"); Ok(()) } diff --git a/postgresql_embedded/src/postgresql.rs b/postgresql_embedded/src/postgresql.rs index 346bfaf..3b22bca 100644 --- a/postgresql_embedded/src/postgresql.rs +++ b/postgresql_embedded/src/postgresql.rs @@ -1,9 +1,11 @@ use crate::error::Error::{DatabaseInitializationError, DatabaseStartError, DatabaseStopError}; use crate::error::Result; use crate::settings::{BOOTSTRAP_DATABASE, BOOTSTRAP_SUPERUSER, Settings}; +use postgresql_archive::extract; +#[cfg(not(feature = "bundled"))] +use postgresql_archive::get_archive; use postgresql_archive::get_version; use postgresql_archive::{ExactVersion, ExactVersionReq}; -use postgresql_archive::{extract, get_archive}; #[cfg(feature = "tokio")] use postgresql_commands::AsyncCommandExecutor; use postgresql_commands::CommandBuilder; @@ -55,15 +57,15 @@ impl PostgreSQL { // conflicts with other versions. This will also facilitate setting the status of the // server to the correct initial value. If the minor and release version are not set, the // installation directory will be determined dynamically during the installation process. - if !postgresql.settings.trust_installation_dir { - if let Some(version) = postgresql.settings.version.exact_version() { - let path = &postgresql.settings.installation_dir; - let version_string = version.to_string(); - - if !path.ends_with(&version_string) { - postgresql.settings.installation_dir = - postgresql.settings.installation_dir.join(version_string); - } + if !postgresql.settings.trust_installation_dir + && let Some(version) = postgresql.settings.version.exact_version() + { + let path = &postgresql.settings.installation_dir; + let version_string = version.to_string(); + + if !path.ends_with(&version_string) { + postgresql.settings.installation_dir = + postgresql.settings.installation_dir.join(version_string); } } postgresql @@ -103,10 +105,11 @@ impl PostgreSQL { .file_name() .and_then(|file_name| Version::parse(&file_name.to_string_lossy()).ok()); // If this directory matches the version requirement, we're done. - if let Some(path_version) = maybe_path_version { - if self.settings.version.matches(&path_version) && path.exists() { - return Some(path.clone()); - } + if let Some(path_version) = maybe_path_version + && self.settings.version.matches(&path_version) + && path.exists() + { + return Some(path.clone()); } // Get all directories in the path as versions. @@ -178,6 +181,11 @@ impl PostgreSQL { /// returned. #[instrument(skip(self))] async fn install(&mut self) -> Result<()> { + #[cfg(feature = "bundled")] + { + self.settings.version = crate::settings::ARCHIVE_VERSION.clone(); + } + debug!( "Starting installation process for version {}", self.settings.version @@ -200,28 +208,21 @@ impl PostgreSQL { let url = &self.settings.releases_url; + // When the `bundled` feature is enabled, use the bundled archive instead of downloading it + // from the internet. #[cfg(feature = "bundled")] - // If the requested version is the same as the version of the bundled archive, use the bundled - // archive. This avoids downloading the archive in environments where internet access is - // restricted or undesirable. - let (version, bytes) = if *crate::settings::ARCHIVE_VERSION == self.settings.version { + let bytes = { debug!("Using bundled installation archive"); - ( - self.settings.version.clone(), - crate::settings::ARCHIVE.to_vec(), - ) - } else { - let (version, bytes) = get_archive(url, &self.settings.version).await?; - (version.exact_version_req()?, bytes) + crate::settings::ARCHIVE.to_vec() }; #[cfg(not(feature = "bundled"))] - let (version, bytes) = { + let bytes = { let (version, bytes) = get_archive(url, &self.settings.version).await?; - (version.exact_version_req()?, bytes) + self.settings.version = version.exact_version_req()?; + bytes }; - self.settings.version = version; extract(url, &bytes, &self.settings.installation_dir).await?; debug!( diff --git a/postgresql_embedded/src/settings.rs b/postgresql_embedded/src/settings.rs index 9f09dfa..17c3988 100644 --- a/postgresql_embedded/src/settings.rs +++ b/postgresql_embedded/src/settings.rs @@ -1,5 +1,7 @@ use crate::error::{Error, Result}; use postgresql_archive::VersionReq; +#[cfg(feature = "bundled")] +use postgresql_archive::{ExactVersionReq, Version}; use rand::Rng; use rand::distr::Alphanumeric; use std::collections::HashMap; @@ -8,8 +10,6 @@ use std::env::{current_dir, home_dir}; use std::ffi::OsString; use std::path::PathBuf; #[cfg(feature = "bundled")] -use std::str::FromStr; -#[cfg(feature = "bundled")] use std::sync::LazyLock; use std::time::Duration; use url::Url; @@ -18,7 +18,8 @@ use url::Url; #[expect(clippy::unwrap_used)] pub(crate) static ARCHIVE_VERSION: LazyLock = LazyLock::new(|| { let version_string = include_str!(concat!(std::env!("OUT_DIR"), "/postgresql.version")); - let version_req = VersionReq::from_str(&format!("={version_string}")).unwrap(); + let version = Version::parse(version_string).unwrap(); + let version_req = version.exact_version_req().unwrap(); tracing::debug!("Bundled installation archive version {version_string}"); version_req }); @@ -198,12 +199,12 @@ impl Settings { } let configuration_prefix = "configuration."; for (key, value) in &query_parameters { - if key.starts_with(configuration_prefix) { - if let Some(configuration_key) = key.strip_prefix(configuration_prefix) { - settings - .configuration - .insert(configuration_key.to_string(), value.to_string()); - } + if key.starts_with(configuration_prefix) + && let Some(configuration_key) = key.strip_prefix(configuration_prefix) + { + settings + .configuration + .insert(configuration_key.to_string(), value.to_string()); } } diff --git a/postgresql_embedded/tests/blocking.rs b/postgresql_embedded/tests/blocking.rs index bbf6081..f52f362 100644 --- a/postgresql_embedded/tests/blocking.rs +++ b/postgresql_embedded/tests/blocking.rs @@ -7,7 +7,7 @@ use test_log::test; #[cfg(feature = "blocking")] #[test] -fn test_lifecycle() -> Result<()> { +fn test_embedded_blocking_lifecycle() -> Result<()> { let mut postgresql = PostgreSQL::default(); let settings = postgresql.settings(); diff --git a/postgresql_embedded/tests/postgresql.rs b/postgresql_embedded/tests/postgresql.rs index 71cff48..90d288d 100644 --- a/postgresql_embedded/tests/postgresql.rs +++ b/postgresql_embedded/tests/postgresql.rs @@ -34,7 +34,7 @@ async fn lifecycle() -> Result<()> { } #[test(tokio::test)] -async fn test_lifecycle() -> Result<()> { +async fn test_embedded_async_lifecycle() -> Result<()> { lifecycle().await } diff --git a/postgresql_extensions/Cargo.toml b/postgresql_extensions/Cargo.toml index 610b985..f3b75a9 100644 --- a/postgresql_extensions/Cargo.toml +++ b/postgresql_extensions/Cargo.toml @@ -12,8 +12,8 @@ version.workspace = true [dependencies] async-trait = { workspace = true } -postgresql_archive = { path = "../postgresql_archive", version = "0.18.7", default-features = false } -postgresql_commands = { path = "../postgresql_commands", version = "0.18.7", default-features = false } +postgresql_archive = { path = "../postgresql_archive", version = "0.20.0", default-features = false } +postgresql_commands = { path = "../postgresql_commands", version = "0.20.0", default-features = false } regex-lite = { workspace = true } reqwest = { workspace = true, default-features = false, features = ["json"] } semver = { workspace = true, features = ["serde"] } @@ -28,7 +28,7 @@ url = { workspace = true } [dev-dependencies] anyhow = { workspace = true } -postgresql_embedded = { path = "../postgresql_embedded", version = "0.18.7" } +postgresql_embedded = { path = "../postgresql_embedded", version = "0.20.0" } test-log = { workspace = true } tokio = { workspace = true, features = ["full"] } diff --git a/postgresql_extensions/README.md b/postgresql_extensions/README.md index 3cbe89c..c7c119d 100644 --- a/postgresql_extensions/README.md +++ b/postgresql_extensions/README.md @@ -79,6 +79,5 @@ at your option. ## Contribution -Unless you explicitly state otherwise, any contribution intentionally submitted -for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any -additional terms or conditions. +Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as +defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions. diff --git a/postgresql_extensions/tests/blocking.rs b/postgresql_extensions/tests/blocking.rs index 5f4ae16..2af0144 100644 --- a/postgresql_extensions/tests/blocking.rs +++ b/postgresql_extensions/tests/blocking.rs @@ -22,10 +22,11 @@ fn test_get_available_extensions() -> anyhow::Result<()> { #[cfg(all(target_os = "linux", feature = "blocking", feature = "tensor-chord"))] #[test] -fn test_lifecycle() -> anyhow::Result<()> { +fn test_extensions_blocking_lifecycle() -> anyhow::Result<()> { let installation_dir = tempfile::tempdir()?.path().to_path_buf(); + let postgresql_version = semver::VersionReq::parse("=16.4.0")?; let settings = postgresql_embedded::Settings { - version: postgresql_embedded::VersionReq::parse("=16.4.0")?, + version: postgresql_version.clone(), installation_dir: installation_dir.clone(), ..Default::default() }; @@ -34,6 +35,12 @@ fn test_lifecycle() -> anyhow::Result<()> { postgresql.setup()?; let settings = postgresql.settings(); + // Skip the test if the PostgreSQL version does not match; when testing with the 'bundled' + // feature, the version may vary and the test will fail. + if settings.version != postgresql_version { + return Ok(()); + } + let namespace = "tensor-chord"; let name = "pgvecto.rs"; let version = semver::VersionReq::parse("=0.3.0")?; diff --git a/postgresql_extensions/tests/extensions.rs b/postgresql_extensions/tests/extensions.rs index c6f45ed..2b90cfa 100644 --- a/postgresql_extensions/tests/extensions.rs +++ b/postgresql_extensions/tests/extensions.rs @@ -21,10 +21,11 @@ async fn test_get_available_extensions() -> Result<()> { #[cfg(all(target_os = "linux", feature = "tensor-chord"))] #[tokio::test] -async fn test_lifecycle() -> Result<()> { +async fn test_extensions_tensor_chord_lifecycle() -> Result<()> { let installation_dir = tempfile::tempdir()?.path().to_path_buf(); + let postgresql_version = semver::VersionReq::parse("=16.4.0")?; let settings = postgresql_embedded::Settings { - version: postgresql_embedded::VersionReq::parse("=16.4.0")?, + version: postgresql_version.clone(), installation_dir: installation_dir.clone(), ..Default::default() }; @@ -33,6 +34,12 @@ async fn test_lifecycle() -> Result<()> { postgresql.setup().await?; let settings = postgresql.settings(); + // Skip the test if the PostgreSQL version does not match; when testing with the 'bundled' + // feature, the version may vary and the test will fail. + if settings.version != postgresql_version { + return Ok(()); + } + let namespace = "tensor-chord"; let name = "pgvecto.rs"; let version = semver::VersionReq::parse("=0.3.0")?; diff --git a/postgresql_extensions/tests/portal_corp.rs b/postgresql_extensions/tests/portal_corp.rs index 214532e..ff6130f 100644 --- a/postgresql_extensions/tests/portal_corp.rs +++ b/postgresql_extensions/tests/portal_corp.rs @@ -4,11 +4,11 @@ )))] #[cfg(feature = "portal-corp")] #[tokio::test] -async fn test_lifecycle() -> anyhow::Result<()> { +async fn test_extensions_portal_corp_lifecycle() -> anyhow::Result<()> { let installation_dir = tempfile::tempdir()?.path().to_path_buf(); let postgresql_version = semver::VersionReq::parse("=16.4.0")?; let settings = postgresql_embedded::Settings { - version: postgresql_version, + version: postgresql_version.clone(), installation_dir: installation_dir.clone(), ..Default::default() }; @@ -17,6 +17,12 @@ async fn test_lifecycle() -> anyhow::Result<()> { postgresql.setup().await?; let settings = postgresql.settings(); + // Skip the test if the PostgreSQL version does not match; when testing with the 'bundled' + // feature, the version may vary and the test will fail. + if settings.version != postgresql_version { + return Ok(()); + } + let namespace = "portal-corp"; let name = "pgvector_compiled"; let version = semver::VersionReq::parse("=0.16.12")?; diff --git a/postgresql_extensions/tests/steampipe.rs b/postgresql_extensions/tests/steampipe.rs index e6d3790..222daf5 100644 --- a/postgresql_extensions/tests/steampipe.rs +++ b/postgresql_extensions/tests/steampipe.rs @@ -1,11 +1,11 @@ #[cfg(any(target_os = "linux", target_os = "macos"))] #[cfg(feature = "steampipe")] #[tokio::test] -async fn test_lifecycle() -> anyhow::Result<()> { +async fn test_extensions_steampipe_lifecycle() -> anyhow::Result<()> { let installation_dir = tempfile::tempdir()?.path().to_path_buf(); let postgresql_version = semver::VersionReq::parse("=15.7.0")?; let settings = postgresql_embedded::Settings { - version: postgresql_version, + version: postgresql_version.clone(), installation_dir: installation_dir.clone(), ..Default::default() }; @@ -14,6 +14,12 @@ async fn test_lifecycle() -> anyhow::Result<()> { postgresql.setup().await?; let settings = postgresql.settings(); + // Skip the test if the PostgreSQL version does not match; when testing with the 'bundled' + // feature, the version may vary and the test will fail. + if settings.version != postgresql_version { + return Ok(()); + } + let namespace = "steampipe"; let name = "csv"; let version = semver::VersionReq::parse("=0.12.0")?; diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 291696d..02cb8fc 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,3 +1,3 @@ [toolchain] -channel = "1.87.0" +channel = "stable" profile = "default"