in arrow-csv/src/reader/mod.rs [214:229]
fn update(&mut self, string: &str) {
self.packed |= if string.starts_with('"') {
1 << 8 // Utf8
} else if let Some(m) = REGEX_SET.matches(string).into_iter().next() {
if m == 1 && string.len() >= 19 && string.parse::<i64>().is_err() {
// if overflow i64, fallback to utf8
1 << 8
} else {
1 << m
}
} else if string == "NaN" || string == "nan" || string == "inf" || string == "-inf" {
1 << 2 // Float64
} else {
1 << 8 // Utf8
}
}