use crate::parser::mysql_insert;
use std::hash::{Hash, Hasher};
pub type PkHash = u64;
pub fn hash_pk_values(values: &smallvec::SmallVec<[mysql_insert::PkValue; 2]>) -> PkHash {
let mut hasher = ahash::AHasher::default();
(values.len() as u8).hash(&mut hasher);
for v in values {
match v {
mysql_insert::PkValue::Int(i) => {
0u8.hash(&mut hasher);
i.hash(&mut hasher);
}
mysql_insert::PkValue::BigInt(i) => {
1u8.hash(&mut hasher);
i.hash(&mut hasher);
}
mysql_insert::PkValue::Text(s) => {
2u8.hash(&mut hasher);
s.hash(&mut hasher);
}
mysql_insert::PkValue::Null => {
3u8.hash(&mut hasher);
}
}
}
hasher.finish()
}