From 31b7ccb0b92db6c817b6f148601562d950e01ada Mon Sep 17 00:00:00 2001 From: Ildar Musin Date: Wed, 6 Nov 2024 10:47:56 +0100 Subject: [PATCH] Upgrade to pgrx 0.12.8 and add PostgreSQL 17 support (#824) --------- Co-authored-by: Vinh Le Co-authored-by: Sebastian Webber Co-authored-by: Philip Krauss <35487337+philkra@users.noreply.github.com> Co-authored-by: Brent Graveland --- .github/workflows/ci.yml | 19 +- .github/workflows/clippy_rustfmt.yml | 2 +- .github/workflows/release.yml | 2 +- Cargo.lock | 1476 ++++++++++------- Readme.md | 34 +- bors.toml | 17 - docker/ci/setup.sh | 6 +- extension/Cargo.toml | 17 +- extension/src/aggregate_utils.rs | 2 +- extension/src/bin/pgrx_embed.rs | 1 + extension/src/datum_utils.rs | 3 +- extension/src/frequency.rs | 12 +- extension/src/raw.rs | 38 +- extension/src/serialization.rs | 26 +- extension/src/serialization/collations.rs | 24 +- extension/src/serialization/functions.rs | 5 +- extension/src/serialization/types.rs | 16 +- extension/src/state_aggregate/accessors.rs | 20 +- extension/src/state_aggregate/rollup.rs | 8 +- extension/src/stats_agg.rs | 38 +- extension/src/time_vector/pipeline.rs | 10 +- .../src/time_vector/pipeline/arithmetic.rs | 34 +- extension/src/time_vector/pipeline/delta.rs | 5 +- extension/src/time_vector/pipeline/fill_to.rs | 4 +- extension/src/time_vector/pipeline/filter.rs | 4 +- extension/src/time_vector/pipeline/lambda.rs | 10 + .../time_vector/pipeline/lambda/executor.rs | 10 + .../src/time_vector/pipeline/lambda/parser.rs | 2 + extension/src/time_vector/pipeline/map.rs | 18 +- extension/src/time_vector/pipeline/sort.rs | 2 +- extension/src/type_builder.rs | 74 +- tools/build | 4 +- tools/dependencies.sh | 8 +- 33 files changed, 1218 insertions(+), 733 deletions(-) delete mode 100644 bors.toml create mode 100644 extension/src/bin/pgrx_embed.rs diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e0b7981d..9937ecb3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -34,12 +34,12 @@ jobs: name: Test Postgres runs-on: ubuntu-20.04 container: - image: ${{ inputs.container-image || 'timescaledev/toolkit-builder' }}:${{ matrix.container.image }} + image: ${{ inputs.container-image || 'timescaledev/toolkit-builder-test' }}:${{ matrix.container.image }} strategy: fail-fast: false max-parallel: 12 matrix: - pgversion: [13, 14, 15, 16] + pgversion: [14, 15, 16, 17] container: - os: rockylinux version: "9" @@ -69,7 +69,6 @@ jobs: version: "22.04" image: ubuntu-22.04-amd64 schedule: ${{ inputs.all-platforms || ( github.event_name == 'schedule' && github.event.schedule == '0 6 * * 1-4' ) }} - exclude: - container: skip: true @@ -80,17 +79,27 @@ jobs: os: centos version: "7" pgversion: 16 + include: # TimescaleDB as of 2.12.0 no longer supports PostgreSQL 12. # To allow us to do run CI against PostgreSQL 12, we therefore explicitly # remove all CI's, except if we are run against the latest supported TimescaleDB # version for PostgreSQL 12, which is 2.11.2 - include: - pgversion: 12 container: image: debian-11-amd64 os: debian version: "11" tsdb_commit: 2.11.2 + # TimescaleDB as of 2.16.0 no longer supports PostgreSQL 13. + # To allow us to do run CI against PostgreSQL 13, we therefore explicitly + # remove all CI's, except if we are run against the latest supported TimescaleDB + # version for PostgreSQL 13, which is 2.15.3 + - pgversion: 13 + container: + image: debian-11-amd64 + os: debian + version: "11" + tsdb_commit: 2.15.3 env: # TODO Why? Cargo default is to pass `-C incremental` to rustc; why don't we want that? # https://doc.rust-lang.org/rustc/codegen-options/index.html#incremental @@ -124,7 +133,7 @@ jobs: - name: Build and install TimescaleDB if: ${{ (github.event_name == 'schedule' && github.event.schedule == '0 8 * * 1-4') || inputs.tsdb-commit != '' }} - run: ./tools/install-timescaledb '${{ matrix.pgversion }}' '${{ matrix.tsdb_commit || inputs.tsdb-repo || 'https://github.com/timescale/timescaledb.git' }}' '${{ inputs.tsdb-commit == '' && 'main' || matrix.tsdb_commit || inputs.tsdb-commit }}' + run: ./tools/install-timescaledb '${{ matrix.pgversion }}' '${{ inputs.tsdb-repo || 'https://github.com/timescale/timescaledb.git' }}' '${{ inputs.tsdb-commit == '' && 'main' || matrix.tsdb_commit || inputs.tsdb-commit }}' # TODO After the container image contains a primed target dir, is this still worth it? # Only possible advantage is this one is per-pg-version but what's the impact? diff --git a/.github/workflows/clippy_rustfmt.yml b/.github/workflows/clippy_rustfmt.yml index c4817c44..43125aa0 100644 --- a/.github/workflows/clippy_rustfmt.yml +++ b/.github/workflows/clippy_rustfmt.yml @@ -18,7 +18,7 @@ jobs: runs-on: ubuntu-20.04 container: # Duplicated from ci.yml - image: ${{ inputs.container-image || 'timescaledev/toolkit-builder:debian-11-amd64' }} + image: ${{ inputs.container-image || 'timescaledev/toolkit-builder-test:debian-11-amd64' }} env: # TODO: See TODOs on duplicate block in ci.yml CARGO_INCREMENTAL: 0 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 96a9c307..acea07bb 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -22,7 +22,7 @@ jobs: name: Release runs-on: ubuntu-20.04 container: - image: timescaledev/toolkit-builder:debian-11-amd64 + image: timescaledev/toolkit-builder-test:debian-11-amd64 steps: - name: Checkout Repository diff --git a/Cargo.lock b/Cargo.lock index d4d6114a..601dad46 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aggregate_builder" @@ -28,24 +28,34 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "1.1.1" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea5d730647d4fadd988536d06fecce94b7b4f2a7efdae548f1cf4b63205518ab" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] +[[package]] +name = "annotate-snippets" +version = "0.9.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ccaf7e9dfbb6ab22c82e473cd1a8a7bd313c19a5b7e40970f3d89ef5a5c9e81e" +dependencies = [ + "unicode-width", + "yansi-term", +] + [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "74f37166d7d48a0284b99dd824694c26119c700b53bf0d1540cdb147dbdaaf13" [[package]] name = "approx" @@ -71,22 +81,13 @@ version = "0.1.0" [[package]] name = "async-trait" -version = "0.1.73" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", -] - -[[package]] -name = "atomic-polyfill" -version = "0.1.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3ff7eb3f316534d83a8a2c3d1674ace8a5a71198eba31e2e2b597833f699b28" -dependencies = [ - "critical-section", + "syn 2.0.87", ] [[package]] @@ -96,7 +97,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b29ec3788e96fb4fdb275ccb9d62811f2fa903d76c5eb4dd6fe7d09a7ed5871f" dependencies = [ "cfg-if", - "rustc_version 0.3.3", + "rustc_version", ] [[package]] @@ -112,23 +113,23 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets 0.52.6", ] [[package]] @@ -139,9 +140,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "base64" -version = "0.21.4" +version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2" +checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[package]] name = "bincode" @@ -154,22 +155,21 @@ dependencies = [ [[package]] name = "bindgen" -version = "0.68.1" +version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "726e4313eb6ec35d2730258ad4e15b547ee75d6afaa1361a922e78e59b7d8078" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.4.0", + "annotate-snippets", + "bitflags 2.6.0", "cexpr", "clang-sys", - "lazy_static", - "lazycell", - "peeking_take_while", + "itertools 0.13.0", "proc-macro2", "quote", "regex", "rustc-hash", "shlex", - "syn 2.0.37", + "syn 2.0.87", ] [[package]] @@ -195,9 +195,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.4.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bitvec" @@ -222,9 +222,9 @@ dependencies = [ [[package]] name = "bstr" -version = "1.6.2" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2f7349907b712260e64b0afe2f84692af14a454be26187d9df565c7f69266a" +checksum = "40723b8fb387abc38f4f4a37c09073622e41dd12327033091ef8950659e6dc0c" dependencies = [ "memchr", "serde", @@ -232,33 +232,65 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytecount" -version = "0.6.4" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad152d03a2c813c80bb94fedbf3a3f02b28f793e39e7c214c8a0bcc196343de7" +checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ac0150caa2ae65ca5bd83f25c7de183dea78d4d366469f148435e2acfbad0da" + +[[package]] +name = "camino" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b96ec4966b5813e2c0507c1f86115c8c5abaadc3980879c3424042a02fd1ad3" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo-platform" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "24b1f0365a6c6bb4020cd05806fd0d33c44d38046b8bd7f0e40814b9763cabfc" +dependencies = [ + "serde", +] + +[[package]] +name = "cargo_metadata" +version = "0.18.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "2d886547e41f740c616ae73108f6eb70afe6d940c7bc697cb30f13daec073037" +dependencies = [ + "camino", + "cargo-platform", + "semver 1.0.23", + "serde", + "serde_json", + "thiserror", +] [[package]] name = "cargo_toml" -version = "0.16.3" +version = "0.19.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3f9629bc6c4388ea699781dc988c2b99766d7679b151c81990b4fa1208fafd3" +checksum = "a98356df42a2eb1bd8f1793ae4ee4de48e384dd974ce5eac8eee802edb7492be" dependencies = [ "serde", "toml", @@ -278,10 +310,20 @@ dependencies = [ [[package]] name = "cc" -version = "1.0.83" +version = "1.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67b9470d453346108f93a59222a9a1a5724db32d0a4727b7ab7ace4b4d822dc9" +dependencies = [ + "shlex", +] + +[[package]] +name = "cee-scape" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "4d67dfb052149f779f77e9ce089cea126e00657e8f0d11dafc7901fde4291101" dependencies = [ + "cc", "libc", ] @@ -302,9 +344,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clang-sys" -version = "1.6.1" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -329,9 +371,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.4.6" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d04704f56c2cde07f43e8e2c154b43f216dc5c92fc98ada720177362f953b956" +checksum = "b97f376d85a664d5837dbae44bf546e6477a679ff6610010f17276f686d867e8" dependencies = [ "clap_builder", "clap_derive", @@ -339,34 +381,35 @@ dependencies = [ [[package]] name = "clap-cargo" -version = "0.11.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25122ca6ebad5f53578c26638afd9f0160426969970dc37ec6c363ff6b082ebd" +checksum = "23b2ea69cefa96b848b73ad516ad1d59a195cdf9263087d977f648a818c8b43e" dependencies = [ - "clap 4.4.6", - "doc-comment", + "anstyle", + "cargo_metadata", + "clap 4.5.20", ] [[package]] name = "clap_builder" -version = "4.4.6" +version = "4.5.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e231faeaca65ebd1ea3c737966bf858971cd38c3849107aa3ea7de90a804e45" +checksum = "19bc80abd44e4bed93ca373a0704ccbd1b710dc5749406201bb018272808dc54" dependencies = [ "anstyle", - "clap_lex 0.5.1", + "clap_lex 0.7.2", ] [[package]] name = "clap_derive" -version = "4.4.2" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0862016ff20d69b84ef8247369fabf5c008a7417002411897d40ee1f4532b873" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.87", ] [[package]] @@ -380,26 +423,25 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "colored" -version = "2.0.4" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2674ec482fbc38012cf31e6c42ba0177b431a0cb6f15fe40efa5aab1bda516f6" +checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" dependencies = [ - "is-terminal", "lazy_static", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -420,9 +462,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "counter-agg" @@ -446,51 +488,37 @@ dependencies = [ [[package]] name = "cpufeatures" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1" +checksum = "608697df725056feaccfa42cffdaeeec3fccc4ffc38358ecd19b243e716a78e0" dependencies = [ "libc", ] -[[package]] -name = "critical-section" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7059fff8937831a9ae6f0fe4d658ffabf58f2ca96aa9dec1c889f936f705f216" - [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -514,37 +542,21 @@ dependencies = [ ] [[package]] -name = "dirs" -version = "5.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c45a9d03d6676652bcb5e724c7e988de1acad23a711b5217ab9cbecbec2225" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.4.1" +name = "displaydoc" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "520f05a5cbd335fae5a99ff7a6ab8627577660ee5cfd6a94a6a929b52ff0321c" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ - "libc", - "option-ext", - "redox_users", - "windows-sys", + "proc-macro2", + "quote", + "syn 2.0.87", ] -[[package]] -name = "doc-comment" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" - [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encodings" @@ -556,22 +568,22 @@ dependencies = [ [[package]] name = "enum-map" -version = "2.6.3" +version = "2.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c188012f8542dee7b3996e44dd89461d64aa471b0a7c71a1ae2f595d259e96e5" +checksum = "6866f3bfdf8207509a033af1a75a7b08abda06bbaaeae6669323fd5a097df2e9" dependencies = [ "enum-map-derive", ] [[package]] name = "enum-map-derive" -version = "0.14.0" +version = "0.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d0b288e3bb1d861c4403c1774a6f7a798781dfc519b3647df2a3dd4ae95f25" +checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.87", ] [[package]] @@ -592,30 +604,19 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "add4f07d43996f76ef320709726a556a9d4f965d9410d8d0271132d2f8293480" -dependencies = [ - "errno-dragonfly", - "libc", - "windows-sys", -] - -[[package]] -name = "errno-dragonfly" -version = "0.1.2" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ - "cc", "libc", + "windows-sys 0.52.0", ] [[package]] name = "eyre" -version = "0.6.8" +version = "0.6.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" dependencies = [ "indenter", "once_cell", @@ -629,15 +630,9 @@ checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" [[package]] name = "fastrand" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" - -[[package]] -name = "finl_unicode" -version = "1.2.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8fcfdc7a0362c9f4444381a9e697c79d435fe65b52a37466fc2c1184cee9edc6" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "fixedbitset" @@ -671,9 +666,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -686,9 +681,9 @@ checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" [[package]] name = "futures-channel" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955518d47e09b25bbebc7a18df10b81f0c766eaf4c4f1cccef2fca5f2a4fb5f2" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -696,38 +691,38 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bca583b7e26f571124fe5b7561d49cb2868d79116cfa0eefce955557c6fee8c" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-macro" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.87", ] [[package]] name = "futures-sink" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f43be4fe21a13b9781a69afa4985b0f6ee0e1afab2c6f454a8cf30e2b2237b6e" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76d3d132be6c0e6aa1534069c705a74a5997a356c0dc2f86a47765e5617c5b65" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.28" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26b01e40b772d54cf6c6d721c1d1abd0647a0106a12ecaa1c186273392a69533" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", "futures-macro", @@ -759,9 +754,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -770,9 +765,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "glob" @@ -782,15 +777,15 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "globset" -version = "0.4.13" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "759c97c1e17c55525b57192c06a267cda0ac5210b222d6b82189a2338fa1c13d" +checksum = "15f1ce686646e7f1e19bf7d5533fe443a45dbfb990e00629110797578b42fb19" dependencies = [ "aho-corasick", "bstr", - "fnv", "log", - "regex", + "regex-automata", + "regex-syntax", ] [[package]] @@ -806,15 +801,15 @@ dependencies = [ [[package]] name = "half" -version = "1.8.2" +version = "1.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" +checksum = "1b43ede17f21864e81be2fa654110bf1e793774238d86ef8555c37e6519c0403" [[package]] name = "hash32" -version = "0.2.1" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0c35f58762feb77d74ebe43bdbc3210f09be9fe6742234d573bacc26ed92b67" +checksum = "47d60b12902ba28e2730cd37e95b8c9223af2808df9e902d4df49588d1470606" dependencies = [ "byteorder", ] @@ -827,28 +822,25 @@ checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" [[package]] name = "hashbrown" -version = "0.14.1" +version = "0.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12" +checksum = "1e087f84d4f86bf4b218b927129862374b72199ae7d8657835f1e89000eea4fb" [[package]] name = "heapless" -version = "0.7.16" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db04bc24a18b9ea980628ecf00e6c0264f3c1426dac36c00cb49b6fbad8b0743" +checksum = "0bfb9eb618601c89945a70e254898da93b13be0388091d42117462b265bb3fad" dependencies = [ - "atomic-polyfill", "hash32", - "rustc_version 0.4.0", - "spin", "stable_deref_trait", ] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -861,9 +853,15 @@ dependencies = [ [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + +[[package]] +name = "hermit-abi" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" [[package]] name = "hexf" @@ -890,6 +888,15 @@ dependencies = [ "digest", ] +[[package]] +name = "home" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +dependencies = [ + "windows-sys 0.52.0", +] + [[package]] name = "hyperloglogplusplus" version = "0.1.0" @@ -901,29 +908,157 @@ dependencies = [ "serde", ] +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "idna" -version = "0.4.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +dependencies = [ + "icu_normalizer", + "icu_properties", ] [[package]] name = "ignore" -version = "0.4.20" +version = "0.4.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbe7873dab538a9a44ad79ede1faf5f30d49f9a5c883ddbab48bce81b64b7492" +checksum = "6d89fd380afde86567dfba715db065673989d6253f42b88179abd3eae47bda4b" dependencies = [ + "crossbeam-deque", "globset", - "lazy_static", "log", "memchr", - "regex", + "regex-automata", "same-file", - "thread_local", "walkdir", "winapi-util", ] @@ -946,12 +1081,12 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.0.2" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ "equivalent", - "hashbrown 0.14.1", + "hashbrown 0.15.0", ] [[package]] @@ -960,22 +1095,28 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" dependencies = [ - "hermit-abi 0.3.3", + "hermit-abi 0.3.9", "libc", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "is-terminal" -version = "0.4.9" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" +checksum = "261f68e344040fbd0edea105bef17c66edf46f984ddb1115b775ce31be948f4b" dependencies = [ - "hermit-abi 0.3.3", - "rustix 0.38.15", - "windows-sys", + "hermit-abi 0.4.0", + "libc", + "windows-sys 0.52.0", ] +[[package]] +name = "is_ci" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" + [[package]] name = "itertools" version = "0.10.5" @@ -985,54 +1126,57 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" - -[[package]] -name = "lazycell" -version = "1.3.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.148" +version = "0.2.161" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b" +checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1" [[package]] name = "libloading" -version = "0.7.4" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", - "winapi", + "windows-targets 0.52.6", ] [[package]] name = "libm" -version = "0.2.7" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "linux-raw-sys" @@ -1042,15 +1186,21 @@ checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" [[package]] name = "linux-raw-sys" -version = "0.4.8" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3852614a3bd9ca9804678ba6be5e3b8ce76dfc902cae004e3e0c44051b6e88db" +checksum = "643cb0b8d4fcc284004d5fd0d67ccf61dfffadb7f75e1e71bc420f4688a3a704" [[package]] name = "lock_api" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1cc9717a20b1bb222f333e6a92fd32f7d8a18ddc5a3191a11af45dcbf4dcd16" +checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" dependencies = [ "autocfg", "scopeguard", @@ -1058,15 +1208,15 @@ dependencies = [ [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matrixmultiply" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" dependencies = [ "autocfg", "rawpointer", @@ -1084,18 +1234,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" - -[[package]] -name = "memoffset" -version = "0.9.0" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -1105,22 +1246,23 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.8" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927a765cd3fc26206e66b296465fa9d3e5ab003e651c1b3c060e7956d96b19d2" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1173,9 +1315,9 @@ dependencies = [ [[package]] name = "num-complex" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba157ca0885411de85d6ca030ba7e2a83a28636056c7c699b07c8b6f7383214" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", "rand", @@ -1184,30 +1326,28 @@ dependencies = [ [[package]] name = "num-integer" -version = "0.1.45" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.16" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -1215,24 +1355,18 @@ dependencies = [ [[package]] name = "object" -version = "0.32.1" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "option-ext" -version = "0.2.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "ordered-float" @@ -1246,21 +1380,25 @@ dependencies = [ [[package]] name = "os_str_bytes" -version = "6.5.1" +version = "6.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d5d9eb14b174ee9aa2ef96dc2b94637a2d4b6e7cb873c7e171f0c20c6cf3eac" +checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" [[package]] name = "owo-colors" -version = "3.5.0" +version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" +checksum = "fb37767f6569cd834a413442455e0f066d0d522de8630436e2a1761d9726ba56" +dependencies = [ + "supports-color 2.1.0", + "supports-color 3.0.1", +] [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" dependencies = [ "lock_api", "parking_lot_core", @@ -1268,22 +1406,22 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.8" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93f00c865fe7cabf650081affecd3871070f26767e7b2070a3ffae14c654b447" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.3.5", + "redox_syscall", "smallvec", - "windows-targets", + "windows-targets 0.52.6", ] [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pathsearch" @@ -1295,17 +1433,11 @@ dependencies = [ "libc", ] -[[package]] -name = "peeking_take_while" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" - [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" @@ -1353,22 +1485,22 @@ dependencies = [ [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", - "indexmap 2.0.2", + "indexmap 2.6.0", ] [[package]] name = "pgrx" -version = "0.10.2" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dde2cf81d16772f2e75c91edd2e868de1bd67a79d6c45c3d25c62b2ed3851d70" +checksum = "c6468e2a7c4085707209cf7f7e14a7b73c8b7f41fc716283024a09180b620a45" dependencies = [ "atomic-traits", - "bitflags 2.4.0", + "bitflags 2.6.0", "bitvec", "enum-map", "heapless", @@ -1378,92 +1510,103 @@ dependencies = [ "pgrx-pg-sys", "pgrx-sql-entity-graph", "seahash", - "seq-macro", "serde", "serde_cbor", "serde_json", "thiserror", - "uuid 1.4.1", + "uuid 1.11.0", ] [[package]] -name = "pgrx-macros" -version = "0.10.2" +name = "pgrx-bindgen" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9c035c16a41b126f8c2b37307f2c717b5ee72ff8e7495ff502ad35471a0b38" +checksum = "04d822012e4919882cb9b1851ae9e4b4b03703ddf2ef4af3522025c8944e9c7d" dependencies = [ - "pgrx-sql-entity-graph", + "bindgen", + "cc", + "clang-sys", + "eyre", + "pgrx-pg-config", "proc-macro2", "quote", - "syn 1.0.109", + "shlex", + "syn 2.0.87", + "walkdir", +] + +[[package]] +name = "pgrx-macros" +version = "0.12.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ffdb879a3880d3034661b4d19f802029abfcde6b8232299f4d4d2c202680af" +dependencies = [ + "pgrx-sql-entity-graph", + "proc-macro2", + "quote", + "syn 2.0.87", ] [[package]] name = "pgrx-pg-config" -version = "0.10.2" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16f9d9b6310ea9f13570d773d173bbcfe47ac844075bf6a3e207e7209786c631" +checksum = "945d664e710e4dcccd459628c6e58b3ccbd0495d2ed751b1d6f73996ceca01a2" dependencies = [ "cargo_toml", - "dirs", "eyre", + "home", "owo-colors", "pathsearch", "serde", - "serde_derive", "serde_json", + "thiserror", "toml", "url", ] [[package]] name = "pgrx-pg-sys" -version = "0.10.2" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f821614646963302a8499b8ac8332cc0e2ae3f8715a0220986984443d8880f74" +checksum = "489c96adc8af0b917165f47a11e25f77753e227144aa3790be7e241afab9886c" dependencies = [ - "bindgen", - "eyre", + "cee-scape", "libc", - "memoffset", - "once_cell", + "pgrx-bindgen", "pgrx-macros", - "pgrx-pg-config", "pgrx-sql-entity-graph", - "proc-macro2", - "quote", "serde", - "shlex", "sptr", - "syn 1.0.109", ] [[package]] name = "pgrx-sql-entity-graph" -version = "0.10.2" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4743b5b23fd418cded0c2dbe4b1529628f7fa59b8d68426eafdde0cb51541c96" +checksum = "de77a74f3dc80283a97322ab4d65f9f81691eb54d0a5b7c37b93686d351c6096" dependencies = [ "convert_case", "eyre", "petgraph", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.87", + "thiserror", "unescape", ] [[package]] name = "pgrx-tests" -version = "0.10.2" +version = "0.12.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "177bb8f6811bd65180c5a24a33666baed0ed5c08cc584c4bdb78f7fe19304363" +checksum = "73cbf89286dda64fb8ee2126794d140de2294d0b8e04604b5ecddd6ee291fbae" dependencies = [ "clap-cargo", "eyre", "libc", - "once_cell", "owo-colors", + "paste", "pgrx", "pgrx-macros", "pgrx-pg-config", @@ -1497,9 +1640,9 @@ dependencies = [ [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -1517,9 +1660,9 @@ dependencies = [ [[package]] name = "postgres" -version = "0.19.7" +version = "0.19.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7915b33ed60abc46040cbcaa25ffa1c7ec240668e0477c4f3070786f5916d451" +checksum = "95c918733159f4d55d2ceb262950f00b0aebd6af4aa97b5a47bb0655120475ed" dependencies = [ "bytes", "fallible-iterator", @@ -1531,11 +1674,11 @@ dependencies = [ [[package]] name = "postgres-protocol" -version = "0.6.6" +version = "0.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49b6c5ef183cd3ab4ba005f1ca64c21e8bd97ce4699cfea9e8d9a2c4958ca520" +checksum = "acda0ebdebc28befa84bee35e651e4c5f09073d668c7aed4cf7e23c3cda84b23" dependencies = [ - "base64 0.21.4", + "base64 0.22.1", "byteorder", "bytes", "fallible-iterator", @@ -1549,9 +1692,9 @@ dependencies = [ [[package]] name = "postgres-types" -version = "0.2.6" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d2234cdee9408b523530a9b6d2d6b373d1db34f6a8e51dc03ded1828d7fb67c" +checksum = "f66ea23a2d0e5734297357705193335e0a957696f34bed2f2faefacb2fec336f" dependencies = [ "bytes", "fallible-iterator", @@ -1564,28 +1707,31 @@ version = "0.1.0" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" -version = "1.0.67" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d433d9f1a3e8c1263d9456598b16fec66f4acc9a74dacffd35c7bb09b3a1328" +checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e" dependencies = [ "unicode-ident", ] [[package]] name = "proptest" -version = "1.3.1" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c003ac8c77cb07bb74f5f198bce836a689bcd5a42574612bf14d17bfd08c20e" +checksum = "b4c2511913b88df1637da85cc8d96ec8e43a3f8bb8ccb71ee1ac240d6f3df58d" dependencies = [ "bit-set", "bit-vec", - "bitflags 2.4.0", + "bitflags 2.6.0", "lazy_static", "num-traits", "rand", @@ -1639,9 +1785,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.33" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1709,9 +1855,9 @@ checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -1719,9 +1865,9 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", @@ -1729,38 +1875,18 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - -[[package]] -name = "redox_users" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" -dependencies = [ - "getrandom", - "redox_syscall 0.2.16", - "thiserror", + "bitflags 2.6.0", ] [[package]] name = "regex" -version = "1.9.6" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebee201405406dbf528b8b672104ae6d6d63e6d118cb10e4d51abbc7b58044ff" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -1770,9 +1896,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.3.9" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b23e92ee4318893fa3fe3e6fb365258efbfe6ac6ab30f090cdcbb7aa37efa9" +checksum = "368758f23274712b504848e9d5a6f010445cc8b87a7cdb4d7cbee666c1288da3" dependencies = [ "aho-corasick", "memchr", @@ -1781,9 +1907,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.7.5" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb5fb1acd8a1a18b3dd5be62d25485eb770e05afb408a9627d14d451bae12da" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "ron" @@ -1798,9 +1924,9 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" @@ -1817,40 +1943,31 @@ dependencies = [ "semver 0.11.0", ] -[[package]] -name = "rustc_version" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" -dependencies = [ - "semver 1.0.19", -] - [[package]] name = "rustix" -version = "0.37.24" +version = "0.37.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4279d76516df406a8bd37e7dff53fd37d1a093f997a3c34a5c21658c126db06d" +checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" dependencies = [ "bitflags 1.3.2", "errno", "io-lifetimes", "libc", "linux-raw-sys 0.3.8", - "windows-sys", + "windows-sys 0.48.0", ] [[package]] name = "rustix" -version = "0.38.15" +version = "0.38.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2f9da0cbd88f9f09e7814e388301c8414c51c62aa6ce1e4b5c551d49d96e531" +checksum = "aa260229e6538e52293eeb577aabd09945a09d6d9cc0fc550ed7529056c2e32a" dependencies = [ - "bitflags 2.4.0", + "bitflags 2.6.0", "errno", "libc", - "linux-raw-sys 0.4.8", - "windows-sys", + "linux-raw-sys 0.4.14", + "windows-sys 0.52.0", ] [[package]] @@ -1867,9 +1984,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "same-file" @@ -1903,9 +2020,12 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.19" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad977052201c6de01a8ef2aa3378c4bd23217a056337d1d6da40468d267a4fb0" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] name = "semver-parser" @@ -1916,17 +2036,11 @@ dependencies = [ "pest", ] -[[package]] -name = "seq-macro" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" - [[package]] name = "serde" -version = "1.0.188" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" +checksum = "f55c3193aca71c12ad7890f1785d2b73e1b9f63a0bbc353c08ef26fe03fc56b5" dependencies = [ "serde_derive", ] @@ -1943,31 +2057,32 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.188" +version = "1.0.214" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" +checksum = "de523f781f095e28fa605cdce0f8307e451cc0fd14e2eb4cd2e98a355b147766" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.87", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.132" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "d726bfaff4b320266d395898905d0eba0345aae23b54aee3a737e260fd46db03" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] [[package]] name = "serde_spanned" -version = "0.6.3" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "96426c9936fd7a0124915f9185ea1d20aa9445cc9821142f0a73bc9207a2e186" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" dependencies = [ "serde", ] @@ -1996,9 +2111,9 @@ dependencies = [ [[package]] name = "shlex" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" [[package]] name = "simba" @@ -2029,18 +2144,18 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.11.1" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] name = "socket2" -version = "0.5.4" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4031e820eb552adee9295814c0ced9e5cf38ddf1e8b7d566d6de8e2538ea989e" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -2054,15 +2169,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "spin" -version = "0.9.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" -dependencies = [ - "lock_api", -] - [[package]] name = "sptr" version = "0.3.2" @@ -2116,13 +2222,13 @@ dependencies = [ [[package]] name = "stringprep" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb41d74e231a107a1b4ee36bd1214b11285b77768d2e3824aedafa988fd36ee6" +checksum = "7b4df3d392d81bd458a8a621b8bffbd2302a12ffe288a9d931670948749463b1" dependencies = [ - "finl_unicode", "unicode-bidi", "unicode-normalization", + "unicode-properties", ] [[package]] @@ -2133,9 +2239,28 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "subtle" -version = "2.5.0" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "supports-color" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" +checksum = "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89" +dependencies = [ + "is-terminal", + "is_ci", +] + +[[package]] +name = "supports-color" +version = "3.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8775305acf21c96926c900ad056abeef436701108518cf890020387236ac5a77" +dependencies = [ + "is_ci", +] [[package]] name = "syn" @@ -2150,20 +2275,31 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.37" +version = "2.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7303ef2c05cd654186cb250d29049a24840ca25d2747c25c0381c8d9e2f582e8" +checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + [[package]] name = "sysinfo" -version = "0.29.10" +version = "0.30.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a18d114d420ada3a891e6bc8e96a2023402203296a47cdd65083377dad18ba5" +checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" dependencies = [ "cfg-if", "core-foundation-sys", @@ -2171,7 +2307,7 @@ dependencies = [ "ntapi", "once_cell", "rayon", - "winapi", + "windows", ] [[package]] @@ -2203,15 +2339,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.8.0" +version = "3.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb94d2f3cc536af71caac6b6fcebf65860b347e7ce0cc9ebe8f70d3e521054ef" +checksum = "f0f2c9fc62d0beef6951ccffd757e241266a2c833136efbe35af6cd2567dca5b" dependencies = [ "cfg-if", "fastrand", - "redox_syscall 0.3.5", - "rustix 0.38.15", - "windows-sys", + "once_cell", + "rustix 0.38.38", + "windows-sys 0.59.0", ] [[package]] @@ -2232,9 +2368,9 @@ dependencies = [ [[package]] name = "termcolor" -version = "1.3.0" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6093bad37da69aab9d123a8091e4be0aa4a03e4d601ec641c327398315f62b64" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" dependencies = [ "winapi-util", ] @@ -2245,47 +2381,37 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e6bf6f19e9f8ed8d4048dc22981458ebcf406d67e94cd422e5ecd73d63b3237" dependencies = [ - "rustix 0.37.24", - "windows-sys", + "rustix 0.37.27", + "windows-sys 0.48.0", ] [[package]] name = "textwrap" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" +checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" dependencies = [ "terminal_size", ] [[package]] name = "thiserror" -version = "1.0.49" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1177e8c6d7ede7afde3585fd2513e611227efd6481bd78d2e82ba1ce16557ed4" +checksum = "3b3c6efbfc763e64eb85c11c25320f0737cb7364c4b6336db90aa9ebe27a0bbd" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.49" +version = "1.0.67" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc" +checksum = "b607164372e89797d78b8e23a6d67d5d1038c1c65efd52e1389ef8b77caba2a6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", -] - -[[package]] -name = "thread_local" -version = "1.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdd6f064ccff2d6567adcb3873ca630700f00b5ad3f060c25b5dcfd9a4ce152" -dependencies = [ - "cfg-if", - "once_cell", + "syn 2.0.87", ] [[package]] @@ -2338,11 +2464,21 @@ dependencies = [ "uddsketch", ] +[[package]] +name = "tinystr" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -2355,9 +2491,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.32.0" +version = "1.41.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "17ed6077ed6cd6c74735e21f37eb16dc3935f96878b1fe961074089cc80893f9" +checksum = "145f3413504347a2be84393cc8a7d2fb4d863b375909ea59f2158261aa258bbb" dependencies = [ "backtrace", "bytes", @@ -2365,14 +2501,14 @@ dependencies = [ "mio", "pin-project-lite", "socket2", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "tokio-postgres" -version = "0.7.10" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d340244b32d920260ae7448cb72b6e238bddc3d4f7603394e7dd46ed8e48f5b8" +checksum = "3b5d3742945bc7d7f210693b0c58ae542c6fd47b17adbbda0885f3dcb34a6bdb" dependencies = [ "async-trait", "byteorder", @@ -2396,35 +2532,34 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.9" +version = "0.7.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d68074620f57a0b21594d9735eb2e98ab38b17f80d3fcb189fca266771ca60d" +checksum = "61e7c3654c13bcd040d4a03abee2c75b1d14a37b423cf5a813ceae1cc903ec6a" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] name = "toml" -version = "0.8.1" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1bc1433177506450fe920e46a4f9812d0c211f5dd556da10e731a0a3dfa151f0" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", "serde_spanned", "toml_datetime", - "toml_edit 0.20.1", + "toml_edit 0.22.22", ] [[package]] name = "toml_datetime" -version = "0.6.3" +version = "0.6.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" dependencies = [ "serde", ] @@ -2437,42 +2572,22 @@ checksum = "5376256e44f2443f8896ac012507c19a012df0fe8758b55246ae51a2279db51f" dependencies = [ "combine", "indexmap 1.9.3", - "itertools", + "itertools 0.10.5", ] [[package]] name = "toml_edit" -version = "0.20.1" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca676d9ba1a322c1b64eb8045a5ec5c0cfb0c9d08e15e9ff622589ad5221c8fe" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ - "indexmap 2.0.2", + "indexmap 2.6.0", "serde", "serde_spanned", "toml_datetime", "winnow", ] -[[package]] -name = "tracing" -version = "0.1.37" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" -dependencies = [ - "cfg-if", - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.31" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a" -dependencies = [ - "once_cell", -] - [[package]] name = "tspoint" version = "0.1.0" @@ -2502,9 +2617,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "ucd-trie" -version = "0.1.6" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed646292ffc8188ef8ea4d1e0e0150fb15a5c2e12ad9b8fc191ae7a8a7f3c4b9" +checksum = "2896d95c02a80c6d6a5d6e953d479f5ddf2dfdb6a244441010e373ac0fb88971" [[package]] name = "uddsketch" @@ -2581,45 +2696,48 @@ dependencies = [ [[package]] name = "unicase" -version = "2.7.0" +version = "2.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] +checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "5ab17db44d7388991a428b2ee655ce0c212e862eff1768a455c58f9aad6e7893" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "5033c97c4262335cded6d6fc3e5c18ab755e1a3dc96376350f3d8e9f009ad956" dependencies = [ "tinyvec", ] +[[package]] +name = "unicode-properties" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e70f2a8b45122e719eb623c01822704c4e0907e7e426a05927e1a1cfff5b75d0" + [[package]] name = "unicode-segmentation" -version = "1.10.1" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" [[package]] name = "update-tester" @@ -2632,7 +2750,7 @@ dependencies = [ "postgres", "postgres_connection_configuration", "pulldown-cmark", - "semver 1.0.19", + "semver 1.0.23", "toml_edit 0.14.4", "walkdir", "xshell", @@ -2640,15 +2758,27 @@ dependencies = [ [[package]] name = "url" -version = "2.4.1" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "8d157f1b96d14500ffdc1f10ba712e780825526c03d9a49b4d0324b0d9113ada" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "uuid" version = "0.8.2" @@ -2660,18 +2790,18 @@ dependencies = [ [[package]] name = "uuid" -version = "1.4.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wait-timeout" @@ -2684,9 +2814,9 @@ dependencies = [ [[package]] name = "walkdir" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", "winapi-util", @@ -2698,36 +2828,43 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasite" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" + [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.87", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2735,28 +2872,28 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.37", + "syn 2.0.87", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -2764,11 +2901,12 @@ dependencies = [ [[package]] name = "whoami" -version = "1.4.1" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22fc3756b8a9133049b26c7f61ab35416c130e8c09b660f5b3958b446f52cc50" +checksum = "372d5b87f58ec45c384ba03563b03544dc5fadc3983e434b286913f5b4a9bb6d" dependencies = [ - "wasm-bindgen", + "redox_syscall", + "wasite", "web-sys", ] @@ -2790,11 +2928,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -2803,13 +2941,50 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" +[[package]] +name = "windows" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +dependencies = [ + "windows-core", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-core" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.48.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" dependencies = [ - "windows-targets", + "windows-targets 0.48.5", +] + +[[package]] +name = "windows-sys" +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.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets 0.52.6", ] [[package]] @@ -2818,13 +2993,29 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc", - "windows_i686_gnu", - "windows_i686_msvc", - "windows_x86_64_gnu", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc", + "windows_aarch64_gnullvm 0.48.5", + "windows_aarch64_msvc 0.48.5", + "windows_i686_gnu 0.48.5", + "windows_i686_msvc 0.48.5", + "windows_x86_64_gnu 0.48.5", + "windows_x86_64_gnullvm 0.48.5", + "windows_x86_64_msvc 0.48.5", +] + +[[package]] +name = "windows-targets" +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", + "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]] @@ -2833,51 +3024,111 @@ version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" + [[package]] name = "windows_aarch64_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" + [[package]] name = "windows_i686_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +[[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_gnullvm" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" + [[package]] name = "windows_i686_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +[[package]] +name = "windows_i686_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" + [[package]] name = "windows_x86_64_gnu" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +[[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_msvc" version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + [[package]] name = "winnow" -version = "0.5.15" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c2e3184b9c4e92ad5167ca73039d0c42476302ab603e2fec4487511f38ccefc" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" dependencies = [ "memchr", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + [[package]] name = "wyz" version = "0.5.1" @@ -2901,3 +3152,100 @@ name = "xshell-macros" version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4916a4a3cad759e499a3620523bf9545cc162d7a06163727dde97ce9aaa4cf39" + +[[package]] +name = "yansi-term" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe5c30ade05e61656247b2e334a031dfd0cc466fadef865bdcdea8d537951bf1" +dependencies = [ + "winapi", +] + +[[package]] +name = "yoke" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c5b1314b079b0930c31e3af543d8ee1757b1951ae1e1565ec704403a7240ca5" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "28cc31741b18cb6f1d5ff12f5b7523e3d6eb0852bbbad19d73905511d9849b95" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] + +[[package]] +name = "zerofrom" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91ec111ce797d0e0784a1116d0ddcdbea84322cd79e5d5ad173daeba4f93ab55" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ea7b4a3637ea8669cedf0f1fd5c286a17f3de97b8dd5a70a6c167a1730e63a5" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.87", +] diff --git a/Readme.md b/Readme.md index 64c63de6..66a672db 100644 --- a/Readme.md +++ b/Readme.md @@ -1,7 +1,6 @@ [![CI](https://github.com/timescale/timescaledb-toolkit/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/timescale/timescaledb-toolkit/actions/workflows/ci.yml) - -# TimescaleDB Toolkit # +# TimescaleDB Toolkit This repository is the home of the TimescaleDB Toolkit team. Our mission is to ease all things analytics when using TimescaleDB, with a particular focus on @@ -14,16 +13,15 @@ Documentation for this version of the TimescaleDB Toolkit extension can be found in this repository at [`docs`](https://github.com/timescale/timescaledb-toolkit/tree/main/docs). The release history can be found on this repo's [GitHub releases](https://github.com/timescale/timescaledb-toolkit/releases). +## 🖥 Try It Out -## 🖥 Try It Out ## - -The extension comes pre-installed on all [Timescale Cloud](https://www.timescale.com/products#timescale-cloud) instances and also on our full-featured [`timescale/timescaledb-ha` docker image](https://hub.docker.com/r/timescale/timescaledb-ha). +The extension comes pre-installed on all [Timescale Cloud](https://www.timescale.com/products#timescale-cloud) instances and also on our full-featured [`timescale/timescaledb-ha` docker image](https://hub.docker.com/r/timescale/timescaledb-ha). If DEB and RPM packages are a better fit for your situation, refer to the [Install Toolkit on self-hosted TimescaleDB](https://docs.timescale.com/self-hosted/latest/tooling/install-toolkit/#install-toolkit-on-self-hosted-timescaledb) how-to guide for further instructions on installing the extension via your package manager. All versions of the extension contain experimental features in the `toolkit_experimental` schema. See [our docs section on experimental features](/docs/README.md#tag-notes) for more details. -## 💿 Installing From Source ## +## 💿 Installing From Source ### Supported platforms @@ -34,24 +32,28 @@ The engineering team regularly tests the extension on the following platforms: - x86_64-apple-darwin (MacOS 12) (tested frequently on eng workstation) - aarch64-apple-darwin (MacOS 12) (tested frequently on eng workstation) -As for other platforms: patches welcome! +As for other platforms: patches welcome! -### 🔧 Tools Setup ### +### 🔧 Tools Setup Building the extension requires valid [rust](https://www.rust-lang.org/) (we build and test on 1.65), [rustfmt](https://github.com/rust-lang/rustfmt), and clang installs, along with the postgres headers for whichever version of postgres you are running, and pgrx. We recommend installing rust using the [official instructions](https://www.rust-lang.org/tools/install): + ```bash curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh ``` + and build tools, the postgres headers, in the preferred manner for your system. You may also need to install OpenSSl. For Ubuntu you can follow the [postgres install instructions](https://www.postgresql.org/download/linux/ubuntu/) then run + ```bash sudo apt-get install make gcc pkg-config clang postgresql-server-dev-14 libssl-dev ``` Next you need [cargo-pgrx](https://github.com/tcdi/pgrx), which can be installed with + ```bash -cargo install --version '=0.10.2' --force cargo-pgrx +cargo install --version '=0.12.8' --force cargo-pgrx ``` You must reinstall cargo-pgrx whenever you update your Rust compiler, since cargo-pgrx needs to be built with the same compiler as Toolkit. @@ -62,28 +64,31 @@ Finally, setup the pgrx development environment with cargo pgrx init --pg14 pg_config ``` - Installing from source is also available on macOS and requires the same set of prerequisites and set up commands listed above. -### 💾 Building and Installing the extension ### +### 💾 Building and Installing the extension Download or clone this repository, and switch to the `extension` subdirectory, e.g. + ```bash git clone https://github.com/timescale/timescaledb-toolkit && \ cd timescaledb-toolkit/extension ``` + Then run + ``` cargo pgrx install --release && \ cargo run --manifest-path ../tools/post-install/Cargo.toml -- pg_config ``` To initialize the extension after installation, enter the following into `psql`: + ``` CREATE EXTENSION timescaledb_toolkit; ``` -## ✏️ Get Involved ## +## ✏️ Get Involved The TimescaleDB Toolkit project is still in the initial planning stage as we decide our priorities and what to implement first. As such, now is a great time @@ -92,17 +97,16 @@ to help shape the project's direction! Have a look at the and feel free to comment on the features, expand the list, or hop on the [Discussions forum](https://github.com/timescale/timescaledb-toolkit/discussions) for more in-depth discussions. -### 🔨 Testing ### +### 🔨 Testing See above for prerequisites and installation instructions. -You can run tests against a postgres version `pg12`, `pg13`, `pg14`, `pg15` or `pg16` using +You can run tests against a postgres version `pg12`, `pg13`, `pg14`, `pg15`, `pg16` or `pg17` using ``` cargo pgrx test ${postgres_version} ``` - ## 🐯 About TimescaleDB **[TimescaleDB](https://github.com/timescale/timescaledb)** is a diff --git a/bors.toml b/bors.toml deleted file mode 100644 index d09104f2..00000000 --- a/bors.toml +++ /dev/null @@ -1,17 +0,0 @@ -status = [ - "Clippy/rustfmt Test", - "Test Postgres (12, debian, 11, debian-11-amd64)", - "Test Postgres (12, rockylinux, 9, rockylinux-9-x86_64)", - "Test Postgres (12, centos, 7, centos-7-x86_64)", - "Test Postgres (13, debian, 11, debian-11-amd64)", - "Test Postgres (13, rockylinux, 9, rockylinux-9-x86_64)", - "Test Postgres (13, centos, 7, centos-7-x86_64)", - "Test Postgres (14, debian, 11, debian-11-amd64)", - "Test Postgres (14, rockylinux, 9, rockylinux-9-x86_64)", - "Test Postgres (14, centos, 7, centos-7-x86_64)", - "Test Postgres (15, debian, 11, debian-11-amd64)", - "Test Postgres (15, rockylinux, 9, rockylinux-9-x86_64)", - "Test Postgres (15, centos, 7, centos-7-x86_64)", -] -delete-merged-branches = true -timeout_sec = 3600 # 60 min diff --git a/docker/ci/setup.sh b/docker/ci/setup.sh index 0f8345cb..07a059f4 100755 --- a/docker/ci/setup.sh +++ b/docker/ci/setup.sh @@ -54,8 +54,8 @@ if $privileged; then centos | rockylinux) case $OS_VERSION in 7) - export PG_VERSIONS="13 14 15" - export TSDB_PG_VERSIONS="13 14 15" + export PG_VERSIONS="13 14 15 16 17" + export TSDB_PG_VERSIONS="13 14 15 16 17" # Postgresql packages require both # - llvm-toolset-7-clang from centos-release-scl-rh # - llvm5.0-devel from epel-release @@ -151,7 +151,7 @@ EOF debian | ubuntu) # TimescaleDB does not have packages for Debian 12 if [ $OS_VERSION -ge 12 ]; then - export TSDB_PG_VERSIONS="13 14 15" + export TSDB_PG_VERSIONS="13 14 15 16 17" fi # Image comes in with no package lists so we have to start with this. diff --git a/extension/Cargo.toml b/extension/Cargo.toml index d6e50888..e414ad32 100644 --- a/extension/Cargo.toml +++ b/extension/Cargo.toml @@ -3,24 +3,29 @@ name = "timescaledb_toolkit" version = "1.19.0-dev" edition = "2021" +[[bin]] +name = "pgrx_embed_timescaledb_toolkit" +path = "./src/bin/pgrx_embed.rs" + [lib] -crate-type = ["cdylib"] +crate-type = ["cdylib", "lib"] [features] -default = ["pg15"] +default = ["pg16"] pg12 = ["pgrx/pg12", "pgrx-tests/pg12"] pg13 = ["pgrx/pg13", "pgrx-tests/pg13"] pg14 = ["pgrx/pg14", "pgrx-tests/pg14"] pg15 = ["pgrx/pg15", "pgrx-tests/pg15"] pg16 = ["pgrx/pg16", "pgrx-tests/pg16"] +pg17 = ["pgrx/pg17", "pgrx-tests/pg17"] pg_test = ["approx"] [dependencies] # Keep synchronized with `cargo install --version N.N.N cargo-pgrx` in Readme.md and docker/ci/Dockerfile # Also `pgrx-tests` down below in `dev-dependencies`. -pgrx = "=0.10.2" -pgrx-macros = "=0.10.2" -pgrx-sql-entity-graph = "=0.10.2" +pgrx = "=0.12.8" +pgrx-macros = "=0.12.8" +pgrx-sql-entity-graph = "=0.12.8" encodings = {path="../crates/encodings"} flat_serialize = {path="../crates/flat_serialize/flat_serialize"} flat_serialize_macro = {path="../crates/flat_serialize/flat_serialize_macro"} @@ -57,5 +62,5 @@ spfunc = "0.1.0" statrs = "0.15.0" [dev-dependencies] -pgrx-tests = "=0.10.2" +pgrx-tests = "=0.12.8" approx = "0.4.0" diff --git a/extension/src/aggregate_utils.rs b/extension/src/aggregate_utils.rs index d270b518..7e76a8e6 100644 --- a/extension/src/aggregate_utils.rs +++ b/extension/src/aggregate_utils.rs @@ -13,7 +13,7 @@ pub unsafe fn get_collation(fcinfo: pg_sys::FunctionCallInfo) -> Option Option { if fcinfo.is_null() { - Some(unsafe { pg_sys::Oid::from_u32_unchecked(100) }) // TODO: default OID, there should be a constant for this + Some(pg_sys::Oid::from(100)) // TODO: default OID, there should be a constant for this } else { unsafe { get_collation(fcinfo) } } diff --git a/extension/src/bin/pgrx_embed.rs b/extension/src/bin/pgrx_embed.rs new file mode 100644 index 00000000..5f5c4d85 --- /dev/null +++ b/extension/src/bin/pgrx_embed.rs @@ -0,0 +1 @@ +::pgrx::pgrx_embed!(); diff --git a/extension/src/datum_utils.rs b/extension/src/datum_utils.rs index acea5fdc..db9fd746 100644 --- a/extension/src/datum_utils.rs +++ b/extension/src/datum_utils.rs @@ -46,6 +46,7 @@ pub fn ts_interval_sum_to_ms( interval: &crate::raw::Interval, ) -> i64 { extern "C" { + #[allow(improper_ctypes)] fn timestamptz_pl_interval(fcinfo: pg_sys::FunctionCallInfo) -> pg_sys::Datum; } let bound = unsafe { @@ -330,7 +331,7 @@ impl<'a, 'de> Deserialize<'de> for DatumStore<'a> { A: SeqAccess<'de>, { let oid = - unsafe { Oid::from_u32_unchecked(seq.next_element::().unwrap().unwrap()) }; // TODO: error handling + Oid::from(seq.next_element::().unwrap().unwrap()); // TODO: error handling // TODO separate human-readable and binary forms let mut reader = DatumFromSerializedTextReader::from_oid(oid); diff --git a/extension/src/frequency.rs b/extension/src/frequency.rs index 16439f19..8863b521 100644 --- a/extension/src/frequency.rs +++ b/extension/src/frequency.rs @@ -462,14 +462,14 @@ impl<'input> From<(&SpaceSavingAggregate<'input>, &pg_sys::FunctionCallInfo)> let mut trans = if agg.topn == 0 { SpaceSavingTransState::freq_agg_from_type_id( agg.freq_param, - unsafe { Oid::from_u32_unchecked(agg.type_oid) }, + Oid::from(agg.type_oid), collation, ) } else { SpaceSavingTransState::mcv_agg_from_type_id( agg.freq_param, agg.topn as u32, - unsafe { Oid::from_u32_unchecked(agg.type_oid) }, + Oid::from(agg.type_oid), collation, ) }; @@ -1279,7 +1279,7 @@ pub fn freq_iter<'a>( let value = AnyElement::from_polymorphic_datum( value, false, - Oid::from_u32_unchecked(agg.type_oid), + Oid::from(agg.type_oid), ) .unwrap(); let min_freq = (count - overcount) as f64 / total; @@ -1427,7 +1427,7 @@ pub fn topn( ) // TODO Shouldn't failure to convert to AnyElement cause error, not early stop? .map_while(move |value| unsafe { - AnyElement::from_polymorphic_datum(value, false, Oid::from_u32_unchecked(type_oid)) + AnyElement::from_polymorphic_datum(value, false, Oid::from(type_oid)) }), ) } @@ -1547,7 +1547,7 @@ pub fn max_frequency(agg: SpaceSavingAggregate<'_>, value: AnyElement) -> f64 { match agg .datums .iter() - .position(|datum| value == (datum, unsafe { Oid::from_u32_unchecked(agg.type_oid) }).into()) + .position(|datum| value == (datum, Oid::from(agg.type_oid)).into()) { Some(idx) => agg.counts.slice()[idx] as f64 / agg.values_seen as f64, None => 0., @@ -1560,7 +1560,7 @@ pub fn min_frequency(agg: SpaceSavingAggregate<'_>, value: AnyElement) -> f64 { match agg .datums .iter() - .position(|datum| value == (datum, unsafe { Oid::from_u32_unchecked(agg.type_oid) }).into()) + .position(|datum| value == (datum, Oid::from(agg.type_oid)).into()) { Some(idx) => { (agg.counts.slice()[idx] - agg.overcounts.slice()[idx]) as f64 / agg.values_seen as f64 diff --git a/extension/src/raw.rs b/extension/src/raw.rs index 66ec05d0..3c3d11bc 100644 --- a/extension/src/raw.rs +++ b/extension/src/raw.rs @@ -49,9 +49,6 @@ macro_rules! raw_type { fn type_oid() -> pg_sys::Oid { $tyid } - fn array_type_oid() -> pg_sys::Oid { - $arrayid - } } impl From for $name { @@ -75,6 +72,17 @@ macro_rules! raw_type { Ok(Returns::One(SqlMapping::literal(stringify!($name)))) } } + + unsafe impl<'fcx> callconv::ArgAbi<'fcx> for $name { + unsafe fn unbox_arg_unchecked(arg: callconv::Arg<'_, 'fcx>) -> Self { + let index = arg.index(); + unsafe { arg.unbox_arg_using_from_datum().unwrap_or_else(|| panic!("argument {index} must not be null")) } + } + + unsafe fn unbox_nullable_arg(arg: callconv::Arg<'_, 'fcx>) -> nullable::Nullable { + unsafe { arg.unbox_arg_using_from_datum().into() } + } + } }; } @@ -83,6 +91,14 @@ pub struct bytea(pub pg_sys::Datum); raw_type!(bytea, pg_sys::BYTEAOID, pg_sys::BYTEAARRAYOID); +unsafe impl pgrx::callconv::BoxRet for bytea { + unsafe fn box_into<'fcx>(self, fcinfo: &mut pgrx::callconv::FcInfo<'fcx>) + -> pgrx::datum::Datum<'fcx> + { + unsafe { fcinfo.return_raw_datum(self.0) } + } +} + #[derive(Clone, Copy)] pub struct text(pub pg_sys::Datum); @@ -96,6 +112,14 @@ raw_type!( pg_sys::TIMESTAMPTZARRAYOID ); +unsafe impl pgrx::callconv::BoxRet for TimestampTz { + unsafe fn box_into<'fcx>(self, fcinfo: &mut pgrx::callconv::FcInfo<'fcx>) + -> pgrx::datum::Datum<'fcx> + { + unsafe { fcinfo.return_raw_datum(self.0) } + } +} + impl From for pg_sys::TimestampTz { fn from(tstz: TimestampTz) -> Self { tstz.0.value() as _ @@ -120,6 +144,14 @@ pub struct Interval(pub pg_sys::Datum); raw_type!(Interval, pg_sys::INTERVALOID, pg_sys::INTERVALARRAYOID); +unsafe impl pgrx::callconv::BoxRet for Interval { + unsafe fn box_into<'fcx>(self, fcinfo: &mut pgrx::callconv::FcInfo<'fcx>) + -> pgrx::datum::Datum<'fcx> + { + unsafe { fcinfo.return_raw_datum(self.0) } + } +} + impl From for Interval { fn from(interval: i64) -> Self { let interval = pg_sys::Interval { diff --git a/extension/src/serialization.rs b/extension/src/serialization.rs index 53f58cfd..a28948b2 100644 --- a/extension/src/serialization.rs +++ b/extension/src/serialization.rs @@ -1,6 +1,6 @@ pub use self::collations::PgCollationId; pub use self::functions::PgProcId; -pub use self::types::{PgTypId, ShortTypeId}; +pub use self::types::ShortTypeId; use std::{ convert::TryInto, os::raw::{c_char, c_int}, @@ -79,7 +79,6 @@ pub extern "C" fn _ts_toolkit_decode_timestamptz(text: &str) -> i64 { &mut nf, ); #[cfg(any( - feature = "pg11", feature = "pg12", feature = "pg13", feature = "pg14", @@ -96,9 +95,12 @@ pub extern "C" fn _ts_toolkit_decode_timestamptz(text: &str) -> i64 { &mut tz, ) } - #[cfg(feature = "pg16")] + #[cfg(any( + feature = "pg16", + feature = "pg17" + ))] if dterr == 0 { - let mut extra = DateTimeErrorExtra::default(); + let mut extra = pgrx::pg_sys::DateTimeErrorExtra::default(); dterr = pg_sys::DecodeDateTime( field.as_mut_ptr(), ftype.as_mut_ptr(), @@ -107,12 +109,11 @@ pub extern "C" fn _ts_toolkit_decode_timestamptz(text: &str) -> i64 { tm, &mut fsec, &mut tz, - &mut extra as *mut DateTimeErrorExtra, + &mut extra as *mut pgrx::pg_sys::DateTimeErrorExtra, ) } #[cfg(any( - feature = "pg11", feature = "pg12", feature = "pg13", feature = "pg14", @@ -125,7 +126,10 @@ pub extern "C" fn _ts_toolkit_decode_timestamptz(text: &str) -> i64 { b"timestamptz\0".as_ptr().cast::(), ); } - #[cfg(feature = "pg16")] + #[cfg(any( + feature = "pg16", + feature = "pg17" + ))] if dterr != 0 { pg_sys::DateTimeParseError( dterr, @@ -163,7 +167,7 @@ pub enum EncodedStr<'s> { } pub fn str_to_db_encoding(s: &str) -> EncodedStr { - if unsafe { pg_sys::GetDatabaseEncoding() == pg_sys::pg_enc_PG_UTF8 as i32 } { + if unsafe { pg_sys::GetDatabaseEncoding() == pg_sys::pg_enc::PG_UTF8 as i32 } { return EncodedStr::Utf8(s); } @@ -172,7 +176,7 @@ pub fn str_to_db_encoding(s: &str) -> EncodedStr { pg_sys::pg_any_to_server( bytes.as_ptr() as *const c_char, bytes.len().try_into().unwrap(), - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ) }; if encoded as usize == bytes.as_ptr() as usize { @@ -184,13 +188,13 @@ pub fn str_to_db_encoding(s: &str) -> EncodedStr { } pub fn str_from_db_encoding(s: &CStr) -> &str { - if unsafe { pg_sys::GetDatabaseEncoding() == pg_sys::pg_enc_PG_UTF8 as i32 } { + if unsafe { pg_sys::GetDatabaseEncoding() == pg_sys::pg_enc::PG_UTF8 as i32 } { return s.to_str().unwrap(); } let str_len = s.to_bytes().len().try_into().unwrap(); let encoded = - unsafe { pg_sys::pg_server_to_any(s.as_ptr(), str_len, pg_sys::pg_enc_PG_UTF8 as _) }; + unsafe { pg_sys::pg_server_to_any(s.as_ptr(), str_len, pg_sys::pg_enc::PG_UTF8 as _) }; if encoded as usize == s.as_ptr() as usize { //TODO redundant check? return s.to_str().unwrap(); diff --git a/extension/src/serialization/collations.rs b/extension/src/serialization/collations.rs index bc52e72b..2284eab7 100644 --- a/extension/src/serialization/collations.rs +++ b/extension/src/serialization/collations.rs @@ -41,7 +41,7 @@ impl PgCollationId { #[allow(non_upper_case_globals)] const Anum_pg_collation_oid: u32 = 1; // https://github.com/postgres/postgres/blob/e955bd4b6c2bcdbd253837f6cf4c7520b98e69d4/src/include/catalog/pg_collation.dat -pub(crate) const DEFAULT_COLLATION_OID: Oid = unsafe { pg_sys::Oid::from_u32_unchecked(100) }; +pub(crate) const DEFAULT_COLLATION_OID: Oid = unsafe { Oid::from_u32_unchecked(100) }; #[allow(non_camel_case_types)] #[derive(Copy, Clone)] @@ -78,7 +78,7 @@ type Form_pg_database = *mut FormData_pg_database; static DEFAULT_COLLATION_NAME: Lazy = Lazy::new(|| unsafe { let tuple = pg_sys::SearchSysCache1( - pg_sys::SysCacheIdentifier_DATABASEOID as _, + pg_sys::SysCacheIdentifier::DATABASEOID as _, pg_sys::Datum::from(pg_sys::MyDatabaseId), ); if tuple.is_null() { @@ -91,7 +91,7 @@ static DEFAULT_COLLATION_NAME: Lazy = Lazy::new(|| unsafe { let collation_name = pg_sys::pg_server_to_any( collation_name, collation_name_len as _, - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ); let collation_name = CStr::from_ptr(collation_name); pg_sys::ReleaseSysCache(tuple); @@ -110,25 +110,25 @@ impl Serialize for PgCollationId { } let tuple = pg_sys::SearchSysCache1( - pg_sys::SysCacheIdentifier_COLLOID as _, + pg_sys::SysCacheIdentifier::COLLOID as _, pg_sys::Datum::from(self.0), ); if tuple.is_null() { - pgrx::error!("no collation info for oid {}", self.0); + pgrx::error!("no collation info for oid {}", self.0.as_u32()); } let collation_tuple: Form_pg_collation = get_struct(tuple); let namespace = pg_sys::get_namespace_name((*collation_tuple).collnamespace); if namespace.is_null() { - pgrx::error!("invalid schema oid {}", (*collation_tuple).collnamespace); + pgrx::error!("invalid schema oid {}", (*collation_tuple).collnamespace.as_u32()); } let namespace_len = CStr::from_ptr(namespace).to_bytes().len(); let namespace = pg_sys::pg_server_to_any( namespace, namespace_len as _, - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ); let namespace = CStr::from_ptr(namespace); let namespace = namespace.to_str().unwrap(); @@ -143,7 +143,7 @@ impl Serialize for PgCollationId { let collation_name = pg_sys::pg_server_to_any( collation_name, collation_name_len as _, - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ); CStr::from_ptr(collation_name) }; @@ -181,12 +181,12 @@ impl<'de> Deserialize<'de> for PgCollationId { let namespace = pg_sys::pg_any_to_server( namespace.as_ptr(), namespace_len as _, - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ); let namespace = CStr::from_ptr(namespace); let name = - pg_sys::pg_any_to_server(name.as_ptr(), name_len as _, pg_sys::pg_enc_PG_UTF8 as _); + pg_sys::pg_any_to_server(name.as_ptr(), name_len as _, pg_sys::pg_enc::PG_UTF8 as _); let name = CStr::from_ptr(name); let namespace_id = pg_sys::LookupExplicitNamespace(namespace.as_ptr(), true); @@ -206,7 +206,7 @@ impl<'de> Deserialize<'de> for PgCollationId { // https://github.com/postgres/postgres/blob/e955bd4b6c2bcdbd253837f6cf4c7520b98e69d4/src/backend/commands/collationcmds.c#L246 let mut collation_id = pg_sys::GetSysCacheOid( - pg_sys::SysCacheIdentifier_COLLNAMEENCNSP as _, + pg_sys::SysCacheIdentifier::COLLNAMEENCNSP as _, Anum_pg_collation_oid as _, pg_sys::Datum::from(name.as_ptr()), pg_sys::Datum::from(pg_sys::GetDatabaseEncoding()), @@ -216,7 +216,7 @@ impl<'de> Deserialize<'de> for PgCollationId { if collation_id == pg_sys::InvalidOid { collation_id = pg_sys::GetSysCacheOid( - pg_sys::SysCacheIdentifier_COLLNAMEENCNSP as _, + pg_sys::SysCacheIdentifier::COLLNAMEENCNSP as _, Anum_pg_collation_oid as _, pg_sys::Datum::from(name.as_ptr()), pg_sys::Datum::from((-1isize) as usize), diff --git a/extension/src/serialization/functions.rs b/extension/src/serialization/functions.rs index 05e76aac..c0e62813 100644 --- a/extension/src/serialization/functions.rs +++ b/extension/src/serialization/functions.rs @@ -35,7 +35,7 @@ impl Serialize for PgProcId { let qualified_name = format_procedure_qualified(self.0); let len = CStr::from_ptr(qualified_name).to_bytes().len(); let qualified_name = - pg_sys::pg_server_to_any(qualified_name, len as _, pg_sys::pg_enc_PG_UTF8 as _); + pg_sys::pg_server_to_any(qualified_name, len as _, pg_sys::pg_enc::PG_UTF8 as _); let qualified_name = CStr::from_ptr(qualified_name); let qualified_name = qualified_name.to_str().unwrap(); qualified_name.serialize(serializer) @@ -52,6 +52,7 @@ impl<'de> Deserialize<'de> for PgProcId { // uncallable with DirectFunctionCall(). Is there a way to // export both? extern "C" { + #[allow(improper_ctypes)] fn regprocedurein(fcinfo: pg_sys::FunctionCallInfo) -> Datum; } let qualified_name = <&str>::deserialize(deserializer)?; @@ -64,6 +65,6 @@ impl<'de> Deserialize<'de> for PgProcId { ) }; - Ok(Self(unsafe { Oid::from_u32_unchecked(oid.value() as _) })) + Ok(Self(Oid::from(oid.value() as u32))) } } diff --git a/extension/src/serialization/types.rs b/extension/src/serialization/types.rs index b183cddd..35f955f1 100644 --- a/extension/src/serialization/types.rs +++ b/extension/src/serialization/types.rs @@ -214,25 +214,25 @@ impl Serialize for PgTypId { { unsafe { let tuple = pg_sys::SearchSysCache1( - pg_sys::SysCacheIdentifier_TYPEOID as _, + pg_sys::SysCacheIdentifier::TYPEOID as _, pg_sys::Datum::from(self.0), ); if tuple.is_null() { - pgrx::error!("no type info for oid {}", self.0); + pgrx::error!("no type info for oid {}", self.0.as_u32()); } let type_tuple: pg_sys::Form_pg_type = get_struct(tuple); let namespace = pg_sys::get_namespace_name((*type_tuple).typnamespace); if namespace.is_null() { - pgrx::error!("invalid schema oid {}", (*type_tuple).typnamespace); + pgrx::error!("invalid schema oid {}", (*type_tuple).typnamespace.as_u32()); } let namespace_len = CStr::from_ptr(namespace).to_bytes().len(); let namespace = pg_sys::pg_server_to_any( namespace, namespace_len as _, - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ); let namespace = CStr::from_ptr(namespace); let namespace = namespace.to_str().unwrap(); @@ -242,7 +242,7 @@ impl Serialize for PgTypId { let type_name = pg_sys::pg_server_to_any( type_name, type_name_len as _, - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ); let type_name = CStr::from_ptr(type_name); let type_name = type_name.to_str().unwrap(); @@ -272,12 +272,12 @@ impl<'de> Deserialize<'de> for PgTypId { let namespace = pg_sys::pg_any_to_server( namespace.as_ptr(), namespace_len as _, - pg_sys::pg_enc_PG_UTF8 as _, + pg_sys::pg_enc::PG_UTF8 as _, ); let namespace = CStr::from_ptr(namespace); let name = - pg_sys::pg_any_to_server(name.as_ptr(), name_len as _, pg_sys::pg_enc_PG_UTF8 as _); + pg_sys::pg_any_to_server(name.as_ptr(), name_len as _, pg_sys::pg_enc::PG_UTF8 as _); let name = CStr::from_ptr(name); let namespace_id = pg_sys::LookupExplicitNamespace(namespace.as_ptr(), true); @@ -289,7 +289,7 @@ impl<'de> Deserialize<'de> for PgTypId { } let type_id = pg_sys::GetSysCacheOid( - pg_sys::SysCacheIdentifier_TYPENAMENSP as _, + pg_sys::SysCacheIdentifier::TYPENAMENSP as _, pg_sys::Anum_pg_type_oid as _, pg_sys::Datum::from(name.as_ptr()), pg_sys::Datum::from(namespace_id), diff --git a/extension/src/state_aggregate/accessors.rs b/extension/src/state_aggregate/accessors.rs index 7a85df7e..ab115bc0 100644 --- a/extension/src/state_aggregate/accessors.rs +++ b/extension/src/state_aggregate/accessors.rs @@ -197,7 +197,7 @@ pg_type! { ron_inout_funcs!(AccessorDurationInInt); #[pg_extern(immutable, parallel_safe, name = "duration_in")] -fn accessor_state_agg_duration_in<'a>(state: String) -> AccessorDurationIn<'a> { +fn accessor_state_agg_duration_in(state: String) -> AccessorDurationIn<'static> { crate::build! { AccessorDurationIn { state_len: state.len().try_into().unwrap(), @@ -206,7 +206,7 @@ fn accessor_state_agg_duration_in<'a>(state: String) -> AccessorDurationIn<'a> { } } #[pg_extern(immutable, parallel_safe, name = "duration_in")] -fn accessor_state_agg_duration_in_int<'a>(state: i64) -> AccessorDurationInInt<'a> { +fn accessor_state_agg_duration_in_int(state: i64) -> AccessorDurationInInt<'static> { crate::build! { AccessorDurationInInt { state, @@ -229,7 +229,7 @@ pg_type! { ron_inout_funcs!(AccessorStatePeriodsInt); #[pg_extern(immutable, parallel_safe, name = "state_periods")] -fn accessor_state_agg_state_periods<'a>(state: String) -> AccessorStatePeriods<'a> { +fn accessor_state_agg_state_periods<'a>(state: String) -> AccessorStatePeriods<'static> { crate::build! { AccessorStatePeriods { state_len: state.len().try_into().unwrap(), @@ -238,7 +238,7 @@ fn accessor_state_agg_state_periods<'a>(state: String) -> AccessorStatePeriods<' } } #[pg_extern(immutable, parallel_safe, name = "state_periods")] -fn accessor_state_agg_state_periods_int<'a>(state: i64) -> AccessorStatePeriodsInt<'a> { +fn accessor_state_agg_state_periods_int(state: i64) -> AccessorStatePeriodsInt<'static> { crate::build! { AccessorStatePeriodsInt { state, @@ -266,11 +266,11 @@ pg_type! { ron_inout_funcs!(AccessorDurationInRangeInt); #[pg_extern(immutable, parallel_safe, name = "duration_in")] -fn accessor_state_agg_duration_in_range<'a>( +fn accessor_state_agg_duration_in_range( state: String, start: TimestampTz, interval: default!(Option, "NULL"), -) -> AccessorDurationInRange<'a> { +) -> AccessorDurationInRange<'static> { let interval = interval .map(|interval| crate::datum_utils::interval_to_ms(&start, &interval)) .unwrap_or(NO_INTERVAL_MARKER); @@ -285,11 +285,11 @@ fn accessor_state_agg_duration_in_range<'a>( } } #[pg_extern(immutable, parallel_safe, name = "duration_in")] -fn accessor_state_agg_duration_in_range_int<'a>( +fn accessor_state_agg_duration_in_range_int( state: i64, start: TimestampTz, interval: default!(Option, "NULL"), -) -> AccessorDurationInRangeInt<'a> { +) -> AccessorDurationInRangeInt<'static> { let interval = interval .map(|interval| crate::datum_utils::interval_to_ms(&start, &interval)) .unwrap_or(NO_INTERVAL_MARKER); @@ -310,7 +310,7 @@ pg_type! { ron_inout_funcs!(AccessorStateAt); #[pg_extern(immutable, parallel_safe, name = "state_at")] -fn accessor_state_agg_state_at<'a>(time: TimestampTz) -> AccessorStateAt<'a> { +fn accessor_state_agg_state_at(time: TimestampTz) -> AccessorStateAt<'static> { crate::build! { AccessorStateAt { time: time.into(), @@ -326,7 +326,7 @@ pg_type! { ron_inout_funcs!(AccessorStateAtInt); #[pg_extern(immutable, parallel_safe, name = "state_at_int")] -fn accessor_state_agg_state_at_int<'a>(time: TimestampTz) -> AccessorStateAtInt<'a> { +fn accessor_state_agg_state_at_int(time: TimestampTz) -> AccessorStateAtInt<'static> { crate::build! { AccessorStateAtInt { time: time.into(), diff --git a/extension/src/state_aggregate/rollup.rs b/extension/src/state_aggregate/rollup.rs index 7ec6cc4c..4ec05689 100644 --- a/extension/src/state_aggregate/rollup.rs +++ b/extension/src/state_aggregate/rollup.rs @@ -324,10 +324,10 @@ pub fn state_agg_rollup_trans<'a>( } #[pg_extern(immutable, parallel_safe, schema = "toolkit_experimental")] -fn compact_state_agg_rollup_final<'a>( +fn compact_state_agg_rollup_final( state: Internal, fcinfo: pg_sys::FunctionCallInfo, -) -> Option> { +) -> Option> { compact_state_agg_rollup_final_inner(unsafe { state.to_inner() }, fcinfo) } @@ -350,10 +350,10 @@ fn compact_state_agg_rollup_final_inner<'a>( } #[pg_extern(immutable, parallel_safe)] -fn state_agg_rollup_final<'a>( +fn state_agg_rollup_final( state: Internal, fcinfo: pg_sys::FunctionCallInfo, -) -> Option> { +) -> Option> { state_agg_rollup_final_inner(unsafe { state.to_inner() }, fcinfo) } diff --git a/extension/src/stats_agg.rs b/extension/src/stats_agg.rs index 0f3342f8..62e73d65 100644 --- a/extension/src/stats_agg.rs +++ b/extension/src/stats_agg.rs @@ -604,10 +604,10 @@ pub fn stats2d_combine_inner<'s, 'v>( } #[pg_extern(immutable, parallel_safe)] -fn stats1d_final<'s>( +fn stats1d_final( state: Internal, fcinfo: pg_sys::FunctionCallInfo, -) -> Option> { +) -> Option> { unsafe { in_aggregate_context(fcinfo, || match state.get() { None => None, @@ -620,11 +620,11 @@ fn stats1d_final<'s>( } #[pg_extern(immutable, parallel_safe)] -fn stats1d_tf_final<'s>( +fn stats1d_tf_final( state: Internal, fcinfo: pg_sys::FunctionCallInfo, // return a normal stats summary here -) -> Option> { +) -> Option> { unsafe { in_aggregate_context(fcinfo, || match state.get() { None => None, @@ -640,10 +640,10 @@ fn stats1d_tf_final<'s>( } #[pg_extern(immutable, parallel_safe)] -fn stats2d_final<'s>( +fn stats2d_final( state: Internal, fcinfo: pg_sys::FunctionCallInfo, -) -> Option> { +) -> Option> { unsafe { in_aggregate_context(fcinfo, || match state.get() { None => None, @@ -656,10 +656,10 @@ fn stats2d_final<'s>( } #[pg_extern(immutable, parallel_safe)] -fn stats2d_tf_final<'s>( +fn stats2d_tf_final( state: Internal, fcinfo: pg_sys::FunctionCallInfo, -) -> Option> { +) -> Option> { unsafe { in_aggregate_context(fcinfo, || match state.get() { None => None, @@ -741,7 +741,13 @@ extension_sql!( );\n\ ", name = "stats_agg_no_inv", - requires = [stats1d_trans, stats1d_final, stats1d_combine], + requires = [ + stats1d_trans, + stats1d_final, + stats1d_combine, + stats1d_trans_serialize, + stats1d_trans_deserialize + ], ); // same things for the 2d case @@ -769,9 +775,9 @@ extension_sql!( stats2d_combine, stats2d_trans_serialize, stats2d_trans_deserialize, - stats2d_trans, - stats2d_inv_trans, - stats2d_final + stats2d_tf_trans, + stats2d_tf_inv_trans, + stats2d_tf_final, ], ); @@ -808,7 +814,13 @@ extension_sql!( );\n\ ", name = "stats_agg2_no_inv", - requires = [stats2d_trans, stats2d_final, stats2d_combine], + requires = [ + stats2d_trans, + stats2d_final, + stats2d_combine, + stats2d_trans_serialize, + stats2d_trans_deserialize + ], ); // Currently, rollup does not have the inverse function so if you want the behavior where we don't use the inverse, diff --git a/extension/src/time_vector/pipeline.rs b/extension/src/time_vector/pipeline.rs index a81666ae..abd3bd2b 100644 --- a/extension/src/time_vector/pipeline.rs +++ b/extension/src/time_vector/pipeline.rs @@ -186,7 +186,7 @@ pub(crate) unsafe fn pipeline_support_helper( let input = input.unwrap().unwrap(); let input: *mut pg_sys::Node = input.cast_mut_ptr(); - if !pgrx::is_a(input, pg_sys::NodeTag_T_SupportRequestSimplify) { + if !pgrx::is_a(input, pg_sys::NodeTag::T_SupportRequestSimplify) { return no_change(); } @@ -198,10 +198,10 @@ pub(crate) unsafe fn pipeline_support_helper( let arg1 = original_args.head().unwrap(); let arg2 = original_args.tail().unwrap(); - let (executor_id, lhs_args) = if is_a(arg1, pg_sys::NodeTag_T_OpExpr) { + let (executor_id, lhs_args) = if is_a(arg1, pg_sys::NodeTag::T_OpExpr) { let old_executor: *mut pg_sys::OpExpr = arg1.cast(); ((*old_executor).opfuncid, (*old_executor).args) - } else if is_a(arg1, pg_sys::NodeTag_T_FuncExpr) { + } else if is_a(arg1, pg_sys::NodeTag::T_FuncExpr) { let old_executor: *mut pg_sys::FuncExpr = arg1.cast(); ((*old_executor).funcid, (*old_executor).args) } else { @@ -244,13 +244,13 @@ pub(crate) unsafe fn pipeline_support_helper( let old_series = lhs_args.head().unwrap(); let old_const = lhs_args.tail().unwrap(); - if !is_a(old_const, pg_sys::NodeTag_T_Const) { + if !is_a(old_const, pg_sys::NodeTag::T_Const) { return no_change(); } let old_const: *mut pg_sys::Const = old_const.cast(); - if !is_a(arg2, pg_sys::NodeTag_T_Const) { + if !is_a(arg2, pg_sys::NodeTag::T_Const) { return no_change(); } diff --git a/extension/src/time_vector/pipeline/arithmetic.rs b/extension/src/time_vector/pipeline/arithmetic.rs index 7ddcd903..d9f4c9a0 100644 --- a/extension/src/time_vector/pipeline/arithmetic.rs +++ b/extension/src/time_vector/pipeline/arithmetic.rs @@ -73,7 +73,7 @@ pub fn apply( name = "add", schema = "toolkit_experimental" )] -pub fn pipeline_add<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_add(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Add, rhs }.flatten() } @@ -83,7 +83,7 @@ pub fn pipeline_add<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPip name = "sub", schema = "toolkit_experimental" )] -pub fn pipeline_sub<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_sub(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Sub, rhs }.flatten() } @@ -93,7 +93,7 @@ pub fn pipeline_sub<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPip name = "mul", schema = "toolkit_experimental" )] -pub fn pipeline_mul<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_mul(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Mul, rhs }.flatten() } @@ -103,7 +103,7 @@ pub fn pipeline_mul<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPip name = "div", schema = "toolkit_experimental" )] -pub fn pipeline_div<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_div(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Div, rhs }.flatten() } @@ -113,7 +113,7 @@ pub fn pipeline_div<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPip name = "mod", schema = "toolkit_experimental" )] -pub fn pipeline_mod<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_mod(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Mod, rhs }.flatten() } @@ -123,7 +123,7 @@ pub fn pipeline_mod<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPip name = "power", schema = "toolkit_experimental" )] -pub fn pipeline_power<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_power(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Power, rhs, @@ -138,7 +138,7 @@ pub fn pipeline_power<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorP name = "logn", schema = "toolkit_experimental" )] -pub fn pipeline_log_n<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_log_n(rhs: f64) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: LogN, rhs, @@ -156,7 +156,7 @@ pub fn pipeline_log_n<'e>(rhs: f64) -> toolkit_experimental::UnstableTimevectorP name = "abs", schema = "toolkit_experimental" )] -pub fn pipeline_abs<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_abs() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Abs, rhs: 0.0, @@ -170,7 +170,7 @@ pub fn pipeline_abs<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e name = "cbrt", schema = "toolkit_experimental" )] -pub fn pipeline_cbrt<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_cbrt() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Cbrt, rhs: 0.0, @@ -184,7 +184,7 @@ pub fn pipeline_cbrt<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<' name = "ceil", schema = "toolkit_experimental" )] -pub fn pipeline_ceil<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_ceil() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Ceil, rhs: 0.0, @@ -198,7 +198,7 @@ pub fn pipeline_ceil<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<' name = "floor", schema = "toolkit_experimental" )] -pub fn pipeline_floor<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_floor() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Floor, rhs: 0.0, @@ -207,7 +207,7 @@ pub fn pipeline_floor<'e>() -> toolkit_experimental::UnstableTimevectorPipeline< } #[pg_extern(immutable, parallel_safe, name = "ln", schema = "toolkit_experimental")] -pub fn pipeline_ln<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_ln() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Ln, rhs: 0.0, @@ -221,7 +221,7 @@ pub fn pipeline_ln<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> name = "log10", schema = "toolkit_experimental" )] -pub fn pipeline_log10<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_log10() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Log10, rhs: 0.0, @@ -235,7 +235,7 @@ pub fn pipeline_log10<'e>() -> toolkit_experimental::UnstableTimevectorPipeline< name = "round", schema = "toolkit_experimental" )] -pub fn pipeline_round<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_round() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Round, rhs: 0.0, @@ -249,7 +249,7 @@ pub fn pipeline_round<'e>() -> toolkit_experimental::UnstableTimevectorPipeline< name = "sign", schema = "toolkit_experimental" )] -pub fn pipeline_sign<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_sign() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Sign, rhs: 0.0, @@ -263,7 +263,7 @@ pub fn pipeline_sign<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<' name = "sqrt", schema = "toolkit_experimental" )] -pub fn pipeline_sqrt<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_sqrt() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Sqrt, rhs: 0.0, @@ -277,7 +277,7 @@ pub fn pipeline_sqrt<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<' name = "trunc", schema = "toolkit_experimental" )] -pub fn pipeline_trunc<'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn pipeline_trunc() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Arithmetic { function: Trunc, rhs: 0.0, diff --git a/extension/src/time_vector/pipeline/delta.rs b/extension/src/time_vector/pipeline/delta.rs index 44041814..1ae1969f 100644 --- a/extension/src/time_vector/pipeline/delta.rs +++ b/extension/src/time_vector/pipeline/delta.rs @@ -11,9 +11,9 @@ use crate::accessors::AccessorDelta; name = "delta_cast", schema = "toolkit_experimental" )] -pub fn delta_pipeline_element<'p, 'e>( +pub fn delta_pipeline_element<'p>( accessor: AccessorDelta<'p>, -) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { let _ = accessor; Element::Delta {}.flatten() } @@ -25,6 +25,7 @@ extension_sql!( AS IMPLICIT; "#, name = "accessor_delta_cast", + requires = [delta_pipeline_element] ); pub fn timevector_delta<'s>(series: &Timevector_TSTZ_F64<'s>) -> Timevector_TSTZ_F64<'s> { diff --git a/extension/src/time_vector/pipeline/fill_to.rs b/extension/src/time_vector/pipeline/fill_to.rs index 39e9b429..f6a1033b 100644 --- a/extension/src/time_vector/pipeline/fill_to.rs +++ b/extension/src/time_vector/pipeline/fill_to.rs @@ -55,10 +55,10 @@ impl FillToMethod { name = "fill_to", schema = "toolkit_experimental" )] -pub fn fillto_pipeline_element<'e>( +pub fn fillto_pipeline_element( interval: crate::raw::Interval, fill_method: String, -) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { unsafe { let interval = interval.0.cast_mut_ptr::() as *const pg_sys::Interval; // TODO: store the postgres interval object and use postgres timestamp/interval functions diff --git a/extension/src/time_vector/pipeline/filter.rs b/extension/src/time_vector/pipeline/filter.rs index c2a9d011..fd1f2392 100644 --- a/extension/src/time_vector/pipeline/filter.rs +++ b/extension/src/time_vector/pipeline/filter.rs @@ -9,9 +9,9 @@ use super::*; name = "filter", schema = "toolkit_experimental" )] -pub fn filter_lambda_pipeline_element<'l, 'e>( +pub fn filter_lambda_pipeline_element<'l>( lambda: toolkit_experimental::Lambda<'l>, -) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { let expression = lambda.parse(); if expression.ty() != &lambda::Type::Bool { panic!("invalid lambda type: the lambda must return a BOOLEAN") diff --git a/extension/src/time_vector/pipeline/lambda.rs b/extension/src/time_vector/pipeline/lambda.rs index 1f82393a..a98b39d6 100644 --- a/extension/src/time_vector/pipeline/lambda.rs +++ b/extension/src/time_vector/pipeline/lambda.rs @@ -360,7 +360,16 @@ impl PartialOrd for Value { use std::mem::discriminant; use Value::*; + // XXX `NodeTag` somewhere inside `pg_sys::FunctionCallInfo` triggers + // `improper_ctypes` lint. The `pgrx` author explains the issue in + // details here: + // + // https://github.com/rust-lang/rust/issues/116831 + // + // For now it seems OK to suppress these warnings here and below with + // #[allow(improper_ctypes)] extern "C" { + #[allow(improper_ctypes)] fn interval_cmp(fcinfo: pg_sys::FunctionCallInfo) -> pg_sys::Datum; } @@ -392,6 +401,7 @@ impl PartialEq for Value { use std::mem::discriminant; use Value::*; extern "C" { + #[allow(improper_ctypes)] fn interval_eq(fcinfo: pg_sys::FunctionCallInfo) -> pg_sys::Datum; } diff --git a/extension/src/time_vector/pipeline/lambda/executor.rs b/extension/src/time_vector/pipeline/lambda/executor.rs index 20196973..b820e440 100644 --- a/extension/src/time_vector/pipeline/lambda/executor.rs +++ b/extension/src/time_vector/pipeline/lambda/executor.rs @@ -186,6 +186,16 @@ where // uncallable with DirectFunctionCall(). Is there a way to // export both? // TODO This is fixed in a newer pgrx version, should remove after upgrade + + // XXX `NodeTag` somewhere inside `pg_sys::FunctionCallInfo` triggers + // `improper_ctypes` lint. The `pgrx` author explains the issue in + // details here: + // + // https://github.com/rust-lang/rust/issues/116831 + // + // For now it seems OK to suppress these warnings here with + // #[allow(improper_ctypes)] + #[allow(improper_ctypes)] extern "C" { fn interval_pl(fcinfo: pg_sys::FunctionCallInfo) -> pg_sys::Datum; fn interval_mi(fcinfo: pg_sys::FunctionCallInfo) -> pg_sys::Datum; diff --git a/extension/src/time_vector/pipeline/lambda/parser.rs b/extension/src/time_vector/pipeline/lambda/parser.rs index 20f25e71..5bc46c34 100644 --- a/extension/src/time_vector/pipeline/lambda/parser.rs +++ b/extension/src/time_vector/pipeline/lambda/parser.rs @@ -369,6 +369,7 @@ fn parse_timestamptz(val: &str) -> i64 { // uncallable with DirectFunctionCall(). Is there a way to // export both? extern "C" { + #[allow(improper_ctypes)] fn timestamptz_in(fcinfo: pg_sys::FunctionCallInfo) -> pg_sys::Datum; } @@ -390,6 +391,7 @@ fn parse_interval(val: &str) -> *mut pg_sys::Interval { // uncallable with DirectFunctionCall(). Is there a way to // export both? extern "C" { + #[allow(improper_ctypes)] fn interval_in(fcinfo: pg_sys::FunctionCallInfo) -> pg_sys::Datum; } diff --git a/extension/src/time_vector/pipeline/map.rs b/extension/src/time_vector/pipeline/map.rs index 5a571d77..31de1d53 100644 --- a/extension/src/time_vector/pipeline/map.rs +++ b/extension/src/time_vector/pipeline/map.rs @@ -16,9 +16,9 @@ use crate::serialization::PgProcId; name = "map", schema = "toolkit_experimental" )] -pub fn map_lambda_pipeline_element<'l, 'e>( +pub fn map_lambda_pipeline_element<'l>( lambda: toolkit_experimental::Lambda<'l>, -) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { let expression = lambda.parse(); if expression.ty() != &lambda::Type::Double && !expression.ty_is_ts_point() { panic!("invalid lambda type: the lambda must return a DOUBLE PRECISION or (TimestampTZ, DOUBLE PRECISION)") @@ -86,15 +86,15 @@ pub fn map_lambda_over_series( name = "map_series", schema = "toolkit_experimental" )] -pub fn map_series_pipeline_element<'e>( +pub fn map_series_pipeline_element( function: crate::raw::regproc, -) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { map_series_element(crate::raw::regproc::from(function.0)).flatten() } pub fn map_series_element<'a>(function: crate::raw::regproc) -> Element<'a> { let function: pg_sys::regproc = - unsafe { pg_sys::Oid::from_u32_unchecked(function.0.value() as u32) } + pg_sys::Oid::from(function.0.value() as u32) .try_into() .unwrap(); check_user_function_type(function); @@ -152,14 +152,14 @@ pub fn apply_to_series( name = "map_data", schema = "toolkit_experimental" )] -pub fn map_data_pipeline_element<'e>( +pub fn map_data_pipeline_element( function: crate::raw::regproc, -) -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +) -> toolkit_experimental::UnstableTimevectorPipeline<'static> { let mut argtypes: *mut pg_sys::Oid = ptr::null_mut(); let mut nargs: ::std::os::raw::c_int = 0; let rettype = unsafe { pg_sys::get_func_signature( - pg_sys::Oid::from_u32_unchecked(function.0.value() as u32), + pg_sys::Oid::from(function.0.value() as u32), &mut argtypes, &mut nargs, ) @@ -178,7 +178,7 @@ pub fn map_data_pipeline_element<'e>( } Element::MapData { - function: PgProcId(unsafe { pg_sys::Oid::from_u32_unchecked(function.0.value() as u32) }), + function: PgProcId(pg_sys::Oid::from(function.0.value() as u32)), } .flatten() } diff --git a/extension/src/time_vector/pipeline/sort.rs b/extension/src/time_vector/pipeline/sort.rs index 4e331c1a..6da2b321 100644 --- a/extension/src/time_vector/pipeline/sort.rs +++ b/extension/src/time_vector/pipeline/sort.rs @@ -9,7 +9,7 @@ use super::*; name = "sort", schema = "toolkit_experimental" )] -pub fn sort_pipeline_element<'p, 'e>() -> toolkit_experimental::UnstableTimevectorPipeline<'e> { +pub fn sort_pipeline_element<'p>() -> toolkit_experimental::UnstableTimevectorPipeline<'static> { Element::Sort {}.flatten() } diff --git a/extension/src/type_builder.rs b/extension/src/type_builder.rs index e5766183..9891bcab 100644 --- a/extension/src/type_builder.rs +++ b/extension/src/type_builder.rs @@ -1,4 +1,4 @@ -#[derive(Copy, Clone, Debug)] +#[derive(Copy, Clone, Debug, serde::Serialize)] pub enum CachedDatum<'r> { None, FromInput(&'r [u8]), @@ -11,6 +11,19 @@ impl PartialEq for CachedDatum<'_> { } } +// XXX Required by [`pgrx::PostgresType`] for default [`pgrx::FromDatum`] +// implementation but isn't used since we implement [`pgrx::FromDatum`] +// ourselves. We need a custom implementation because with the default one the +// compiler complains that `'input` and `'de` lifetimes are incompatible. +impl<'de> serde::Deserialize<'de> for CachedDatum<'_> { + fn deserialize(_deserializer: D) -> Result + where + D: serde::de::Deserializer<'de>, + { + unimplemented!(); + } +} + #[macro_export] macro_rules! pg_type { // base case, all fields are collected into $vals @@ -24,8 +37,9 @@ macro_rules! pg_type { ) => { $crate::pg_type_impl!{ 'input - $(#[$attrs])* - struct $name $(<$inlife>)? { + $(#[$attrs])* + struct $name $(<$inlife>)? + { $($($vals)*)? } } @@ -73,6 +87,7 @@ macro_rules! pg_type { } $crate::pg_type!{ $(#[$attrs])* + #[derive(serde::Serialize, serde::Deserialize)] struct $name $(<$inlife>)? { $($tail)* } @@ -98,8 +113,8 @@ macro_rules! pg_type_impl { ) => { ::paste::paste! { $(#[$attrs])* - #[derive(pgrx::PostgresType, Clone)] - #[inoutfuncs] + #[derive(pgrx::PostgresType, Clone, serde::Serialize, serde::Deserialize)] + #[bikeshed_postgres_type_manually_impl_from_into_datum] pub struct $name<$lifetemplate>(pub [<$name Data>] $(<$inlife>)?, $crate::type_builder::CachedDatum<$lifetemplate>); flat_serialize_macro::flat_serialize! { @@ -115,6 +130,24 @@ macro_rules! pg_type_impl { } } + #[::pgrx::pgrx_macros::pg_extern(immutable,parallel_safe)] + pub fn [<$name:lower _in>](input: Option<&::core::ffi::CStr>) -> Option<$name<'static>> { + input.map_or_else(|| { + while let Some(m) = <$name as ::pgrx::inoutfuncs::InOutFuncs>::NULL_ERROR_MESSAGE { + ::pgrx::pg_sys::error!("{m}"); + } + None + }, |i| Some(<$name as ::pgrx::inoutfuncs::InOutFuncs>::input(i))) + } + + #[::pgrx::pgrx_macros::pg_extern(immutable,parallel_safe)] + pub fn [<$name:lower _out>](input: $name) -> ::pgrx::ffi::CString { + let mut buffer = ::pgrx::stringinfo::StringInfo::new(); + ::pgrx::inoutfuncs::InOutFuncs::output(&input, &mut buffer); + // SAFETY: We just constructed this StringInfo ourselves + unsafe { buffer.leak_cstr().to_owned() } + } + impl<'input> $name<'input> { pub fn in_current_context<'foo>(&self) -> $name<'foo> { unsafe { self.0.flatten() } @@ -170,7 +203,7 @@ macro_rules! pg_type_impl { let rem = self.fill_slice(slice); debug_assert_eq!(rem.len(), 0); - ::pgrx::set_varsize(memory.cast(), len as i32); + ::pgrx::set_varsize_4b(memory.cast(), len as i32); slice::from_raw_parts(memory.cast(), len) } } @@ -217,6 +250,32 @@ macro_rules! pg_type_impl { } } + unsafe impl<$lifetemplate> ::pgrx::callconv::BoxRet for $name<$lifetemplate> { + unsafe fn box_into<'fcx>( + self, + fcinfo: &mut ::pgrx::callconv::FcInfo<'fcx>, + ) -> ::pgrx::datum::Datum<'fcx> { + match ::pgrx::datum::IntoDatum::into_datum(self) { + None => fcinfo.return_null(), + Some(datum) => unsafe { fcinfo.return_raw_datum(datum) } + } + } + } + + unsafe impl<'fcx, $lifetemplate> callconv::ArgAbi<'fcx> for $name<$lifetemplate> + where + Self: 'fcx, + { + unsafe fn unbox_arg_unchecked(arg: callconv::Arg<'_, 'fcx>) -> Self { + let index = arg.index(); + unsafe { arg.unbox_arg_using_from_datum().unwrap_or_else(|| panic!("argument {index} must not be null")) } + } + + unsafe fn unbox_nullable_arg(arg: callconv::Arg<'_, 'fcx>) -> nullable::Nullable { + unsafe { arg.unbox_arg_using_from_datum().into() } + } + } + impl<$lifetemplate> ::std::ops::Deref for $name <$lifetemplate> { type Target=[<$name Data>] $(<$inlife>)?; fn deref(&self) -> &Self::Target { @@ -360,12 +419,13 @@ macro_rules! do_serialize { .unwrap_or_else(|e| pgrx::error!("serialization error {}", e)); unsafe { let len = writer.position().try_into().expect("serialized size too large"); - ::pgrx::set_varsize(writer.get_mut().as_mut_ptr() as *mut _, len); + ::pgrx::set_varsize_4b(writer.get_mut().as_mut_ptr() as *mut _, len); } $crate::raw::bytea::from(pg_sys::Datum::from(writer.into_inner().as_mut_ptr())) } }; } + #[macro_export] macro_rules! do_deserialize { ($bytes: expr, $t: ty) => {{ diff --git a/tools/build b/tools/build index 1c302b05..ee2988b4 100755 --- a/tools/build +++ b/tools/build @@ -20,7 +20,7 @@ usage() { } require_pg_version() { - [ -n "$pg_version" ] || die 'specify one of -pg12 | -pg13 | -pg14 | -pg15 | -pg16' + [ -n "$pg_version" ] || die 'specify one of -pg12 | -pg13 | -pg14 | -pg15 | -pg16 | -pg17' } find_pg_config() { @@ -45,6 +45,8 @@ find_profile() { [ $# -ge 1 ] || usage +rustc --version + while [ $# -gt 0 ]; do arg="$1" shift diff --git a/tools/dependencies.sh b/tools/dependencies.sh index 98fe986c..56997f94 100644 --- a/tools/dependencies.sh +++ b/tools/dependencies.sh @@ -7,16 +7,16 @@ # All our automation scripts read this, so at least we're not duplicating this # information across all those. -PG_VERSIONS='12 13 14 15 16' +PG_VERSIONS='12 13 14 15 16 17' # TODO: extend this with 16 this once TimescaleDB supports PostgreSQL 16: issue #5752 -TSDB_PG_VERSIONS='12 13 14 15' +TSDB_PG_VERSIONS='12 13 14 15 16 17' CARGO_EDIT=0.11.2 # Keep synchronized with extension/Cargo.toml and `cargo install --version N.N.N cargo-pgrx` in Readme.md . -PGRX_VERSION=0.10.2 +PGRX_VERSION=0.12.8 -RUST_TOOLCHAIN=1.70.0 +RUST_TOOLCHAIN=1.82.0 RUST_PROFILE=minimal RUST_COMPONENTS=clippy,rustfmt