Skip to content

Commit e986fe6

Browse files
committed
Fix whereami bug
1 parent 163fc2f commit e986fe6

File tree

3 files changed

+23
-33
lines changed

3 files changed

+23
-33
lines changed

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
All changes in this project will be noted in this file.
44

5+
## 0.7.5
6+
7+
- Fixes:
8+
- Fixed bug with `whereami` action response
9+
- Maintenance:
10+
- Upgraded deps
11+
512
## 0.7.4
613

714
- Additions:

Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,19 @@ dbg = []
3131

3232
[dependencies]
3333
bytes = { version = "1.4.0", optional = true }
34-
openssl = { version = "0.10.45", optional = true }
35-
tokio = { version = "1.26.0", features = [
34+
openssl = { version = "0.10.52", optional = true }
35+
tokio = { version = "1.28.1", features = [
3636
"net",
3737
"io-util",
3838
"io-std",
3939
], optional = true, default-features = false }
4040
tokio-openssl = { version = "0.6.3", optional = true }
4141
r2d2 = { version = "0.8.10", optional = true }
4242
bb8 = { version = "0.8.0", optional = true }
43-
async-trait = { version = "0.1.65", optional = true }
43+
async-trait = { version = "0.1.68", optional = true }
4444

4545
[dev-dependencies]
46-
tokio = { version = "1.26.0", features = [
46+
tokio = { version = "1.28.1", features = [
4747
"test-util",
4848
"macros",
4949
], default-features = false }

src/ddl.rs

Lines changed: 12 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -34,13 +34,11 @@
3434
//! ```
3535
//!
3636
37-
use crate::error::{errorstring, SkyhashError};
38-
use crate::types::{Array, FlatElement};
39-
use crate::Element;
40-
use crate::IntoSkyhashBytes;
41-
use crate::Query;
42-
use crate::RespCode;
43-
use crate::SkyResult;
37+
use crate::{
38+
error::{errorstring, SkyhashError},
39+
types::Array,
40+
Element, IntoSkyhashBytes, Query, RespCode, SkyResult,
41+
};
4442

4543
cfg_async! {
4644
use crate::AsyncResult;
@@ -64,6 +62,7 @@ pub enum KeymapType {
6462
}
6563

6664
/// A convenient representation for the `whereami` action
65+
#[derive(Debug, PartialEq)]
6766
pub enum WhereAmI {
6867
/// The ID of the keyspace
6968
Keyspace(String),
@@ -283,29 +282,13 @@ implement_ddl! {
283282
{
284283
Query::from("whereami")
285284
}
286-
Element::Array(
287-
Array::Flat(mut frr)
288-
) => {
289-
if frr.iter().all(|v| matches!(v, FlatElement::String(_))) {
290-
return Err(SkyhashError::InvalidResponse.into());
291-
}
292-
match frr.len() {
293-
1 => WhereAmI::Keyspace(match frr.swap_remove(0) {
294-
FlatElement::String(st) => st,
295-
_ => unsafe {
296-
core::hint::unreachable_unchecked()
297-
}
298-
}),
299-
2 => {
300-
let (ks, tbl) = match (frr.swap_remove(0), frr.swap_remove(1)) {
301-
(FlatElement::String(ks),FlatElement::String(tbl)) => (ks, tbl),
302-
_ => unsafe {
303-
core::hint::unreachable_unchecked()
304-
}
305-
};
306-
WhereAmI::Table(ks, tbl)
285+
Element::Array(Array::NonNullStr(mut a)) => {
286+
unsafe {
287+
match a.len() {
288+
1 => WhereAmI::Keyspace(a.pop().unwrap_unchecked()),
289+
2 => WhereAmI::Table(a.pop().unwrap_unchecked(), a.pop().unwrap_unchecked()),
290+
_ => return Err(SkyhashError::ParseError.into()),
307291
}
308-
_ => return Err(SkyhashError::InvalidResponse.into()),
309292
}
310293
}
311294
}

0 commit comments

Comments
 (0)