From fb0003a7f7e69954b1c27d788b3127d76bbfac83 Mon Sep 17 00:00:00 2001 From: BohuTANG Date: Thu, 14 Dec 2023 16:02:15 +0800 Subject: [PATCH] change the string setting range return the value --- src/query/settings/src/settings_default.rs | 18 ++++++++---------- src/query/settings/tests/it/setting.rs | 13 +++++++++++++ 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/query/settings/src/settings_default.rs b/src/query/settings/src/settings_default.rs index 238573bbce9ca..24938b01fab83 100644 --- a/src/query/settings/src/settings_default.rs +++ b/src/query/settings/src/settings_default.rs @@ -66,16 +66,15 @@ impl SettingRange { } /// Checks if a string value is within the string range. - pub fn is_within_string_range(&self, value: &str) -> Result<()> { + pub fn is_within_string_range(&self, value: &str) -> Result { match self { SettingRange::String(values) => { - if values.iter().any(|s| s.eq_ignore_ascii_case(value)) { - Ok(()) - } else { - Err(ErrorCode::BadArguments(format!( + match values.iter().find(|&s| s.eq_ignore_ascii_case(value)) { + Some(s) => Ok(s.to_string()), + None => Err(ErrorCode::BadArguments(format!( "Value {} is not within the allowed values {:?}", value, values - ))) + ))), } } _ => Err(ErrorCode::BadArguments("Expected string range".to_string())), @@ -723,11 +722,10 @@ impl DefaultSettings { } // String range. SettingRange::String(_) => { - // Convert the value to lowercase for case-insensitive comparison - let val_lower = v.to_lowercase(); - range.is_within_string_range(&val_lower)?; + // value is the standard value of the setting. + let value = range.is_within_string_range(&v)?; - Ok((k, UserSettingValue::String(v))) + Ok((k, UserSettingValue::String(value))) } } } diff --git a/src/query/settings/tests/it/setting.rs b/src/query/settings/tests/it/setting.rs index 09f93da735d96..8b89d72097cc2 100644 --- a/src/query/settings/tests/it/setting.rs +++ b/src/query/settings/tests/it/setting.rs @@ -36,11 +36,24 @@ fn test_set_settings() { .set_setting("query_flight_compression".to_string(), "LZ4".to_string()) .unwrap(); + // Ok + settings + .set_setting("query_flight_compression".to_string(), "lz4".to_string()) + .unwrap(); + // Error let result = settings.set_setting("query_flight_compression".to_string(), "xx".to_string()); let expect = "BadArguments. Code: 1006, Text = Value xx is not within the allowed values [\"None\", \"LZ4\", \"ZSTD\"]."; assert_eq!(expect, format!("{}", result.unwrap_err())); } + + // String without range. + { + // Ok + settings + .set_setting("sandbox_tenant".to_string(), "xx".to_string()) + .unwrap(); + } } #[tokio::test(flavor = "multi_thread", worker_threads = 1)]