Skip to content

Commit 935671a

Browse files
committed
Support UNSIGNED TINYINT SMALLINT INT BIGINT
1 parent d83f8bb commit 935671a

File tree

4 files changed

+17
-8
lines changed

4 files changed

+17
-8
lines changed

src/column.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ pub enum DataType {
4545
Inet = xdb_type_t_XDB_TYPE_INET,
4646
#[strum(serialize = "MAC")]
4747
Mac = xdb_type_t_XDB_TYPE_MAC,
48+
#[strum(serialize = "JSON")]
49+
Json = xdb_type_t_XDB_TYPE_JSON,
4850
#[strum(serialize = "ARRAY")]
4951
Array = xdb_type_t_XDB_TYPE_ARRAY,
5052
#[strum(serialize = "MAX")]

src/de.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,8 @@ impl<'de> Deserializer<'de> for ValueDeserializer<'de> {
8585
Value::Null => visitor.visit_none(),
8686
Value::I32(v) => visitor.visit_i32(v),
8787
Value::I64(v) => visitor.visit_i64(v),
88+
Value::U32(v) => visitor.visit_u32(v),
89+
Value::U64(v) => visitor.visit_u64(v),
8890
Value::F32(v) => visitor.visit_f32(v),
8991
Value::F64(v) => visitor.visit_f64(v),
9092
// TODO

src/value.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ pub enum Value<'a> {
88
Null,
99
I32(i32),
1010
I64(i64),
11+
U32(u32),
12+
U64(u64),
1113
F32(f32),
1214
F64(f64),
1315
Timestamp(i64),
@@ -25,6 +27,8 @@ impl Display for Value<'_> {
2527
Value::Null => write!(f, "NULL"),
2628
Value::I32(v) => write!(f, "{}", v),
2729
Value::I64(v) => write!(f, "{}", v),
30+
Value::U32(v) => write!(f, "{}", v),
31+
Value::U64(v) => write!(f, "{}", v),
2832
Value::F32(v) => write!(f, "{}", v),
2933
Value::F64(v) => write!(f, "{}", v),
3034
Value::Timestamp(v) => write!(f, "{}", v),
@@ -49,14 +53,14 @@ impl Value<'_> {
4953
}
5054
match t {
5155
DataType::Null => Self::Null,
52-
DataType::TinyInt => Self::I32(xdb_column_int(res, row, i)),
53-
DataType::SmallInt => Self::I32(xdb_column_int(res, row, i)),
54-
DataType::Int => Self::I32(xdb_column_int(res, row, i)),
56+
DataType::TinyInt | DataType::SmallInt | DataType::Int => {
57+
Self::I32(xdb_column_int(res, row, i))
58+
}
5559
DataType::BigInt => Self::I64(xdb_column_int64(res, row, i)),
56-
DataType::UTinyInt => todo!(),
57-
DataType::USmallInt => todo!(),
58-
DataType::UInt => todo!(),
59-
DataType::UBigInt => todo!(),
60+
DataType::UTinyInt | DataType::USmallInt | DataType::UInt => {
61+
Self::U32(xdb_column_uint(res, row, i))
62+
}
63+
DataType::UBigInt => Self::U64(xdb_column_uint64(res, row, i)),
6064
DataType::Float => Self::F32(xdb_column_float(res, row, i)),
6165
DataType::Double => Self::F64(xdb_column_double(res, row, i)),
6266
DataType::Timestamp => Self::Timestamp(xdb_column_int64(res, row, i)),
@@ -96,6 +100,7 @@ impl Value<'_> {
96100
let address = MacAddress::new(mac.addr);
97101
Self::Mac(address)
98102
}
103+
DataType::Json => todo!(),
99104
DataType::Array => todo!(),
100105
DataType::Max => todo!(),
101106
}

0 commit comments

Comments
 (0)