From 2b2ea5bf72ea522dba82fe48e2e9b34822bcde88 Mon Sep 17 00:00:00 2001 From: fys <40801205+fengys1996@users.noreply.github.com> Date: Thu, 27 Mar 2025 10:48:44 +0800 Subject: [PATCH] chore: upgrade some dependencies (#5777) * chore: upgrade some dependencies * chore: upgrade some dependencies * fix: cr * fix: ci * fix: test * fix: cargo fmt --- Cargo.lock | 679 ++++++++++-------- Cargo.toml | 32 +- docs/how-to/how-to-write-fuzz-tests.md | 42 +- src/cli/src/bench.rs | 4 +- src/client/src/load_balance.rs | 4 +- src/common/grpc/benches/channel_manager.rs | 2 +- src/common/meta/src/state_store.rs | 12 +- .../src/wal_options_allocator/selector.rs | 2 +- src/common/procedure/src/local/runner.rs | 2 +- src/common/test-util/src/ports.rs | 2 +- src/common/time/src/timestamp.rs | 10 +- src/flow/src/compute/render.rs | 4 +- src/index/src/bloom_filter/applier.rs | 2 +- .../create/sort/external_sort.rs | 8 +- src/log-store/src/kafka/log_store.rs | 6 +- src/meta-client/src/client.rs | 4 +- src/meta-client/src/client/ask_leader.rs | 2 +- src/meta-client/src/client/load_balance.rs | 4 +- src/meta-srv/src/error.rs | 2 +- src/meta-srv/src/region/supervisor.rs | 4 +- src/meta-srv/src/selector/test_utils.rs | 2 +- src/meta-srv/src/selector/weighted_choose.rs | 17 +- src/mito2/benches/memtable_bench.rs | 18 +- .../src/cache/index/bloom_filter_index.rs | 8 +- src/mito2/src/cache/index/inverted_index.rs | 14 +- src/mito2/src/memtable/partition_tree/dict.rs | 4 +- src/mito2/src/sst/parquet/reader.rs | 2 +- src/mito2/src/worker.rs | 4 +- src/query/src/tests/function.rs | 8 +- src/servers/src/mysql/handler.rs | 2 +- src/servers/tests/mysql/mysql_server_test.rs | 5 +- src/servers/tests/postgres/mod.rs | 5 +- tests-fuzz/Cargo.toml | 2 +- tests-fuzz/src/fake.rs | 7 +- tests-fuzz/src/generator/alter_expr.rs | 48 +- tests-fuzz/src/generator/create_expr.rs | 12 +- tests-fuzz/src/generator/insert_expr.rs | 8 +- tests-fuzz/src/generator/select_expr.rs | 10 +- tests-fuzz/src/ir.rs | 38 +- .../src/translator/mysql/insert_expr.rs | 20 +- .../src/translator/mysql/select_expr.rs | 3 +- tests-fuzz/src/utils/process.rs | 6 +- .../targets/ddl/fuzz_alter_logical_table.rs | 10 +- tests-fuzz/targets/ddl/fuzz_alter_table.rs | 10 +- .../targets/ddl/fuzz_create_database.rs | 2 +- .../targets/ddl/fuzz_create_logical_table.rs | 8 +- tests-fuzz/targets/ddl/fuzz_create_table.rs | 6 +- .../failover/fuzz_failover_metric_regions.rs | 14 +- .../failover/fuzz_failover_mito_regions.rs | 28 +- tests-fuzz/targets/fuzz_insert.rs | 10 +- .../targets/fuzz_insert_logical_table.rs | 16 +- .../migration/fuzz_migrate_metric_regions.rs | 16 +- .../migration/fuzz_migrate_mito_regions.rs | 16 +- .../unstable/fuzz_create_table_standalone.rs | 4 +- .../src/tests/instance_kafka_wal_test.rs | 10 +- 55 files changed, 665 insertions(+), 555 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 71c7f1c6ad..26d6e0b96d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -34,7 +34,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", ] @@ -47,10 +47,10 @@ checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "const-random", - "getrandom", + "getrandom 0.2.15", "once_cell", "version_check", - "zerocopy", + "zerocopy 0.7.35", ] [[package]] @@ -221,16 +221,16 @@ dependencies = [ [[package]] name = "aquamarine" -version = "0.3.3" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1da02abba9f9063d786eab1509833ebb2fac0f966862ca59439c76b9c566760" +checksum = "0f50776554130342de4836ba542aa85a4ddb361690d7e8df13774d7284c3d5c2" dependencies = [ "include_dir", "itertools 0.10.5", - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.96", ] [[package]] @@ -930,9 +930,9 @@ dependencies = [ [[package]] name = "axum-macros" -version = "0.4.2" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" +checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", @@ -945,9 +945,9 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1" dependencies = [ - "getrandom", + "getrandom 0.2.15", "instant", - "rand", + "rand 0.8.5", ] [[package]] @@ -1050,7 +1050,7 @@ version = "0.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "cexpr", "clang-sys", "itertools 0.13.0", @@ -1070,9 +1070,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.6.0" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" +checksum = "5c8214115b7bf84099f1309324e63141d4c5d7cc26862f97a0a857dbefe165bd" dependencies = [ "serde", ] @@ -1370,13 +1370,13 @@ dependencies = [ "common-telemetry", "common-time", "common-version", - "dashmap 5.5.3", + "dashmap", "datafusion", "datatypes", "futures", "futures-util", "humantime", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "meta-client", "moka", @@ -1665,7 +1665,7 @@ version = "0.14.0" dependencies = [ "async-trait", "auth", - "base64 0.21.7", + "base64 0.22.1", "cache", "catalog", "chrono", @@ -1695,7 +1695,7 @@ dependencies = [ "nu-ansi-term", "opendal", "query", - "rand", + "rand 0.9.0", "reqwest", "rustyline", "serde", @@ -1737,7 +1737,7 @@ dependencies = [ "prometheus", "prost 0.13.3", "query", - "rand", + "rand 0.9.0", "serde_json", "snafu 0.8.5", "substrait 0.14.0", @@ -1785,7 +1785,7 @@ version = "0.14.0" dependencies = [ "async-trait", "auth", - "base64 0.21.7", + "base64 0.22.1", "cache", "catalog", "chrono", @@ -1830,7 +1830,7 @@ dependencies = [ "prometheus", "prost 0.13.3", "query", - "rand", + "rand 0.9.0", "regex", "reqwest", "rexpect", @@ -1900,7 +1900,7 @@ dependencies = [ "futures", "paste", "pin-project", - "rand", + "rand 0.9.0", "serde", "snafu 0.8.5", "tokio", @@ -1955,18 +1955,18 @@ dependencies = [ "common-test-util", "datafusion", "datatypes", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "futures", "lazy_static", "object-store", "orc-rust", "parquet", "paste", - "rand", + "rand 0.9.0", "regex", "serde", "snafu 0.8.5", - "strum 0.25.0", + "strum 0.27.1", "tokio", "tokio-util", "url", @@ -1992,7 +1992,7 @@ version = "0.14.0" dependencies = [ "http 1.1.0", "snafu 0.8.5", - "strum 0.25.0", + "strum 0.27.1", "tonic 0.12.3", ] @@ -2088,14 +2088,14 @@ dependencies = [ "common-telemetry", "common-time", "criterion 0.4.0", - "dashmap 5.5.3", + "dashmap", "datatypes", "flatbuffers", "hyper 1.4.1", "hyper-util", "lazy_static", "prost 0.13.3", - "rand", + "rand 0.9.0", "snafu 0.8.5", "tokio", "tonic 0.12.3", @@ -2158,7 +2158,7 @@ dependencies = [ "async-stream", "async-trait", "backon", - "base64 0.21.7", + "base64 0.22.1", "bytes", "chrono", "common-base", @@ -2178,19 +2178,19 @@ dependencies = [ "datatypes", "deadpool", "deadpool-postgres", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "etcd-client", "futures", "futures-util", "hex", "humantime-serde", "hyper 0.14.30", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "moka", "prometheus", "prost 0.13.3", - "rand", + "rand 0.9.0", "regex", "rskafka", "serde", @@ -2200,7 +2200,7 @@ dependencies = [ "snafu 0.8.5", "sqlx", "store-api", - "strum 0.25.0", + "strum 0.27.1", "table", "tokio", "tokio-postgres", @@ -2252,7 +2252,7 @@ dependencies = [ "futures-util", "humantime-serde", "object-store", - "rand", + "rand 0.9.0", "serde", "serde_json", "smallvec", @@ -2331,7 +2331,7 @@ dependencies = [ "paste", "pin-project", "prometheus", - "rand", + "rand 0.9.0", "ratelimit", "serde", "serde_json", @@ -2380,7 +2380,7 @@ dependencies = [ "common-query", "common-recordbatch", "once_cell", - "rand", + "rand 0.9.0", "tempfile", ] @@ -2396,7 +2396,7 @@ dependencies = [ "humantime", "humantime-serde", "once_cell", - "rand", + "rand 0.9.0", "serde", "serde_json", "snafu 0.8.5", @@ -2532,17 +2532,11 @@ version = "0.1.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" dependencies = [ - "getrandom", + "getrandom 0.2.15", "once_cell", "tiny-keccak", ] -[[package]] -name = "const_fn" -version = "0.4.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" - [[package]] name = "const_format" version = "0.2.33" @@ -2870,19 +2864,6 @@ dependencies = [ "syn 2.0.96", ] -[[package]] -name = "dashmap" -version = "5.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" -dependencies = [ - "cfg-if", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core 0.9.10", -] - [[package]] name = "dashmap" version = "6.1.0" @@ -2917,7 +2898,7 @@ dependencies = [ "bytes", "bzip2", "chrono", - "dashmap 6.1.0", + "dashmap", "datafusion-catalog", "datafusion-common", "datafusion-common-runtime", @@ -2943,7 +2924,7 @@ dependencies = [ "parking_lot 0.12.3", "parquet", "paste", - "rand", + "rand 0.8.5", "sqlparser 0.52.0 (registry+https://github.com/rust-lang/crates.io-index)", "tempfile", "tokio", @@ -3013,14 +2994,14 @@ source = "git+https://github.com/apache/datafusion.git?rev=2464703c84c400a09cc59 dependencies = [ "arrow", "chrono", - "dashmap 6.1.0", + "dashmap", "datafusion-common", "datafusion-expr", "futures", "log", "object_store", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "tempfile", "url", ] @@ -3082,7 +3063,7 @@ dependencies = [ "itertools 0.13.0", "log", "md-5", - "rand", + "rand 0.8.5", "regex", "sha2", "unicode-segmentation", @@ -3120,7 +3101,7 @@ dependencies = [ "datafusion-common", "datafusion-expr-common", "datafusion-physical-expr-common", - "rand", + "rand 0.8.5", ] [[package]] @@ -3142,7 +3123,7 @@ dependencies = [ "itertools 0.13.0", "log", "paste", - "rand", + "rand 0.8.5", ] [[package]] @@ -3304,7 +3285,7 @@ dependencies = [ "once_cell", "parking_lot 0.12.3", "pin-project-lite", - "rand", + "rand 0.8.5", "tokio", ] @@ -3371,7 +3352,7 @@ dependencies = [ "common-time", "common-version", "common-wal", - "dashmap 5.5.3", + "dashmap", "datafusion", "datafusion-common", "datafusion-expr", @@ -3411,7 +3392,7 @@ dependencies = [ "arrow", "arrow-array", "arrow-schema", - "base64 0.21.7", + "base64 0.22.1", "common-base", "common-decimal", "common-error", @@ -3435,11 +3416,10 @@ dependencies = [ [[package]] name = "deadpool" -version = "0.10.0" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb84100978c1c7b37f09ed3ce3e5f843af02c2a2c431bae5b19230dad2c1b490" +checksum = "5ed5957ff93768adf7a65ab167a17835c3d2c3c50d084fe305174c112f468e2f" dependencies = [ - "async-trait", "deadpool-runtime", "num_cpus", "tokio", @@ -3447,11 +3427,13 @@ dependencies = [ [[package]] name = "deadpool-postgres" -version = "0.12.1" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bda39fa1cfff190d8924d447ad04fd22772c250438ca5ce1dfb3c80621c05aaa" +checksum = "3d697d376cbfa018c23eb4caab1fd1883dd9c906a8c034e8d9a3cb06a7e0bef9" dependencies = [ + "async-trait", "deadpool", + "getrandom 0.2.15", "tokio", "tokio-postgres", "tracing", @@ -3547,15 +3529,6 @@ dependencies = [ "derive_builder_macro 0.11.2", ] -[[package]] -name = "derive_builder" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" -dependencies = [ - "derive_builder_macro 0.12.0", -] - [[package]] name = "derive_builder" version = "0.20.1" @@ -3577,18 +3550,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_builder_core" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" -dependencies = [ - "darling 0.14.4", - "proc-macro2", - "quote", - "syn 1.0.109", -] - [[package]] name = "derive_builder_core" version = "0.20.1" @@ -3611,16 +3572,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "derive_builder_macro" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" -dependencies = [ - "derive_builder_core 0.12.0", - "syn 1.0.109", -] - [[package]] name = "derive_builder_macro" version = "0.20.1" @@ -3675,12 +3626,6 @@ version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" -[[package]] -name = "difflib" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6184e33543162437515c2e2b48714794e37845ec9851711914eec9d308f6ebe8" - [[package]] name = "digest" version = "0.10.7" @@ -3992,7 +3937,7 @@ checksum = "fe5e43d0f78a42ad591453aedb1d7ae631ce7ee445c7643691055a9ed8d3b01c" dependencies = [ "log", "once_cell", - "rand", + "rand 0.8.5", ] [[package]] @@ -4019,8 +3964,8 @@ version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b679f25009b51b71506296f95fb6362ba7d0151172fa7373a8d1611b8bc5d10f" dependencies = [ - "getrandom", - "rand", + "getrandom 0.2.15", + "rand 0.8.5", "siphasher 1.0.1", "wide", ] @@ -4128,15 +4073,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "float-cmp" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" -dependencies = [ - "num-traits", -] - [[package]] name = "float_eq" version = "1.0.1" @@ -4202,7 +4138,7 @@ dependencies = [ "greptime-proto", "http 1.1.0", "hydroflow", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "meta-client", "nom", @@ -4221,7 +4157,7 @@ dependencies = [ "smallvec", "snafu 0.8.5", "store-api", - "strum 0.25.0", + "strum 0.27.1", "substrait 0.14.0", "table", "tokio", @@ -4661,10 +4597,22 @@ dependencies = [ "cfg-if", "js-sys", "libc", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "wasm-bindgen", ] +[[package]] +name = "getrandom" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" +dependencies = [ + "cfg-if", + "libc", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", +] + [[package]] name = "gimli" version = "0.31.0" @@ -4677,7 +4625,7 @@ version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3fda788993cc341f69012feba8bf45c0ba4f3291fcc08e214b4d5a7332d88aff" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "libc", "libgit2-sys", "log", @@ -5086,7 +5034,7 @@ dependencies = [ "byteorder", "bytes", "futures", - "getrandom", + "getrandom 0.2.15", "hydroflow_datalog", "hydroflow_lang", "hydroflow_macro", @@ -5561,13 +5509,13 @@ dependencies = [ "fst", "futures", "greptime-proto", - "itertools 0.10.5", + "itertools 0.14.0", "jieba-rs", "mockall", "pin-project", "prost 0.13.3", "puffin", - "rand", + "rand 0.9.0", "regex", "regex-automata 0.4.8", "roaring", @@ -5635,11 +5583,11 @@ dependencies = [ [[package]] name = "inotify" -version = "0.9.6" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8069d3ec154eb856955c1c0fbffefbf5f3c40a104ec912d4797314c1801abff" +checksum = "f37dccff2791ab604f9babef0ba14fbe0be30bd368dc541e2b08d07c8aa908f3" dependencies = [ - "bitflags 1.3.2", + "bitflags 2.9.0", "inotify-sys", "libc", ] @@ -5731,9 +5679,9 @@ dependencies = [ [[package]] name = "is_debug" -version = "1.0.2" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ea828c9d6638a5bd3d8b14e37502b4d56cae910ccf8a5b7f51c7a0eb1d0508" +checksum = "1fe266d2e243c931d8190177f20bf7f24eed45e96f39e87dc49a27b32d12d407" [[package]] name = "is_terminal_polyfill" @@ -5786,6 +5734,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.11" @@ -5880,7 +5837,7 @@ dependencies = [ "itoa", "nom", "ordered-float 4.3.0", - "rand", + "rand 0.8.5", "ryu", "serde_json", ] @@ -6204,9 +6161,9 @@ dependencies = [ [[package]] name = "libc" -version = "0.2.159" +version = "0.2.171" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "561d97a539a36e26a9a5fad1ea11a3039a67714694aaa379433e580854bc3dc5" +checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6" [[package]] name = "libfuzzer-sys" @@ -6263,7 +6220,7 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "libc", "redox_syscall 0.5.7", ] @@ -6367,10 +6324,10 @@ dependencies = [ "common-time", "common-wal", "delta-encoding", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "futures", "futures-util", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "object-store", "pin-project", @@ -6378,7 +6335,7 @@ dependencies = [ "protobuf", "protobuf-build", "raft-engine", - "rand", + "rand 0.9.0", "rand_distr", "rskafka", "serde", @@ -6658,7 +6615,7 @@ dependencies = [ "futures-util", "humantime-serde", "meta-srv", - "rand", + "rand 0.9.0", "serde", "snafu 0.8.5", "tokio", @@ -6695,11 +6652,11 @@ dependencies = [ "common-time", "common-version", "common-wal", - "dashmap 5.5.3", + "dashmap", "datatypes", "deadpool", "deadpool-postgres", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "etcd-client", "futures", "h2 0.3.26", @@ -6707,14 +6664,14 @@ dependencies = [ "humantime", "humantime-serde", "hyper-util", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "local-ip-address", "once_cell", "parking_lot 0.12.3", "prometheus", "prost 0.13.3", - "rand", + "rand 0.9.0", "regex", "serde", "serde_json", @@ -6723,7 +6680,7 @@ dependencies = [ "snafu 0.8.5", "sqlx", "store-api", - "strum 0.25.0", + "strum 0.27.1", "table", "tokio", "tokio-postgres", @@ -6765,7 +6722,7 @@ dependencies = [ "aquamarine", "async-stream", "async-trait", - "base64 0.21.7", + "base64 0.22.1", "common-base", "common-error", "common-macro", @@ -6777,7 +6734,7 @@ dependencies = [ "datafusion", "datatypes", "futures-util", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "mito2", "mur3", @@ -6839,7 +6796,7 @@ checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", - "wasi", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.48.0", ] @@ -6851,7 +6808,8 @@ checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ "hermit-abi 0.3.9", "libc", - "wasi", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", "windows-sys 0.52.0", ] @@ -6892,7 +6850,7 @@ dependencies = [ "futures", "humantime-serde", "index", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "log-store", "memcomparable", @@ -6904,7 +6862,7 @@ dependencies = [ "prometheus", "prost 0.13.3", "puffin", - "rand", + "rand 0.9.0", "regex", "rskafka", "rstest", @@ -6917,7 +6875,7 @@ dependencies = [ "smallvec", "snafu 0.8.5", "store-api", - "strum 0.25.0", + "strum 0.27.1", "table", "tokio", "tokio-stream", @@ -6928,14 +6886,13 @@ dependencies = [ [[package]] name = "mockall" -version = "0.11.4" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c84490118f2ee2d74570d114f3d0493cbf02790df303d2707606c3e14e07c96" +checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2" dependencies = [ "cfg-if", "downcast", "fragile", - "lazy_static", "mockall_derive", "predicates", "predicates-tree", @@ -6943,14 +6900,14 @@ dependencies = [ [[package]] name = "mockall_derive" -version = "0.11.4" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ce75669015c4f47b289fd4d4f56e894e4c96003ffdf3ac51313126f94c6cbb" +checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898" dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.96", ] [[package]] @@ -7095,7 +7052,7 @@ dependencies = [ "pem", "percent-encoding", "pin-project", - "rand", + "rand 0.8.5", "rustls 0.21.12", "rustls-pemfile 1.0.4", "serde", @@ -7120,7 +7077,7 @@ dependencies = [ "base64 0.21.7", "bigdecimal 0.4.5", "bindgen", - "bitflags 2.6.0", + "bitflags 2.9.0", "bitvec", "btoi", "byteorder", @@ -7134,7 +7091,7 @@ dependencies = [ "mysql-common-derive 0.30.2", "num-bigint", "num-traits", - "rand", + "rand 0.8.5", "regex", "rust_decimal", "saturating", @@ -7159,7 +7116,7 @@ dependencies = [ "base64 0.21.7", "bigdecimal 0.4.5", "bindgen", - "bitflags 2.6.0", + "bitflags 2.9.0", "bitvec", "btoi", "byteorder", @@ -7174,7 +7131,7 @@ dependencies = [ "mysql-common-derive 0.31.1", "num-bigint", "num-traits", - "rand", + "rand 0.8.5", "regex", "rust_decimal", "saturating", @@ -7202,7 +7159,7 @@ dependencies = [ "num-complex", "num-rational", "num-traits", - "rand", + "rand 0.8.5", "rand_distr", "simba 0.6.0", "typenum", @@ -7328,7 +7285,7 @@ version = "0.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "cfg-if", "cfg_aliases 0.1.1", "libc", @@ -7344,31 +7301,31 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "normalize-line-endings" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" - [[package]] name = "notify" -version = "6.1.1" +version = "8.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6205bd8bb1e454ad2e27422015fb5e4f2bcc7e08fa8f27058670d208324a4d2d" +checksum = "2fee8403b3d66ac7b26aee6e40a897d85dc5ce26f44da36b8b73e987cc52e943" dependencies = [ - "bitflags 2.6.0", - "crossbeam-channel", + "bitflags 2.9.0", "filetime", "fsevent-sys", "inotify", "kqueue", "libc", "log", - "mio 0.8.11", + "mio 1.0.2", + "notify-types", "walkdir", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] +[[package]] +name = "notify-types" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e0826a989adedc2a244799e823aece04662b66609d96af8dff7ac6df9a8925d" + [[package]] name = "ntapi" version = "0.4.1" @@ -7424,7 +7381,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand", + "rand 0.8.5", "smallvec", "zeroize", ] @@ -7626,7 +7583,7 @@ dependencies = [ "chrono", "crc32c", "futures", - "getrandom", + "getrandom 0.2.15", "http 1.1.0", "log", "md-5", @@ -7777,7 +7734,7 @@ dependencies = [ "opentelemetry 0.21.0", "ordered-float 4.3.0", "percent-encoding", - "rand", + "rand 0.8.5", "thiserror 1.0.64", "tokio", "tokio-stream", @@ -7796,7 +7753,7 @@ dependencies = [ "glob", "opentelemetry 0.27.1", "percent-encoding", - "rand", + "rand 0.8.5", "serde_json", "thiserror 1.0.64", ] @@ -7900,7 +7857,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", "serde", ] @@ -8099,7 +8056,7 @@ dependencies = [ "datafusion-common", "datafusion-expr", "datatypes", - "itertools 0.10.5", + "itertools 0.14.0", "serde", "serde_json", "snafu 0.8.5", @@ -8275,7 +8232,7 @@ dependencies = [ "lazy-regex", "md5", "postgres-types", - "rand", + "rand 0.8.5", "ring", "rust_decimal", "thiserror 2.0.12", @@ -8310,7 +8267,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" dependencies = [ "phf_shared", - "rand", + "rand 0.8.5", ] [[package]] @@ -8378,7 +8335,7 @@ dependencies = [ "criterion 0.4.0", "crossbeam-utils", "csv", - "dashmap 5.5.3", + "dashmap", "datafusion", "datafusion-common", "datafusion-expr", @@ -8388,7 +8345,7 @@ dependencies = [ "enum_dispatch", "futures", "greptime-proto", - "itertools 0.10.5", + "itertools 0.14.0", "jsonb", "jsonpath-rust 0.7.5", "lazy_static", @@ -8456,7 +8413,7 @@ checksum = "f950b2377845cebe5cf8b5165cb3cc1a5e0fa5cfa3e1f7f55707d8fd82e0a7b7" dependencies = [ "der", "pkcs5", - "rand_core", + "rand_core 0.6.4", "spki", ] @@ -8529,7 +8486,7 @@ dependencies = [ "hmac", "md-5", "memchr", - "rand", + "rand 0.8.5", "sha2", "stringprep", ] @@ -8589,21 +8546,17 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy", + "zerocopy 0.7.35", ] [[package]] name = "predicates" -version = "2.1.5" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59230a63c37f3e18569bdb90e4a89cbf5bf8b06fea0b84e65ea10cc4df47addd" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" dependencies = [ - "difflib", - "float-cmp", - "itertools 0.10.5", - "normalize-line-endings", + "anstyle", "predicates-core", - "regex", ] [[package]] @@ -8695,6 +8648,27 @@ dependencies = [ "version_check", ] +[[package]] +name = "proc-macro-error-attr2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "proc-macro-error2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" +dependencies = [ + "proc-macro-error-attr2", + "proc-macro2", + "quote", +] + [[package]] name = "proc-macro2" version = "1.0.92" @@ -8710,7 +8684,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "731e0d9356b0c25f16f33b5be79b1c57b562f141ebfcdb0ad8ac2c13a24293b4" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "hex", "lazy_static", "procfs-core", @@ -8723,7 +8697,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2d3554923a69f4ce04c4a754260c338f505ce22642d3830e049a399fc2059a29" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "hex", ] @@ -9011,8 +8985,8 @@ dependencies = [ "async-trait", "async-walkdir", "auto_impl", - "base64 0.21.7", - "bitflags 2.6.0", + "base64 0.22.1", + "bitflags 2.9.0", "bytes", "common-base", "common-error", @@ -9020,7 +8994,7 @@ dependencies = [ "common-runtime", "common-telemetry", "common-test-util", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "futures", "lz4_flex", "moka", @@ -9085,7 +9059,7 @@ dependencies = [ "futures-util", "greptime-proto", "humantime", - "itertools 0.10.5", + "itertools 0.14.0", "lazy_static", "log-query", "meter-core", @@ -9101,7 +9075,7 @@ dependencies = [ "promql", "promql-parser", "prost 0.13.3", - "rand", + "rand 0.9.0", "regex", "serde", "serde_json", @@ -9173,7 +9147,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fadfaed2cd7f389d0161bb73eeb07b7b78f8691047a6f3e73caaeae55310a4a6" dependencies = [ "bytes", - "rand", + "rand 0.8.5", "ring", "rustc-hash 2.0.0", "rustls 0.23.20", @@ -9211,6 +9185,12 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a206a30ce37189d1340e7da2ee0b4d65e342590af676541c23a4f3959ba272e" +[[package]] +name = "r-efi" +version = "5.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" + [[package]] name = "radium" version = "0.7.0" @@ -9267,11 +9247,22 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", "serde", ] +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", + "zerocopy 0.8.24", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -9279,7 +9270,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -9288,10 +9289,19 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.15", "serde", ] +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.2", +] + [[package]] name = "rand_distr" version = "0.4.3" @@ -9299,14 +9309,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32cb0b9bc82b0a0876c2dd994a7e7a2683d3e7390ca40e6886785ef0c7e3ee31" dependencies = [ "num-traits", - "rand", + "rand 0.8.5", ] [[package]] name = "ratelimit" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c1bb13e2dcfa2232ac6887157aad8d9b3fe4ca57f7c8d4938ff5ea9be742300" +checksum = "36ea961700fd7260e7fa3701c8287d901b2172c51f9c1421fa0f21d7f7e184b7" dependencies = [ "clocksource", "parking_lot 0.12.3", @@ -9380,7 +9390,7 @@ version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b6dfecf2c74bce2466cabf93f6664d6998a69eb21e39f4207930065b27b771f" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", ] [[package]] @@ -9389,7 +9399,7 @@ version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ - "getrandom", + "getrandom 0.2.15", "libredox", "thiserror 1.0.64", ] @@ -9510,7 +9520,7 @@ dependencies = [ "base64 0.22.1", "chrono", "form_urlencoded", - "getrandom", + "getrandom 0.2.15", "hex", "hmac", "home", @@ -9520,7 +9530,7 @@ dependencies = [ "once_cell", "percent-encoding", "quick-xml 0.35.0", - "rand", + "rand 0.8.5", "reqwest", "rsa", "rust-ini 0.21.1", @@ -9606,7 +9616,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom", + "getrandom 0.2.15", "libc", "spin", "untrusted", @@ -9682,7 +9692,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core", + "rand_core 0.6.4", "sha2", "signature", "spki", @@ -9701,7 +9711,7 @@ dependencies = [ "digest", "hmac", "pbkdf2", - "rand", + "rand 0.8.5", "serde_json", "sha2", "stringprep", @@ -9721,7 +9731,7 @@ dependencies = [ "integer-encoding 4.0.2", "lz4", "parking_lot 0.12.3", - "rand", + "rand 0.8.5", "rsasl", "rustls 0.23.20", "snap", @@ -9745,21 +9755,21 @@ dependencies = [ [[package]] name = "rstest" -version = "0.21.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afd55a67069d6e434a95161415f5beeada95a01c7b815508a82dcb0e1593682" +checksum = "6fc39292f8613e913f7df8fa892b8944ceb47c247b78e1b1ae2f09e019be789d" dependencies = [ - "futures", "futures-timer", + "futures-util", "rstest_macros", "rustc_version", ] [[package]] name = "rstest_macros" -version = "0.21.0" +version = "0.25.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4165dfae59a39dd41d8dec720d3cbfbc71f69744efb480a3920f5d4e0cc6798d" +checksum = "1f168d99749d307be9de54d23fd226628d99768225ef08f6ffb52e0182a27746" dependencies = [ "cfg-if", "glob", @@ -9780,7 +9790,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3a8fb4672e840a587a66fc577a5491375df51ddb88f2a2c2a792598c326fe14" dependencies = [ "quote", - "rand", + "rand 0.8.5", "syn 2.0.96", ] @@ -9909,7 +9919,7 @@ dependencies = [ "bytes", "num-traits", "postgres-types", - "rand", + "rand 0.8.5", "rkyv", "serde", "serde_json", @@ -9948,7 +9958,7 @@ version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "errno", "libc", "linux-raw-sys", @@ -10281,7 +10291,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.6.0", + "bitflags 2.9.0", "core-foundation", "core-foundation-sys", "libc", @@ -10479,7 +10489,7 @@ dependencies = [ "axum 0.8.1", "axum-extra", "axum-macros", - "base64 0.21.7", + "base64 0.22.1", "bytes", "catalog", "chrono", @@ -10502,12 +10512,12 @@ dependencies = [ "common-time", "common-version", "criterion 0.5.1", - "dashmap 5.5.3", + "dashmap", "datafusion", "datafusion-common", "datafusion-expr", "datatypes", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "futures", "futures-util", "hashbrown 0.15.2", @@ -10520,7 +10530,7 @@ dependencies = [ "hyper 1.4.1", "indexmap 2.7.1", "influxdb_line_protocol", - "itertools 0.10.5", + "itertools 0.14.0", "json5", "jsonb", "lazy_static", @@ -10547,7 +10557,7 @@ dependencies = [ "prost 0.13.3", "query", "quoted-string", - "rand", + "rand 0.9.0", "regex", "reqwest", "rust-embed", @@ -10562,7 +10572,7 @@ dependencies = [ "socket2", "sql", "store-api", - "strum 0.25.0", + "strum 0.27.1", "table", "tempfile", "tikv-jemalloc-ctl", @@ -10594,7 +10604,7 @@ dependencies = [ "common-recordbatch", "common-telemetry", "common-time", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "derive_more", "snafu 0.8.5", "sql", @@ -10624,9 +10634,9 @@ dependencies = [ [[package]] name = "shadow-rs" -version = "0.38.0" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69d433b5df1e1958a668457ebe4a9c5b7bcfe844f4eb2276ac43cf273baddd54" +checksum = "6d5625ed609cf66d7e505e7d487aca815626dc4ebb6c0dd07637ca61a44651a6" dependencies = [ "const_format", "git2", @@ -10666,7 +10676,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core", + "rand_core 0.6.4", ] [[package]] @@ -10913,7 +10923,7 @@ dependencies = [ "hex", "humantime", "iso8601", - "itertools 0.10.5", + "itertools 0.14.0", "jsonb", "lazy_static", "regex", @@ -11126,7 +11136,7 @@ checksum = "4560278f0e00ce64938540546f59f590d60beee33fffbd3b9cd47851e5fff233" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.9.0", "byteorder", "bytes", "chrono", @@ -11148,7 +11158,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand", + "rand 0.8.5", "rsa", "serde", "sha1", @@ -11169,7 +11179,7 @@ checksum = "c5b98a57f363ed6764d5b3a12bfedf62f07aa16e1856a7ddc2a0bb190a959613" dependencies = [ "atoi", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.9.0", "byteorder", "chrono", "crc", @@ -11187,7 +11197,7 @@ dependencies = [ "md-5", "memchr", "once_cell", - "rand", + "rand 0.8.5", "serde", "serde_json", "sha2", @@ -11258,7 +11268,7 @@ dependencies = [ "lazy_static", "nalgebra 0.29.0", "num-traits", - "rand", + "rand 0.8.5", ] [[package]] @@ -11279,14 +11289,14 @@ dependencies = [ "datafusion-expr", "datafusion-physical-plan", "datatypes", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "futures", "humantime", "prost 0.13.3", "serde", "serde_json", "snafu 0.8.5", - "strum 0.25.0", + "strum 0.27.1", "tokio", ] @@ -11355,6 +11365,15 @@ dependencies = [ "strum_macros 0.26.4", ] +[[package]] +name = "strum" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" +dependencies = [ + "strum_macros 0.27.1", +] + [[package]] name = "strum_macros" version = "0.25.3" @@ -11381,6 +11400,19 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "strum_macros" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" +dependencies = [ + "heck 0.5.0", + "proc-macro2", + "quote", + "rustversion", + "syn 2.0.96", +] + [[package]] name = "subprocess" version = "0.2.9" @@ -11559,17 +11591,16 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.13" +version = "0.33.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a5b4ddaee55fb2bea2bf0e5000747e5f5c0de765e5a5ff87f4cd106439f4bb3" +checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" dependencies = [ - "cfg-if", "core-foundation-sys", "libc", + "memchr", "ntapi", - "once_cell", "rayon", - "windows 0.52.0", + "windows 0.57.0", ] [[package]] @@ -11594,7 +11625,7 @@ dependencies = [ "datafusion-expr", "datafusion-physical-expr", "datatypes", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "futures", "greptime-proto", "humantime", @@ -11839,7 +11870,7 @@ dependencies = [ "common-telemetry", "common-time", "datatypes", - "derive_builder 0.12.0", + "derive_builder 0.20.1", "dotenv", "futures", "humantime", @@ -11850,8 +11881,8 @@ dependencies = [ "nix 0.28.0", "partition", "paste", - "rand", - "rand_chacha", + "rand 0.9.0", + "rand_chacha 0.9.0", "reqwest", "schemars", "serde", @@ -11862,7 +11893,7 @@ dependencies = [ "sqlparser 0.52.0 (git+https://github.com/GreptimeTeam/sqlparser-rs.git?rev=71dd86058d2af97b9925093d40c4e03360403170)", "sqlx", "store-api", - "strum 0.25.0", + "strum 0.27.1", "tinytemplate", "tokio", ] @@ -11910,7 +11941,7 @@ dependencies = [ "hex", "http 1.1.0", "hyper-util", - "itertools 0.10.5", + "itertools 0.14.0", "log-query", "loki-proto", "meta-client", @@ -11925,7 +11956,7 @@ dependencies = [ "pipeline", "prost 0.13.3", "query", - "rand", + "rand 0.9.0", "rstest", "rstest_reuse", "serde_json", @@ -12240,7 +12271,7 @@ dependencies = [ "pin-project-lite", "postgres-protocol", "postgres-types", - "rand", + "rand 0.8.5", "socket2", "tokio", "tokio-util", @@ -12488,7 +12519,7 @@ dependencies = [ "indexmap 1.9.3", "pin-project", "pin-project-lite", - "rand", + "rand 0.8.5", "slab", "tokio", "tokio-util", @@ -12524,7 +12555,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e9cd434a998747dd2c4276bc96ee2e0c7a2eadf3cae88e52be55a05fa9053f5" dependencies = [ "base64 0.21.7", - "bitflags 2.6.0", + "bitflags 2.9.0", "bytes", "http 1.1.0", "http-body 1.0.1", @@ -12544,7 +12575,7 @@ checksum = "403fa3b783d4b626a8ad51d766ab03cb6d2dbfc46b1c5d4448395e6628dc9697" dependencies = [ "async-compression 0.4.13", "base64 0.22.1", - "bitflags 2.6.0", + "bitflags 2.9.0", "bytes", "futures-core", "futures-util", @@ -12825,7 +12856,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fee6b57c6a41524a810daee9286c02d7752c4253064d0b05472833a438f675" dependencies = [ "cfg-if", - "rand", + "rand 0.8.5", "static_assertions", ] @@ -12961,18 +12992,15 @@ dependencies = [ [[package]] name = "tz-rs" -version = "0.6.14" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33851b15c848fad2cf4b105c6bb66eb9512b6f6c44a4b13f57c53c73c707e2b4" -dependencies = [ - "const_fn", -] +checksum = "e1450bf2b99397e72070e7935c89facaa80092ac812502200375f1f7d33c71a1" [[package]] name = "tzdb" -version = "0.6.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b580f6b365fa89f5767cdb619a55d534d04a4e14c2d7e5b9a31e94598687fb1" +checksum = "0be2ea5956f295449f47c0b825c5e109022ff1a6a53bb4f77682a87c2341fbf5" dependencies = [ "iana-time-zone", "tz-rs", @@ -12981,9 +13009,9 @@ dependencies = [ [[package]] name = "tzdb_data" -version = "0.1.3" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "654c1ec546942ce0594e8d220e6b8e3899e0a0a8fe70ddd54d32a376dfefe3f8" +checksum = "0604b35c1f390a774fdb138cac75a99981078895d24bcab175987440bbff803b" dependencies = [ "tz-rs", ] @@ -13130,8 +13158,8 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81dfa00651efa65069b0b6b651f4aaa31ba9e3c3ce0137aaad053604ee7e0314" dependencies = [ - "getrandom", - "rand", + "getrandom 0.2.15", + "rand 0.8.5", "serde", ] @@ -13214,6 +13242,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.14.2+wasi-0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasite" version = "0.1.0" @@ -13438,11 +13475,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core 0.52.0", + "windows-core 0.57.0", "windows-targets 0.52.6", ] @@ -13465,19 +13502,42 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement 0.57.0", + "windows-interface 0.57.0", + "windows-result 0.1.2", + "windows-targets 0.52.6", +] + [[package]] name = "windows-core" version = "0.58.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ba6d44ec8c2591c134257ce647b7ea6b20335bf6379a27dac5f1641fcf59f99" dependencies = [ - "windows-implement", - "windows-interface", - "windows-result", + "windows-implement 0.58.0", + "windows-interface 0.58.0", + "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "windows-implement" version = "0.58.0" @@ -13489,6 +13549,17 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "windows-interface" version = "0.58.0" @@ -13506,11 +13577,20 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-strings", "windows-targets 0.52.6", ] +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets 0.52.6", +] + [[package]] name = "windows-result" version = "0.2.0" @@ -13526,7 +13606,7 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" dependencies = [ - "windows-result", + "windows-result 0.2.0", "windows-targets 0.52.6", ] @@ -13762,6 +13842,15 @@ dependencies = [ "memchr", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.0", +] + [[package]] name = "wkt" version = "0.11.1" @@ -13880,7 +13969,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive", + "zerocopy-derive 0.7.35", +] + +[[package]] +name = "zerocopy" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" +dependencies = [ + "zerocopy-derive 0.8.24", ] [[package]] @@ -13894,6 +13992,17 @@ dependencies = [ "syn 2.0.96", ] +[[package]] +name = "zerocopy-derive" +version = "0.8.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.96", +] + [[package]] name = "zerofrom" version = "0.1.5" diff --git a/Cargo.toml b/Cargo.toml index 61a0211ff8..54ac9e2341 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -88,7 +88,7 @@ rust.unexpected_cfgs = { level = "warn", check-cfg = ['cfg(tokio_unstable)'] } # # See for more detaiils: https://github.com/rust-lang/cargo/issues/11329 ahash = { version = "0.8", features = ["compile-time-rng"] } -aquamarine = "0.3" +aquamarine = "0.6" arrow = { version = "53.0.0", features = ["prettyprint"] } arrow-array = { version = "53.0.0", default-features = false, features = ["chrono-tz"] } arrow-flight = "53.0" @@ -99,9 +99,9 @@ async-trait = "0.1" # Remember to update axum-extra, axum-macros when updating axum axum = "0.8" axum-extra = "0.10" -axum-macros = "0.4" +axum-macros = "0.5" backon = "1" -base64 = "0.21" +base64 = "0.22" bigdecimal = "0.4.2" bitflags = "2.4.1" bytemuck = "1.12" @@ -111,7 +111,7 @@ chrono-tz = "0.10.1" clap = { version = "4.4", features = ["derive"] } config = "0.13.0" crossbeam-utils = "0.8" -dashmap = "5.4" +dashmap = "6.1" datafusion = { git = "https://github.com/apache/datafusion.git", rev = "2464703c84c400a09cc59277018813f0e797bb4e" } datafusion-common = { git = "https://github.com/apache/datafusion.git", rev = "2464703c84c400a09cc59277018813f0e797bb4e" } datafusion-expr = { git = "https://github.com/apache/datafusion.git", rev = "2464703c84c400a09cc59277018813f0e797bb4e" } @@ -121,9 +121,9 @@ datafusion-physical-expr = { git = "https://github.com/apache/datafusion.git", r datafusion-physical-plan = { git = "https://github.com/apache/datafusion.git", rev = "2464703c84c400a09cc59277018813f0e797bb4e" } datafusion-sql = { git = "https://github.com/apache/datafusion.git", rev = "2464703c84c400a09cc59277018813f0e797bb4e" } datafusion-substrait = { git = "https://github.com/apache/datafusion.git", rev = "2464703c84c400a09cc59277018813f0e797bb4e" } -deadpool = "0.10" -deadpool-postgres = "0.12" -derive_builder = "0.12" +deadpool = "0.12" +deadpool-postgres = "0.14" +derive_builder = "0.20" dotenv = "0.15" etcd-client = "0.14" fst = "0.4.7" @@ -136,16 +136,16 @@ humantime = "2.1" humantime-serde = "1.1" hyper = "1.1" hyper-util = "0.1" -itertools = "0.10" +itertools = "0.14" jsonb = { git = "https://github.com/databendlabs/jsonb.git", rev = "8c8d2fc294a39f3ff08909d60f718639cfba3875", default-features = false } lazy_static = "1.4" local-ip-address = "0.6" loki-proto = { git = "https://github.com/GreptimeTeam/loki-proto.git", rev = "1434ecf23a2654025d86188fb5205e7a74b225d3" } meter-core = { git = "https://github.com/GreptimeTeam/greptime-meter.git", rev = "5618e779cf2bb4755b499c630fba4c35e91898cb" } -mockall = "0.11.4" +mockall = "0.13" moka = "0.12" nalgebra = "0.33" -notify = "6.1" +notify = "8.0" num_cpus = "1.16" once_cell = "1.18" opentelemetry-proto = { version = "0.27", features = [ @@ -163,8 +163,8 @@ prometheus = { version = "0.13.3", features = ["process"] } promql-parser = { version = "0.5", features = ["ser"] } prost = "0.13" raft-engine = { version = "0.4.1", default-features = false } -rand = "0.8" -ratelimit = "0.9" +rand = "0.9" +ratelimit = "0.10" regex = "1.8" regex-automata = "0.4" reqwest = { version = "0.12", default-features = false, features = [ @@ -176,7 +176,7 @@ reqwest = { version = "0.12", default-features = false, features = [ rskafka = { git = "https://github.com/influxdata/rskafka.git", rev = "75535b5ad9bae4a5dbb582c82e44dfd81ec10105", features = [ "transport-tls", ] } -rstest = "0.21" +rstest = "0.25" rstest_reuse = "0.7" rust_decimal = "1.33" rustc-hash = "2.0" @@ -184,7 +184,7 @@ rustls = { version = "0.23.20", default-features = false } # override by patch, serde = { version = "1.0", features = ["derive"] } serde_json = { version = "1.0", features = ["float_roundtrip"] } serde_with = "3" -shadow-rs = "0.38" +shadow-rs = "1.1" similar-asserts = "1.6.0" smallvec = { version = "1", features = ["serde"] } snafu = "0.8" @@ -194,13 +194,13 @@ sqlx = { version = "0.8", features = [ "postgres", "chrono", ] } -sysinfo = "0.30" +sysinfo = "0.33" # on branch v0.52.x sqlparser = { git = "https://github.com/GreptimeTeam/sqlparser-rs.git", rev = "71dd86058d2af97b9925093d40c4e03360403170", features = [ "visitor", "serde", ] } # on branch v0.44.x -strum = { version = "0.25", features = ["derive"] } +strum = { version = "0.27", features = ["derive"] } tempfile = "3" tokio = { version = "1.40", features = ["full"] } tokio-postgres = "0.7" diff --git a/docs/how-to/how-to-write-fuzz-tests.md b/docs/how-to/how-to-write-fuzz-tests.md index 113b71027a..bab0322994 100644 --- a/docs/how-to/how-to-write-fuzz-tests.md +++ b/docs/how-to/how-to-write-fuzz-tests.md @@ -3,7 +3,7 @@ This document introduces how to write fuzz tests in GreptimeDB. ## What is a fuzz test -Fuzz test is tool that leverage deterministic random generation to assist in finding bugs. The goal of fuzz tests is to identify inputs generated by the fuzzer that cause system panics, crashes, or unexpected behaviors to occur. And we are using the [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) to run our fuzz test targets. +Fuzz test is tool that leverage deterministic random generation to assist in finding bugs. The goal of fuzz tests is to identify inputs generated by the fuzzer that cause system panics, crashes, or unexpected behaviors to occur. And we are using the [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz) to run our fuzz test targets. ## Why we need them - Find bugs by leveraging random generation @@ -13,7 +13,7 @@ Fuzz test is tool that leverage deterministic random generation to assist in fin All fuzz test-related resources are located in the `/tests-fuzz` directory. There are two types of resources: (1) fundamental components and (2) test targets. -### Fundamental components +### Fundamental components They are located in the `/tests-fuzz/src` directory. The fundamental components define how to generate SQLs (including dialects for different protocols) and validate execution results (e.g., column attribute validation), etc. ### Test targets @@ -21,25 +21,25 @@ They are located in the `/tests-fuzz/targets` directory, with each file represen Figure 1 illustrates the fundamental components of the fuzz test provide the ability to generate random SQLs. It utilizes a Random Number Generator (Rng) to generate the Intermediate Representation (IR), then employs a DialectTranslator to produce specified dialects for different protocols. Finally, the fuzz tests send the generated SQL via the specified protocol and verify that the execution results meet expectations. ``` - Rng - | - | - v - ExprGenerator - | - | - v - Intermediate representation (IR) - | - | - +----------------------+----------------------+ - | | | - v v v + Rng + | + | + v + ExprGenerator + | + | + v + Intermediate representation (IR) + | + | + +----------------------+----------------------+ + | | | + v v v MySQLTranslator PostgreSQLTranslator OtherDialectTranslator - | | | - | | | - v v v -SQL(MySQL Dialect) ..... ..... + | | | + | | | + v v v +SQL(MySQL Dialect) ..... ..... | | v @@ -133,4 +133,4 @@ fuzz_target!(|input: FuzzInput| { cargo fuzz run --fuzz-dir tests-fuzz ``` -For more details, please refer to this [document](/tests-fuzz/README.md). \ No newline at end of file +For more details, please refer to this [document](/tests-fuzz/README.md). diff --git a/src/cli/src/bench.rs b/src/cli/src/bench.rs index d57cc92685..3c2905cc0f 100644 --- a/src/cli/src/bench.rs +++ b/src/cli/src/bench.rs @@ -177,7 +177,7 @@ fn create_table_info(table_id: TableId, table_name: TableName) -> RawTableInfo { fn create_region_routes(regions: Vec) -> Vec { let mut region_routes = Vec::with_capacity(100); - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for region_id in regions.into_iter().map(u64::from) { region_routes.push(RegionRoute { @@ -188,7 +188,7 @@ fn create_region_routes(regions: Vec) -> Vec { attrs: BTreeMap::new(), }, leader_peer: Some(Peer { - id: rng.gen_range(0..10), + id: rng.random_range(0..10), addr: String::new(), }), follower_peers: vec![], diff --git a/src/client/src/load_balance.rs b/src/client/src/load_balance.rs index 3543db5a19..f3dc33910d 100644 --- a/src/client/src/load_balance.rs +++ b/src/client/src/load_balance.rs @@ -13,7 +13,7 @@ // limitations under the License. use enum_dispatch::enum_dispatch; -use rand::seq::SliceRandom; +use rand::seq::IndexedRandom; #[enum_dispatch] pub trait LoadBalance { @@ -37,7 +37,7 @@ pub struct Random; impl LoadBalance for Random { fn get_peer<'a>(&self, peers: &'a [String]) -> Option<&'a String> { - peers.choose(&mut rand::thread_rng()) + peers.choose(&mut rand::rng()) } } diff --git a/src/common/grpc/benches/channel_manager.rs b/src/common/grpc/benches/channel_manager.rs index ea63f68442..33928297e3 100644 --- a/src/common/grpc/benches/channel_manager.rs +++ b/src/common/grpc/benches/channel_manager.rs @@ -25,7 +25,7 @@ async fn do_bench_channel_manager() { let m_clone = m.clone(); let join = tokio::spawn(async move { for _ in 0..10000 { - let idx = rand::random::() % 100; + let idx = rand::random::() % 100; let ret = m_clone.get(format!("{idx}")); let _ = ret.unwrap(); } diff --git a/src/common/meta/src/state_store.rs b/src/common/meta/src/state_store.rs index 8bae361584..c40e1a8cab 100644 --- a/src/common/meta/src/state_store.rs +++ b/src/common/meta/src/state_store.rs @@ -290,13 +290,13 @@ mod tests { num_per_range: u32, max_bytes: u32, ) { - let num_cases = rand::thread_rng().gen_range(1..=8); + let num_cases = rand::rng().random_range(1..=8); common_telemetry::info!("num_cases: {}", num_cases); let mut cases = Vec::with_capacity(num_cases); for i in 0..num_cases { - let size = rand::thread_rng().gen_range(size_limit..=max_bytes); + let size = rand::rng().random_range(size_limit..=max_bytes); let mut large_value = vec![0u8; size as usize]; - rand::thread_rng().fill_bytes(&mut large_value); + rand::rng().fill_bytes(&mut large_value); // Starts from `a`. let prefix = format!("{}/", std::char::from_u32(97 + i as u32).unwrap()); @@ -354,8 +354,8 @@ mod tests { #[tokio::test] async fn test_meta_state_store_split_value() { - let size_limit = rand::thread_rng().gen_range(128..=512); - let page_size = rand::thread_rng().gen_range(1..10); + let size_limit = rand::rng().random_range(128..=512); + let page_size = rand::rng().random_range(1..10); let kv_backend = Arc::new(MemoryKvBackend::new()); test_meta_state_store_split_value_with_size_limit(kv_backend, size_limit, page_size, 8192) .await; @@ -388,7 +388,7 @@ mod tests { // However, some KvBackends, the `ChrootKvBackend`, will add the prefix to `key`; // we don't know the exact size of the key. let size_limit = 1536 * 1024 - key_size; - let page_size = rand::thread_rng().gen_range(1..10); + let page_size = rand::rng().random_range(1..10); test_meta_state_store_split_value_with_size_limit( kv_backend, size_limit, diff --git a/src/common/meta/src/wal_options_allocator/selector.rs b/src/common/meta/src/wal_options_allocator/selector.rs index 609d548206..655808ce4c 100644 --- a/src/common/meta/src/wal_options_allocator/selector.rs +++ b/src/common/meta/src/wal_options_allocator/selector.rs @@ -39,7 +39,7 @@ impl RoundRobinTopicSelector { // The cursor in the round-robin selector is not persisted which may break the round-robin strategy cross crashes. // Introducing a shuffling strategy may help mitigate this issue. pub fn with_shuffle() -> Self { - let offset = rand::thread_rng().gen_range(0..64); + let offset = rand::rng().random_range(0..64); Self { cursor: AtomicUsize::new(offset), } diff --git a/src/common/procedure/src/local/runner.rs b/src/common/procedure/src/local/runner.rs index bf277a0e72..85cfe2b625 100644 --- a/src/common/procedure/src/local/runner.rs +++ b/src/common/procedure/src/local/runner.rs @@ -207,7 +207,7 @@ impl Runner { if let Some(d) = retry.next() { let millis = d.as_millis() as u64; // Add random noise to the retry delay to avoid retry storms. - let noise = rand::thread_rng().gen_range(0..(millis / 4) + 1); + let noise = rand::rng().random_range(0..(millis / 4) + 1); let d = d.add(Duration::from_millis(noise)); self.wait_on_err(d, retry_times).await; diff --git a/src/common/test-util/src/ports.rs b/src/common/test-util/src/ports.rs index 51818c15b5..95c8f99d31 100644 --- a/src/common/test-util/src/ports.rs +++ b/src/common/test-util/src/ports.rs @@ -22,6 +22,6 @@ static PORTS: OnceCell = OnceCell::new(); /// Return a unique port(in runtime) for test pub fn get_port() -> usize { PORTS - .get_or_init(|| AtomicUsize::new(rand::thread_rng().gen_range(13000..13800))) + .get_or_init(|| AtomicUsize::new(rand::rng().random_range(13000..13800))) .fetch_add(1, Ordering::Relaxed) } diff --git a/src/common/time/src/timestamp.rs b/src/common/time/src/timestamp.rs index 258e9c1a96..773676df86 100644 --- a/src/common/time/src/timestamp.rs +++ b/src/common/time/src/timestamp.rs @@ -715,10 +715,10 @@ mod tests { TimeUnit::Microsecond, TimeUnit::Nanosecond, ]; - let mut rng = rand::thread_rng(); - let unit_idx: usize = rng.gen_range(0..4); + let mut rng = rand::rng(); + let unit_idx: usize = rng.random_range(0..4); let unit = units[unit_idx]; - let value: i64 = rng.gen(); + let value: i64 = rng.random(); Timestamp::new(value, unit) } @@ -745,8 +745,8 @@ mod tests { /// Generate timestamp less than or equal to `threshold` fn gen_ts_le(threshold: &Timestamp) -> Timestamp { - let mut rng = rand::thread_rng(); - let timestamp = rng.gen_range(i64::MIN..=threshold.value); + let mut rng = rand::rng(); + let timestamp = rng.random_range(i64::MIN..=threshold.value); Timestamp::new(timestamp, threshold.unit) } diff --git a/src/flow/src/compute/render.rs b/src/flow/src/compute/render.rs index 46ac7e8a1d..b992872c60 100644 --- a/src/flow/src/compute/render.rs +++ b/src/flow/src/compute/render.rs @@ -179,7 +179,7 @@ impl Context<'_, '_> { ) -> CollectionBundle { let (send_port, recv_port) = self.df.make_edge::<_, Toff>("constant_batch"); let mut per_time: BTreeMap> = Default::default(); - for (key, group) in &rows.into_iter().group_by(|(_row, ts, _diff)| *ts) { + for (key, group) in &rows.into_iter().chunk_by(|(_row, ts, _diff)| *ts) { per_time.entry(key).or_default().extend(group); } @@ -233,7 +233,7 @@ impl Context<'_, '_> { pub fn render_constant(&mut self, rows: Vec) -> CollectionBundle { let (send_port, recv_port) = self.df.make_edge::<_, Toff>("constant"); let mut per_time: BTreeMap> = Default::default(); - for (key, group) in &rows.into_iter().group_by(|(_row, ts, _diff)| *ts) { + for (key, group) in &rows.into_iter().chunk_by(|(_row, ts, _diff)| *ts) { per_time.entry(key).or_default().extend(group); } diff --git a/src/index/src/bloom_filter/applier.rs b/src/index/src/bloom_filter/applier.rs index 8829f4e0ee..273c5413b5 100644 --- a/src/index/src/bloom_filter/applier.rs +++ b/src/index/src/bloom_filter/applier.rs @@ -67,7 +67,7 @@ impl BloomFilterApplier { for ((_, mut group), bloom) in locs .iter() .zip(start_seg..end_seg) - .group_by(|(x, _)| **x) + .chunk_by(|(x, _)| **x) .into_iter() .zip(bfs.iter()) { diff --git a/src/index/src/inverted_index/create/sort/external_sort.rs b/src/index/src/inverted_index/create/sort/external_sort.rs index 13e480d1c5..e8f67b7b7b 100644 --- a/src/index/src/inverted_index/create/sort/external_sort.rs +++ b/src/index/src/inverted_index/create/sort/external_sort.rs @@ -437,9 +437,9 @@ mod tests { } fn random_option_bytes(size: usize) -> Option> { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); - if rng.gen() { + if rng.random() { let mut buffer = vec![0u8; size]; rng.fill(&mut buffer[..]); Some(buffer) @@ -469,11 +469,11 @@ mod tests { segment_row_count: usize, ) -> (DictionaryValues, ValueSegIds) { let mut n = row_count; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut dic_values = Vec::new(); while n > 0 { - let size = rng.gen_range(1..=n); + let size = rng.random_range(1..=n); let value = random_option_bytes(100); dic_values.push((value, size)); n -= size; diff --git a/src/log-store/src/kafka/log_store.rs b/src/log-store/src/kafka/log_store.rs index 23493812a4..5e9a3c3a38 100644 --- a/src/log-store/src/kafka/log_store.rs +++ b/src/log-store/src/kafka/log_store.rs @@ -535,7 +535,7 @@ mod tests { .flatten() .cloned() .collect::>(); - all_entries.shuffle(&mut rand::thread_rng()); + all_entries.shuffle(&mut rand::rng()); let response = logstore.append_batch(all_entries.clone()).await.unwrap(); // 5 region @@ -575,7 +575,7 @@ mod tests { warn!("The endpoints is empty, skipping the test 'test_append_batch_basic_large'"); return; }; - let data_size_kb = rand::thread_rng().gen_range(9..31usize); + let data_size_kb = rand::rng().random_range(9..31usize); info!("Entry size: {}Ki", data_size_kb); let broker_endpoints = broker_endpoints .split(',') @@ -608,7 +608,7 @@ mod tests { .cloned() .collect::>(); assert_matches!(all_entries[0], Entry::MultiplePart(_)); - all_entries.shuffle(&mut rand::thread_rng()); + all_entries.shuffle(&mut rand::rng()); let response = logstore.append_batch(all_entries.clone()).await.unwrap(); // 5 region diff --git a/src/meta-client/src/client.rs b/src/meta-client/src/client.rs index 6a1e5f3335..1e92a25c1e 100644 --- a/src/meta-client/src/client.rs +++ b/src/meta-client/src/client.rs @@ -1058,11 +1058,11 @@ mod tests { let tx = new_client("test_cluster_client").await; let in_memory = tx.in_memory().unwrap(); let cluster_client = tx.client.cluster_client().unwrap(); - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); // Generates rough 10MB data, which is larger than the default grpc message size limit. for i in 0..10 { - let data: Vec = (0..1024 * 1024).map(|_| rng.gen()).collect(); + let data: Vec = (0..1024 * 1024).map(|_| rng.random()).collect(); in_memory .put( PutRequest::new() diff --git a/src/meta-client/src/client/ask_leader.rs b/src/meta-client/src/client/ask_leader.rs index 425d2a0634..07c697cf8a 100644 --- a/src/meta-client/src/client/ask_leader.rs +++ b/src/meta-client/src/client/ask_leader.rs @@ -75,7 +75,7 @@ impl AskLeader { let leadership_group = self.leadership_group.read().unwrap(); leadership_group.peers.clone() }; - peers.shuffle(&mut rand::thread_rng()); + peers.shuffle(&mut rand::rng()); let req = AskLeaderRequest { header: Some(RequestHeader::new( diff --git a/src/meta-client/src/client/load_balance.rs b/src/meta-client/src/client/load_balance.rs index 1c8df613c3..82b64ea927 100644 --- a/src/meta-client/src/client/load_balance.rs +++ b/src/meta-client/src/client/load_balance.rs @@ -22,8 +22,8 @@ where return None; } - let mut rng = rand::thread_rng(); - let i = rng.gen_range(0..len); + let mut rng = rand::rng(); + let i = rng.random_range(0..len); func(i) } diff --git a/src/meta-srv/src/error.rs b/src/meta-srv/src/error.rs index 1b43748baa..1c67830736 100644 --- a/src/meta-srv/src/error.rs +++ b/src/meta-srv/src/error.rs @@ -36,7 +36,7 @@ pub enum Error { #[snafu(implicit)] location: Location, #[snafu(source)] - error: rand::distributions::WeightedError, + error: rand::distr::weighted::Error, }, #[snafu(display("Exceeded deadline, operation: {}", operation))] diff --git a/src/meta-srv/src/region/supervisor.rs b/src/meta-srv/src/region/supervisor.rs index 44b2a6e7f0..9393474f16 100644 --- a/src/meta-srv/src/region/supervisor.rs +++ b/src/meta-srv/src/region/supervisor.rs @@ -543,11 +543,11 @@ pub(crate) mod tests { assert!(rx.await.unwrap().is_empty()); fn generate_heartbeats(datanode_id: u64, region_ids: Vec) -> Vec { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let start = current_time_millis(); (0..2000) .map(|i| DatanodeHeartbeat { - timestamp: start + i * 1000 + rng.gen_range(0..100), + timestamp: start + i * 1000 + rng.random_range(0..100), datanode_id, regions: region_ids .iter() diff --git a/src/meta-srv/src/selector/test_utils.rs b/src/meta-srv/src/selector/test_utils.rs index edf0f8d897..966b6733e0 100644 --- a/src/meta-srv/src/selector/test_utils.rs +++ b/src/meta-srv/src/selector/test_utils.rs @@ -61,7 +61,7 @@ impl Selector for RandomNodeSelector { type Output = Vec; async fn select(&self, _ctx: &Self::Context, _opts: SelectorOptions) -> Result { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut nodes = self.nodes.clone(); nodes.shuffle(&mut rng); Ok(nodes) diff --git a/src/meta-srv/src/selector/weighted_choose.rs b/src/meta-srv/src/selector/weighted_choose.rs index 9fe8d7b28d..749df57edf 100644 --- a/src/meta-srv/src/selector/weighted_choose.rs +++ b/src/meta-srv/src/selector/weighted_choose.rs @@ -12,8 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -use rand::seq::SliceRandom; -use rand::thread_rng; +use rand::rng; +use rand::seq::IndexedRandom; use snafu::ResultExt; use crate::error; @@ -26,7 +26,10 @@ pub trait WeightedChoose: Send + Sync { /// The method will choose multiple items. /// - /// Returns less than `amount` items if the weight_array is not enough. + /// ## Note + /// + /// - Returns less than `amount` items if the weight_array is not enough. + /// - The returned items cannot be duplicated. fn choose_multiple(&mut self, amount: usize) -> Result>; /// Returns the length of the weight_array. @@ -84,7 +87,7 @@ where // unwrap safety: whether weighted_index is none has been checked before. let item = self .items - .choose_weighted(&mut thread_rng(), |item| item.weight as f64) + .choose_weighted(&mut rng(), |item| item.weight as f64) .context(error::ChooseItemsSnafu)? .item .clone(); @@ -92,9 +95,11 @@ where } fn choose_multiple(&mut self, amount: usize) -> Result> { + let amount = amount.min(self.items.iter().filter(|item| item.weight > 0).count()); + Ok(self .items - .choose_multiple_weighted(&mut thread_rng(), amount, |item| item.weight as f64) + .choose_multiple_weighted(&mut rng(), amount, |item| item.weight as f64) .context(error::ChooseItemsSnafu)? .cloned() .map(|item| item.item) @@ -127,7 +132,7 @@ mod tests { for _ in 0..100 { let ret = choose.choose_multiple(3).unwrap(); - assert_eq!(vec![1, 2], ret); + assert_eq!(vec![1], ret); } } } diff --git a/src/mito2/benches/memtable_bench.rs b/src/mito2/benches/memtable_bench.rs index aca8ad4652..ab83975b17 100644 --- a/src/mito2/benches/memtable_bench.rs +++ b/src/mito2/benches/memtable_bench.rs @@ -28,7 +28,7 @@ use mito2::region::options::MergeMode; use mito2::row_converter::DensePrimaryKeyCodec; use mito2::test_util::memtable_util::{self, region_metadata_to_row_schema}; use rand::rngs::ThreadRng; -use rand::seq::SliceRandom; +use rand::seq::IndexedRandom; use rand::Rng; use store_api::metadata::{ ColumnMetadata, RegionMetadata, RegionMetadataBuilder, RegionMetadataRef, @@ -161,8 +161,8 @@ struct Host { impl Host { fn random_with_id(id: usize) -> Host { - let mut rng = rand::thread_rng(); - let region = format!("ap-southeast-{}", rng.gen_range(0..10)); + let mut rng = rand::rng(); + let region = format!("ap-southeast-{}", rng.random_range(0..10)); let datacenter = format!( "{}{}", region, @@ -172,12 +172,12 @@ impl Host { hostname: format!("host_{id}"), region, datacenter, - rack: rng.gen_range(0..100).to_string(), + rack: rng.random_range(0..100).to_string(), os: "Ubuntu16.04LTS".to_string(), arch: "x86".to_string(), team: "CHI".to_string(), - service: rng.gen_range(0..100).to_string(), - service_version: rng.gen_range(0..10).to_string(), + service: rng.random_range(0..100).to_string(), + service_version: rng.random_range(0..10).to_string(), service_environment: "test".to_string(), } } @@ -254,7 +254,7 @@ impl CpuDataGenerator { .hosts .iter() .map(|host| { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut values = Vec::with_capacity(21); values.push(api::v1::Value { value_data: Some(ValueData::TimestampMillisecondValue(current_sec * 1000)), @@ -288,12 +288,12 @@ impl CpuDataGenerator { } fn random_hostname(&self) -> String { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); self.hosts.choose(&mut rng).unwrap().hostname.clone() } fn random_f64(rng: &mut ThreadRng) -> f64 { - let base: u32 = rng.gen_range(30..95); + let base: u32 = rng.random_range(30..95); base as f64 } diff --git a/src/mito2/src/cache/index/bloom_filter_index.rs b/src/mito2/src/cache/index/bloom_filter_index.rs index ad632e47ab..097acd6367 100644 --- a/src/mito2/src/cache/index/bloom_filter_index.rs +++ b/src/mito2/src/cache/index/bloom_filter_index.rs @@ -146,14 +146,14 @@ mod test { #[test] fn fuzz_index_calculation() { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut data = vec![0u8; 1024 * 1024]; rng.fill_bytes(&mut data); for _ in 0..FUZZ_REPEAT_TIMES { - let offset = rng.gen_range(0..data.len() as u64); - let size = rng.gen_range(0..data.len() as u32 - offset as u32); - let page_size: usize = rng.gen_range(1..1024); + let offset = rng.random_range(0..data.len() as u64); + let size = rng.random_range(0..data.len() as u32 - offset as u32); + let page_size: usize = rng.random_range(1..1024); let indexes = PageKey::generate_page_keys(offset, size, page_size as u64).collect::>(); diff --git a/src/mito2/src/cache/index/inverted_index.rs b/src/mito2/src/cache/index/inverted_index.rs index 68eb2f89f5..75cfe16d52 100644 --- a/src/mito2/src/cache/index/inverted_index.rs +++ b/src/mito2/src/cache/index/inverted_index.rs @@ -146,14 +146,14 @@ mod test { #[test] fn fuzz_index_calculation() { // randomly generate a large u8 array - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut data = vec![0u8; 1024 * 1024]; rng.fill_bytes(&mut data); for _ in 0..FUZZ_REPEAT_TIMES { - let offset = rng.gen_range(0..data.len() as u64); - let size = rng.gen_range(0..data.len() as u32 - offset as u32); - let page_size: usize = rng.gen_range(1..1024); + let offset = rng.random_range(0..data.len() as u64); + let size = rng.random_range(0..data.len() as u32 - offset as u32); + let page_size: usize = rng.random_range(1..1024); let indexes = PageKey::generate_page_keys(offset, size, page_size as u64).collect::>(); @@ -357,10 +357,10 @@ mod test { ); // fuzz test - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..FUZZ_REPEAT_TIMES { - let offset = rng.gen_range(0..file_size); - let size = rng.gen_range(0..file_size as u32 - offset as u32); + let offset = rng.random_range(0..file_size); + let size = rng.random_range(0..file_size as u32 - offset as u32); let expected = cached_reader.range_read(offset, size).await.unwrap(); let inner = &cached_reader.inner; let read = cached_reader diff --git a/src/mito2/src/memtable/partition_tree/dict.rs b/src/mito2/src/memtable/partition_tree/dict.rs index 7848ce3dc6..51100158a9 100644 --- a/src/mito2/src/memtable/partition_tree/dict.rs +++ b/src/mito2/src/memtable/partition_tree/dict.rs @@ -389,10 +389,10 @@ mod tests { fn prepare_input_keys(num_keys: usize) -> Vec> { let prefix = ["a", "b", "c", "d", "e", "f"]; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mut keys = Vec::with_capacity(num_keys); for i in 0..num_keys { - let prefix_idx = rng.gen_range(0..prefix.len()); + let prefix_idx = rng.random_range(0..prefix.len()); // We don't need to decode the primary key in index's test so we format the string // into the key. let key = format!("{}{}", prefix[prefix_idx], i); diff --git a/src/mito2/src/sst/parquet/reader.rs b/src/mito2/src/sst/parquet/reader.rs index d34aaf2229..7575584e8e 100644 --- a/src/mito2/src/sst/parquet/reader.rs +++ b/src/mito2/src/sst/parquet/reader.rs @@ -509,7 +509,7 @@ impl ParquetReaderBuilder { (row_group_id, rg_begin_row_id..rg_end_row_id) }) - .group_by(|(row_group_id, _)| *row_group_id); + .chunk_by(|(row_group_id, _)| *row_group_id); let ranges_in_row_groups = grouped_in_row_groups .into_iter() diff --git a/src/mito2/src/worker.rs b/src/mito2/src/worker.rs index c03fa5231f..87b51fffdf 100644 --- a/src/mito2/src/worker.rs +++ b/src/mito2/src/worker.rs @@ -38,7 +38,7 @@ use common_telemetry::{error, info, warn}; use futures::future::try_join_all; use object_store::manager::ObjectStoreManagerRef; use prometheus::IntGauge; -use rand::{thread_rng, Rng}; +use rand::{rng, Rng}; use snafu::{ensure, ResultExt}; use store_api::logstore::LogStore; use store_api::region_engine::{SetRegionRoleStateResponse, SettableRegionRoleState}; @@ -390,7 +390,7 @@ async fn write_cache_from_config( /// Computes a initial check delay for a worker. pub(crate) fn worker_init_check_delay() -> Duration { - let init_check_delay = thread_rng().gen_range(0..MAX_INITIAL_CHECK_DELAY_SECS); + let init_check_delay = rng().random_range(0..MAX_INITIAL_CHECK_DELAY_SECS); Duration::from_secs(init_check_delay) } diff --git a/src/query/src/tests/function.rs b/src/query/src/tests/function.rs index 9a5071f199..028ed21246 100644 --- a/src/query/src/tests/function.rs +++ b/src/query/src/tests/function.rs @@ -28,7 +28,7 @@ use crate::QueryEngineRef; pub fn create_query_engine_for_vector10x3() -> QueryEngineRef { let mut column_schemas = vec![]; let mut columns = vec![]; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let column_name = "vector"; let column_schema = ColumnSchema::new(column_name, ConcreteDataType::binary_datatype(), true); @@ -37,9 +37,9 @@ pub fn create_query_engine_for_vector10x3() -> QueryEngineRef { let vectors = (0..10) .map(|_| { let veclit = [ - rng.gen_range(-100f32..100.0), - rng.gen_range(-100f32..100.0), - rng.gen_range(-100f32..100.0), + rng.random_range(-100f32..100.0), + rng.random_range(-100f32..100.0), + rng.random_range(-100f32..100.0), ]; veclit_to_binlit(&veclit) }) diff --git a/src/servers/src/mysql/handler.rs b/src/servers/src/mysql/handler.rs index 99cde68257..3a2b185b54 100644 --- a/src/servers/src/mysql/handler.rs +++ b/src/servers/src/mysql/handler.rs @@ -92,7 +92,7 @@ impl MysqlInstanceShim { ) -> MysqlInstanceShim { // init a random salt let mut bs = vec![0u8; 20]; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); rng.fill_bytes(bs.as_mut()); let mut scramble: [u8; 20] = [0; 20]; diff --git a/src/servers/tests/mysql/mysql_server_test.rs b/src/servers/tests/mysql/mysql_server_test.rs index cb800e4e4d..542f73ce69 100644 --- a/src/servers/tests/mysql/mysql_server_test.rs +++ b/src/servers/tests/mysql/mysql_server_test.rs @@ -26,7 +26,6 @@ use datatypes::schema::{ColumnSchema, Schema}; use datatypes::value::Value; use mysql_async::prelude::*; use mysql_async::{Conn, Row, SslOpts}; -use rand::rngs::StdRng; use rand::Rng; use servers::error::Result; use servers::install_ring_crypto_provider; @@ -426,13 +425,11 @@ async fn test_query_concurrently() -> Result<()> { let mut join_handles = vec![]; for _ in 0..threads { join_handles.push(tokio::spawn(async move { - let mut rand: StdRng = rand::SeedableRng::from_entropy(); - let mut connection = create_connection_default_db_name(server_port, false) .await .unwrap(); for _ in 0..expect_executed_queries_per_worker { - let expected: u32 = rand.gen_range(0..100); + let expected: u32 = rand::rng().random_range(0..100); let result: u32 = connection .query_first(format!( "SELECT uint32s FROM numbers WHERE uint32s = {expected}" diff --git a/src/servers/tests/postgres/mod.rs b/src/servers/tests/postgres/mod.rs index 9e2b930ab3..c321fc07ff 100644 --- a/src/servers/tests/postgres/mod.rs +++ b/src/servers/tests/postgres/mod.rs @@ -22,7 +22,6 @@ use common_catalog::consts::{DEFAULT_CATALOG_NAME, DEFAULT_SCHEMA_NAME}; use common_runtime::runtime::BuilderBuild; use common_runtime::Builder as RuntimeBuilder; use pgwire::api::Type; -use rand::rngs::StdRng; use rand::Rng; use rustls::client::danger::{ServerCertVerified, ServerCertVerifier}; use rustls::{Error, SignatureScheme}; @@ -202,12 +201,10 @@ async fn test_query_pg_concurrently() -> Result<()> { let mut join_handles = vec![]; for _i in 0..threads { join_handles.push(tokio::spawn(async move { - let mut rand: StdRng = rand::SeedableRng::from_entropy(); - let mut client = create_plain_connection(server_port, false).await.unwrap(); for _k in 0..expect_executed_queries_per_worker { - let expected: u32 = rand.gen_range(0..100); + let expected: u32 = rand::rng().random_range(0..100); let result: u32 = unwrap_results( client .simple_query(&format!( diff --git a/tests-fuzz/Cargo.toml b/tests-fuzz/Cargo.toml index 1bb148f7f6..9cf6552d68 100644 --- a/tests-fuzz/Cargo.toml +++ b/tests-fuzz/Cargo.toml @@ -44,7 +44,7 @@ nix = { version = "0.28", features = ["process", "signal"], optional = true } partition = { workspace = true } paste.workspace = true rand = { workspace = true } -rand_chacha = "0.3.1" +rand_chacha = "0.9" reqwest = { workspace = true } schemars = "0.8" serde = { workspace = true } diff --git a/tests-fuzz/src/fake.rs b/tests-fuzz/src/fake.rs index b4a612199b..d189e44e3b 100644 --- a/tests-fuzz/src/fake.rs +++ b/tests-fuzz/src/fake.rs @@ -16,6 +16,7 @@ use std::collections::HashSet; use std::marker::PhantomData; use lazy_static::lazy_static; +use rand::prelude::IndexedRandom; use rand::seq::{IteratorRandom, SliceRandom}; use rand::Rng; @@ -33,9 +34,9 @@ lazy_static! { /// Modified from https://github.com/ucarion/faker_rand/blob/ea70c660e1ecd7320156eddb31d2830a511f8842/src/lib.rs macro_rules! faker_impl_from_values { ($name: ident, $values: expr) => { - impl rand::distributions::Distribution<$name> for rand::distributions::Standard { + impl rand::distr::Distribution<$name> for rand::distr::StandardUniform { fn sample(&self, rng: &mut R) -> $name { - $name($values[rng.gen_range(0..$values.len())].clone()) + $name($values[rng.random_range(0..$values.len())].clone()) } } @@ -68,7 +69,7 @@ pub fn random_capitalize_map(rng: &mut R, s: Ident) -> Ident { let mut v = s.value.chars().collect::>(); let str_len = s.value.len(); - let select = rng.gen_range(0..str_len); + let select = rng.random_range(0..str_len); for idx in (0..str_len).choose_multiple(rng, select) { v[idx] = v[idx].to_uppercase().next().unwrap(); } diff --git a/tests-fuzz/src/generator/alter_expr.rs b/tests-fuzz/src/generator/alter_expr.rs index 0c5a628999..e6d694c46e 100644 --- a/tests-fuzz/src/generator/alter_expr.rs +++ b/tests-fuzz/src/generator/alter_expr.rs @@ -40,7 +40,7 @@ fn add_column_options_generator( // 0 -> NULL // 1 -> DEFAULT VALUE // 2 -> PRIMARY KEY + DEFAULT VALUE - let idx = rng.gen_range(0..3); + let idx = rng.random_range(0..3); match idx { 0 => vec![ColumnOption::Null], 1 => { @@ -79,15 +79,15 @@ impl Generator for AlterExprAddColumnGenera type Error = Error; fn generate(&self, rng: &mut R) -> Result { - let with_location = self.location && rng.gen::(); + let with_location = self.location && rng.random::(); let location = if with_location { - let use_first = rng.gen::(); + let use_first = rng.random::(); let location = if use_first { AddColumnLocation::First } else { AddColumnLocation::After { column_name: self.table_ctx.columns - [rng.gen_range(0..self.table_ctx.columns.len())] + [rng.random_range(0..self.table_ctx.columns.len())] .name .to_string(), } @@ -129,7 +129,7 @@ impl Generator for AlterExprDropColumnGenerator { fn generate(&self, rng: &mut R) -> Result { let droppable = droppable_columns(&self.table_ctx.columns); ensure!(!droppable.is_empty(), error::DroppableColumnsSnafu); - let name = droppable[rng.gen_range(0..droppable.len())].name.clone(); + let name = droppable[rng.random_range(0..droppable.len())].name.clone(); Ok(AlterTableExpr { table_name: self.table_ctx.name.clone(), alter_kinds: AlterTableOperation::DropColumn { name }, @@ -174,7 +174,7 @@ impl Generator for AlterExprModifyDataTypeGenerator Result { let modifiable = modifiable_columns(&self.table_ctx.columns); - let changed = modifiable[rng.gen_range(0..modifiable.len())].clone(); + let changed = modifiable[rng.random_range(0..modifiable.len())].clone(); let mut to_type = self.column_type_generator.gen(rng); while !changed.column_type.can_arrow_type_cast_to(&to_type) { to_type = self.column_type_generator.gen(rng); @@ -209,8 +209,8 @@ impl Generator for AlterExprSetTableOptionsGenerator< let all_options = AlterTableOption::iter().collect::>(); // Generate random distinct options let mut option_templates_idx = vec![]; - for _ in 1..rng.gen_range(2..=all_options.len()) { - let option = rng.gen_range(0..all_options.len()); + for _ in 1..rng.random_range(2..=all_options.len()) { + let option = rng.random_range(0..all_options.len()); if !option_templates_idx.contains(&option) { option_templates_idx.push(option); } @@ -219,10 +219,10 @@ impl Generator for AlterExprSetTableOptionsGenerator< .iter() .map(|idx| match all_options[*idx] { AlterTableOption::Ttl(_) => { - let ttl_type = rng.gen_range(0..3); + let ttl_type = rng.random_range(0..3); match ttl_type { 0 => { - let duration: u32 = rng.gen(); + let duration: u32 = rng.random(); AlterTableOption::Ttl(Ttl::Duration((duration as i64).into())) } 1 => AlterTableOption::Ttl(Ttl::Instant), @@ -231,27 +231,27 @@ impl Generator for AlterExprSetTableOptionsGenerator< } } AlterTableOption::TwcsTimeWindow(_) => { - let time_window: u32 = rng.gen(); + let time_window: u32 = rng.random(); AlterTableOption::TwcsTimeWindow((time_window as i64).into()) } AlterTableOption::TwcsMaxOutputFileSize(_) => { - let max_output_file_size: u64 = rng.gen(); + let max_output_file_size: u64 = rng.random(); AlterTableOption::TwcsMaxOutputFileSize(ReadableSize(max_output_file_size)) } AlterTableOption::TwcsMaxInactiveWindowRuns(_) => { - let max_inactive_window_runs: u64 = rng.gen(); + let max_inactive_window_runs: u64 = rng.random(); AlterTableOption::TwcsMaxInactiveWindowRuns(max_inactive_window_runs) } AlterTableOption::TwcsMaxActiveWindowFiles(_) => { - let max_active_window_files: u64 = rng.gen(); + let max_active_window_files: u64 = rng.random(); AlterTableOption::TwcsMaxActiveWindowFiles(max_active_window_files) } AlterTableOption::TwcsMaxActiveWindowRuns(_) => { - let max_active_window_runs: u64 = rng.gen(); + let max_active_window_runs: u64 = rng.random(); AlterTableOption::TwcsMaxActiveWindowRuns(max_active_window_runs) } AlterTableOption::TwcsMaxInactiveWindowFiles(_) => { - let max_inactive_window_files: u64 = rng.gen(); + let max_inactive_window_files: u64 = rng.random(); AlterTableOption::TwcsMaxInactiveWindowFiles(max_inactive_window_files) } }) @@ -279,8 +279,8 @@ impl Generator for AlterExprUnsetTableOptionsGenerato let all_options = AlterTableOption::iter().collect::>(); // Generate random distinct options let mut option_templates_idx = vec![]; - for _ in 1..rng.gen_range(2..=all_options.len()) { - let option = rng.gen_range(0..all_options.len()); + for _ in 1..rng.random_range(2..=all_options.len()) { + let option = rng.random_range(0..all_options.len()); if !option_templates_idx.contains(&option) { option_templates_idx.push(option); } @@ -325,7 +325,7 @@ mod tests { .generate(&mut rng) .unwrap(); let serialized = serde_json::to_string(&expr).unwrap(); - let expected = r#"{"table_name":{"value":"animI","quote_style":null},"alter_kinds":{"AddColumn":{"column":{"name":{"value":"velit","quote_style":null},"column_type":{"Int32":{}},"options":[{"DefaultValue":{"Int32":1606462472}}]},"location":null}}}"#; + let expected = r#"{"table_name":{"value":"quasi","quote_style":null},"alter_kinds":{"AddColumn":{"column":{"name":{"value":"consequatur","quote_style":null},"column_type":{"Float64":{}},"options":[{"DefaultValue":{"Float64":0.48809950435391647}}]},"location":null}}}"#; assert_eq!(expected, serialized); let expr = AlterExprRenameGeneratorBuilder::default() @@ -335,7 +335,7 @@ mod tests { .generate(&mut rng) .unwrap(); let serialized = serde_json::to_string(&expr).unwrap(); - let expected = r#"{"table_name":{"value":"animI","quote_style":null},"alter_kinds":{"RenameTable":{"new_table_name":{"value":"nihil","quote_style":null}}}}"#; + let expected = r#"{"table_name":{"value":"quasi","quote_style":null},"alter_kinds":{"RenameTable":{"new_table_name":{"value":"voluptates","quote_style":null}}}}"#; assert_eq!(expected, serialized); let expr = AlterExprDropColumnGeneratorBuilder::default() @@ -345,7 +345,7 @@ mod tests { .generate(&mut rng) .unwrap(); let serialized = serde_json::to_string(&expr).unwrap(); - let expected = r#"{"table_name":{"value":"animI","quote_style":null},"alter_kinds":{"DropColumn":{"name":{"value":"cUmquE","quote_style":null}}}}"#; + let expected = r#"{"table_name":{"value":"quasi","quote_style":null},"alter_kinds":{"DropColumn":{"name":{"value":"ImPEDiT","quote_style":null}}}}"#; assert_eq!(expected, serialized); let expr = AlterExprModifyDataTypeGeneratorBuilder::default() @@ -355,7 +355,7 @@ mod tests { .generate(&mut rng) .unwrap(); let serialized = serde_json::to_string(&expr).unwrap(); - let expected = r#"{"table_name":{"value":"animI","quote_style":null},"alter_kinds":{"ModifyDataType":{"column":{"name":{"value":"toTAm","quote_style":null},"column_type":{"Int64":{}},"options":[]}}}}"#; + let expected = r#"{"table_name":{"value":"quasi","quote_style":null},"alter_kinds":{"ModifyDataType":{"column":{"name":{"value":"ADIpisci","quote_style":null},"column_type":{"Int64":{}},"options":[]}}}}"#; assert_eq!(expected, serialized); let expr = AlterExprSetTableOptionsGeneratorBuilder::default() @@ -365,7 +365,7 @@ mod tests { .generate(&mut rng) .unwrap(); let serialized = serde_json::to_string(&expr).unwrap(); - let expected = r#"{"table_name":{"value":"animI","quote_style":null},"alter_kinds":{"SetTableOptions":{"options":[{"TwcsMaxActiveWindowRuns":14908016120444947142},{"TwcsMaxActiveWindowFiles":5840340123887173415},{"TwcsMaxOutputFileSize":17740311466571102265}]}}}"#; + let expected = r#"{"table_name":{"value":"quasi","quote_style":null},"alter_kinds":{"SetTableOptions":{"options":[{"TwcsMaxOutputFileSize":16770910638250818741}]}}}"#; assert_eq!(expected, serialized); let expr = AlterExprUnsetTableOptionsGeneratorBuilder::default() @@ -375,7 +375,7 @@ mod tests { .generate(&mut rng) .unwrap(); let serialized = serde_json::to_string(&expr).unwrap(); - let expected = r#"{"table_name":{"value":"animI","quote_style":null},"alter_kinds":{"UnsetTableOptions":{"keys":["compaction.twcs.max_active_window_runs"]}}}"#; + let expected = r#"{"table_name":{"value":"quasi","quote_style":null},"alter_kinds":{"UnsetTableOptions":{"keys":["compaction.twcs.max_active_window_runs","compaction.twcs.max_output_file_size","compaction.twcs.time_window","compaction.twcs.max_inactive_window_files","compaction.twcs.max_active_window_files"]}}}"#; assert_eq!(expected, serialized); } } diff --git a/tests-fuzz/src/generator/create_expr.rs b/tests-fuzz/src/generator/create_expr.rs index 200485e266..44a60257aa 100644 --- a/tests-fuzz/src/generator/create_expr.rs +++ b/tests-fuzz/src/generator/create_expr.rs @@ -399,7 +399,7 @@ mod tests { #[test] fn test_create_table_expr_generator() { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let expr = CreateTableExprGeneratorBuilder::default() .columns(10) @@ -440,13 +440,13 @@ mod tests { .unwrap(); let serialized = serde_json::to_string(&expr).unwrap(); - let expected = r#"{"table_name":{"value":"animI","quote_style":null},"columns":[{"name":{"value":"IMpEdIT","quote_style":null},"column_type":{"Float64":{}},"options":["PrimaryKey","NotNull"]},{"name":{"value":"natuS","quote_style":null},"column_type":{"Timestamp":{"Millisecond":null}},"options":["TimeIndex"]},{"name":{"value":"ADIPisCI","quote_style":null},"column_type":{"Float64":{}},"options":["Null"]},{"name":{"value":"EXpEdita","quote_style":null},"column_type":{"Int16":{}},"options":[{"DefaultValue":{"Int16":4864}}]},{"name":{"value":"cUlpA","quote_style":null},"column_type":{"Int64":{}},"options":["PrimaryKey"]},{"name":{"value":"MOLeStIAs","quote_style":null},"column_type":{"Float64":{}},"options":["NotNull"]},{"name":{"value":"cUmquE","quote_style":null},"column_type":{"Boolean":null},"options":["Null"]},{"name":{"value":"toTAm","quote_style":null},"column_type":{"Float32":{}},"options":[{"DefaultValue":{"Float32":0.21569687}}]},{"name":{"value":"deBitIs","quote_style":null},"column_type":{"Float64":{}},"options":["NotNull"]},{"name":{"value":"QUi","quote_style":null},"column_type":{"Float32":{}},"options":["Null"]}],"if_not_exists":true,"partition":{"partition_columns":["IMpEdIT"],"partition_bounds":[{"Expr":{"lhs":{"Column":"IMpEdIT"},"op":"Lt","rhs":{"Value":{"Float64":5.992310449541053e307}}}},{"Expr":{"lhs":{"Expr":{"lhs":{"Column":"IMpEdIT"},"op":"GtEq","rhs":{"Value":{"Float64":5.992310449541053e307}}}},"op":"And","rhs":{"Expr":{"lhs":{"Column":"IMpEdIT"},"op":"Lt","rhs":{"Value":{"Float64":1.1984620899082105e308}}}}}},{"Expr":{"lhs":{"Column":"IMpEdIT"},"op":"GtEq","rhs":{"Value":{"Float64":1.1984620899082105e308}}}}]},"engine":"mito2","options":{},"primary_keys":[0,4]}"#; + let expected = r#"{"table_name":{"value":"quasi","quote_style":null},"columns":[{"name":{"value":"mOLEsTIAs","quote_style":null},"column_type":{"Float64":{}},"options":["PrimaryKey","Null"]},{"name":{"value":"CUMQUe","quote_style":null},"column_type":{"Timestamp":{"Second":null}},"options":["TimeIndex"]},{"name":{"value":"NaTus","quote_style":null},"column_type":{"Int64":{}},"options":[]},{"name":{"value":"EXPeDITA","quote_style":null},"column_type":{"Float64":{}},"options":[]},{"name":{"value":"ImPEDiT","quote_style":null},"column_type":{"Float32":{}},"options":[{"DefaultValue":{"Float32":0.56425774}}]},{"name":{"value":"ADIpisci","quote_style":null},"column_type":{"Float32":{}},"options":["PrimaryKey"]},{"name":{"value":"deBITIs","quote_style":null},"column_type":{"Float32":{}},"options":[{"DefaultValue":{"Float32":0.31315368}}]},{"name":{"value":"toTaM","quote_style":null},"column_type":{"Int32":{}},"options":["NotNull"]},{"name":{"value":"QuI","quote_style":null},"column_type":{"Float32":{}},"options":[{"DefaultValue":{"Float32":0.39941502}}]},{"name":{"value":"INVeNtOre","quote_style":null},"column_type":{"Boolean":null},"options":["PrimaryKey"]}],"if_not_exists":true,"partition":{"partition_columns":["mOLEsTIAs"],"partition_bounds":[{"Expr":{"lhs":{"Column":"mOLEsTIAs"},"op":"Lt","rhs":{"Value":{"Float64":5.992310449541053e307}}}},{"Expr":{"lhs":{"Expr":{"lhs":{"Column":"mOLEsTIAs"},"op":"GtEq","rhs":{"Value":{"Float64":5.992310449541053e307}}}},"op":"And","rhs":{"Expr":{"lhs":{"Column":"mOLEsTIAs"},"op":"Lt","rhs":{"Value":{"Float64":1.1984620899082105e308}}}}}},{"Expr":{"lhs":{"Column":"mOLEsTIAs"},"op":"GtEq","rhs":{"Value":{"Float64":1.1984620899082105e308}}}}]},"engine":"mito2","options":{},"primary_keys":[0,5,9]}"#; assert_eq!(expected, serialized); } #[test] fn test_create_logical_table_expr_generator() { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let physical_table_expr = CreatePhysicalTableExprGeneratorBuilder::default() .if_not_exists(false) @@ -529,13 +529,13 @@ mod tests { .unwrap(); let logical_table_serialized = serde_json::to_string(&logical_table_expr).unwrap(); - let logical_table_expected = r#"{"table_name":{"value":"impedit","quote_style":null},"columns":[{"name":{"value":"ts","quote_style":null},"column_type":{"Timestamp":{"Millisecond":null}},"options":["TimeIndex"]},{"name":{"value":"val","quote_style":null},"column_type":{"Float64":{}},"options":[]},{"name":{"value":"qui","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"totam","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"molestias","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"natus","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"cumque","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]}],"if_not_exists":false,"partition":null,"engine":"metric","options":{"on_physical_table":{"String":"expedita"}},"primary_keys":[2,5,3,6,4]}"#; + let logical_table_expected = r#"{"table_name":{"value":"impedit","quote_style":null},"columns":[{"name":{"value":"ts","quote_style":null},"column_type":{"Timestamp":{"Millisecond":null}},"options":["TimeIndex"]},{"name":{"value":"val","quote_style":null},"column_type":{"Float64":{}},"options":[]},{"name":{"value":"totam","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"cumque","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"natus","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"molestias","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]},{"name":{"value":"qui","quote_style":null},"column_type":{"String":null},"options":["PrimaryKey"]}],"if_not_exists":false,"partition":null,"engine":"metric","options":{"on_physical_table":{"String":"expedita"}},"primary_keys":[4,2,3,6,5]}"#; assert_eq!(logical_table_expected, logical_table_serialized); } #[test] fn test_create_database_expr_generator() { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let expr = CreateDatabaseExprGeneratorBuilder::default() .if_not_exists(true) @@ -558,7 +558,7 @@ mod tests { let serialized = serde_json::to_string(&expr).unwrap(); let expected = - r#"{"database_name":{"value":"eXPedITa","quote_style":null},"if_not_exists":true}"#; + r#"{"database_name":{"value":"EXPediTA","quote_style":null},"if_not_exists":true}"#; assert_eq!(expected, serialized); } } diff --git a/tests-fuzz/src/generator/insert_expr.rs b/tests-fuzz/src/generator/insert_expr.rs index a0d5bfefc8..e13f518a65 100644 --- a/tests-fuzz/src/generator/insert_expr.rs +++ b/tests-fuzz/src/generator/insert_expr.rs @@ -16,7 +16,7 @@ use std::marker::PhantomData; use datatypes::value::Value; use derive_builder::Builder; -use rand::seq::SliceRandom; +use rand::seq::{IndexedRandom, SliceRandom}; use rand::Rng; use super::TsValueGenerator; @@ -60,7 +60,7 @@ impl Generator for InsertExprGenerator { let can_omit = column.is_nullable() || column.has_default_value(); // 50% chance to omit a column if it's not required - if !can_omit || rng.gen_bool(0.5) { + if !can_omit || rng.random_bool(0.5) { values_columns.push(column.clone()); } } @@ -76,12 +76,12 @@ impl Generator for InsertExprGenerator { for _ in 0..self.rows { let mut row = Vec::with_capacity(values_columns.len()); for column in &values_columns { - if column.is_nullable() && rng.gen_bool(0.2) { + if column.is_nullable() && rng.random_bool(0.2) { row.push(RowValue::Value(Value::Null)); continue; } - if column.has_default_value() && rng.gen_bool(0.2) { + if column.has_default_value() && rng.random_bool(0.2) { row.push(RowValue::Default); continue; } diff --git a/tests-fuzz/src/generator/select_expr.rs b/tests-fuzz/src/generator/select_expr.rs index 8627b18407..95a109d358 100644 --- a/tests-fuzz/src/generator/select_expr.rs +++ b/tests-fuzz/src/generator/select_expr.rs @@ -15,7 +15,7 @@ use std::marker::PhantomData; use derive_builder::Builder; -use rand::seq::SliceRandom; +use rand::seq::{IndexedRandom, SliceRandom}; use rand::Rng; use crate::context::TableContextRef; @@ -37,7 +37,7 @@ impl Generator for SelectExprGenerator { type Error = Error; fn generate(&self, rng: &mut R) -> Result { - let selection = rng.gen_range(1..self.table_ctx.columns.len()); + let selection = rng.random_range(1..self.table_ctx.columns.len()); let mut selected_columns = self .table_ctx .columns @@ -46,16 +46,16 @@ impl Generator for SelectExprGenerator { .collect::>(); selected_columns.shuffle(rng); - let order_by_selection = rng.gen_range(1..selection); + let order_by_selection = rng.random_range(1..selection); let order_by = selected_columns .choose_multiple(rng, order_by_selection) .map(|c| c.name.to_string()) .collect::>(); - let limit = rng.gen_range(1..self.max_limit); + let limit = rng.random_range(1..self.max_limit); - let direction = if rng.gen_bool(1.0 / 2.0) { + let direction = if rng.random_bool(1.0 / 2.0) { Direction::Asc } else { Direction::Desc diff --git a/tests-fuzz/src/ir.rs b/tests-fuzz/src/ir.rs index 438ad256c4..74745327c2 100644 --- a/tests-fuzz/src/ir.rs +++ b/tests-fuzz/src/ir.rs @@ -34,7 +34,7 @@ use datatypes::value::Value; use derive_builder::Builder; pub use insert_expr::InsertIntoExpr; use lazy_static::lazy_static; -use rand::seq::SliceRandom; +use rand::seq::{IndexedRandom, SliceRandom}; use rand::Rng; use serde::{Deserialize, Serialize}; @@ -146,15 +146,15 @@ pub fn generate_random_value( random_str: Option<&dyn Random>, ) -> Value { match datatype { - &ConcreteDataType::Boolean(_) => Value::from(rng.gen::()), - ConcreteDataType::Int16(_) => Value::from(rng.gen::()), - ConcreteDataType::Int32(_) => Value::from(rng.gen::()), - ConcreteDataType::Int64(_) => Value::from(rng.gen::()), - ConcreteDataType::Float32(_) => Value::from(rng.gen::()), - ConcreteDataType::Float64(_) => Value::from(rng.gen::()), + &ConcreteDataType::Boolean(_) => Value::from(rng.random::()), + ConcreteDataType::Int16(_) => Value::from(rng.random::()), + ConcreteDataType::Int32(_) => Value::from(rng.random::()), + ConcreteDataType::Int64(_) => Value::from(rng.random::()), + ConcreteDataType::Float32(_) => Value::from(rng.random::()), + ConcreteDataType::Float64(_) => Value::from(rng.random::()), ConcreteDataType::String(_) => match random_str { Some(random) => Value::from(random.gen(rng).value), - None => Value::from(rng.gen::().to_string()), + None => Value::from(rng.random::().to_string()), }, ConcreteDataType::Date(_) => generate_random_date(rng), @@ -188,25 +188,25 @@ pub fn generate_random_timestamp(rng: &mut R, ts_type: TimestampType) -> TimestampType::Second(_) => { let min = i64::from(Timestamp::MIN_SECOND); let max = i64::from(Timestamp::MAX_SECOND); - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_second(value) } TimestampType::Millisecond(_) => { let min = i64::from(Timestamp::MIN_MILLISECOND); let max = i64::from(Timestamp::MAX_MILLISECOND); - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_millisecond(value) } TimestampType::Microsecond(_) => { let min = i64::from(Timestamp::MIN_MICROSECOND); let max = i64::from(Timestamp::MAX_MICROSECOND); - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_microsecond(value) } TimestampType::Nanosecond(_) => { let min = i64::from(Timestamp::MIN_NANOSECOND); let max = i64::from(Timestamp::MAX_NANOSECOND); - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_nanosecond(value) } }; @@ -219,25 +219,25 @@ pub fn generate_random_timestamp_for_mysql(rng: &mut R, ts_type: Timesta TimestampType::Second(_) => { let min = 1; let max = 2_147_483_647; - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_second(value) } TimestampType::Millisecond(_) => { let min = 1000; let max = 2_147_483_647_499; - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_millisecond(value) } TimestampType::Microsecond(_) => { let min = 1_000_000; let max = 2_147_483_647_499_999; - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_microsecond(value) } TimestampType::Nanosecond(_) => { let min = 1_000_000_000; let max = 2_147_483_647_499_999_000; - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); Timestamp::new_nanosecond(value) } }; @@ -247,7 +247,7 @@ pub fn generate_random_timestamp_for_mysql(rng: &mut R, ts_type: Timesta fn generate_random_date(rng: &mut R) -> Value { let min = i64::from(Timestamp::MIN_MILLISECOND); let max = i64::from(Timestamp::MAX_MILLISECOND); - let value = rng.gen_range(min..=max); + let value = rng.random_range(min..=max); let date = Timestamp::new_millisecond(value).to_chrono_date().unwrap(); Value::from(Date::from(date)) } @@ -411,7 +411,7 @@ pub fn column_options_generator( // 2 -> DEFAULT VALUE // 3 -> PRIMARY KEY // 4 -> EMPTY - let option_idx = rng.gen_range(0..5); + let option_idx = rng.random_range(0..5); match option_idx { 0 => vec![ColumnOption::Null], 1 => vec![ColumnOption::NotNull], @@ -434,7 +434,7 @@ pub fn partible_column_options_generator( // 1 -> NOT NULL // 2 -> DEFAULT VALUE // 3 -> PRIMARY KEY - let option_idx = rng.gen_range(0..4); + let option_idx = rng.random_range(0..4); match option_idx { 0 => vec![ColumnOption::PrimaryKey, ColumnOption::Null], 1 => vec![ColumnOption::PrimaryKey, ColumnOption::NotNull], diff --git a/tests-fuzz/src/translator/mysql/insert_expr.rs b/tests-fuzz/src/translator/mysql/insert_expr.rs index 61340fdcbf..ae2da2a330 100644 --- a/tests-fuzz/src/translator/mysql/insert_expr.rs +++ b/tests-fuzz/src/translator/mysql/insert_expr.rs @@ -82,7 +82,7 @@ mod tests { #[test] fn test_insert_into_translator() { let mut rng = rand_chacha::ChaCha8Rng::seed_from_u64(0); - let omit_column_list = rng.gen_bool(0.2); + let omit_column_list = rng.random_bool(0.2); let test_ctx = test_utils::new_test_ctx(); let insert_expr_generator = InsertExprGeneratorBuilder::default() @@ -95,23 +95,23 @@ mod tests { let insert_expr = insert_expr_generator.generate(&mut rng).unwrap(); let output = InsertIntoExprTranslator.translate(&insert_expr).unwrap(); - let expected = r#"INSERT INTO test (ts, host, cpu_util) VALUES -('+199601-11-07 21:32:56.695+0000', 'corrupti', 0.051130243193075464), -('+40822-03-25 02:17:34.328+0000', NULL, 0.6552502332327004);"#; + let expected = r#"INSERT INTO test (cpu_util, ts, host) VALUES +(0.494276426950336, '+210328-02-20 15:44:23.848+0000', 'aut'), +(0.5240550121500691, '-78231-02-16 05:32:41.400+0000', 'in');"#; assert_eq!(output, expected); let insert_expr = insert_expr_generator.generate(&mut rng).unwrap(); let output = InsertIntoExprTranslator.translate(&insert_expr).unwrap(); - let expected = r#"INSERT INTO test (ts, memory_util) VALUES -('+22606-05-02 04:44:02.976+0000', 0.7074194466620976), -('+33689-06-12 08:42:11.037+0000', 0.40987428386535585);"#; + let expected = r#"INSERT INTO test (ts, host) VALUES +('+137972-11-29 18:23:19.505+0000', 'repellendus'), +('-237884-01-11 09:44:43.491+0000', 'a');"#; assert_eq!(output, expected); let insert_expr = insert_expr_generator.generate(&mut rng).unwrap(); let output = InsertIntoExprTranslator.translate(&insert_expr).unwrap(); - let expected = r#"INSERT INTO test (ts, disk_util, cpu_util, host) VALUES -('+200107-10-22 01:36:36.924+0000', 0.9082597320638828, 0.020853190804573818, 'voluptates'), -('+241156-12-16 20:52:15.185+0000', 0.6492772846116915, 0.18078027701087784, 'repellat');"#; + let expected = r#"INSERT INTO test (disk_util, ts) VALUES +(0.399415030703252, '+154545-01-21 09:38:13.768+0000'), +(NULL, '-227688-03-19 14:23:24.582+0000');"#; assert_eq!(output, expected); } } diff --git a/tests-fuzz/src/translator/mysql/select_expr.rs b/tests-fuzz/src/translator/mysql/select_expr.rs index 2c7cd1990f..46161dfb9e 100644 --- a/tests-fuzz/src/translator/mysql/select_expr.rs +++ b/tests-fuzz/src/translator/mysql/select_expr.rs @@ -69,7 +69,8 @@ mod tests { let select_expr = select_expr_generator.generate(&mut rng).unwrap(); let output = SelectExprTranslator.translate(&select_expr).unwrap(); - let expected = r#"SELECT memory_util, ts, cpu_util, disk_util FROM test ORDER BY cpu_util, disk_util DESC;"#; + let expected = + r#"SELECT ts, memory_util, cpu_util, disk_util FROM test ORDER BY disk_util, ts DESC;"#; assert_eq!(output, expected); } } diff --git a/tests-fuzz/src/utils/process.rs b/tests-fuzz/src/utils/process.rs index b3b03c042b..80b64c040d 100644 --- a/tests-fuzz/src/utils/process.rs +++ b/tests-fuzz/src/utils/process.rs @@ -191,9 +191,9 @@ impl UnstableProcessController { self.running.store(true, Ordering::Relaxed); let mut rng = ChaChaRng::seed_from_u64(self.seed); while self.running.load(Ordering::Relaxed) { - let min = rng.gen_range(50..100); - let max = rng.gen_range(300..600); - let ms = rng.gen_range(min..max); + let min = rng.random_range(50..100); + let max = rng.random_range(300..600); + let ms = rng.random_range(min..max); let pid = self .start_process_with_retry(3) .await diff --git a/tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs b/tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs index 80f017a353..445b5d45fe 100644 --- a/tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs +++ b/tests-fuzz/targets/ddl/fuzz_alter_logical_table.rs @@ -69,16 +69,16 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_actions = get_gt_fuzz_input_max_alter_actions(); - let actions = rng.gen_range(1..max_actions); + let actions = rng.random_range(1..max_actions); Ok(FuzzInput { seed, actions }) } } fn generate_create_physical_table_expr(rng: &mut R) -> Result { - let physical_table_if_not_exists = rng.gen_bool(0.5); + let physical_table_if_not_exists = rng.random_bool(0.5); let mut with_clause = HashMap::new(); - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { with_clause.insert("append_mode".to_string(), "true".to_string()); } let create_physical_table_expr = CreatePhysicalTableExprGeneratorBuilder::default() @@ -97,8 +97,8 @@ fn generate_create_logical_table_expr( physical_table_ctx: TableContextRef, rng: &mut R, ) -> Result { - let labels = rng.gen_range(1..=5); - let logical_table_if_not_exists = rng.gen_bool(0.5); + let labels = rng.random_range(1..=5); + let logical_table_if_not_exists = rng.random_bool(0.5); let create_logical_table_expr = CreateLogicalTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( diff --git a/tests-fuzz/targets/ddl/fuzz_alter_table.rs b/tests-fuzz/targets/ddl/fuzz_alter_table.rs index 247d7632ee..4e4f336f26 100644 --- a/tests-fuzz/targets/ddl/fuzz_alter_table.rs +++ b/tests-fuzz/targets/ddl/fuzz_alter_table.rs @@ -76,9 +76,9 @@ enum AlterTableKind { fn generate_create_table_expr(rng: &mut R) -> Result { let max_columns = get_gt_fuzz_input_max_columns(); - let columns = rng.gen_range(2..max_columns); + let columns = rng.random_range(2..max_columns); let mut with_clause = HashMap::new(); - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { with_clause.insert("append_mode".to_string(), "true".to_string()); } let create_table_generator = CreateTableExprGeneratorBuilder::default() @@ -99,7 +99,7 @@ fn generate_alter_table_expr( rng: &mut R, ) -> Result { let kinds = AlterTableKind::iter().collect::>(); - match kinds[rng.gen_range(0..kinds.len())] { + match kinds[rng.random_range(0..kinds.len())] { AlterTableKind::DropColumn if !droppable_columns(&table_ctx.columns).is_empty() => { AlterExprDropColumnGeneratorBuilder::default() .table_ctx(table_ctx) @@ -138,7 +138,7 @@ fn generate_alter_table_expr( expr_generator.generate(rng) } _ => { - let location = rng.gen_bool(0.5); + let location = rng.random_bool(0.5); let expr_generator = AlterExprAddColumnGeneratorBuilder::default() .table_ctx(table_ctx) .location(location) @@ -153,7 +153,7 @@ impl Arbitrary<'_> for FuzzInput { fn arbitrary(u: &mut Unstructured<'_>) -> arbitrary::Result { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); - let actions = rng.gen_range(1..256); + let actions = rng.random_range(1..256); Ok(FuzzInput { seed, actions }) } diff --git a/tests-fuzz/targets/ddl/fuzz_create_database.rs b/tests-fuzz/targets/ddl/fuzz_create_database.rs index 3d052bb3d9..83de72a342 100644 --- a/tests-fuzz/targets/ddl/fuzz_create_database.rs +++ b/tests-fuzz/targets/ddl/fuzz_create_database.rs @@ -57,7 +57,7 @@ impl Arbitrary<'_> for FuzzInput { fn generate_expr(input: FuzzInput) -> Result { let mut rng = ChaChaRng::seed_from_u64(input.seed); - let if_not_exists = rng.gen_bool(0.5); + let if_not_exists = rng.random_bool(0.5); let create_database_generator = CreateDatabaseExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( WordGenerator, diff --git a/tests-fuzz/targets/ddl/fuzz_create_logical_table.rs b/tests-fuzz/targets/ddl/fuzz_create_logical_table.rs index 64ed26ba7e..46af6a4ceb 100644 --- a/tests-fuzz/targets/ddl/fuzz_create_logical_table.rs +++ b/tests-fuzz/targets/ddl/fuzz_create_logical_table.rs @@ -68,9 +68,9 @@ async fn execute_create_logic_table(ctx: FuzzContext, input: FuzzInput) -> Resul let mut rng = ChaChaRng::seed_from_u64(input.seed); // Create physical table - let physical_table_if_not_exists = rng.gen_bool(0.5); + let physical_table_if_not_exists = rng.random_bool(0.5); let mut with_clause = HashMap::new(); - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { with_clause.insert("append_mode".to_string(), "true".to_string()); } let create_physical_table_expr = CreatePhysicalTableExprGeneratorBuilder::default() @@ -113,8 +113,8 @@ async fn execute_create_logic_table(ctx: FuzzContext, input: FuzzInput) -> Resul // Create logical table let physical_table_ctx = Arc::new(TableContext::from(&create_physical_table_expr)); - let labels = rng.gen_range(1..=5); - let logical_table_if_not_exists = rng.gen_bool(0.5); + let labels = rng.random_range(1..=5); + let logical_table_if_not_exists = rng.random_bool(0.5); let create_logical_table_expr = CreateLogicalTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( diff --git a/tests-fuzz/targets/ddl/fuzz_create_table.rs b/tests-fuzz/targets/ddl/fuzz_create_table.rs index 6d03b0dffa..a4717919d3 100644 --- a/tests-fuzz/targets/ddl/fuzz_create_table.rs +++ b/tests-fuzz/targets/ddl/fuzz_create_table.rs @@ -59,16 +59,16 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_columns = get_gt_fuzz_input_max_columns(); - let columns = rng.gen_range(2..max_columns); + let columns = rng.random_range(2..max_columns); Ok(FuzzInput { columns, seed }) } } fn generate_expr(input: FuzzInput) -> Result { let mut rng = ChaChaRng::seed_from_u64(input.seed); - let if_not_exists = rng.gen_bool(0.5); + let if_not_exists = rng.random_bool(0.5); let mut with_clause = HashMap::new(); - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { with_clause.insert("append_mode".to_string(), "true".to_string()); } diff --git a/tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs b/tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs index 821a9cfe9e..f6390cd8f0 100644 --- a/tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs +++ b/tests-fuzz/targets/failover/fuzz_failover_metric_regions.rs @@ -80,15 +80,15 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_rows = get_gt_fuzz_input_max_rows(); - let rows = rng.gen_range(2..max_rows); + let rows = rng.random_range(2..max_rows); let max_tables = get_gt_fuzz_input_max_tables(); - let tables = rng.gen_range(1..max_tables); + let tables = rng.random_range(1..max_tables); Ok(FuzzInput { rows, seed, tables }) } } fn generate_create_physical_table_expr(rng: &mut R) -> Result { - let physical_table_if_not_exists = rng.gen_bool(0.5); + let physical_table_if_not_exists = rng.random_bool(0.5); let create_physical_table_expr = CreatePhysicalTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( WordGenerator, @@ -121,8 +121,8 @@ fn generate_create_logical_table_expr( physical_table_ctx: TableContextRef, rng: &mut R, ) -> Result { - let labels = rng.gen_range(1..=5); - let logical_table_if_not_exists = rng.gen_bool(0.5); + let labels = rng.random_range(1..=5); + let logical_table_if_not_exists = rng.random_bool(0.5); let create_logical_table_expr = CreateLogicalTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( @@ -208,10 +208,10 @@ async fn execute_failover(ctx: FuzzContext, input: FuzzInput) -> Result<()> { let insert_expr = insert_values(input.rows, &ctx, &mut rng, logical_table_ctx.clone()).await?; - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { flush_memtable(&ctx.greptime, &physical_table_ctx.name).await?; } - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { compact_table(&ctx.greptime, &physical_table_ctx.name).await?; } diff --git a/tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs b/tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs index 158ffed2c1..9faf82ec0b 100644 --- a/tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs +++ b/tests-fuzz/targets/failover/fuzz_failover_mito_regions.rs @@ -24,7 +24,7 @@ use common_telemetry::info; use common_time::util::current_time_millis; use futures::future::try_join_all; use libfuzzer_sys::fuzz_target; -use rand::seq::SliceRandom; +use rand::seq::IndexedRandom; use rand::{Rng, SeedableRng}; use rand_chacha::{ChaCha20Rng, ChaChaRng}; use snafu::{ensure, ResultExt}; @@ -87,13 +87,13 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_columns = get_gt_fuzz_input_max_columns(); - let columns = rng.gen_range(2..max_columns); + let columns = rng.random_range(2..max_columns); let max_rows = get_gt_fuzz_input_max_rows(); - let rows = rng.gen_range(2..max_rows); + let rows = rng.random_range(2..max_rows); let max_tables = get_gt_fuzz_input_max_tables(); - let tables = rng.gen_range(2..max_tables); + let tables = rng.random_range(2..max_tables); let max_inserts = get_gt_fuzz_input_max_insert_actions(); - let inserts = rng.gen_range(2..max_inserts); + let inserts = rng.random_range(2..max_inserts); Ok(FuzzInput { columns, rows, @@ -116,7 +116,7 @@ fn generate_create_exprs( let base_table_name = name_generator.gen(rng); let min_column = columns / 2; - let columns = rng.gen_range(min_column..columns); + let columns = rng.random_range(min_column..columns); let mut exprs = Vec::with_capacity(tables); for i in 0..tables { let table_name = Ident { @@ -174,11 +174,11 @@ fn generate_insert_exprs( ) -> Result>> { let mut exprs = Vec::with_capacity(tables.len()); for table_ctx in tables { - let omit_column_list = rng.gen_bool(0.2); + let omit_column_list = rng.random_bool(0.2); let min_rows = rows / 2; - let rows = rng.gen_range(min_rows..rows); + let rows = rng.random_range(min_rows..rows); let min_inserts = inserts / 2; - let inserts = rng.gen_range(min_inserts..inserts); + let inserts = rng.random_range(min_inserts..inserts); let insert_generator = InsertExprGeneratorBuilder::default() .table_ctx(table_ctx.clone()) @@ -207,9 +207,9 @@ async fn execute_insert_exprs( let semaphore = Arc::new(Semaphore::new(parallelism)); let tasks = inserts.into_iter().map(|inserts| { - let flush_probability = rng.gen_range(0.0..1.0); - let compact_probability = rng.gen_range(0.0..1.0); - let seed: u64 = rng.gen(); + let flush_probability = rng.random_range(0.0..1.0); + let compact_probability = rng.random_range(0.0..1.0); + let seed: u64 = rng.random(); let semaphore = semaphore.clone(); let greptime = ctx.greptime.clone(); @@ -235,10 +235,10 @@ async fn execute_insert_exprs( ) } ); - if rng.gen_bool(flush_probability) { + if rng.random_bool(flush_probability) { flush_memtable(&greptime, &insert_expr.table_name).await?; } - if rng.gen_bool(compact_probability) { + if rng.random_bool(compact_probability) { compact_table(&greptime, &insert_expr.table_name).await?; } total_affected += result.rows_affected(); diff --git a/tests-fuzz/targets/fuzz_insert.rs b/tests-fuzz/targets/fuzz_insert.rs index 739d6af7a3..f041408480 100644 --- a/tests-fuzz/targets/fuzz_insert.rs +++ b/tests-fuzz/targets/fuzz_insert.rs @@ -69,9 +69,9 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_columns = get_gt_fuzz_input_max_columns(); - let columns = rng.gen_range(2..max_columns); + let columns = rng.random_range(2..max_columns); let max_row = get_gt_fuzz_input_max_rows(); - let rows = rng.gen_range(1..max_row); + let rows = rng.random_range(1..max_row); Ok(FuzzInput { columns, rows, @@ -85,7 +85,7 @@ fn generate_create_expr( rng: &mut R, ) -> Result { let mut with_clause = HashMap::new(); - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { with_clause.insert("append_mode".to_string(), "true".to_string()); } @@ -108,7 +108,7 @@ fn generate_insert_expr( rng: &mut R, table_ctx: TableContextRef, ) -> Result { - let omit_column_list = rng.gen_bool(0.2); + let omit_column_list = rng.random_bool(0.2); let insert_generator = InsertExprGeneratorBuilder::default() .table_ctx(table_ctx) @@ -155,7 +155,7 @@ async fn execute_insert(ctx: FuzzContext, input: FuzzInput) -> Result<()> { } ); - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { flush_memtable(&ctx.greptime, &create_expr.table_name).await?; } diff --git a/tests-fuzz/targets/fuzz_insert_logical_table.rs b/tests-fuzz/targets/fuzz_insert_logical_table.rs index ee2035acd6..6e5e7d0a7f 100644 --- a/tests-fuzz/targets/fuzz_insert_logical_table.rs +++ b/tests-fuzz/targets/fuzz_insert_logical_table.rs @@ -70,17 +70,17 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_tables = get_gt_fuzz_input_max_tables(); - let tables = rng.gen_range(1..max_tables); + let tables = rng.random_range(1..max_tables); let max_row = get_gt_fuzz_input_max_rows(); - let rows = rng.gen_range(1..max_row); + let rows = rng.random_range(1..max_row); Ok(FuzzInput { tables, seed, rows }) } } fn generate_create_physical_table_expr(rng: &mut R) -> Result { - let physical_table_if_not_exists = rng.gen_bool(0.5); + let physical_table_if_not_exists = rng.random_bool(0.5); let mut with_clause = HashMap::new(); - if rng.gen_bool(0.5) { + if rng.random_bool(0.5) { with_clause.insert("append_mode".to_string(), "true".to_string()); } let create_physical_table_expr = CreatePhysicalTableExprGeneratorBuilder::default() @@ -99,8 +99,8 @@ fn generate_create_logical_table_expr( physical_table_ctx: TableContextRef, rng: &mut R, ) -> Result { - let labels = rng.gen_range(1..=5); - let logical_table_if_not_exists = rng.gen_bool(0.5); + let labels = rng.random_range(1..=5); + let logical_table_if_not_exists = rng.random_bool(0.5); let create_logical_table_expr = CreateLogicalTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( @@ -259,11 +259,11 @@ async fn execute_insert(ctx: FuzzContext, input: FuzzInput) -> Result<()> { insert_values(input.rows, &ctx, &mut rng, logical_table_ctx.clone()).await?; validate_values(&ctx, logical_table_ctx.clone(), &insert_expr).await?; tables.insert(logical_table_ctx.name.clone(), logical_table_ctx.clone()); - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { flush_memtable(&ctx.greptime, &physical_table_ctx.name).await?; validate_values(&ctx, logical_table_ctx.clone(), &insert_expr).await?; } - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { compact_table(&ctx.greptime, &physical_table_ctx.name).await?; validate_values(&ctx, logical_table_ctx.clone(), &insert_expr).await?; } diff --git a/tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs b/tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs index e79b893b12..7f7257c078 100644 --- a/tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs +++ b/tests-fuzz/targets/migration/fuzz_migrate_metric_regions.rs @@ -78,16 +78,16 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_rows = get_gt_fuzz_input_max_rows(); - let rows = rng.gen_range(2..max_rows); + let rows = rng.random_range(2..max_rows); let max_tables = get_gt_fuzz_input_max_tables(); - let tables = rng.gen_range(1..max_tables); + let tables = rng.random_range(1..max_tables); Ok(FuzzInput { rows, seed, tables }) } } fn generate_create_physical_table_expr(rng: &mut R) -> Result { - let physical_table_if_not_exists = rng.gen_bool(0.5); + let physical_table_if_not_exists = rng.random_bool(0.5); let create_physical_table_expr = CreatePhysicalTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( WordGenerator, @@ -120,8 +120,8 @@ fn generate_create_logical_table_expr( physical_table_ctx: TableContextRef, rng: &mut R, ) -> Result { - let labels = rng.gen_range(1..=5); - let logical_table_if_not_exists = rng.gen_bool(0.5); + let labels = rng.random_range(1..=5); + let logical_table_if_not_exists = rng.random_bool(0.5); let create_logical_table_expr = CreateLogicalTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( @@ -214,10 +214,10 @@ async fn create_logical_table_and_insert_values( let logical_table_ctx = Arc::new(TableContext::from(&create_logical_table_expr)); let insert_expr = insert_values(input.rows, ctx, rng, logical_table_ctx.clone()).await?; - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { flush_memtable(&ctx.greptime, &physical_table_ctx.name).await?; } - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { compact_table(&ctx.greptime, &physical_table_ctx.name).await?; } @@ -338,7 +338,7 @@ async fn execute_migration(ctx: FuzzContext, input: FuzzInput) -> Result<()> { let mut migrations = Vec::with_capacity(num_partitions); let mut new_distribution: BTreeMap> = BTreeMap::new(); for (datanode_id, regions) in region_distribution { - let step = rng.gen_range(1..datanodes.len()); + let step = rng.random_range(1..datanodes.len()); for region in regions { let to_peer = (datanode_id + step as u64) % datanodes.len() as u64; new_distribution.entry(to_peer).or_default().insert(region); diff --git a/tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs b/tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs index b1a9c735ed..fe9fa3dc6e 100644 --- a/tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs +++ b/tests-fuzz/targets/migration/fuzz_migrate_mito_regions.rs @@ -76,10 +76,10 @@ impl Arbitrary<'_> for FuzzInput { fn arbitrary(u: &mut Unstructured<'_>) -> arbitrary::Result { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); - let partitions = rng.gen_range(3..32); - let columns = rng.gen_range(2..30); - let rows = rng.gen_range(128..1024); - let inserts = rng.gen_range(2..8); + let partitions = rng.random_range(3..32); + let columns = rng.random_range(2..30); + let rows = rng.random_range(128..1024); + let inserts = rng.random_range(2..8); Ok(FuzzInput { seed, columns, @@ -113,7 +113,7 @@ fn generate_insert_exprs( rng: &mut R, table_ctx: TableContextRef, ) -> Result> { - let omit_column_list = rng.gen_bool(0.2); + let omit_column_list = rng.random_bool(0.2); let insert_generator = InsertExprGeneratorBuilder::default() .table_ctx(table_ctx.clone()) .omit_column_list(omit_column_list) @@ -161,10 +161,10 @@ async fn insert_values( ) } ); - if rng.gen_bool(0.2) { + if rng.random_bool(0.2) { flush_memtable(&ctx.greptime, &table_ctx.name).await?; } - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { compact_table(&ctx.greptime, &table_ctx.name).await?; } } @@ -309,7 +309,7 @@ async fn execute_region_migration(ctx: FuzzContext, input: FuzzInput) -> Result< let mut migrations = Vec::with_capacity(num_partitions); let mut new_distribution: BTreeMap> = BTreeMap::new(); for (datanode_id, regions) in region_distribution { - let step = rng.gen_range(1..datanodes.len()); + let step = rng.random_range(1..datanodes.len()); for region in regions { let to_peer = (datanode_id + step as u64) % datanodes.len() as u64; new_distribution.entry(to_peer).or_default().insert(region); diff --git a/tests-fuzz/targets/unstable/fuzz_create_table_standalone.rs b/tests-fuzz/targets/unstable/fuzz_create_table_standalone.rs index 103501ac7a..575659ab8e 100644 --- a/tests-fuzz/targets/unstable/fuzz_create_table_standalone.rs +++ b/tests-fuzz/targets/unstable/fuzz_create_table_standalone.rs @@ -69,7 +69,7 @@ impl Arbitrary<'_> for FuzzInput { let seed = u.int_in_range(u64::MIN..=u64::MAX)?; let mut rng = ChaChaRng::seed_from_u64(seed); let max_tables = get_gt_fuzz_input_max_tables(); - let tables = rng.gen_range(1..max_tables); + let tables = rng.random_range(1..max_tables); Ok(FuzzInput { seed, tables }) } } @@ -81,7 +81,7 @@ const DEFAULT_MYSQL_URL: &str = "127.0.0.1:4002"; const DEFAULT_HTTP_HEALTH_URL: &str = "http://127.0.0.1:4000/health"; fn generate_create_table_expr(rng: &mut R) -> CreateTableExpr { - let columns = rng.gen_range(2..30); + let columns = rng.random_range(2..30); let create_table_generator = CreateTableExprGeneratorBuilder::default() .name_generator(Box::new(MappedGenerator::new( WordGenerator, diff --git a/tests-integration/src/tests/instance_kafka_wal_test.rs b/tests-integration/src/tests/instance_kafka_wal_test.rs index b4c1d3ff15..19383e287a 100644 --- a/tests-integration/src/tests/instance_kafka_wal_test.rs +++ b/tests-integration/src/tests/instance_kafka_wal_test.rs @@ -193,8 +193,8 @@ async fn create_tables(test_name: &str, instance: &Arc, num_tables: us async fn insert_data(tables: &[Table], instance: &Arc, num_writers: usize) { // Each writer randomly chooses a table and inserts a sequence of rows into the table. futures::future::join_all((0..num_writers).map(|_| async { - let mut rng = rand::thread_rng(); - let table = &tables[rng.gen_range(0..tables.len())]; + let mut rng = rand::rng(); + let table = &tables[rng.random_range(0..tables.len())]; for _ in 0..10 { let ts = table.logical_timer.fetch_add(1000, Ordering::Relaxed); let row = make_row(ts, &mut rng); @@ -302,8 +302,8 @@ async fn execute_sql_with( } fn make_row(ts: u64, rng: &mut ThreadRng) -> String { - let host = format!("host{}", rng.gen_range(0..5)); - let cpu: f64 = rng.gen_range(0.0..99.9); - let memory: f64 = rng.gen_range(0.0..999.9); + let host = format!("host{}", rng.random_range(0..5)); + let cpu: f64 = rng.random_range(0.0..99.9); + let memory: f64 = rng.random_range(0.0..999.9); format!("('{host}', {cpu}, {memory}, {ts})") }