From 2bad345e555271004e7da0cfa024d52e29e0ac5b Mon Sep 17 00:00:00 2001 From: Feike Steenbergen Date: Thu, 10 Apr 2025 17:05:28 +0200 Subject: [PATCH 1/2] Include unit tests for entry() --- crates/udd-sketch/src/lib.rs | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/crates/udd-sketch/src/lib.rs b/crates/udd-sketch/src/lib.rs index 315feef8..3550df88 100644 --- a/crates/udd-sketch/src/lib.rs +++ b/crates/udd-sketch/src/lib.rs @@ -674,6 +674,7 @@ mod tests { } } + use crate::SketchHashKey::Invalid; use quickcheck::*; #[derive(Hash, PartialEq, Eq, PartialOrd, Ord, Copy, Clone, Debug)] @@ -685,6 +686,63 @@ mod tests { } } + #[test] + fn test_entry_insertion_order() { + let mut map = SketchHashMap { + map: HashMap::new(), + head: Invalid, + }; + + map.entry(SketchHashKey::Negative(i64::MIN)).count += 5; + map.entry(SketchHashKey::Negative(10)).count += 1; + map.entry(SketchHashKey::Positive(i64::MAX - 100)).count += 17; + map.entry(SketchHashKey::Zero).count += 7; + map.entry(SketchHashKey::Positive(-10)).count += 11; + map.entry(SketchHashKey::Negative(-10)).count += 3; + map.entry(SketchHashKey::Positive(10)).count += 13; + + let keys: Vec<_> = map.iter().collect::>(); + assert_eq!( + keys, + vec![ + (SketchHashKey::Negative(10), 1), + (SketchHashKey::Negative(-10), 3), + (SketchHashKey::Negative(i64::MIN), 5), + (SketchHashKey::Zero, 7), + (SketchHashKey::Positive(-10), 11), + (SketchHashKey::Positive(10), 13), + (SketchHashKey::Positive(i64::MAX - 100), 17), + ] + ); + + // We add some things before the current head, insert some new ones, + // add some to the end, and again inbetween some others + map.entry(SketchHashKey::Negative(i64::MAX)).count += 3; + map.entry(SketchHashKey::Negative(-10)).count += 23; + map.entry(SketchHashKey::Positive(10)).count += 123; + map.entry(SketchHashKey::Positive(9)).count += 29; + map.entry(SketchHashKey::Positive(11)).count += 31; + map.entry(SketchHashKey::Positive(i64::MAX)).count += 8; + + let keys: Vec<_> = map.iter().collect::>(); + assert_eq!( + keys, + vec![ + (SketchHashKey::Negative(i64::MAX), 3), + (SketchHashKey::Negative(10), 1), + (SketchHashKey::Negative(-10), 26), // 3 + 23 + (SketchHashKey::Negative(i64::MIN), 5), + (SketchHashKey::Zero, 7), + (SketchHashKey::Positive(-10), 11), + (SketchHashKey::Positive(9), 29), + (SketchHashKey::Positive(10), 136), // 13 + 123 + (SketchHashKey::Positive(11), 31), + (SketchHashKey::Positive(i64::MAX - 100), 17), + (SketchHashKey::Positive(i64::MAX), 8), + ] + ); + } + #[quickcheck] // Use multiple hashsets as input to allow a small number of duplicate values without getting ridiculous levels of duplication (as quickcheck is inclined to create) fn fuzzing_test( From 790439da79eba636455b901c56c33bdf8706b51f Mon Sep 17 00:00:00 2001 From: Feike Steenbergen Date: Thu, 10 Apr 2025 17:09:13 +0200 Subject: [PATCH 2/2] Default to PostgreSQL 17, minor bump for pgrx --- Cargo.lock | 30 +++++++++++++++--------------- Readme.md | 2 +- extension/Cargo.toml | 10 +++++----- tools/dependencies.sh | 4 ++-- 4 files changed, 23 insertions(+), 23 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0b9d16dc..d2ee0703 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" @@ -1495,9 +1495,9 @@ dependencies = [ [[package]] name = "pgrx" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c6468e2a7c4085707209cf7f7e14a7b73c8b7f41fc716283024a09180b620a45" +checksum = "227bf7e162ce710994306a97bc56bb3fe305f21120ab6692e2151c48416f5c0d" dependencies = [ "atomic-traits", "bitflags 2.6.0", @@ -1519,9 +1519,9 @@ dependencies = [ [[package]] name = "pgrx-bindgen" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04d822012e4919882cb9b1851ae9e4b4b03703ddf2ef4af3522025c8944e9c7d" +checksum = "81cbcd956c2da35baaf0a116e6f6a49a6c2fbc8f6b332f66d6fd060bfd00615f" dependencies = [ "bindgen", "cc", @@ -1537,9 +1537,9 @@ dependencies = [ [[package]] name = "pgrx-macros" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ffdb879a3880d3034661b4d19f802029abfcde6b8232299f4d4d2c202680af" +checksum = "e2f4291450d65e4deb770ce57ea93e22353d97950566222429cd166ebdf6f938" dependencies = [ "pgrx-sql-entity-graph", "proc-macro2", @@ -1549,9 +1549,9 @@ dependencies = [ [[package]] name = "pgrx-pg-config" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945d664e710e4dcccd459628c6e58b3ccbd0495d2ed751b1d6f73996ceca01a2" +checksum = "86a64a4c6e4e43e73cf8d3379d9533df98ded45c920e1ba8131c979633d74132" dependencies = [ "cargo_toml", "eyre", @@ -1567,9 +1567,9 @@ dependencies = [ [[package]] name = "pgrx-pg-sys" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "489c96adc8af0b917165f47a11e25f77753e227144aa3790be7e241afab9886c" +checksum = "63a5dc64f2a8226434118aa2c4700450fa42b04f29488ad98268848b21c1a4ec" dependencies = [ "cee-scape", "libc", @@ -1582,9 +1582,9 @@ dependencies = [ [[package]] name = "pgrx-sql-entity-graph" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de77a74f3dc80283a97322ab4d65f9f81691eb54d0a5b7c37b93686d351c6096" +checksum = "d81cc2e851c7e36b2f47c03e22d64d56c1d0e762fbde0039ba2cd490cfef3615" dependencies = [ "convert_case", "eyre", @@ -1598,9 +1598,9 @@ dependencies = [ [[package]] name = "pgrx-tests" -version = "0.12.8" +version = "0.12.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73cbf89286dda64fb8ee2126794d140de2294d0b8e04604b5ecddd6ee291fbae" +checksum = "0c2dd5d674cb7d92024709543da06d26723a2f7450c02083116b232587160929" dependencies = [ "clap-cargo", "eyre", diff --git a/Readme.md b/Readme.md index 66a672db..b31f9bcc 100644 --- a/Readme.md +++ b/Readme.md @@ -53,7 +53,7 @@ sudo apt-get install make gcc pkg-config clang postgresql-server-dev-14 libssl-d Next you need [cargo-pgrx](https://github.com/tcdi/pgrx), which can be installed with ```bash -cargo install --version '=0.12.8' --force cargo-pgrx +cargo install --version '=0.12.9' --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. diff --git a/extension/Cargo.toml b/extension/Cargo.toml index 1205e07a..2edcf052 100644 --- a/extension/Cargo.toml +++ b/extension/Cargo.toml @@ -11,7 +11,7 @@ path = "./src/bin/pgrx_embed.rs" crate-type = ["cdylib", "lib"] [features] -default = ["pg16"] +default = ["pg17"] pg12 = ["pgrx/pg12", "pgrx-tests/pg12"] pg13 = ["pgrx/pg13", "pgrx-tests/pg13"] pg14 = ["pgrx/pg14", "pgrx-tests/pg14"] @@ -23,9 +23,9 @@ 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.12.8" -pgrx-macros = "=0.12.8" -pgrx-sql-entity-graph = "=0.12.8" +pgrx = "=0.12.9" +pgrx-macros = "=0.12.9" +pgrx-sql-entity-graph = "=0.12.9" encodings = {path="../crates/encodings"} flat_serialize = {path="../crates/flat_serialize/flat_serialize"} flat_serialize_macro = {path="../crates/flat_serialize/flat_serialize_macro"} @@ -62,5 +62,5 @@ spfunc = "0.1.0" statrs = "0.15.0" [dev-dependencies] -pgrx-tests = "=0.12.8" +pgrx-tests = "=0.12.9" approx = "0.4.0" diff --git a/tools/dependencies.sh b/tools/dependencies.sh index 56997f94..de52b239 100644 --- a/tools/dependencies.sh +++ b/tools/dependencies.sh @@ -8,13 +8,13 @@ # information across all those. PG_VERSIONS='12 13 14 15 16 17' -# TODO: extend this with 16 this once TimescaleDB supports PostgreSQL 16: issue #5752 +# TODO: extend this with 18 this once TimescaleDB supports PostgreSQL 18 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.12.8 +PGRX_VERSION=0.12.9 RUST_TOOLCHAIN=1.82.0 RUST_PROFILE=minimal