Skip to content

Commit 0a106b3

Browse files
committed
chore(query): add compat tests
1 parent 0ab42d6 commit 0a106b3

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

src/meta/types/src/user_setting.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,9 @@ use core::fmt;
1717
use common_exception::ErrorCode;
1818
use common_exception::Result;
1919
use serde::Deserialize;
20+
use serde::Deserializer;
2021
use serde::Serialize;
22+
use serde::Serializer;
2123

2224
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
2325
pub struct UserSetting {
@@ -30,9 +32,24 @@ pub struct UserSetting {
3032
#[derive(Serialize, Deserialize, Clone, PartialEq, Eq)]
3133
pub enum UserSettingValue {
3234
UInt64(u64),
35+
36+
// TO BE COMPATIBLE WITH old version: `String<Vec<u8>>`
37+
#[serde(deserialize_with = "deser_str_from_vu8")]
38+
#[serde(serialize_with = "str_vu8")]
3339
String(String),
3440
}
3541

42+
fn deser_str_from_vu8<'de, D>(deserializer: D) -> std::result::Result<String, D::Error>
43+
where D: Deserializer<'de> {
44+
let s: Vec<u8> = Deserialize::deserialize(deserializer)?;
45+
Ok(String::from_utf8(s).unwrap())
46+
}
47+
48+
fn str_vu8<S>(data: &String, s: S) -> std::result::Result<S::Ok, S::Error>
49+
where S: Serializer {
50+
s.serialize_bytes(data.as_bytes())
51+
}
52+
3653
impl UserSettingValue {
3754
pub fn as_u64(&self) -> Result<u64> {
3855
match self {

tests/fuse-compat/compat-logictest/fuse_compat_write

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
statement ok
2+
set global sql_dialect = 'PostgreSQL';
3+
14
statement ok
25
DROP TABLE IF EXISTS fuse_compat_table;
36

0 commit comments

Comments
 (0)