Skip to content

Commit 06178b2

Browse files
authored
fix(query): ignore ascii case for flight compression setting (#13957)
* fix(query): ignore ascii case for flight compression setting * fix(query): ignore ascii case for flight compression setting * fix(query): ignore ascii case for flight compression setting * fix(query): ignore ascii case for flight compression setting
1 parent 50ece00 commit 06178b2

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

src/query/settings/src/settings_default.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -610,14 +610,23 @@ impl DefaultSettings {
610610
Ok(Self::instance()?.settings.contains_key(key))
611611
}
612612

613-
pub fn convert_value(k: String, v: String) -> Result<(String, Option<UserSettingValue>)> {
613+
pub fn convert_value(k: String, mut v: String) -> Result<(String, Option<UserSettingValue>)> {
614614
let default_settings = DefaultSettings::instance()?;
615615

616616
match default_settings.settings.get(&k) {
617617
None => Ok((k, None)),
618618
Some(setting_value) => {
619619
if let Some(possible_values) = &setting_value.possible_values {
620-
if !possible_values.iter().any(|x| x.eq_ignore_ascii_case(&v)) {
620+
let mut checked_value = false;
621+
622+
for possible_value in possible_values {
623+
if possible_value.eq_ignore_ascii_case(&v) {
624+
checked_value = true;
625+
v = possible_value.to_string();
626+
}
627+
}
628+
629+
if !checked_value {
621630
return Err(ErrorCode::WrongValueForVariable(format!(
622631
"Invalid setting value: {:?} for variable {:?}, possible values: {:?}",
623632
v, k, possible_values

src/query/settings/src/settings_getter_setter.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ impl Settings {
258258
}
259259

260260
pub fn get_sql_dialect(&self) -> Result<Dialect> {
261-
match self.try_get_string("sql_dialect")?.as_str() {
261+
match self.try_get_string("sql_dialect")?.to_lowercase().as_str() {
262262
"hive" => Ok(Dialect::Hive),
263263
"mysql" => Ok(Dialect::MySQL),
264264
"experimental" => Ok(Dialect::Experimental),
@@ -267,7 +267,7 @@ impl Settings {
267267
}
268268

269269
pub fn get_collation(&self) -> Result<&str> {
270-
match self.try_get_string("collation")?.as_str() {
270+
match self.try_get_string("collation")?.to_lowercase().as_str() {
271271
"utf8" => Ok("utf8"),
272272
_ => Ok("binary"),
273273
}
@@ -503,8 +503,12 @@ impl Settings {
503503
}
504504

505505
pub fn get_query_flight_compression(&self) -> Result<Option<FlightCompression>> {
506-
match self.try_get_string("query_flight_compression")?.as_str() {
507-
"None" => Ok(None),
506+
match self
507+
.try_get_string("query_flight_compression")?
508+
.to_uppercase()
509+
.as_str()
510+
{
511+
"NONE" => Ok(None),
508512
"LZ4" => Ok(Some(FlightCompression::Lz4)),
509513
"ZSTD" => Ok(Some(FlightCompression::Zstd)),
510514
_ => unreachable!("check possible_values in set variable"),

tests/sqllogictests/suites/base/06_show/06_0003_show_settings.test

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,19 @@ unset max_memory_usage
7979

8080
statement ok
8181
unset max_threads
82+
83+
statement ok
84+
set query_flight_compression = 'Lz4';
85+
86+
query TT
87+
select value from system.settings where name = 'query_flight_compression'
88+
----
89+
LZ4
90+
91+
statement ok
92+
set query_flight_compression = 'lz4';
93+
94+
query TT
95+
select value from system.settings where name = 'query_flight_compression'
96+
----
97+
LZ4

0 commit comments

Comments
 (0)