use super::data::Data;
pub enum ColumnIdentifier {
Name(Data),
Index(u32),
Duplicate,
}
impl ColumnIdentifier {
pub fn init(name: Data) -> Result<Self, bun_alloc::AllocError> {
const U32_MAX_DIGITS: usize = "4294967295".len();
let might_be_int = match name.slice().len() {
1..=U32_MAX_DIGITS => true,
0 => return Ok(Self::Name(Data::Empty)),
_ => false,
};
if might_be_int {
if let Ok(int) = bun_core::parse_unsigned::<u64>(name.slice(), 10) {
if int < u32::MAX as u64 {
return Ok(Self::Index(int as u32));
}
}
}
Ok(Self::Name(Data::Owned(name.to_owned()?)))
}
}