From e14404c677ce386ce128bd107c611019ec4094a4 Mon Sep 17 00:00:00 2001 From: Ning Sun Date: Mon, 30 Mar 2026 20:13:14 +0800 Subject: [PATCH] chore: update rust toolchain to 2026-03-21 (#7849) * chore: update rust toolchain to 2026-03-21 * chore: new format * fix: lint * chore: resolve lint issues * chore: remove as_millis_f64 * chore: deps up --- Cargo.lock | 32 +++---- flake.lock | 18 ++-- flake.nix | 2 +- rust-toolchain.toml | 2 +- src/auth/tests/mod.rs | 3 +- src/catalog/src/lib.rs | 3 - src/catalog/src/memory/manager.rs | 20 ++--- .../information_schema/tables.rs | 24 ++--- src/catalog/src/system_schema/pg_catalog.rs | 10 +-- src/catalog/src/table_source.rs | 2 +- src/cli/src/data/export.rs | 6 +- src/client/src/database.rs | 2 +- src/client/src/lib.rs | 2 - src/cmd/src/bin/greptime.rs | 1 + src/cmd/src/datanode.rs | 2 +- src/cmd/src/datanode/scanbench.rs | 2 +- src/cmd/src/lib.rs | 2 +- .../datasource/src/file_format/tests.rs | 3 +- src/common/datasource/src/lib.rs | 3 - src/common/frontend/src/error.rs | 2 +- src/common/frontend/src/selector.rs | 1 + src/common/function/src/lib.rs | 1 - src/common/function/src/scalars/matches.rs | 14 ++- src/common/function/src/scalars/vector.rs | 6 +- .../scalars/vector/convert/parse_vector.rs | 2 +- src/common/meta/src/cluster.rs | 2 +- .../meta/src/ddl/drop_database/start.rs | 2 +- .../meta/src/ddl/drop_table/executor.rs | 2 +- src/common/meta/src/ddl/test_util.rs | 2 +- .../src/ddl/tests/alter_logical_tables.rs | 2 +- src/common/meta/src/ddl/tests/alter_table.rs | 6 +- src/common/meta/src/ddl/tests/create_flow.rs | 2 +- .../src/ddl/tests/create_logical_tables.rs | 2 +- src/common/meta/src/ddl/tests/create_table.rs | 2 +- src/common/meta/src/ddl/tests/create_view.rs | 2 +- src/common/meta/src/ddl/tests/drop_flow.rs | 2 +- src/common/meta/src/ddl/tests/drop_table.rs | 2 +- src/common/meta/src/election/rds/mysql.rs | 3 +- src/common/meta/src/election/rds/postgres.rs | 3 +- src/common/meta/src/key/flow.rs | 2 +- src/common/meta/src/key/topic_name.rs | 2 +- src/common/meta/src/kv_backend/rds.rs | 4 +- src/common/meta/src/lib.rs | 3 - src/common/meta/src/range_stream.rs | 2 +- .../update_table_infos.rs | 2 +- src/common/meta/src/reconciliation/utils.rs | 2 +- src/common/meta/src/sequence.rs | 2 +- src/common/meta/src/snapshot.rs | 2 +- src/common/meta/src/state_store.rs | 3 +- src/common/meta/src/wal_provider.rs | 2 +- .../meta/src/wal_provider/topic_pool.rs | 2 +- src/common/procedure/src/lib.rs | 2 - src/common/procedure/src/local.rs | 2 +- src/common/procedure/src/local/runner.rs | 2 +- src/common/procedure/src/store/util.rs | 4 +- src/common/recordbatch/src/lib.rs | 4 +- src/common/recordbatch/src/recordbatch.rs | 2 +- src/common/sql/src/default_constraint.rs | 2 +- src/common/sql/src/lib.rs | 2 - src/common/telemetry/src/lib.rs | 4 +- src/common/wal/src/lib.rs | 4 +- src/datanode/src/datanode.rs | 7 +- src/datanode/src/heartbeat/handler.rs | 2 +- .../src/heartbeat/handler/close_region.rs | 3 +- .../src/heartbeat/handler/downgrade_region.rs | 2 +- .../src/heartbeat/handler/open_region.rs | 2 +- .../src/heartbeat/handler/upgrade_region.rs | 7 +- src/datanode/src/lib.rs | 2 - src/datanode/src/region_server.rs | 2 +- src/datatypes/src/json.rs | 4 +- src/datatypes/src/lib.rs | 3 - src/datatypes/src/types/json_type.rs | 2 +- src/datatypes/src/value.rs | 18 ++-- src/datatypes/src/vectors.rs | 9 +- src/datatypes/src/vectors/binary.rs | 2 +- src/datatypes/src/vectors/json/builder.rs | 4 +- src/file-engine/src/lib.rs | 2 - src/file-engine/src/region.rs | 2 +- src/flow/src/adapter/flownode_impl.rs | 2 +- src/flow/src/lib.rs | 1 - src/flow/src/utils.rs | 6 +- src/frontend/src/lib.rs | 2 - .../inverted_index/format/reader/footer.rs | 2 +- src/index/src/lib.rs | 1 - src/log-query/src/log_query.rs | 88 +++++++++---------- src/log-store/src/kafka/index/iterator.rs | 6 +- src/log-store/src/kafka/log_store.rs | 2 +- src/log-store/src/kafka/util/record.rs | 2 +- src/log-store/src/lib.rs | 3 - src/meta-client/src/client/cluster.rs | 4 +- src/meta-client/src/client/procedure.rs | 4 +- src/meta-srv/src/gc/candidate.rs | 2 +- src/meta-srv/src/gc/handler.rs | 2 +- src/meta-srv/src/handler.rs | 18 ++-- src/meta-srv/src/lib.rs | 2 - .../src/procedure/region_migration.rs | 2 +- .../downgrade_leader_region.rs | 2 +- .../region_migration/flush_leader_region.rs | 2 +- .../src/procedure/region_migration/manager.rs | 2 +- .../region_migration/migration_start.rs | 2 +- .../region_migration/open_candidate_region.rs | 2 +- .../procedure/region_migration/test_util.rs | 2 +- .../downgrade_leader_region.rs | 2 +- .../rollback_downgraded_region.rs | 2 +- .../upgrade_candidate_region.rs | 2 +- .../upgrade_candidate_region.rs | 2 +- .../src/procedure/region_migration/utils.rs | 2 +- .../src/procedure/repartition/group.rs | 2 +- .../repartition/group/enter_staging_region.rs | 2 +- .../repartition/group/repartition_start.rs | 2 +- .../repartition/group/sync_region.rs | 2 +- src/meta-srv/src/procedure/wal_prune.rs | 2 +- .../src/procedure/wal_prune/manager.rs | 2 +- src/meta-srv/src/region/supervisor.rs | 2 +- src/meta-srv/src/service/mailbox.rs | 2 +- src/meta-srv/src/state.rs | 2 +- src/metric-engine/src/engine.rs | 2 +- src/metric-engine/src/engine/bulk_insert.rs | 2 +- .../src/engine/create/extract_new_columns.rs | 2 +- src/metric-engine/src/lib.rs | 2 +- src/metric-engine/src/repeated_task.rs | 2 +- src/metric-engine/src/test_util.rs | 2 +- src/mito-codec/src/key_values.rs | 4 +- src/mito2/src/cache/index.rs | 4 +- src/mito2/src/compaction.rs | 13 ++- src/mito2/src/compaction/run.rs | 2 +- src/mito2/src/compaction/twcs.rs | 4 +- src/mito2/src/engine/alter_test.rs | 2 +- .../src/engine/apply_staging_manifest_test.rs | 3 +- src/mito2/src/engine/catchup_test.rs | 2 +- src/mito2/src/engine/copy_region_from_test.rs | 3 +- src/mito2/src/engine/remap_manifests_test.rs | 2 +- src/mito2/src/engine/staging_test.rs | 3 +- src/mito2/src/engine/sync_test.rs | 2 +- src/mito2/src/lib.rs | 2 - src/mito2/src/manifest/tests/checkpoint.rs | 2 +- src/mito2/src/region.rs | 2 +- src/mito2/src/region/opener.rs | 4 +- src/mito2/src/sst/index.rs | 4 +- src/mito2/src/sst/parquet/row_group.rs | 2 +- src/operator/src/insert.rs | 6 +- src/operator/src/lib.rs | 3 - src/operator/src/statement.rs | 2 +- src/partition/src/lib.rs | 1 - src/partition/src/multi_dim.rs | 2 +- src/pipeline/src/etl/ctx_req.rs | 2 +- src/pipeline/src/etl/processor/dissect.rs | 2 +- src/pipeline/src/etl/processor/filter.rs | 8 +- .../src/extension_plan/range_manipulate.rs | 2 +- .../src/extension_plan/series_divide.rs | 2 +- src/promql/src/functions/extrapolate_rate.rs | 2 +- src/promql/src/functions/quantile.rs | 2 +- .../fs_puffin_manager/reader.rs | 2 +- src/query/src/dist_plan/analyzer/utils.rs | 2 +- src/query/src/optimizer/parallelize_scan.rs | 2 +- src/query/src/optimizer/scan_hint.rs | 8 +- src/query/src/promql/planner.rs | 22 ++--- src/query/src/sql.rs | 22 ++--- src/query/src/window_sort.rs | 2 +- src/servers/src/grpc/flight.rs | 3 +- src/servers/src/http/authorize.rs | 2 +- src/servers/src/http/header.rs | 12 ++- src/servers/src/http/prometheus.rs | 20 ++--- .../src/http/result/prometheus_resp.rs | 16 ++-- src/servers/src/lib.rs | 3 - src/servers/src/mysql/handler.rs | 4 +- src/servers/tests/mysql/mysql_server_test.rs | 4 +- src/sql/src/lib.rs | 2 - src/sql/src/parsers/alter_parser.rs | 2 +- src/sql/src/parsers/comment_parser.rs | 2 +- src/sql/src/parsers/copy_parser.rs | 2 +- src/sql/src/parsers/create_parser.rs | 2 +- src/sql/src/parsers/delete_parser.rs | 2 +- src/sql/src/parsers/insert_parser.rs | 2 +- src/sql/src/parsers/show_parser.rs | 2 +- src/sql/src/statements/alter.rs | 2 +- src/sql/src/statements/copy.rs | 2 +- src/sql/src/statements/create.rs | 2 +- src/sql/src/statements/describe.rs | 2 +- src/sql/src/statements/drop.rs | 2 +- src/sql/src/statements/set_variables.rs | 2 +- src/sql/src/statements/show.rs | 2 +- src/sql/src/statements/truncate.rs | 2 +- src/store-api/src/lib.rs | 2 - src/table/src/lib.rs | 1 - src/table/src/metadata.rs | 2 +- tests-integration/Cargo.toml | 5 ++ tests-integration/src/cluster.rs | 4 +- tests-integration/src/lib.rs | 2 +- .../src/tests/instance_kafka_wal_test.rs | 2 +- tests-integration/tests/main.rs | 2 + 191 files changed, 353 insertions(+), 446 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0cab5067bb..cfec1c5f54 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -565,7 +565,7 @@ dependencies = [ "arrow-schema 57.3.0", "arrow-select 57.3.0", "flatbuffers", - "lz4_flex 0.12.0", + "lz4_flex 0.12.1", "zstd", ] @@ -6277,7 +6277,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.61.2", + "windows-core 0.57.0", ] [[package]] @@ -7592,18 +7592,18 @@ dependencies = [ [[package]] name = "lz4_flex" -version = "0.11.5" +version = "0.11.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08ab2867e3eeeca90e844d1940eab391c9dc5228783db2ed999acbc0a9ed375a" +checksum = "373f5eceeeab7925e0c1098212f2fbc4d416adec9d35051a6ab251e824c1854a" dependencies = [ "twox-hash", ] [[package]] name = "lz4_flex" -version = "0.12.0" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab6473172471198271ff72e9379150e9dfd70d8e533e0752a27e515b48dd375e" +checksum = "98c23545df7ecf1b16c303910a69b079e8e251d60f7dd2cc9b4177f2afaf1746" dependencies = [ "twox-hash", ] @@ -9122,7 +9122,7 @@ dependencies = [ "flate2", "futures", "futures-util", - "lz4_flex 0.11.5", + "lz4_flex 0.11.6", "lzokay-native", "num", "prost 0.13.5", @@ -9345,7 +9345,7 @@ dependencies = [ "futures", "half", "hashbrown 0.16.1", - "lz4_flex 0.12.0", + "lz4_flex 0.12.1", "num-bigint", "num-integer", "num-traits", @@ -10574,7 +10574,7 @@ dependencies = [ "common-test-util", "derive_builder 0.20.2", "futures", - "lz4_flex 0.11.5", + "lz4_flex 0.11.6", "moka", "pin-project", "prometheus 0.14.0", @@ -11306,9 +11306,9 @@ dependencies = [ [[package]] name = "rsasl" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8b534a23662bb559c5c73213be63ecd6524e774d291f3618c2b04b723d184eb" +checksum = "9f1bcb95b531681a622f3d6972eaab523e17e2aad6d6209f0276628eb1cb5038" dependencies = [ "base64 0.22.1", "core2", @@ -11320,7 +11320,7 @@ dependencies = [ "serde_json", "sha2", "stringprep", - "thiserror 1.0.69", + "thiserror 2.0.17", ] [[package]] @@ -12308,9 +12308,9 @@ dependencies = [ [[package]] name = "slab" -version = "0.4.10" +version = "0.4.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" +checksum = "0c790de23124f9ab44544d7ac05d60440adc586479ce501c1d6d7da3cd8c9cf5" [[package]] name = "slotmap" @@ -13224,7 +13224,7 @@ dependencies = [ "levenshtein_automata", "log", "lru", - "lz4_flex 0.11.5", + "lz4_flex 0.11.6", "measure_time", "memmap2", "once_cell", @@ -14714,7 +14714,7 @@ dependencies = [ "itertools 0.14.0", "lalrpop", "lalrpop-util", - "lz4_flex 0.11.5", + "lz4_flex 0.11.6", "md-5", "nom 7.1.3", "ofb", diff --git a/flake.lock b/flake.lock index bec6e18d9a..3c3ee4bd67 100644 --- a/flake.lock +++ b/flake.lock @@ -8,11 +8,11 @@ "rust-analyzer-src": "rust-analyzer-src" }, "locked": { - "lastModified": 1770794449, - "narHash": "sha256-1nFkhcZx9+Sdw5OXwJqp5TxvGncqRqLeK781v0XV3WI=", + "lastModified": 1774250935, + "narHash": "sha256-mWID0WFgTnd9hbEeaPNX+YYWF70JN3r7zBouEqERJOE=", "owner": "nix-community", "repo": "fenix", - "rev": "b19d93fdf9761e6101f8cb5765d638bacebd9a1b", + "rev": "64d7705e8c37d650cfb1aa99c24a8ce46597f29e", "type": "github" }, "original": { @@ -41,11 +41,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1770617025, - "narHash": "sha256-1jZvgZoAagZZB6NwGRv2T2ezPy+X6EFDsJm+YSlsvEs=", + "lastModified": 1774244481, + "narHash": "sha256-4XfMXU0DjN83o6HWZoKG9PegCvKvIhNUnRUI19vzTcQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2db38e08fdadcc0ce3232f7279bab59a15b94482", + "rev": "4590696c8693fea477850fe379a01544293ca4e2", "type": "github" }, "original": { @@ -65,11 +65,11 @@ "rust-analyzer-src": { "flake": false, "locked": { - "lastModified": 1770702974, - "narHash": "sha256-CbvWu72rpGHK5QynoXwuOnVzxX7njF2LYgk8wRSiAQ0=", + "lastModified": 1774221325, + "narHash": "sha256-aEIdkqB8gtQZtEbogdUb5iyfcZpKIlD3FkG8ANu73/I=", "owner": "rust-lang", "repo": "rust-analyzer", - "rev": "07a594815f7c1d6e7e39f21ddeeedb75b21795f4", + "rev": "b42b63f390a4dab14e6efa34a70e67f5b087cc62", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 6a02f4f05f..8dc84136a0 100644 --- a/flake.nix +++ b/flake.nix @@ -20,7 +20,7 @@ lib = nixpkgs.lib; rustToolchain = fenix.packages.${system}.fromToolchainName { name = (lib.importTOML ./rust-toolchain.toml).toolchain.channel; - sha256 = "sha256-GCGEXGZeJySLND0KU5TdtTrqFV76TF3UdvAHSUegSsk="; + sha256 = "sha256-rboGKQLH4eDuiY01SINOqmXUFUNr9F4awoFZGzib17o="; }; in { diff --git a/rust-toolchain.toml b/rust-toolchain.toml index 58b88a3894..d16edecca8 100644 --- a/rust-toolchain.toml +++ b/rust-toolchain.toml @@ -1,2 +1,2 @@ [toolchain] -channel = "nightly-2025-10-01" +channel = "nightly-2026-03-21" diff --git a/src/auth/tests/mod.rs b/src/auth/tests/mod.rs index 65db96a13f..4abbf89e5c 100644 --- a/src/auth/tests/mod.rs +++ b/src/auth/tests/mod.rs @@ -12,8 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] -use std::assert_matches::assert_matches; +use std::assert_matches; use std::sync::Arc; use api::v1::greptime_request::Request; diff --git a/src/catalog/src/lib.rs b/src/catalog/src/lib.rs index 9c31e809fd..a701473551 100644 --- a/src/catalog/src/lib.rs +++ b/src/catalog/src/lib.rs @@ -12,9 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] -#![feature(try_blocks)] - use std::any::Any; use std::fmt::{Debug, Formatter}; use std::sync::Arc; diff --git a/src/catalog/src/memory/manager.rs b/src/catalog/src/memory/manager.rs index 571cd06468..6e747f62ed 100644 --- a/src/catalog/src/memory/manager.rs +++ b/src/catalog/src/memory/manager.rs @@ -132,15 +132,13 @@ impl CatalogManager for MemoryCatalogManager { table_name: &str, _query_ctx: Option<&QueryContext>, ) -> Result> { - let result = try { - self.catalogs - .read() - .unwrap() - .get(catalog)? - .get(schema)? - .get(table_name) - .cloned()? - }; + let catalogs = self.catalogs.read().unwrap(); + let result = catalogs + .get(catalog) + .and_then(|c| c.get(schema)) + .and_then(|s| s.get(table_name)) + .cloned(); + Ok(result) } @@ -149,8 +147,8 @@ impl CatalogManager for MemoryCatalogManager { .catalogs .read() .unwrap() - .iter() - .flat_map(|(_, schema_entries)| schema_entries.values()) + .values() + .flat_map(|schema_entries| schema_entries.values()) .flat_map(|tables| tables.values()) .find(|t| t.table_info().ident.table_id == table_id) .map(|t| t.table_info())) diff --git a/src/catalog/src/system_schema/information_schema/tables.rs b/src/catalog/src/system_schema/information_schema/tables.rs index 248fb243dd..6175c17d39 100644 --- a/src/catalog/src/system_schema/information_schema/tables.rs +++ b/src/catalog/src/system_schema/information_schema/tables.rs @@ -372,22 +372,16 @@ impl InformationSchemaTablesBuilder { self.table_types.push(Some(table_type_text)); self.table_ids.push(Some(table_id)); - let data_length = region_stats.iter().map(|stat| stat.sst_size).sum(); - let table_rows = region_stats.iter().map(|stat| stat.num_rows).sum(); - let index_length = region_stats.iter().map(|stat| stat.index_size).sum(); + let data_length: u64 = region_stats.iter().map(|stat| stat.sst_size).sum(); + let table_rows: u64 = region_stats.iter().map(|stat| stat.num_rows).sum(); + let index_length: u64 = region_stats.iter().map(|stat| stat.index_size).sum(); - // It's not precise, but it is acceptable for long-term data storage. - let avg_row_length = if table_rows > 0 { - let total_data_length = data_length - + region_stats - .iter() - .map(|stat| stat.memtable_size) - .sum::(); - - total_data_length / table_rows - } else { - 0 - }; + let total_data_length: u64 = data_length + + region_stats + .iter() + .map(|stat| stat.memtable_size) + .sum::(); + let avg_row_length = total_data_length.checked_div(table_rows).unwrap_or(0); self.data_length.push(Some(data_length)); self.index_length.push(Some(index_length)); diff --git a/src/catalog/src/system_schema/pg_catalog.rs b/src/catalog/src/system_schema/pg_catalog.rs index 08aad2d6dd..feec46ff90 100644 --- a/src/catalog/src/system_schema/pg_catalog.rs +++ b/src/catalog/src/system_schema/pg_catalog.rs @@ -74,12 +74,10 @@ impl PGCatalogProvider { ) .expect("Failed to initialize PgCatalogSchemaProvider"); - let mut table_ids = HashMap::new(); - let mut table_id = PG_CATALOG_TABLE_ID_START; - for name in PG_CATALOG_TABLES { - table_ids.insert(*name, table_id); - table_id += 1; - } + let table_ids: HashMap<_, _> = (PG_CATALOG_TABLE_ID_START..) + .zip(PG_CATALOG_TABLES.iter()) + .map(|(id, name)| (*name, id)) + .collect(); let mut provider = Self { catalog_name, diff --git a/src/catalog/src/table_source.rs b/src/catalog/src/table_source.rs index 8aabf64e99..f7ba51722f 100644 --- a/src/catalog/src/table_source.rs +++ b/src/catalog/src/table_source.rs @@ -195,7 +195,7 @@ impl DfTableSourceProvider { plan_columns .iter() .map(|c| c.as_str()) - .zip(columns.into_iter()) + .zip(columns) .collect(), ) .context(ProjectViewColumnsSnafu)? diff --git a/src/cli/src/data/export.rs b/src/cli/src/data/export.rs index b5d547d4f3..051c07da35 100644 --- a/src/cli/src/data/export.rs +++ b/src/cli/src/data/export.rs @@ -458,8 +458,10 @@ impl Export { /// build operator with preference for file system async fn build_prefer_fs_operator(&self) -> Result { - if self.storage_type.is_remote_storage() && self.ddl_local_dir.is_some() { - let root = self.ddl_local_dir.as_ref().unwrap().clone(); + if self.storage_type.is_remote_storage() + && let Some(ddl_local_dir) = &self.ddl_local_dir + { + let root = ddl_local_dir.clone(); let op = new_fs_object_store(&root).map_err(|e| Error::Other { source: e, location: snafu::location!(), diff --git a/src/client/src/database.rs b/src/client/src/database.rs index 6a7ac62fc3..e12c2ec0fc 100644 --- a/src/client/src/database.rs +++ b/src/client/src/database.rs @@ -512,7 +512,7 @@ struct FlightContext { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use api::v1::auth_header::AuthScheme; use api::v1::{AuthHeader, Basic}; diff --git a/src/client/src/lib.rs b/src/client/src/lib.rs index bf383acff9..0c9334b7d4 100644 --- a/src/client/src/lib.rs +++ b/src/client/src/lib.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] - mod client; pub mod client_manager; pub mod database; diff --git a/src/cmd/src/bin/greptime.rs b/src/cmd/src/bin/greptime.rs index 7ddc2cd176..9c48d1fd6a 100644 --- a/src/cmd/src/bin/greptime.rs +++ b/src/cmd/src/bin/greptime.rs @@ -12,6 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. +#![recursion_limit = "256"] #![doc = include_str!("../../../../README.md")] use clap::{Parser, Subcommand}; diff --git a/src/cmd/src/datanode.rs b/src/cmd/src/datanode.rs index 06e2568b72..9b06f24ecb 100644 --- a/src/cmd/src/datanode.rs +++ b/src/cmd/src/datanode.rs @@ -356,7 +356,7 @@ impl StartCommand { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::io::Write; use std::time::Duration; diff --git a/src/cmd/src/datanode/scanbench.rs b/src/cmd/src/datanode/scanbench.rs index fdda1d97bb..6bfe177fc1 100644 --- a/src/cmd/src/datanode/scanbench.rs +++ b/src/cmd/src/datanode/scanbench.rs @@ -662,7 +662,7 @@ impl ScanbenchCommand { // Sort ranges within each partition by start time ascending for partition in &mut partitions { - partition.sort_by(|a, b| a.start.cmp(&b.start)); + partition.sort_by_key(|a| a.start); } scanner diff --git a/src/cmd/src/lib.rs b/src/cmd/src/lib.rs index 46ca4c8a76..27564597d7 100644 --- a/src/cmd/src/lib.rs +++ b/src/cmd/src/lib.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] +#![recursion_limit = "256"] use async_trait::async_trait; use common_error::ext::ErrorExt; diff --git a/src/common/datasource/src/file_format/tests.rs b/src/common/datasource/src/file_format/tests.rs index ad54472d33..75d74b53cd 100644 --- a/src/common/datasource/src/file_format/tests.rs +++ b/src/common/datasource/src/file_format/tests.rs @@ -12,10 +12,9 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; use std::collections::HashMap; use std::sync::Arc; -use std::vec; +use std::{assert_matches, vec}; use common_test_util::find_workspace_path; use datafusion::assert_batches_eq; diff --git a/src/common/datasource/src/lib.rs b/src/common/datasource/src/lib.rs index 91663ce22c..f4c7fdf120 100644 --- a/src/common/datasource/src/lib.rs +++ b/src/common/datasource/src/lib.rs @@ -12,9 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] -#![feature(type_alias_impl_trait)] - pub mod buffered_writer; pub mod compressed_writer; pub mod compression; diff --git a/src/common/frontend/src/error.rs b/src/common/frontend/src/error.rs index cee8c6df77..429489326c 100644 --- a/src/common/frontend/src/error.rs +++ b/src/common/frontend/src/error.rs @@ -52,7 +52,7 @@ pub enum Error { #[snafu(display("Failed to invoke list process service"))] CreateChannel { - source: common_grpc::error::Error, + source: Box, #[snafu(implicit)] location: Location, }, diff --git a/src/common/frontend/src/selector.rs b/src/common/frontend/src/selector.rs index 804169d1dd..5bbd8bb52c 100644 --- a/src/common/frontend/src/selector.rs +++ b/src/common/frontend/src/selector.rs @@ -91,6 +91,7 @@ impl FrontendSelector for MetaClientSelector { let channel = self .channel_manager .get(node.peer.addr) + .map_err(Box::new) .context(error::CreateChannelSnafu)?; let client = frontend_client::FrontendClient::new(channel); Ok(Box::new(client) as FrontendClientPtr) diff --git a/src/common/function/src/lib.rs b/src/common/function/src/lib.rs index 36fd27381d..7abd595367 100644 --- a/src/common/function/src/lib.rs +++ b/src/common/function/src/lib.rs @@ -13,7 +13,6 @@ // limitations under the License. #![feature(try_blocks)] -#![feature(assert_matches)] mod admin; mod flush_flow; diff --git a/src/common/function/src/scalars/matches.rs b/src/common/function/src/scalars/matches.rs index 821a1b0581..b5de60dc85 100644 --- a/src/common/function/src/scalars/matches.rs +++ b/src/common/function/src/scalars/matches.rs @@ -794,16 +794,12 @@ impl Tokenizer { is_quote_present = true; break; } - ' ' => { - if !is_quoted { - break; - } + ' ' if !is_quoted => { + break; } - '(' | ')' | '+' | '-' => { - if !is_quoted { - self.rewind_one(); - break; - } + '(' | ')' | '+' | '-' if !is_quoted => { + self.rewind_one(); + break; } '\\' => { let Some(next) = self.consume_next(pattern) else { diff --git a/src/common/function/src/scalars/vector.rs b/src/common/function/src/scalars/vector.rs index 968231aa0a..2f8772c410 100644 --- a/src/common/function/src/scalars/vector.rs +++ b/src/common/function/src/scalars/vector.rs @@ -141,7 +141,7 @@ where results.push((self.func)(v0, v1)?); } - let results = ScalarValue::iter_to_array(results.into_iter())?; + let results = ScalarValue::iter_to_array(results)?; Ok(ColumnarValue::Array(results)) } } @@ -200,7 +200,7 @@ where } } - let results = ScalarValue::iter_to_array(results.into_iter())?; + let results = ScalarValue::iter_to_array(results)?; Ok(ColumnarValue::Array(results)) } } @@ -232,7 +232,7 @@ where results.push((self.func)(&v)?); } - let results = ScalarValue::iter_to_array(results.into_iter())?; + let results = ScalarValue::iter_to_array(results)?; Ok(ColumnarValue::Array(results)) } } diff --git a/src/common/function/src/scalars/vector/convert/parse_vector.rs b/src/common/function/src/scalars/vector/convert/parse_vector.rs index 0d83f098db..7a112a4453 100644 --- a/src/common/function/src/scalars/vector/convert/parse_vector.rs +++ b/src/common/function/src/scalars/vector/convert/parse_vector.rs @@ -167,7 +167,7 @@ mod tests { "External error: Invalid vector string: [7.0,hello,9.0]", ]; - for (input, expected) in inputs.into_iter().zip(expected.into_iter()) { + for (input, expected) in inputs.into_iter().zip(expected) { let args = ScalarFunctionArgs { args: vec![ColumnarValue::Array(Arc::new(input))], arg_fields: vec![], diff --git a/src/common/meta/src/cluster.rs b/src/common/meta/src/cluster.rs index 78af133e8f..527ad589f1 100644 --- a/src/common/meta/src/cluster.rs +++ b/src/common/meta/src/cluster.rs @@ -303,7 +303,7 @@ impl TryFrom for Role { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_workload::DatanodeWorkloadType; diff --git a/src/common/meta/src/ddl/drop_database/start.rs b/src/common/meta/src/ddl/drop_database/start.rs index 775071d684..4da83e367f 100644 --- a/src/common/meta/src/ddl/drop_database/start.rs +++ b/src/common/meta/src/ddl/drop_database/start.rs @@ -72,7 +72,7 @@ impl State for DropDatabaseStart { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use crate::ddl::drop_database::cursor::DropDatabaseCursor; diff --git a/src/common/meta/src/ddl/drop_table/executor.rs b/src/common/meta/src/ddl/drop_table/executor.rs index c342487365..271bdbfede 100644 --- a/src/common/meta/src/ddl/drop_table/executor.rs +++ b/src/common/meta/src/ddl/drop_table/executor.rs @@ -322,7 +322,7 @@ impl DropTableExecutor { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/common/meta/src/ddl/test_util.rs b/src/common/meta/src/ddl/test_util.rs index 1dd1f783dc..36d422216f 100644 --- a/src/common/meta/src/ddl/test_util.rs +++ b/src/common/meta/src/ddl/test_util.rs @@ -19,7 +19,7 @@ pub mod datanode_handler; pub mod flownode_handler; pub mod region_metadata; -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use api::v1::meta::Partition; diff --git a/src/common/meta/src/ddl/tests/alter_logical_tables.rs b/src/common/meta/src/ddl/tests/alter_logical_tables.rs index e6bb7676f5..bca56bafc2 100644 --- a/src/common/meta/src/ddl/tests/alter_logical_tables.rs +++ b/src/common/meta/src/ddl/tests/alter_logical_tables.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::sync::Arc; use api::region::RegionResponse; diff --git a/src/common/meta/src/ddl/tests/alter_table.rs b/src/common/meta/src/ddl/tests/alter_table.rs index d935aa6a15..14ee71b3e6 100644 --- a/src/common/meta/src/ddl/tests/alter_table.rs +++ b/src/common/meta/src/ddl/tests/alter_table.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; @@ -256,7 +256,7 @@ async fn test_on_submit_alter_request() { results.push(result); } rx.try_recv().unwrap_err(); - results.sort_unstable_by(|(a, _), (b, _)| a.id.cmp(&b.id)); + results.sort_unstable_by_key(|(a, _)| a.id); let (peer, request) = results.remove(0); assert_alter_request(peer, request, 1, RegionId::new(table_id, 1)); @@ -310,7 +310,7 @@ async fn test_on_submit_alter_request_without_sync_request() { results.push(result); } rx.try_recv().unwrap_err(); - results.sort_unstable_by(|(a, _), (b, _)| a.id.cmp(&b.id)); + results.sort_unstable_by_key(|(a, _)| a.id); let (peer, request) = results.remove(0); assert_alter_request(peer, request, 1, RegionId::new(table_id, 1)); diff --git a/src/common/meta/src/ddl/tests/create_flow.rs b/src/common/meta/src/ddl/tests/create_flow.rs index 5b22c81857..344fc05024 100644 --- a/src/common/meta/src/ddl/tests/create_flow.rs +++ b/src/common/meta/src/ddl/tests/create_flow.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/common/meta/src/ddl/tests/create_logical_tables.rs b/src/common/meta/src/ddl/tests/create_logical_tables.rs index f7dd397f9f..e2927e8df6 100644 --- a/src/common/meta/src/ddl/tests/create_logical_tables.rs +++ b/src/common/meta/src/ddl/tests/create_logical_tables.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::sync::Arc; use api::region::RegionResponse; diff --git a/src/common/meta/src/ddl/tests/create_table.rs b/src/common/meta/src/ddl/tests/create_table.rs index 5cc1db71cb..5355ac8c7c 100644 --- a/src/common/meta/src/ddl/tests/create_table.rs +++ b/src/common/meta/src/ddl/tests/create_table.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/common/meta/src/ddl/tests/create_view.rs b/src/common/meta/src/ddl/tests/create_view.rs index e4fefa8944..cc98bb1bae 100644 --- a/src/common/meta/src/ddl/tests/create_view.rs +++ b/src/common/meta/src/ddl/tests/create_view.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashSet; use std::sync::Arc; diff --git a/src/common/meta/src/ddl/tests/drop_flow.rs b/src/common/meta/src/ddl/tests/drop_flow.rs index 8de42f5c96..af34da4809 100644 --- a/src/common/meta/src/ddl/tests/drop_flow.rs +++ b/src/common/meta/src/ddl/tests/drop_flow.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/common/meta/src/ddl/tests/drop_table.rs b/src/common/meta/src/ddl/tests/drop_table.rs index 65c3915adc..fb2c882da0 100644 --- a/src/common/meta/src/ddl/tests/drop_table.rs +++ b/src/common/meta/src/ddl/tests/drop_table.rs @@ -172,7 +172,7 @@ async fn test_on_datanode_drop_regions() { let result = rx.try_recv().unwrap(); results.push(result); } - results.sort_unstable_by(|(a, _), (b, _)| a.id.cmp(&b.id)); + results.sort_unstable_by_key(|(a, _)| a.id); let (peer, request) = results.remove(0); check(peer, request, 1, RegionId::new(table_id, 1), false); diff --git a/src/common/meta/src/election/rds/mysql.rs b/src/common/meta/src/election/rds/mysql.rs index 80f3d8ca7c..bd694e4ae1 100644 --- a/src/common/meta/src/election/rds/mysql.rs +++ b/src/common/meta/src/election/rds/mysql.rs @@ -987,8 +987,7 @@ impl MySqlElection { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; - use std::env; + use std::{assert_matches, env}; use common_telemetry::init_default_ut_logging; use sqlx::MySqlPool; diff --git a/src/common/meta/src/election/rds/postgres.rs b/src/common/meta/src/election/rds/postgres.rs index 01910335a0..220b33bb60 100644 --- a/src/common/meta/src/election/rds/postgres.rs +++ b/src/common/meta/src/election/rds/postgres.rs @@ -829,8 +829,7 @@ impl PgElection { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; - use std::env; + use std::{assert_matches, env}; use deadpool_postgres::{Config, Runtime}; use tokio_postgres::NoTls; diff --git a/src/common/meta/src/key/flow.rs b/src/common/meta/src/key/flow.rs index 546071f2a0..1ebd52da1a 100644 --- a/src/common/meta/src/key/flow.rs +++ b/src/common/meta/src/key/flow.rs @@ -390,7 +390,7 @@ impl std::fmt::Debug for FlowMetadataManager { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::BTreeMap; use std::sync::Arc; diff --git a/src/common/meta/src/key/topic_name.rs b/src/common/meta/src/key/topic_name.rs index 5497fbe478..99ae631a72 100644 --- a/src/common/meta/src/key/topic_name.rs +++ b/src/common/meta/src/key/topic_name.rs @@ -237,7 +237,7 @@ impl TopicNameManager { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use super::*; diff --git a/src/common/meta/src/kv_backend/rds.rs b/src/common/meta/src/kv_backend/rds.rs index 8acab1eb65..fd88496bc3 100644 --- a/src/common/meta/src/kv_backend/rds.rs +++ b/src/common/meta/src/kv_backend/rds.rs @@ -575,12 +575,12 @@ macro_rules! record_rds_sql_execute_elapsed { .inspect(|_| { $crate::metrics::RDS_SQL_EXECUTE_ELAPSED .with_label_values(&[$label_store, "success", $label_op, $label_type]) - .observe(timer.elapsed().as_millis_f64()) + .observe(timer.elapsed().as_millis() as f64) }) .inspect_err(|_| { $crate::metrics::RDS_SQL_EXECUTE_ELAPSED .with_label_values(&[$label_store, "error", $label_op, $label_type]) - .observe(timer.elapsed().as_millis_f64()); + .observe(timer.elapsed().as_millis() as f64); }) }}; } diff --git a/src/common/meta/src/lib.rs b/src/common/meta/src/lib.rs index 36aae1026e..ef5109dc03 100644 --- a/src/common/meta/src/lib.rs +++ b/src/common/meta/src/lib.rs @@ -12,9 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] -#![feature(duration_millis_float)] - pub mod cache; pub mod cache_invalidator; pub mod cluster; diff --git a/src/common/meta/src/range_stream.rs b/src/common/meta/src/range_stream.rs index 2fc333064e..4bcd5de7db 100644 --- a/src/common/meta/src/range_stream.rs +++ b/src/common/meta/src/range_stream.rs @@ -187,7 +187,7 @@ impl PaginationStream { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::BTreeMap; use std::sync::Arc; diff --git a/src/common/meta/src/reconciliation/reconcile_logical_tables/update_table_infos.rs b/src/common/meta/src/reconciliation/reconcile_logical_tables/update_table_infos.rs index d0de7a06fb..e8597ccd36 100644 --- a/src/common/meta/src/reconciliation/reconcile_logical_tables/update_table_infos.rs +++ b/src/common/meta/src/reconciliation/reconcile_logical_tables/update_table_infos.rs @@ -84,7 +84,7 @@ impl State for UpdateTableInfos { .persistent_ctx .update_table_infos .iter() - .zip(table_info_values.into_iter()) + .zip(table_info_values) { let new_table_info = Self::build_new_table_info( *table_id, diff --git a/src/common/meta/src/reconciliation/utils.rs b/src/common/meta/src/reconciliation/utils.rs index 4debc6de4d..6ddc084596 100644 --- a/src/common/meta/src/reconciliation/utils.rs +++ b/src/common/meta/src/reconciliation/utils.rs @@ -949,7 +949,7 @@ impl Display for ReconcileTableMetrics { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/common/meta/src/sequence.rs b/src/common/meta/src/sequence.rs index d186446fda..cd0a8ebf88 100644 --- a/src/common/meta/src/sequence.rs +++ b/src/common/meta/src/sequence.rs @@ -337,7 +337,7 @@ impl Inner { #[cfg(test)] mod tests { use std::any::Any; - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashSet; use std::sync::Arc; diff --git a/src/common/meta/src/snapshot.rs b/src/common/meta/src/snapshot.rs index 8f4818e33a..e66156b255 100644 --- a/src/common/meta/src/snapshot.rs +++ b/src/common/meta/src/snapshot.rs @@ -355,7 +355,7 @@ impl MetadataSnapshotManager { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use common_test_util::temp_dir::{TempDir, create_temp_dir}; diff --git a/src/common/meta/src/state_store.rs b/src/common/meta/src/state_store.rs index 0ecbd5a8e4..d98a286581 100644 --- a/src/common/meta/src/state_store.rs +++ b/src/common/meta/src/state_store.rs @@ -380,9 +380,8 @@ impl PoisonStore for KvStateStore { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; - use std::env; use std::sync::Arc; + use std::{assert_matches, env}; use common_procedure::store::state_store::KeyValue; use common_telemetry::info; diff --git a/src/common/meta/src/wal_provider.rs b/src/common/meta/src/wal_provider.rs index cd599b58ba..bf2cb9ba32 100644 --- a/src/common/meta/src/wal_provider.rs +++ b/src/common/meta/src/wal_provider.rs @@ -172,7 +172,7 @@ pub fn extract_topic_from_wal_options( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_wal::config::kafka::MetasrvKafkaConfig; use common_wal::config::kafka::common::KafkaTopicConfig; diff --git a/src/common/meta/src/wal_provider/topic_pool.rs b/src/common/meta/src/wal_provider/topic_pool.rs index 919f0b2abe..f9b4863e52 100644 --- a/src/common/meta/src/wal_provider/topic_pool.rs +++ b/src/common/meta/src/wal_provider/topic_pool.rs @@ -136,7 +136,7 @@ impl KafkaTopicPool { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_wal::maybe_skip_kafka_integration_test; use common_wal::test_util::get_kafka_endpoints; diff --git a/src/common/procedure/src/lib.rs b/src/common/procedure/src/lib.rs index e322765558..156a0ab78c 100644 --- a/src/common/procedure/src/lib.rs +++ b/src/common/procedure/src/lib.rs @@ -14,8 +14,6 @@ //! Common traits and structures for the procedure framework. -#![feature(assert_matches)] - pub mod error; pub mod event; pub mod local; diff --git a/src/common/procedure/src/local.rs b/src/common/procedure/src/local.rs index fe86cd7993..9e8536308c 100644 --- a/src/common/procedure/src/local.rs +++ b/src/common/procedure/src/local.rs @@ -920,7 +920,7 @@ pub(crate) mod test_util { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_error::mock::MockError; use common_error::status_code::StatusCode; diff --git a/src/common/procedure/src/local/runner.rs b/src/common/procedure/src/local/runner.rs index 46dcef11d4..2a974de889 100644 --- a/src/common/procedure/src/local/runner.rs +++ b/src/common/procedure/src/local/runner.rs @@ -704,7 +704,7 @@ impl Runner { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use std::sync::atomic::{AtomicU64, Ordering}; diff --git a/src/common/procedure/src/store/util.rs b/src/common/procedure/src/store/util.rs index e6ef5b62ec..c44e5f4712 100644 --- a/src/common/procedure/src/store/util.rs +++ b/src/common/procedure/src/store/util.rs @@ -57,7 +57,7 @@ fn merge_multiple_values( let (key, value) = pairs.into_iter().next().unwrap(); let prefix = KeySet::with_prefix(&key); let mut parsed_segments = parse_segments(segments, &prefix)?; - parsed_segments.sort_unstable_by(|a, b| a.0.cmp(&b.0)); + parsed_segments.sort_unstable_by_key(|a| a.0); // Safety: `parsed_segments` must larger than 0. let segment_num = parsed_segments.last().unwrap().0; @@ -133,7 +133,7 @@ pub fn multiple_value_stream( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use futures::TryStreamExt; use futures::stream::{self}; diff --git a/src/common/recordbatch/src/lib.rs b/src/common/recordbatch/src/lib.rs index d84e9e9d26..629efd6d84 100644 --- a/src/common/recordbatch/src/lib.rs +++ b/src/common/recordbatch/src/lib.rs @@ -485,7 +485,7 @@ impl QueryMemoryTracker { "{} requested, {} used globally ({}%), {} used by this stream, hard limit: {}", ReadableSize(additional as u64), ReadableSize(current as u64), - if limit > 0 { current * 100 / limit } else { 0 }, + (current * 100).checked_div(limit).unwrap_or(0), ReadableSize(stream_tracked as u64), ReadableSize(limit as u64) ); @@ -613,7 +613,7 @@ impl StreamMemoryTracker { waited, ReadableSize(additional as u64), ReadableSize(current as u64), - if limit > 0 { current * 100 / limit } else { 0 }, + (current * 100).checked_div(limit).unwrap_or(0), ReadableSize(self.tracked_bytes as u64), ReadableSize(limit as u64) ); diff --git a/src/common/recordbatch/src/recordbatch.rs b/src/common/recordbatch/src/recordbatch.rs index f6e0aeed93..2e92b9e87a 100644 --- a/src/common/recordbatch/src/recordbatch.rs +++ b/src/common/recordbatch/src/recordbatch.rs @@ -437,7 +437,7 @@ fn maybe_align_json_array_with_schema( } let mut aligned = Vec::with_capacity(arrays.len()); - for (field, array) in schema.fields().iter().zip(arrays.into_iter()) { + for (field, array) in schema.fields().iter().zip(arrays) { if !is_json_extension_type(field) { aligned.push(array); continue; diff --git a/src/common/sql/src/default_constraint.rs b/src/common/sql/src/default_constraint.rs index 0084320835..bad9f374fd 100644 --- a/src/common/sql/src/default_constraint.rs +++ b/src/common/sql/src/default_constraint.rs @@ -122,7 +122,7 @@ pub fn parse_column_default_constraint( #[cfg(test)] mod test { - use std::assert_matches::assert_matches; + use std::assert_matches; use datatypes::prelude::{ConcreteDataType, Value}; use datatypes::types::BooleanType; diff --git a/src/common/sql/src/lib.rs b/src/common/sql/src/lib.rs index abca883124..8835cae6b4 100644 --- a/src/common/sql/src/lib.rs +++ b/src/common/sql/src/lib.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] - pub mod convert; pub mod default_constraint; pub mod error; diff --git a/src/common/telemetry/src/lib.rs b/src/common/telemetry/src/lib.rs index cd60d61645..26bf5d53b3 100644 --- a/src/common/telemetry/src/lib.rs +++ b/src/common/telemetry/src/lib.rs @@ -21,10 +21,12 @@ mod panic_hook; pub mod tracing_context; mod tracing_sampler; +pub use common_error; pub use logging::{ LOG_RELOAD_HANDLE, TRACE_RELOAD_HANDLE, get_or_init_tracer, init_default_ut_logging, init_global_logging, }; pub use metric::dump_metrics; pub use panic_hook::set_panic_hook; -pub use {common_error, tracing, tracing_subscriber}; +pub use tracing; +pub use tracing_subscriber; diff --git a/src/common/wal/src/lib.rs b/src/common/wal/src/lib.rs index 659a045f57..a0b1dc99f9 100644 --- a/src/common/wal/src/lib.rs +++ b/src/common/wal/src/lib.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] - use std::net::SocketAddr; use error::{EndpointIPV4NotFoundSnafu, ResolveEndpointSnafu, Result}; @@ -59,7 +57,7 @@ async fn resolve_to_ipv4_one>(endpoint: T) -> Result { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_telemetry::warn; use rskafka::client::{Credentials, SaslConfig}; diff --git a/src/datanode/src/datanode.rs b/src/datanode/src/datanode.rs index 859235fa9f..c848215d39 100644 --- a/src/datanode/src/datanode.rs +++ b/src/datanode/src/datanode.rs @@ -551,14 +551,15 @@ impl DatanodeBuilder { if kafka_config.create_index && opts.node_id.is_none() { warn!("The WAL index creation only available in distributed mode.") } - let global_index_collector = if kafka_config.create_index && opts.node_id.is_some() + let global_index_collector = if kafka_config.create_index + && let Some(node_id) = opts.node_id { let operator = new_object_store_without_cache( &opts.storage.store, &opts.storage.data_home, ) .await?; - let path = default_index_file(opts.node_id.unwrap()); + let path = default_index_file(node_id); Some(Self::build_global_index_collector( kafka_config.dump_index_interval, operator, @@ -782,7 +783,7 @@ async fn open_all_regions( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::{BTreeMap, HashMap}; use std::sync::Arc; diff --git a/src/datanode/src/heartbeat/handler.rs b/src/datanode/src/heartbeat/handler.rs index defc910573..10948a3e7c 100644 --- a/src/datanode/src/heartbeat/handler.rs +++ b/src/datanode/src/heartbeat/handler.rs @@ -295,7 +295,7 @@ impl HeartbeatResponseHandler for RegionHeartbeatResponseHandler { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; use std::time::Duration; diff --git a/src/datanode/src/heartbeat/handler/close_region.rs b/src/datanode/src/heartbeat/handler/close_region.rs index 819fcc4880..484edf5ff4 100644 --- a/src/datanode/src/heartbeat/handler/close_region.rs +++ b/src/datanode/src/heartbeat/handler/close_region.rs @@ -47,7 +47,7 @@ impl InstructionHandler for CloseRegionsHandler { let results = join_all(futs).await; let mut errors = vec![]; - for (region_id, result) in region_ids.into_iter().zip(results.into_iter()) { + for (region_id, result) in region_ids.into_iter().zip(results) { match result { Ok(_) => (), Err(error::Error::RegionNotFound { .. }) => { @@ -79,7 +79,6 @@ mod tests { use std::assert_matches; use std::sync::Arc; - use assert_matches::assert_matches; use common_meta::RegionIdent; use common_meta::heartbeat::handler::{HandleControl, HeartbeatResponseHandler}; use common_meta::heartbeat::mailbox::MessageMeta; diff --git a/src/datanode/src/heartbeat/handler/downgrade_region.rs b/src/datanode/src/heartbeat/handler/downgrade_region.rs index 40d9765ca2..f0ec37c844 100644 --- a/src/datanode/src/heartbeat/handler/downgrade_region.rs +++ b/src/datanode/src/heartbeat/handler/downgrade_region.rs @@ -225,7 +225,7 @@ impl HandlerContext { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use std::time::Duration; diff --git a/src/datanode/src/heartbeat/handler/open_region.rs b/src/datanode/src/heartbeat/handler/open_region.rs index 91ba618d9a..56c07a3efe 100644 --- a/src/datanode/src/heartbeat/handler/open_region.rs +++ b/src/datanode/src/heartbeat/handler/open_region.rs @@ -72,7 +72,7 @@ impl InstructionHandler for OpenRegionsHandler { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/datanode/src/heartbeat/handler/upgrade_region.rs b/src/datanode/src/heartbeat/handler/upgrade_region.rs index b2036a6ef4..c06e8aa845 100644 --- a/src/datanode/src/heartbeat/handler/upgrade_region.rs +++ b/src/datanode/src/heartbeat/handler/upgrade_region.rs @@ -183,9 +183,10 @@ impl UpgradeRegionsHandler { .await { Ok(responses) => { - replies.extend( - Self::convert_responses_to_replies(responses, &catchup_regions).into_iter(), - ); + replies.extend(Self::convert_responses_to_replies( + responses, + &catchup_regions, + )); } Err(_) => { replies.extend(catchup_regions.iter().map(|region_id| UpgradeRegionReply { diff --git a/src/datanode/src/lib.rs b/src/datanode/src/lib.rs index 55d2b1796d..7e0db3cabc 100644 --- a/src/datanode/src/lib.rs +++ b/src/datanode/src/lib.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] - pub mod alive_keeper; pub mod config; pub mod datanode; diff --git a/src/datanode/src/region_server.rs b/src/datanode/src/region_server.rs index 9d675aa276..ec10691bea 100644 --- a/src/datanode/src/region_server.rs +++ b/src/datanode/src/region_server.rs @@ -1667,7 +1667,7 @@ impl RegionAttribute { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use api::v1::SemanticType; use common_error::ext::ErrorExt; diff --git a/src/datatypes/src/json.rs b/src/datatypes/src/json.rs index 3bebbf89aa..db657abbcb 100644 --- a/src/datatypes/src/json.rs +++ b/src/datatypes/src/json.rs @@ -426,7 +426,7 @@ fn decode_struct_with_context<'a>( let (items, fields) = struct_value.into_parts(); - for (field, field_value) in fields.fields().iter().zip(items.into_iter()) { + for (field, field_value) in fields.fields().iter().zip(items) { let field_context = context.with_key(field.name()); let json_value = decode_value_with_context(field_value, &field_context)?; json_object.insert(field.name().to_string(), json_value); @@ -561,7 +561,7 @@ fn decode_struct_with_settings<'a>( // Process each field in the struct value let (struct_data, fields) = struct_value.into_parts(); - for (field, value) in fields.fields().iter().zip(struct_data.into_iter()) { + for (field, value) in fields.fields().iter().zip(struct_data) { let field_context = context.with_key(field.name()); // Check if this field should be treated as unstructured diff --git a/src/datatypes/src/lib.rs b/src/datatypes/src/lib.rs index 2c3d4c23bf..0dcce16857 100644 --- a/src/datatypes/src/lib.rs +++ b/src/datatypes/src/lib.rs @@ -12,9 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] -#![feature(box_patterns)] - pub mod arrow_array; pub mod data_type; pub mod duration; diff --git a/src/datatypes/src/types/json_type.rs b/src/datatypes/src/types/json_type.rs index 912bbfca54..13aeffb26c 100644 --- a/src/datatypes/src/types/json_type.rs +++ b/src/datatypes/src/types/json_type.rs @@ -773,7 +773,7 @@ mod tests { r#"Failed to merge JSON datatype: datatypes have conflict, this: {"hello":"","list":[""],"object":{"a":""}}, that: """#, r#"Failed to merge JSON datatype: datatypes have conflict, this: {"hello":"","list":[""],"object":{"a":""}}, that: [""]"#, ]; - for (json, expect) in jsons.into_iter().zip(expects.into_iter()) { + for (json, expect) in jsons.into_iter().zip(expects) { test(json, json_type, Err(expect))?; } diff --git a/src/datatypes/src/value.rs b/src/datatypes/src/value.rs index ab64c801e5..8cfb8da7ad 100644 --- a/src/datatypes/src/value.rs +++ b/src/datatypes/src/value.rs @@ -922,7 +922,7 @@ impl TryFrom for serde_json::Value { let map = struct_type .fields() .iter() - .zip(items.into_iter()) + .zip(items) .map(|(field, value)| { Ok(( field.name().to_string(), @@ -2723,26 +2723,26 @@ pub(crate) mod tests { .unwrap() ); assert_eq!( - ScalarValue::UInt8(Some(u8::MIN + 1)), - Value::UInt8(u8::MIN + 1) + ScalarValue::UInt8(Some(1)), + Value::UInt8(1) .try_to_scalar_value(&ConcreteDataType::uint8_datatype()) .unwrap() ); assert_eq!( - ScalarValue::UInt16(Some(u16::MIN + 2)), - Value::UInt16(u16::MIN + 2) + ScalarValue::UInt16(Some(2)), + Value::UInt16(2) .try_to_scalar_value(&ConcreteDataType::uint16_datatype()) .unwrap() ); assert_eq!( - ScalarValue::UInt32(Some(u32::MIN + 3)), - Value::UInt32(u32::MIN + 3) + ScalarValue::UInt32(Some(3)), + Value::UInt32(3) .try_to_scalar_value(&ConcreteDataType::uint32_datatype()) .unwrap() ); assert_eq!( - ScalarValue::UInt64(Some(u64::MIN + 4)), - Value::UInt64(u64::MIN + 4) + ScalarValue::UInt64(Some(4)), + Value::UInt64(4) .try_to_scalar_value(&ConcreteDataType::uint64_datatype()) .unwrap() ); diff --git a/src/datatypes/src/vectors.rs b/src/datatypes/src/vectors.rs index 5355b35ff4..7c7d2a4ad6 100644 --- a/src/datatypes/src/vectors.rs +++ b/src/datatypes/src/vectors.rs @@ -307,10 +307,11 @@ macro_rules! impl_extend_for_builder { }}; } -pub(crate) use { - impl_extend_for_builder, impl_get_for_vector, impl_get_ref_for_vector, - impl_try_from_arrow_array_for_vector, impl_validity_for_vector, -}; +pub(crate) use impl_extend_for_builder; +pub(crate) use impl_get_for_vector; +pub(crate) use impl_get_ref_for_vector; +pub(crate) use impl_try_from_arrow_array_for_vector; +pub(crate) use impl_validity_for_vector; #[cfg(test)] pub mod tests { diff --git a/src/datatypes/src/vectors/binary.rs b/src/datatypes/src/vectors/binary.rs index 21d188199c..6d9954fb80 100644 --- a/src/datatypes/src/vectors/binary.rs +++ b/src/datatypes/src/vectors/binary.rs @@ -458,7 +458,7 @@ impl BinaryVector { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use arrow::datatypes::DataType as ArrowDataType; use common_base::bytes::Bytes; diff --git a/src/datatypes/src/vectors/json/builder.rs b/src/datatypes/src/vectors/json/builder.rs index ecc19f4bdd..58b4073666 100644 --- a/src/datatypes/src/vectors/json/builder.rs +++ b/src/datatypes/src/vectors/json/builder.rs @@ -328,7 +328,7 @@ mod tests { ), ]; let mut builder = JsonVectorBuilder::new(JsonNativeType::Null, 1); - for (json, result) in jsons.into_iter().zip(results.into_iter()) { + for (json, result) in jsons.into_iter().zip(results) { push(json, &mut builder, result); } let vector = builder.to_vector(); @@ -448,7 +448,7 @@ mod tests { for (builder, (expect_type, expect_vector)) in builder .builders .iter() - .zip(expect_types.into_iter().zip(expect_vectors.into_iter())) + .zip(expect_types.into_iter().zip(expect_vectors)) { assert_eq!(builder.json_type.name(), expect_type); let vector = builder.inner.to_vector_cloned(); diff --git a/src/file-engine/src/lib.rs b/src/file-engine/src/lib.rs index cc9bac8c6f..51d13946cd 100644 --- a/src/file-engine/src/lib.rs +++ b/src/file-engine/src/lib.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] - pub mod config; pub mod engine; pub mod error; diff --git a/src/file-engine/src/region.rs b/src/file-engine/src/region.rs index c17e797966..3808b33a67 100644 --- a/src/file-engine/src/region.rs +++ b/src/file-engine/src/region.rs @@ -105,7 +105,7 @@ impl FileRegion { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use store_api::region_request::PathType; diff --git a/src/flow/src/adapter/flownode_impl.rs b/src/flow/src/adapter/flownode_impl.rs index d1e4600e23..976df56c9e 100644 --- a/src/flow/src/adapter/flownode_impl.rs +++ b/src/flow/src/adapter/flownode_impl.rs @@ -1060,7 +1060,7 @@ impl StreamingEngine { let fetch_order: Vec = table_col_names .iter() - .zip(default_vals.into_iter()) + .zip(default_vals) .map(|(col_name, col_default_val)| { name_to_col .get(col_name) diff --git a/src/flow/src/lib.rs b/src/flow/src/lib.rs index bd4cbd9f08..fe8a760a07 100644 --- a/src/flow/src/lib.rs +++ b/src/flow/src/lib.rs @@ -17,7 +17,6 @@ //! It also contains definition of expression, adapter and plan, and internal state management. #![allow(dead_code)] -#![warn(clippy::missing_docs_in_private_items)] #![warn(clippy::too_many_lines)] // TODO(discord9): enable this lint to handle out of bound access diff --git a/src/flow/src/utils.rs b/src/flow/src/utils.rs index 8f28ed23c7..1a9879b996 100644 --- a/src/flow/src/utils.rs +++ b/src/flow/src/utils.rs @@ -213,7 +213,7 @@ impl KeyExpiryManager { let mut before = self.event_ts_to_key.split_off(&expire_time); std::mem::swap(&mut before, &mut self.event_ts_to_key); - Some(before.into_iter().flat_map(|(_ts, keys)| keys.into_iter())) + Some(before.into_values().flat_map(|keys| keys.into_iter())) } } @@ -409,8 +409,8 @@ impl Arrangement { // iter over batches that only have updates of `timestamp>now` and find the first non empty batch, then get the minimum timestamp in that batch for (_ts, batch) in self.spine.range((Bound::Excluded(now), Bound::Unbounded)) { let min_ts = batch - .iter() - .flat_map(|(_k, v)| v.iter().map(|(_, ts, _)| *ts).min()) + .values() + .flat_map(|v| v.iter().map(|(_, ts, _)| *ts).min()) .min(); if min_ts.is_some() { diff --git a/src/frontend/src/lib.rs b/src/frontend/src/lib.rs index 16321795b7..c170236073 100644 --- a/src/frontend/src/lib.rs +++ b/src/frontend/src/lib.rs @@ -12,8 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] - pub mod error; pub mod events; pub mod frontend; diff --git a/src/index/src/inverted_index/format/reader/footer.rs b/src/index/src/inverted_index/format/reader/footer.rs index 866021c6e6..5d6ac922c9 100644 --- a/src/index/src/inverted_index/format/reader/footer.rs +++ b/src/index/src/inverted_index/format/reader/footer.rs @@ -173,7 +173,7 @@ impl InvertedIndexFooterReader { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use prost::Message; diff --git a/src/index/src/lib.rs b/src/index/src/lib.rs index c469acb8c3..7969ece891 100644 --- a/src/index/src/lib.rs +++ b/src/index/src/lib.rs @@ -13,7 +13,6 @@ // limitations under the License. #![feature(iter_partition_in_place)] -#![feature(assert_matches)] pub mod bitmap; pub mod bloom_filter; diff --git a/src/log-query/src/log_query.rs b/src/log-query/src/log_query.rs index c5b71c6efb..2955b7bded 100644 --- a/src/log-query/src/log_query.rs +++ b/src/log-query/src/log_query.rs @@ -199,57 +199,53 @@ impl TimeFilter { let mut start_dt = None; let mut end_dt = None; - if self.start.is_some() && self.end.is_none() && self.span.is_none() { - // Only 'start' is provided - let s = self.start.as_ref().unwrap(); - let (start, end_opt) = Self::parse_datetime(s)?; - if end_opt.is_none() { + match (&self.start, &self.end, &self.span) { + (Some(start), None, None) => { + let (start, end_opt) = Self::parse_datetime(start)?; + if end_opt.is_none() { + return Err(InvalidTimeFilterSnafu { + filter: self.clone(), + } + .build()); + } + start_dt = Some(start); + end_dt = end_opt; + } + (Some(start), Some(end), _) => { + // Both 'start' and 'end' are provided + let (start, _) = Self::parse_datetime(start)?; + let (end, _) = Self::parse_datetime(end)?; + start_dt = Some(start); + end_dt = Some(end); + } + (Some(start), None, Some(span)) => { + let (start, _) = Self::parse_datetime(start)?; + let span = Self::parse_span(span)?; + let end = start + span; + start_dt = Some(start); + end_dt = Some(end); + } + (None, Some(end), Some(span)) => { + let (end, _) = Self::parse_datetime(end)?; + let span = Self::parse_span(span)?; + let start = end - span; + start_dt = Some(start); + end_dt = Some(end); + } + (None, None, Some(span)) => { + let span = Self::parse_span(span)?; + let end = Utc::now(); + let start = end - span; + start_dt = Some(start); + end_dt = Some(end); + } + _ => { + // Exception return Err(InvalidTimeFilterSnafu { filter: self.clone(), } .build()); } - start_dt = Some(start); - end_dt = end_opt; - } else if self.start.is_some() && self.end.is_some() { - // Both 'start' and 'end' are provided - let (start, _) = Self::parse_datetime(self.start.as_ref().unwrap())?; - let (end, _) = Self::parse_datetime(self.end.as_ref().unwrap())?; - start_dt = Some(start); - end_dt = Some(end); - } else if self.span.is_some() && (self.start.is_some() || self.end.is_some()) { - // 'span' with 'start' or 'end' - let span = Self::parse_span(self.span.as_ref().unwrap())?; - if self.start.is_some() { - let (start, _) = Self::parse_datetime(self.start.as_ref().unwrap())?; - let end = start + span; - start_dt = Some(start); - end_dt = Some(end); - } else { - let (end, _) = Self::parse_datetime(self.end.as_ref().unwrap())?; - let start = end - span; - start_dt = Some(start); - end_dt = Some(end); - } - } else if self.span.is_some() && self.start.is_none() && self.end.is_none() { - // Only 'span' is provided - let span = Self::parse_span(self.span.as_ref().unwrap())?; - let end = Utc::now(); - let start = end - span; - start_dt = Some(start); - end_dt = Some(end); - } else if self.start.is_some() && self.span.is_some() && self.end.is_some() { - // All fields are provided; 'start' and 'end' take priority - let (start, _) = Self::parse_datetime(self.start.as_ref().unwrap())?; - let (end, _) = Self::parse_datetime(self.end.as_ref().unwrap())?; - start_dt = Some(start); - end_dt = Some(end); - } else { - // Exception - return Err(InvalidTimeFilterSnafu { - filter: self.clone(), - } - .build()); } // Validate that end is after start diff --git a/src/log-store/src/kafka/index/iterator.rs b/src/log-store/src/kafka/index/iterator.rs index 9ab350036d..ba8e7273d7 100644 --- a/src/log-store/src/kafka/index/iterator.rs +++ b/src/log-store/src/kafka/index/iterator.rs @@ -61,11 +61,7 @@ impl RegionWalRange { fn next_batch_size(&self) -> Option { if self.current_entry_id < self.end_entry_id { - Some( - self.end_entry_id - .checked_sub(self.current_entry_id) - .unwrap_or_default(), - ) + Some(self.end_entry_id.saturating_sub(self.current_entry_id)) } else { None } diff --git a/src/log-store/src/kafka/log_store.rs b/src/log-store/src/kafka/log_store.rs index 702e5bf319..e7fd06816d 100644 --- a/src/log-store/src/kafka/log_store.rs +++ b/src/log-store/src/kafka/log_store.rs @@ -550,7 +550,7 @@ fn check_termination(offset: i64, end_offset: i64) -> bool { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; use std::time::Duration; diff --git a/src/log-store/src/kafka/util/record.rs b/src/log-store/src/kafka/util/record.rs index 1e291d9776..720f989139 100644 --- a/src/log-store/src/kafka/util/record.rs +++ b/src/log-store/src/kafka/util/record.rs @@ -306,7 +306,7 @@ pub(crate) fn maybe_emit_entry( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use super::*; diff --git a/src/log-store/src/lib.rs b/src/log-store/src/lib.rs index ec8207d5eb..c054fbc1d8 100644 --- a/src/log-store/src/lib.rs +++ b/src/log-store/src/lib.rs @@ -12,9 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(io_error_more)] -#![feature(assert_matches)] - pub mod error; pub mod kafka; pub mod metrics; diff --git a/src/meta-client/src/client/cluster.rs b/src/meta-client/src/client/cluster.rs index 8da45aaa7a..976626b3a0 100644 --- a/src/meta-client/src/client/cluster.rs +++ b/src/meta-client/src/client/cluster.rs @@ -212,8 +212,8 @@ impl Inner { } } } - } else if let Err(err) = leader_provider.ask_leader().await { - return Err(err); + } else { + leader_provider.ask_leader().await?; } } diff --git a/src/meta-client/src/client/procedure.rs b/src/meta-client/src/client/procedure.rs index 93e37511d9..63f45c28fb 100644 --- a/src/meta-client/src/client/procedure.rs +++ b/src/meta-client/src/client/procedure.rs @@ -208,8 +208,8 @@ impl Inner { } } } - } else if let Err(err) = leader_provider.ask_leader().await { - return Err(err); + } else { + leader_provider.ask_leader().await?; } } diff --git a/src/meta-srv/src/gc/candidate.rs b/src/meta-srv/src/gc/candidate.rs index 05fc79ac52..2101318cdf 100644 --- a/src/meta-srv/src/gc/candidate.rs +++ b/src/meta-srv/src/gc/candidate.rs @@ -109,7 +109,7 @@ impl GcScheduler { } // Sort candidates by score in descending order and take top N - candidates.sort_by(|a, b| b.score.cmp(&a.score)); + candidates.sort_by_key(|a| std::cmp::Reverse(a.score)); let top_candidates: Vec = candidates .into_iter() .take(self.config.regions_per_table_threshold) diff --git a/src/meta-srv/src/gc/handler.rs b/src/meta-srv/src/gc/handler.rs index 105ddca58c..c62e927f89 100644 --- a/src/meta-srv/src/gc/handler.rs +++ b/src/meta-srv/src/gc/handler.rs @@ -346,7 +346,7 @@ impl GcScheduler { // Add to need_retry_regions since it failed combined_report .need_retry_regions - .extend(fast_list_regions.clone().into_iter()); + .extend(fast_list_regions.clone()); } } } diff --git a/src/meta-srv/src/handler.rs b/src/meta-srv/src/handler.rs index 58dd1a7c98..4b05db4e4c 100644 --- a/src/meta-srv/src/handler.rs +++ b/src/meta-srv/src/handler.rs @@ -870,7 +870,7 @@ impl HeartbeatHandlerGroupBuilderCustomizer for DefaultHeartbeatHandlerGroupBuil #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use std::time::Duration; @@ -972,7 +972,7 @@ mod tests { "RemapFlowPeerHandler", ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } @@ -1009,7 +1009,7 @@ mod tests { "RemapFlowPeerHandler", ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } @@ -1043,7 +1043,7 @@ mod tests { "RemapFlowPeerHandler", ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } @@ -1077,7 +1077,7 @@ mod tests { "RemapFlowPeerHandler", ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } @@ -1111,7 +1111,7 @@ mod tests { "RemapFlowPeerHandler", ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } @@ -1145,7 +1145,7 @@ mod tests { ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } @@ -1179,7 +1179,7 @@ mod tests { ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } @@ -1212,7 +1212,7 @@ mod tests { "RemapFlowPeerHandler", ]; assert_eq!(names.len(), handlers.len()); - for (handler, name) in handlers.iter().zip(names.into_iter()) { + for (handler, name) in handlers.iter().zip(names) { assert_eq!(handler.name, name); } } diff --git a/src/meta-srv/src/lib.rs b/src/meta-srv/src/lib.rs index 0e87d4421a..70ce449bba 100644 --- a/src/meta-srv/src/lib.rs +++ b/src/meta-srv/src/lib.rs @@ -12,10 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] #![feature(hash_set_entry)] #![feature(duration_constructors)] -#![feature(string_from_utf8_lossy_owned)] pub mod bootstrap; pub mod cache_invalidator; diff --git a/src/meta-srv/src/procedure/region_migration.rs b/src/meta-srv/src/procedure/region_migration.rs index b3797860b3..6563da63bc 100644 --- a/src/meta-srv/src/procedure/region_migration.rs +++ b/src/meta-srv/src/procedure/region_migration.rs @@ -924,7 +924,7 @@ impl Procedure for RegionMigrationProcedure { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use common_meta::distributed_time_constants::default_distributed_time_constants; diff --git a/src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs b/src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs index 37cc0dfa96..b7e8315a77 100644 --- a/src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs +++ b/src/meta-srv/src/procedure/region_migration/downgrade_leader_region.rs @@ -372,7 +372,7 @@ impl DowngradeLeaderRegion { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use common_meta::key::table_route::TableRouteValue; diff --git a/src/meta-srv/src/procedure/region_migration/flush_leader_region.rs b/src/meta-srv/src/procedure/region_migration/flush_leader_region.rs index f3dc0ee661..9dee05373b 100644 --- a/src/meta-srv/src/procedure/region_migration/flush_leader_region.rs +++ b/src/meta-srv/src/procedure/region_migration/flush_leader_region.rs @@ -93,7 +93,7 @@ impl PreFlushRegion { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use store_api::storage::RegionId; diff --git a/src/meta-srv/src/procedure/region_migration/manager.rs b/src/meta-srv/src/procedure/region_migration/manager.rs index 70cba21b5f..d18458b08f 100644 --- a/src/meta-srv/src/procedure/region_migration/manager.rs +++ b/src/meta-srv/src/procedure/region_migration/manager.rs @@ -620,7 +620,7 @@ impl RegionMigrationManager { #[cfg(test)] mod test { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_meta::key::table_route::LogicalTableRouteValue; use common_meta::key::test_utils::new_test_table_info; diff --git a/src/meta-srv/src/procedure/region_migration/migration_start.rs b/src/meta-srv/src/procedure/region_migration/migration_start.rs index 17b577501e..b9d4372c47 100644 --- a/src/meta-srv/src/procedure/region_migration/migration_start.rs +++ b/src/meta-srv/src/procedure/region_migration/migration_start.rs @@ -187,7 +187,7 @@ impl RegionMigrationStart { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_meta::key::test_utils::new_test_table_info; use common_meta::peer::Peer; diff --git a/src/meta-srv/src/procedure/region_migration/open_candidate_region.rs b/src/meta-srv/src/procedure/region_migration/open_candidate_region.rs index 8e2e015669..189ba89449 100644 --- a/src/meta-srv/src/procedure/region_migration/open_candidate_region.rs +++ b/src/meta-srv/src/procedure/region_migration/open_candidate_region.rs @@ -208,7 +208,7 @@ impl OpenCandidateRegion { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use common_catalog::consts::MITO2_ENGINE; diff --git a/src/meta-srv/src/procedure/region_migration/test_util.rs b/src/meta-srv/src/procedure/region_migration/test_util.rs index 4e5624401e..269357bc0a 100644 --- a/src/meta-srv/src/procedure/region_migration/test_util.rs +++ b/src/meta-srv/src/procedure/region_migration/test_util.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; use std::sync::atomic::{AtomicUsize, Ordering}; diff --git a/src/meta-srv/src/procedure/region_migration/update_metadata/downgrade_leader_region.rs b/src/meta-srv/src/procedure/region_migration/update_metadata/downgrade_leader_region.rs index 9e8545bb43..bab79a96bf 100644 --- a/src/meta-srv/src/procedure/region_migration/update_metadata/downgrade_leader_region.rs +++ b/src/meta-srv/src/procedure/region_migration/update_metadata/downgrade_leader_region.rs @@ -88,7 +88,7 @@ impl UpdateMetadata { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/meta-srv/src/procedure/region_migration/update_metadata/rollback_downgraded_region.rs b/src/meta-srv/src/procedure/region_migration/update_metadata/rollback_downgraded_region.rs index b3ee848fbe..2f0ed0fbe9 100644 --- a/src/meta-srv/src/procedure/region_migration/update_metadata/rollback_downgraded_region.rs +++ b/src/meta-srv/src/procedure/region_migration/update_metadata/rollback_downgraded_region.rs @@ -72,7 +72,7 @@ impl UpdateMetadata { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; diff --git a/src/meta-srv/src/procedure/region_migration/update_metadata/upgrade_candidate_region.rs b/src/meta-srv/src/procedure/region_migration/update_metadata/upgrade_candidate_region.rs index db70e3e166..d5aa8699ec 100644 --- a/src/meta-srv/src/procedure/region_migration/update_metadata/upgrade_candidate_region.rs +++ b/src/meta-srv/src/procedure/region_migration/update_metadata/upgrade_candidate_region.rs @@ -224,7 +224,7 @@ impl UpdateMetadata { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_meta::key::test_utils::new_test_table_info; use common_meta::peer::Peer; diff --git a/src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs b/src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs index 39ff1ed741..4c60215cf7 100644 --- a/src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs +++ b/src/meta-srv/src/procedure/region_migration/upgrade_candidate_region.rs @@ -353,7 +353,7 @@ impl UpgradeCandidateRegion { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use common_meta::key::table_route::TableRouteValue; diff --git a/src/meta-srv/src/procedure/region_migration/utils.rs b/src/meta-srv/src/procedure/region_migration/utils.rs index df2e8014e2..91af7ccf17 100644 --- a/src/meta-srv/src/procedure/region_migration/utils.rs +++ b/src/meta-srv/src/procedure/region_migration/utils.rs @@ -242,7 +242,7 @@ pub async fn analyze_region_migration_task( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use std::time::Duration; diff --git a/src/meta-srv/src/procedure/repartition/group.rs b/src/meta-srv/src/procedure/repartition/group.rs index 2ef764b634..f0cb1c4dd0 100644 --- a/src/meta-srv/src/procedure/repartition/group.rs +++ b/src/meta-srv/src/procedure/repartition/group.rs @@ -597,7 +597,7 @@ pub(crate) trait State: Sync + Send + Debug { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use common_meta::key::TableMetadataManager; diff --git a/src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs b/src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs index 18ecfd4bb2..59de569c13 100644 --- a/src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs +++ b/src/meta-srv/src/procedure/repartition/group/enter_staging_region.rs @@ -433,7 +433,7 @@ impl EnterStagingRegion { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::time::Duration; use common_meta::instruction::StagingPartitionDirective; diff --git a/src/meta-srv/src/procedure/repartition/group/repartition_start.rs b/src/meta-srv/src/procedure/repartition/group/repartition_start.rs index 72de2f2934..8b8b5208b4 100644 --- a/src/meta-srv/src/procedure/repartition/group/repartition_start.rs +++ b/src/meta-srv/src/procedure/repartition/group/repartition_start.rs @@ -207,7 +207,7 @@ impl State for RepartitionStart { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_meta::peer::Peer; use common_meta::rpc::router::{Region, RegionRoute}; diff --git a/src/meta-srv/src/procedure/repartition/group/sync_region.rs b/src/meta-srv/src/procedure/repartition/group/sync_region.rs index 5e842da2fb..dcd58c21e9 100644 --- a/src/meta-srv/src/procedure/repartition/group/sync_region.rs +++ b/src/meta-srv/src/procedure/repartition/group/sync_region.rs @@ -338,7 +338,7 @@ impl SyncRegion { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_meta::peer::Peer; use common_meta::rpc::router::{Region, RegionRoute}; diff --git a/src/meta-srv/src/procedure/wal_prune.rs b/src/meta-srv/src/procedure/wal_prune.rs index 0897441647..f5e74ef543 100644 --- a/src/meta-srv/src/procedure/wal_prune.rs +++ b/src/meta-srv/src/procedure/wal_prune.rs @@ -193,7 +193,7 @@ impl Procedure for WalPruneProcedure { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_wal::maybe_skip_kafka_integration_test; use common_wal::test_util::get_kafka_endpoints; diff --git a/src/meta-srv/src/procedure/wal_prune/manager.rs b/src/meta-srv/src/procedure/wal_prune/manager.rs index e5f45d229a..1f1ab2b2f0 100644 --- a/src/meta-srv/src/procedure/wal_prune/manager.rs +++ b/src/meta-srv/src/procedure/wal_prune/manager.rs @@ -287,7 +287,7 @@ impl WalPruneManager { #[cfg(test)] mod test { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::time::Duration; use common_meta::key::topic_name::TopicNameKey; diff --git a/src/meta-srv/src/region/supervisor.rs b/src/meta-srv/src/region/supervisor.rs index 90e08992f6..05716e60c8 100644 --- a/src/meta-srv/src/region/supervisor.rs +++ b/src/meta-srv/src/region/supervisor.rs @@ -847,7 +847,7 @@ impl RegionSupervisor { #[cfg(test)] pub(crate) mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use std::sync::{Arc, Mutex}; use std::time::Duration; diff --git a/src/meta-srv/src/service/mailbox.rs b/src/meta-srv/src/service/mailbox.rs index 5e569e6d4d..8b37eeaad5 100644 --- a/src/meta-srv/src/service/mailbox.rs +++ b/src/meta-srv/src/service/mailbox.rs @@ -214,7 +214,7 @@ pub trait Mailbox: Send + Sync { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_time::util::current_time_millis; use tokio::sync::watch; diff --git a/src/meta-srv/src/state.rs b/src/meta-srv/src/state.rs index e5edc5f169..12eb708b5c 100644 --- a/src/meta-srv/src/state.rs +++ b/src/meta-srv/src/state.rs @@ -117,7 +117,7 @@ pub fn become_follower() -> impl FnOnce(&State) -> State { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::state::{FollowerState, LeaderState, State, become_follower, become_leader}; diff --git a/src/metric-engine/src/engine.rs b/src/metric-engine/src/engine.rs index ba90ca960d..c2c39951cc 100644 --- a/src/metric-engine/src/engine.rs +++ b/src/metric-engine/src/engine.rs @@ -575,7 +575,7 @@ struct MetricEngineInner { #[cfg(test)] mod test { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use common_telemetry::info; diff --git a/src/metric-engine/src/engine/bulk_insert.rs b/src/metric-engine/src/engine/bulk_insert.rs index 2a3c26c80c..8122cdc958 100644 --- a/src/metric-engine/src/engine/bulk_insert.rs +++ b/src/metric-engine/src/engine/bulk_insert.rs @@ -380,7 +380,7 @@ fn record_batch_to_ipc(record_batch: &RecordBatch) -> Result<(Bytes, Bytes, Byte #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::sync::Arc; use api::v1::ArrowIpc; diff --git a/src/metric-engine/src/engine/create/extract_new_columns.rs b/src/metric-engine/src/engine/create/extract_new_columns.rs index b3eabd5706..9d1de9ebb2 100644 --- a/src/metric-engine/src/engine/create/extract_new_columns.rs +++ b/src/metric-engine/src/engine/create/extract_new_columns.rs @@ -52,7 +52,7 @@ pub fn extract_new_columns<'a>( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::{HashMap, HashSet}; use api::v1::SemanticType; diff --git a/src/metric-engine/src/lib.rs b/src/metric-engine/src/lib.rs index b93029f2f4..557baba25a 100644 --- a/src/metric-engine/src/lib.rs +++ b/src/metric-engine/src/lib.rs @@ -50,7 +50,7 @@ //! └─────────────────────┘ //! ``` -#![feature(assert_matches)] +#![recursion_limit = "256"] mod batch_modifier; pub mod config; diff --git a/src/metric-engine/src/repeated_task.rs b/src/metric-engine/src/repeated_task.rs index fa382d7844..4354511039 100644 --- a/src/metric-engine/src/repeated_task.rs +++ b/src/metric-engine/src/repeated_task.rs @@ -85,7 +85,7 @@ impl TaskFunction for FlushMetadataRegionTask { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::time::Duration; use store_api::region_engine::{RegionEngine, RegionManifestInfo}; diff --git a/src/metric-engine/src/test_util.rs b/src/metric-engine/src/test_util.rs index d81240d47f..d3e929cf63 100644 --- a/src/metric-engine/src/test_util.rs +++ b/src/metric-engine/src/test_util.rs @@ -167,7 +167,7 @@ impl TestEnv { primary_key: vec![], options: [(PHYSICAL_TABLE_METADATA_KEY.to_string(), String::new())] .into_iter() - .chain(options.into_iter()) + .chain(options) .collect(), table_dir: table_dir.to_string(), path_type: PathType::Bare, // Use Bare path type for engine regions diff --git a/src/mito-codec/src/key_values.rs b/src/mito-codec/src/key_values.rs index 5afacc3718..d66110bacf 100644 --- a/src/mito-codec/src/key_values.rs +++ b/src/mito-codec/src/key_values.rs @@ -431,11 +431,9 @@ mod tests { values: &[Option], ) { assert_eq!(num_rows, kvs.num_rows()); - let mut expect_seq = START_SEQ; let expect_ts = ValueRef::Int64(ts); - for kv in kvs.iter() { + for (expect_seq, kv) in (START_SEQ..).zip(kvs.iter()) { assert_eq!(expect_seq, kv.sequence()); - expect_seq += 1; assert_eq!(OpType::Put, kv.op_type); assert_eq!(keys.len(), kv.num_primary_keys()); assert_eq!(values.len(), kv.num_fields()); diff --git a/src/mito2/src/cache/index.rs b/src/mito2/src/cache/index.rs index 74f16fdb71..a404978714 100644 --- a/src/mito2/src/cache/index.rs +++ b/src/mito2/src/cache/index.rs @@ -229,14 +229,14 @@ where } if !cache_miss_range.is_empty() { let pages = load(cache_miss_range).await?; - for (i, page) in cache_miss_idx.into_iter().zip(pages.into_iter()) { + for (i, page) in cache_miss_idx.into_iter().zip(pages) { let page_key = page_keys[i]; metrics.page_bytes += page.len() as u64; data[i] = page.clone(); self.put_page(key, page_key, page.clone()); } } - let buffer = Buffer::from_iter(data.into_iter()); + let buffer = Buffer::from_iter(data); Ok(( buffer .slice(PageKey::calculate_range(offset, size, self.page_size)) diff --git a/src/mito2/src/compaction.rs b/src/mito2/src/compaction.rs index ba6957fdae..a43fa8a0a6 100644 --- a/src/mito2/src/compaction.rs +++ b/src/mito2/src/compaction.rs @@ -614,15 +614,12 @@ async fn find_dynamic_options( region_options: &crate::region::options::RegionOptions, schema_metadata_manager: &SchemaMetadataManagerRef, ) -> Result<(crate::region::options::CompactionOptions, TimeToLive)> { - if region_options.compaction_override && region_options.ttl.is_some() { + if let (true, Some(ttl)) = (region_options.compaction_override, region_options.ttl) { debug!( "Use region options directly for table {}: compaction={:?}, ttl={:?}", table_id, region_options.compaction, region_options.ttl ); - return Ok(( - region_options.compaction.clone(), - region_options.ttl.unwrap(), - )); + return Ok((region_options.compaction.clone(), ttl)); } let db_options = tokio::time::timeout( @@ -633,12 +630,12 @@ async fn find_dynamic_options( .context(TimeoutSnafu)? .context(GetSchemaMetadataSnafu)?; - let ttl = if region_options.ttl.is_some() { + let ttl = if let Some(ttl) = region_options.ttl { debug!( "Use region TTL directly for table {}: ttl={:?}", table_id, region_options.ttl ); - region_options.ttl.unwrap() + ttl } else { db_options .as_ref() @@ -980,7 +977,7 @@ struct PendingCompaction { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::time::Duration; use api::v1::region::StrictWindow; diff --git a/src/mito2/src/compaction/run.rs b/src/mito2/src/compaction/run.rs index a7e5ca490c..cf1cedd29a 100644 --- a/src/mito2/src/compaction/run.rs +++ b/src/mito2/src/compaction/run.rs @@ -309,7 +309,7 @@ where pub fn reduce_runs(mut runs: Vec>) -> Vec { assert!(runs.len() > 1); // sort runs by size - runs.sort_unstable_by(|a, b| a.size.cmp(&b.size)); + runs.sort_unstable_by_key(|a| a.size); // limit max probe runs to 100 let probe_end = runs.len().min(100); let mut min_penalty = usize::MAX; diff --git a/src/mito2/src/compaction/twcs.rs b/src/mito2/src/compaction/twcs.rs index 9012457f75..952d8771d8 100644 --- a/src/mito2/src/compaction/twcs.rs +++ b/src/mito2/src/compaction/twcs.rs @@ -588,8 +588,8 @@ mod tests { assert_eq!(*overlapping, actual_window.overlapping); let mut file_ranges = actual_window .files - .iter() - .flat_map(|(_, f)| { + .values() + .flat_map(|f| { f.files().iter().map(|f| { let (s, e) = f.time_range(); (s.value(), e.value()) diff --git a/src/mito2/src/engine/alter_test.rs b/src/mito2/src/engine/alter_test.rs index e710e08688..b8ba06f0b9 100644 --- a/src/mito2/src/engine/alter_test.rs +++ b/src/mito2/src/engine/alter_test.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use std::sync::Arc; use std::time::Duration; diff --git a/src/mito2/src/engine/apply_staging_manifest_test.rs b/src/mito2/src/engine/apply_staging_manifest_test.rs index 6904fbd624..401e6572a2 100644 --- a/src/mito2/src/engine/apply_staging_manifest_test.rs +++ b/src/mito2/src/engine/apply_staging_manifest_test.rs @@ -12,9 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; -use std::fs; use std::sync::Arc; +use std::{assert_matches, fs}; use api::v1::Rows; use common_function::utils::partition_expr_version; diff --git a/src/mito2/src/engine/catchup_test.rs b/src/mito2/src/engine/catchup_test.rs index 0c7d058e4d..718462e8a8 100644 --- a/src/mito2/src/engine/catchup_test.rs +++ b/src/mito2/src/engine/catchup_test.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::collections::HashMap; use api::v1::Rows; diff --git a/src/mito2/src/engine/copy_region_from_test.rs b/src/mito2/src/engine/copy_region_from_test.rs index 75580d5c0b..e9f8398302 100644 --- a/src/mito2/src/engine/copy_region_from_test.rs +++ b/src/mito2/src/engine/copy_region_from_test.rs @@ -12,9 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; -use std::fs; use std::sync::Arc; +use std::{assert_matches, fs}; use api::v1::Rows; use common_error::ext::ErrorExt; diff --git a/src/mito2/src/engine/remap_manifests_test.rs b/src/mito2/src/engine/remap_manifests_test.rs index e3538401aa..339896450c 100644 --- a/src/mito2/src/engine/remap_manifests_test.rs +++ b/src/mito2/src/engine/remap_manifests_test.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use api::v1::Rows; use datatypes::value::Value; diff --git a/src/mito2/src/engine/staging_test.rs b/src/mito2/src/engine/staging_test.rs index 2e9c5045ff..e47a77bea0 100644 --- a/src/mito2/src/engine/staging_test.rs +++ b/src/mito2/src/engine/staging_test.rs @@ -14,10 +14,9 @@ //! Integration tests for staging state functionality. -use std::assert_matches::assert_matches; -use std::fs; use std::sync::Arc; use std::time::Duration; +use std::{assert_matches, fs}; use api::v1::Rows; use common_error::ext::ErrorExt; diff --git a/src/mito2/src/engine/sync_test.rs b/src/mito2/src/engine/sync_test.rs index 65b997e498..6c3b91c130 100644 --- a/src/mito2/src/engine/sync_test.rs +++ b/src/mito2/src/engine/sync_test.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use api::v1::{Rows, SemanticType}; use common_error::ext::ErrorExt; diff --git a/src/mito2/src/lib.rs b/src/mito2/src/lib.rs index a15711b34a..7d43685ded 100644 --- a/src/mito2/src/lib.rs +++ b/src/mito2/src/lib.rs @@ -16,8 +16,6 @@ //! //! Mito is the a region engine to store timeseries data. -#![feature(assert_matches)] -#![feature(int_roundings)] #![feature(debug_closure_helpers)] #![feature(duration_constructors)] diff --git a/src/mito2/src/manifest/tests/checkpoint.rs b/src/mito2/src/manifest/tests/checkpoint.rs index 718755cd46..64547f45aa 100644 --- a/src/mito2/src/manifest/tests/checkpoint.rs +++ b/src/mito2/src/manifest/tests/checkpoint.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::sync::Arc; use std::time::Duration; diff --git a/src/mito2/src/region.rs b/src/mito2/src/region.rs index 3020c9ecf4..26ab96c779 100644 --- a/src/mito2/src/region.rs +++ b/src/mito2/src/region.rs @@ -656,7 +656,7 @@ impl MitoRegion { .unwrap_or_default(); let files = manifest_files .into_iter() - .chain(staging_files.into_iter()) + .chain(staging_files) .collect::>(); files diff --git a/src/mito2/src/region/opener.rs b/src/mito2/src/region/opener.rs index d089493f81..9aa6454f75 100644 --- a/src/mito2/src/region/opener.rs +++ b/src/mito2/src/region/opener.rs @@ -881,7 +881,7 @@ impl RegionLoadCacheTask { } // Sorts files by max timestamp in descending order to loads latest files first - files_to_download.sort_by(|a, b| b.2.cmp(&a.2)); + files_to_download.sort_by_key(|b| std::cmp::Reverse(b.2)); let total_files = files_to_download.len() as i64; @@ -1011,7 +1011,7 @@ async fn preload_parquet_meta_cache_for_files( let allow_direct_load = matches!(object_store.info().scheme(), object_store::Scheme::Fs); // Sort by time range so we can prefer preloading newer files first. - files.sort_by(|a, b| b.meta_ref().time_range.1.cmp(&a.meta_ref().time_range.1)); + files.sort_by_key(|b| std::cmp::Reverse(b.meta_ref().time_range.1)); let mut loaded = 0usize; for file_handle in files { diff --git a/src/mito2/src/sst/index.rs b/src/mito2/src/sst/index.rs index 88aebfc001..31a96eecea 100644 --- a/src/mito2/src/sst/index.rs +++ b/src/mito2/src/sst/index.rs @@ -1083,8 +1083,8 @@ impl IndexBuildScheduler { /// Find the next task which has the highest priority to run. fn find_next_task(&self) -> Option { self.region_status - .iter() - .filter_map(|(_, status)| status.pending_tasks.peek()) + .values() + .filter_map(|status| status.pending_tasks.peek()) .max() .cloned() } diff --git a/src/mito2/src/sst/parquet/row_group.rs b/src/mito2/src/sst/parquet/row_group.rs index 8822882c5d..d8a44dfff5 100644 --- a/src/mito2/src/sst/parquet/row_group.rs +++ b/src/mito2/src/sst/parquet/row_group.rs @@ -220,7 +220,7 @@ pub(crate) fn compute_total_range_size(ranges: &[Range]) -> (u64, u64) { let gap = MERGE_GAP as u64; let mut sorted_ranges = ranges.to_vec(); - sorted_ranges.sort_unstable_by(|a, b| a.start.cmp(&b.start)); + sorted_ranges.sort_unstable_by_key(|a| a.start); let mut total_size_aligned = 0; let mut total_size_unaligned = 0; diff --git a/src/operator/src/insert.rs b/src/operator/src/insert.rs index 2366db7897..e1f121699e 100644 --- a/src/operator/src/insert.rs +++ b/src/operator/src/insert.rs @@ -343,8 +343,7 @@ impl Inserter { .convert(request) .await?; - let table_infos = - HashMap::from_iter([(table_info.table_id(), table_info.clone())].into_iter()); + let table_infos = HashMap::from_iter([(table_info.table_id(), table_info.clone())]); self.do_request(inserts, &table_infos, &ctx).await } @@ -360,8 +359,7 @@ impl Inserter { .convert(insert, ctx, statement_executor) .await?; - let table_infos = - HashMap::from_iter([(table_info.table_id(), table_info.clone())].into_iter()); + let table_infos = HashMap::from_iter([(table_info.table_id(), table_info.clone())]); self.do_request(inserts, &table_infos, ctx).await } diff --git a/src/operator/src/lib.rs b/src/operator/src/lib.rs index e31ad87ca1..5e723faeb5 100644 --- a/src/operator/src/lib.rs +++ b/src/operator/src/lib.rs @@ -12,9 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] -#![feature(if_let_guard)] - mod bulk_insert; pub mod delete; pub mod error; diff --git a/src/operator/src/statement.rs b/src/operator/src/statement.rs index b87be42ff4..f3931255d0 100644 --- a/src/operator/src/statement.rs +++ b/src/operator/src/statement.rs @@ -933,7 +933,7 @@ impl Inserter for InserterImpl { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use common_time::range::TimestampRange; diff --git a/src/partition/src/lib.rs b/src/partition/src/lib.rs index 647210d1d5..3bfd7297cc 100644 --- a/src/partition/src/lib.rs +++ b/src/partition/src/lib.rs @@ -12,7 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] //! Structs and traits for partitioning rule. pub mod cache; diff --git a/src/partition/src/multi_dim.rs b/src/partition/src/multi_dim.rs index 7b1f7aa3dd..8825c6de59 100644 --- a/src/partition/src/multi_dim.rs +++ b/src/partition/src/multi_dim.rs @@ -356,7 +356,7 @@ impl PartitionRule for MultiDimPartitionRule { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use super::*; use crate::error::{self, Error}; diff --git a/src/pipeline/src/etl/ctx_req.rs b/src/pipeline/src/etl/ctx_req.rs index 23873cfdf1..0bfac33dac 100644 --- a/src/pipeline/src/etl/ctx_req.rs +++ b/src/pipeline/src/etl/ctx_req.rs @@ -223,7 +223,7 @@ impl ContextReq { } pub fn all_req(self) -> impl Iterator { - self.req.into_iter().flat_map(|(_, req)| req) + self.req.into_values().flatten() } pub fn ref_all_req(&self) -> impl Iterator { diff --git a/src/pipeline/src/etl/processor/dissect.rs b/src/pipeline/src/etl/processor/dissect.rs index 6694049253..69bdbe0f89 100644 --- a/src/pipeline/src/etl/processor/dissect.rs +++ b/src/pipeline/src/etl/processor/dissect.rs @@ -527,7 +527,7 @@ impl DissectProcessor { }; for (name, mut values) in appends { - values.sort_by(|a, b| a.1.cmp(&b.1)); + values.sort_by_key(|a| a.1); let value = values.into_iter().map(|(a, _)| a).join(sep); map.push((name, VrlValue::Bytes(Bytes::from(value)))); } diff --git a/src/pipeline/src/etl/processor/filter.rs b/src/pipeline/src/etl/processor/filter.rs index a700a8f2d3..d1820ba8ff 100644 --- a/src/pipeline/src/etl/processor/filter.rs +++ b/src/pipeline/src/etl/processor/filter.rs @@ -158,20 +158,18 @@ impl Processor for FilterProcessor { for field in self.fields.iter() { let val = val.as_object_mut().context(ValueMustBeMapSnafu)?; let index = field.input_field(); - match val.get(index) { - Some(VrlValue::Bytes(b)) => { + if let Some(v) = val.get(index) { + if let VrlValue::Bytes(b) = v { if self.match_target(&String::from_utf8_lossy(b)) { return Ok(VrlValue::Null); } - } - Some(v) => { + } else { return ProcessorExpectStringSnafu { processor: self.kind(), v: v.clone(), } .fail(); } - None => {} } } diff --git a/src/promql/src/extension_plan/range_manipulate.rs b/src/promql/src/extension_plan/range_manipulate.rs index 6d57de62c6..ac03ff5e79 100644 --- a/src/promql/src/extension_plan/range_manipulate.rs +++ b/src/promql/src/extension_plan/range_manipulate.rs @@ -753,7 +753,7 @@ impl RangeManipulateStream { if ts <= curr_ts { range_end = range_end.max(cursor); } else { - range_start_index = range_start_index.checked_sub(1usize).unwrap_or_default(); + range_start_index = range_start_index.saturating_sub(1usize); break; } cursor += 1; diff --git a/src/promql/src/extension_plan/series_divide.rs b/src/promql/src/extension_plan/series_divide.rs index 4a0b32f4e3..19385b7a97 100644 --- a/src/promql/src/extension_plan/series_divide.rs +++ b/src/promql/src/extension_plan/series_divide.rs @@ -632,7 +632,7 @@ impl SeriesDivideStream { let tags = TagIdentifier::try_new(batch, &self.tag_indices)?; // check if the first row is the same with last batch's last row - if resumed_batch_index > self.inspect_start.checked_sub(1).unwrap_or_default() { + if resumed_batch_index > self.inspect_start.saturating_sub(1) { let last_batch = &self.buffer[resumed_batch_index - 1]; let last_row = last_batch.num_rows() - 1; let last_tags = TagIdentifier::try_new(last_batch, &self.tag_indices)?; diff --git a/src/promql/src/functions/extrapolate_rate.rs b/src/promql/src/functions/extrapolate_rate.rs index 126a506bc9..8c3ab88776 100644 --- a/src/promql/src/functions/extrapolate_rate.rs +++ b/src/promql/src/functions/extrapolate_rate.rs @@ -96,7 +96,7 @@ impl ExtrapolatedRate() .unwrap() - .value(0) as i64; + .value(0); Ok(Self::new(range_length)) } diff --git a/src/promql/src/functions/quantile.rs b/src/promql/src/functions/quantile.rs index 93fc632d68..35f0c1aa81 100644 --- a/src/promql/src/functions/quantile.rs +++ b/src/promql/src/functions/quantile.rs @@ -216,7 +216,7 @@ fn quantile_with_scratch(values: &[f64], quantile: f64, scratch: &mut Vec) let length = scratch.len(); let rank = quantile * (length - 1) as f64; - let lower_index = 0.max(rank.floor() as usize); + let lower_index = rank.floor() as usize; let upper_index = (length - 1).min(lower_index + 1); let weight = rank - rank.floor(); diff --git a/src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs b/src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs index c660d1e19a..b35b03875e 100644 --- a/src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs +++ b/src/puffin/src/puffin_manager/fs_puffin_manager/reader.rs @@ -262,7 +262,7 @@ where tasks.push(task); } - let size = futures::future::try_join_all(tasks.into_iter()) + let size = futures::future::try_join_all(tasks) .await .into_iter() .flatten() diff --git a/src/query/src/dist_plan/analyzer/utils.rs b/src/query/src/dist_plan/analyzer/utils.rs index e9205e33f4..dd1ad867e5 100644 --- a/src/query/src/dist_plan/analyzer/utils.rs +++ b/src/query/src/dist_plan/analyzer/utils.rs @@ -89,7 +89,7 @@ pub fn patch_batch_timezone( let patched_columns: Vec = expected_schema .fields() .iter() - .zip(columns.into_iter()) + .zip(columns) .map(|(expected_field, column)| { let expected_type = expected_field.data_type(); let actual_type = column.data_type(); diff --git a/src/query/src/optimizer/parallelize_scan.rs b/src/query/src/optimizer/parallelize_scan.rs index 171fc6e919..dd2ba06290 100644 --- a/src/query/src/optimizer/parallelize_scan.rs +++ b/src/query/src/optimizer/parallelize_scan.rs @@ -139,7 +139,7 @@ impl ParallelizeScan { } // Sort ranges by number of rows in descending order. - ranges.sort_by(|a, b| b.num_rows.cmp(&a.num_rows)); + ranges.sort_by_key(|b| std::cmp::Reverse(b.num_rows)); let mut partition_ranges = vec![vec![]; expected_partition_num]; #[derive(Eq, PartialEq)] diff --git a/src/query/src/optimizer/scan_hint.rs b/src/query/src/optimizer/scan_hint.rs index da70813404..89e3afaed0 100644 --- a/src/query/src/optimizer/scan_hint.rs +++ b/src/query/src/optimizer/scan_hint.rs @@ -375,10 +375,10 @@ impl TreeNodeVisitor<'_> for ScanHintVisitor { LogicalPlan::Filter(_) => { self.vector_search.on_filter_exit(); } - LogicalPlan::Subquery(_) | LogicalPlan::SubqueryAlias(_) => { - if is_branching_for_vector(_node) { - self.vector_search.on_branching_exit(); - } + LogicalPlan::Subquery(_) | LogicalPlan::SubqueryAlias(_) + if is_branching_for_vector(_node) => + { + self.vector_search.on_branching_exit(); } _ if _node.inputs().len() > 1 => { self.vector_search.on_branching_exit(); diff --git a/src/query/src/promql/planner.rs b/src/query/src/promql/planner.rs index 23d654d2b6..640994dea2 100644 --- a/src/query/src/promql/planner.rs +++ b/src/query/src/promql/planner.rs @@ -523,8 +523,7 @@ impl PromPlanner { .use_tsid .then_some(DfExpr::Column(Column::from_name( DATA_SCHEMA_TSID_COLUMN_NAME, - ))) - .into_iter(), + ))), ) .chain(Some(self.create_time_index_column_expr()?)); @@ -1313,8 +1312,7 @@ impl PromPlanner { .use_tsid .then_some(DfExpr::Column(Column::new_unqualified( DATA_SCHEMA_TSID_COLUMN_NAME, - ))) - .into_iter(), + ))), ) .chain(Some(self.create_time_index_column_expr()?)) .collect::>(); @@ -1828,15 +1826,10 @@ impl PromPlanner { .iter() .map(|tag| DfExpr::Column(Column::from_name(tag))), ) - .chain( - self.ctx - .use_tsid - .then_some(DfExpr::Column(Column::new( - Some(table_ref.clone()), - DATA_SCHEMA_TSID_COLUMN_NAME.to_string(), - ))) - .into_iter(), - ) + .chain(self.ctx.use_tsid.then_some(DfExpr::Column(Column::new( + Some(table_ref.clone()), + DATA_SCHEMA_TSID_COLUMN_NAME.to_string(), + )))) .chain(Some(DfExpr::Alias(Alias { expr: Box::new(DfExpr::Cast(Cast { expr: Box::new(self.create_time_index_column_expr()?), @@ -1874,8 +1867,7 @@ impl PromPlanner { .use_tsid .then_some(DfExpr::Column(Column::from_name( DATA_SCHEMA_TSID_COLUMN_NAME, - ))) - .into_iter(), + ))), ) .chain(Some(self.create_time_index_column_expr()?)) .collect::>(); diff --git a/src/query/src/sql.rs b/src/query/src/sql.rs index 49e26c92ca..74f8b13fea 100644 --- a/src/query/src/sql.rs +++ b/src/query/src/sql.rs @@ -215,10 +215,10 @@ pub async fn show_databases( fn replace_column_in_expr(expr: &mut sqlparser::ast::Expr, from_column: &str, to_column: &str) { let _ = visit_expressions_mut(expr, |e| { match e { - sqlparser::ast::Expr::Identifier(ident) => { - if ident.value.eq_ignore_ascii_case(from_column) { - ident.value = to_column.to_string(); - } + sqlparser::ast::Expr::Identifier(ident) + if ident.value.eq_ignore_ascii_case(from_column) => + { + ident.value = to_column.to_string(); } sqlparser::ast::Expr::CompoundIdentifier(idents) => { if let Some(last) = idents.last_mut() @@ -748,23 +748,17 @@ pub fn show_variable(stmt: ShowVariables, query_ctx: QueryContextRef) -> Result< .pg_intervalstyle_format(); style.to_string() } - "MAX_EXECUTION_TIME" => { - if query_ctx.channel() == Channel::Mysql { + "MAX_EXECUTION_TIME" + if query_ctx.channel() == Channel::Mysql => { query_ctx.query_timeout_as_millis().to_string() - } else { - return UnsupportedVariableSnafu { name: variable }.fail(); } - } - "STATEMENT_TIMEOUT" => { + "STATEMENT_TIMEOUT" // Add time units to postgres query timeout display. - if query_ctx.channel() == Channel::Postgres { + if query_ctx.channel() == Channel::Postgres => { let mut timeout = query_ctx.query_timeout_as_millis().to_string(); timeout.push_str("ms"); timeout - } else { - return UnsupportedVariableSnafu { name: variable }.fail(); } - } _ => return UnsupportedVariableSnafu { name: variable }.fail(), }; let schema = Arc::new(Schema::new(vec![ColumnSchema::new( diff --git a/src/query/src/window_sort.rs b/src/query/src/window_sort.rs index b667b9c3b0..83feee6f30 100644 --- a/src/query/src/window_sort.rs +++ b/src/query/src/window_sort.rs @@ -1198,7 +1198,7 @@ fn split_overlapping_ranges(ranges: &[PartitionRange]) -> BTreeMap (Option<&str>, Option<&str>) #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_base::secrets::ExposeSecret; diff --git a/src/servers/src/http/header.rs b/src/servers/src/http/header.rs index ce58e15e98..785901ad7b 100644 --- a/src/servers/src/http/header.rs +++ b/src/servers/src/http/header.rs @@ -170,13 +170,11 @@ pub fn collect_plan_metrics(plan: &Arc, maps: &mut [&mut Hash MetricValue::Gauge { name, gauge } => { collect_into_maps(name, gauge.value() as u64, maps); } - MetricValue::Time { name, time } => { - if name.starts_with(GREPTIME_EXEC_PREFIX) { - // override - maps.iter_mut().for_each(|map| { - map.insert(name.to_string(), time.value() as u64); - }); - } + MetricValue::Time { name, time } if name.starts_with(GREPTIME_EXEC_PREFIX) => { + // override + maps.iter_mut().for_each(|map| { + map.insert(name.to_string(), time.value() as u64); + }); } _ => {} }); diff --git a/src/servers/src/http/prometheus.rs b/src/servers/src/http/prometheus.rs index 488a49df99..60ad780beb 100644 --- a/src/servers/src/http/prometheus.rs +++ b/src/servers/src/http/prometheus.rs @@ -1118,17 +1118,17 @@ fn collect_metric_names(expr: &PromqlExpr, metric_names: &mut HashSet) { match expr { PromqlExpr::Aggregate(AggregateExpr { modifier, expr, .. }) => { match modifier { - Some(LabelModifier::Include(labels)) => { - if !labels.labels.contains(&METRIC_NAME.to_string()) { - metric_names.clear(); - return; - } + Some(LabelModifier::Include(labels)) + if !labels.labels.contains(&METRIC_NAME.to_string()) => + { + metric_names.clear(); + return; } - Some(LabelModifier::Exclude(labels)) => { - if labels.labels.contains(&METRIC_NAME.to_string()) { - metric_names.clear(); - return; - } + Some(LabelModifier::Exclude(labels)) + if labels.labels.contains(&METRIC_NAME.to_string()) => + { + metric_names.clear(); + return; } _ => {} } diff --git a/src/servers/src/http/result/prometheus_resp.rs b/src/servers/src/http/result/prometheus_resp.rs index 9ecbe671b4..6f2b115686 100644 --- a/src/servers/src/http/result/prometheus_resp.rs +++ b/src/servers/src/http/result/prometheus_resp.rs @@ -204,10 +204,10 @@ impl PrometheusJsonResponse { for (i, column) in batches.schema().column_schemas().iter().enumerate() { match column.data_type { - ConcreteDataType::Timestamp(datatypes::types::TimestampType::Millisecond(_)) => { - if timestamp_column_index.is_none() { - timestamp_column_index = Some(i); - } + ConcreteDataType::Timestamp(datatypes::types::TimestampType::Millisecond(_)) + if timestamp_column_index.is_none() => + { + timestamp_column_index = Some(i); } // Treat all value types as field ConcreteDataType::Float32(_) @@ -219,10 +219,10 @@ impl PrometheusJsonResponse { | ConcreteDataType::UInt8(_) | ConcreteDataType::UInt16(_) | ConcreteDataType::UInt32(_) - | ConcreteDataType::UInt64(_) => { - if first_field_column_index.is_none() { - first_field_column_index = Some(i); - } + | ConcreteDataType::UInt64(_) + if first_field_column_index.is_none() => + { + first_field_column_index = Some(i); } ConcreteDataType::String(_) => { tag_column_indices.push(i); diff --git a/src/servers/src/lib.rs b/src/servers/src/lib.rs index c44c674b9e..41d73b109f 100644 --- a/src/servers/src/lib.rs +++ b/src/servers/src/lib.rs @@ -12,11 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] #![feature(try_blocks)] #![feature(exclusive_wrapper)] -#![feature(if_let_guard)] -#![feature(box_patterns)] use datafusion_expr::LogicalPlan; use datatypes::schema::Schema; diff --git a/src/servers/src/mysql/handler.rs b/src/servers/src/mysql/handler.rs index dd67012a52..2ce229fea4 100644 --- a/src/servers/src/mysql/handler.rs +++ b/src/servers/src/mysql/handler.rs @@ -674,10 +674,8 @@ fn convert_param_value_to_string(param: &ParamValue) -> String { fn replace_params(params: Vec, query: String) -> String { let mut query = query; - let mut index = 1; - for param in params { + for (index, param) in (1..).zip(params) { query = query.replace(&format_placeholder(index), ¶m); - index += 1; } query } diff --git a/src/servers/tests/mysql/mysql_server_test.rs b/src/servers/tests/mysql/mysql_server_test.rs index 3aa7b98f39..c53ff34d45 100644 --- a/src/servers/tests/mysql/mysql_server_test.rs +++ b/src/servers/tests/mysql/mysql_server_test.rs @@ -514,8 +514,7 @@ async fn test_prepare_all_type( connection: &mut Conn, ) { let mut column_index = 0; - let mut stmt_id = 1; - for schema in column_schemas { + for (stmt_id, schema) in (1..).zip(column_schemas) { let query = format!( "SELECT {} FROM all_datatypes WHERE {} = ?", schema.name, schema.name @@ -523,7 +522,6 @@ async fn test_prepare_all_type( let statement = connection.prep(query).await; let statement = statement.unwrap(); assert_eq!(stmt_id, statement.id()); - stmt_id += 1; let vector_ref = columns.get(column_index).unwrap(); for vector_index in 0..vector_ref.len() { diff --git a/src/sql/src/lib.rs b/src/sql/src/lib.rs index b2b151d439..e8c6bdf8ef 100644 --- a/src/sql/src/lib.rs +++ b/src/sql/src/lib.rs @@ -13,8 +13,6 @@ // limitations under the License. #![feature(box_patterns)] -#![feature(assert_matches)] -#![feature(if_let_guard)] pub mod ast; pub mod dialect; diff --git a/src/sql/src/parsers/alter_parser.rs b/src/sql/src/parsers/alter_parser.rs index df89f90922..e5e1575a20 100644 --- a/src/sql/src/parsers/alter_parser.rs +++ b/src/sql/src/parsers/alter_parser.rs @@ -677,7 +677,7 @@ fn parse_string_option_names(parser: &mut Parser) -> std::result::Result { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::parser::{ParseOptions, ParserContext}; diff --git a/src/sql/src/parsers/copy_parser.rs b/src/sql/src/parsers/copy_parser.rs index d975d884f6..9a2eddcc78 100644 --- a/src/sql/src/parsers/copy_parser.rs +++ b/src/sql/src/parsers/copy_parser.rs @@ -267,7 +267,7 @@ impl ParserContext<'_> { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use sqlparser::ast::{Ident, ObjectName}; diff --git a/src/sql/src/parsers/create_parser.rs b/src/sql/src/parsers/create_parser.rs index d69a1af61d..b83c2032db 100644 --- a/src/sql/src/parsers/create_parser.rs +++ b/src/sql/src/parsers/create_parser.rs @@ -1242,7 +1242,7 @@ fn ensure_partition_columns_defined<'a>( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use std::collections::HashMap; use common_catalog::consts::FILE_ENGINE; diff --git a/src/sql/src/parsers/delete_parser.rs b/src/sql/src/parsers/delete_parser.rs index 3f13d18f97..be1a93b6c6 100644 --- a/src/sql/src/parsers/delete_parser.rs +++ b/src/sql/src/parsers/delete_parser.rs @@ -43,7 +43,7 @@ impl ParserContext<'_> { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use super::*; use crate::dialect::GreptimeDbDialect; diff --git a/src/sql/src/parsers/insert_parser.rs b/src/sql/src/parsers/insert_parser.rs index a7d5f311f6..d121181774 100644 --- a/src/sql/src/parsers/insert_parser.rs +++ b/src/sql/src/parsers/insert_parser.rs @@ -64,7 +64,7 @@ impl ParserContext<'_> { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use super::*; use crate::dialect::GreptimeDbDialect; diff --git a/src/sql/src/parsers/show_parser.rs b/src/sql/src/parsers/show_parser.rs index e2e5fc50ac..d6fc35c675 100644 --- a/src/sql/src/parsers/show_parser.rs +++ b/src/sql/src/parsers/show_parser.rs @@ -599,7 +599,7 @@ impl ParserContext<'_> { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use sqlparser::ast::{Ident, ObjectName}; diff --git a/src/sql/src/statements/alter.rs b/src/sql/src/statements/alter.rs index 5b6a5ab5e6..ab35e5bd34 100644 --- a/src/sql/src/statements/alter.rs +++ b/src/sql/src/statements/alter.rs @@ -390,7 +390,7 @@ impl Display for AlterDatabaseOperation { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::parser::{ParseOptions, ParserContext}; diff --git a/src/sql/src/statements/copy.rs b/src/sql/src/statements/copy.rs index 7aa099c53c..7a59175538 100644 --- a/src/sql/src/statements/copy.rs +++ b/src/sql/src/statements/copy.rs @@ -164,7 +164,7 @@ impl CopyTableArgument { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::parser::{ParseOptions, ParserContext}; diff --git a/src/sql/src/statements/create.rs b/src/sql/src/statements/create.rs index 817b31518d..80eb52c406 100644 --- a/src/sql/src/statements/create.rs +++ b/src/sql/src/statements/create.rs @@ -709,7 +709,7 @@ impl Display for CreateView { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::error::Error; diff --git a/src/sql/src/statements/describe.rs b/src/sql/src/statements/describe.rs index 2a87725dfc..ec48f4be81 100644 --- a/src/sql/src/statements/describe.rs +++ b/src/sql/src/statements/describe.rs @@ -44,7 +44,7 @@ impl Display for DescribeTable { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::parser::{ParseOptions, ParserContext}; diff --git a/src/sql/src/statements/drop.rs b/src/sql/src/statements/drop.rs index 1e97bee25c..26190b48a0 100644 --- a/src/sql/src/statements/drop.rs +++ b/src/sql/src/statements/drop.rs @@ -167,7 +167,7 @@ impl Display for DropView { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::parser::{ParseOptions, ParserContext}; diff --git a/src/sql/src/statements/set_variables.rs b/src/sql/src/statements/set_variables.rs index 748d077d84..4c6eb16692 100644 --- a/src/sql/src/statements/set_variables.rs +++ b/src/sql/src/statements/set_variables.rs @@ -41,7 +41,7 @@ impl Display for SetVariables { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::parser::{ParseOptions, ParserContext}; diff --git a/src/sql/src/statements/show.rs b/src/sql/src/statements/show.rs index 0dfdd1de7d..77880e4a50 100644 --- a/src/sql/src/statements/show.rs +++ b/src/sql/src/statements/show.rs @@ -340,7 +340,7 @@ impl Display for ShowProcessList { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use sqlparser::ast::UnaryOperator; diff --git a/src/sql/src/statements/truncate.rs b/src/sql/src/statements/truncate.rs index b9c299601c..307326d9c7 100644 --- a/src/sql/src/statements/truncate.rs +++ b/src/sql/src/statements/truncate.rs @@ -98,7 +98,7 @@ impl Display for TruncateTable { #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use crate::dialect::GreptimeDbDialect; use crate::parser::{ParseOptions, ParserContext}; diff --git a/src/store-api/src/lib.rs b/src/store-api/src/lib.rs index 4df594fc67..cb39875d74 100644 --- a/src/store-api/src/lib.rs +++ b/src/store-api/src/lib.rs @@ -14,8 +14,6 @@ //! Storage related APIs -#![feature(iterator_try_collect)] - pub mod codec; pub mod data_source; pub mod logstore; diff --git a/src/table/src/lib.rs b/src/table/src/lib.rs index 64e72029b8..abc7dc8300 100644 --- a/src/table/src/lib.rs +++ b/src/table/src/lib.rs @@ -12,7 +12,6 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] #![feature(try_blocks)] pub mod dist_table; diff --git a/src/table/src/metadata.rs b/src/table/src/metadata.rs index ca8bc30aa1..42f66044d9 100644 --- a/src/table/src/metadata.rs +++ b/src/table/src/metadata.rs @@ -1388,7 +1388,7 @@ fn unset_column_skipping_index_options( #[cfg(test)] mod tests { - use std::assert_matches::assert_matches; + use std::assert_matches; use common_error::ext::ErrorExt; use common_error::status_code::StatusCode; diff --git a/tests-integration/Cargo.toml b/tests-integration/Cargo.toml index ec35205a55..bee03ae7fe 100644 --- a/tests-integration/Cargo.toml +++ b/tests-integration/Cargo.toml @@ -3,6 +3,11 @@ name = "tests-integration" version.workspace = true edition.workspace = true license.workspace = true +autotests = false + +[[test]] +name = "main" +path = "tests/main.rs" [features] dashboard = ["servers/dashboard"] diff --git a/tests-integration/src/cluster.rs b/tests-integration/src/cluster.rs index daa2f64919..4a73014dbf 100644 --- a/tests-integration/src/cluster.rs +++ b/tests-integration/src/cluster.rs @@ -127,8 +127,8 @@ impl GreptimeDbCluster { .await .into_iter() .flat_map(|e| { - if e.index_file_path.is_some() { - vec![e.file_path, e.index_file_path.unwrap()] + if let Some(index_file_path) = e.index_file_path { + vec![e.file_path, index_file_path] } else { vec![e.file_path] } diff --git a/tests-integration/src/lib.rs b/tests-integration/src/lib.rs index 5def9351d0..5a4dca146f 100644 --- a/tests-integration/src/lib.rs +++ b/tests-integration/src/lib.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -#![feature(assert_matches)] +#![recursion_limit = "256"] pub mod cluster; mod grpc; diff --git a/tests-integration/src/tests/instance_kafka_wal_test.rs b/tests-integration/src/tests/instance_kafka_wal_test.rs index ed74525aef..57be7e6cd6 100644 --- a/tests-integration/src/tests/instance_kafka_wal_test.rs +++ b/tests-integration/src/tests/instance_kafka_wal_test.rs @@ -12,7 +12,7 @@ // See the License for the specific language governing permissions and // limitations under the License. -use std::assert_matches::assert_matches; +use std::assert_matches; use std::sync::Arc; use std::sync::atomic::{AtomicU64, Ordering}; diff --git a/tests-integration/tests/main.rs b/tests-integration/tests/main.rs index 14cf734291..01aed6c8e9 100644 --- a/tests-integration/tests/main.rs +++ b/tests-integration/tests/main.rs @@ -12,6 +12,8 @@ // See the License for the specific language governing permissions and // limitations under the License. +#![recursion_limit = "256"] + #[macro_use] mod grpc; #[macro_use]