(query: &str)
| 139 | /// Heavily optimized for minimal overhead |
| 140 | #[inline(always)] |
| 141 | pub fn is_fast_path_simple_query(query: &str) -> bool { |
| 142 | // Quick length check |
| 143 | if query.len() < 10 || query.len() > 2000 { |
| 144 | return false; |
| 145 | } |
| 146 | |
| 147 | let query_bytes = query.as_bytes(); |
| 148 | |
| 149 | // Quick check for first character to determine query type |
| 150 | // This avoids expensive string operations for most queries |
| 151 | let first_char = query_bytes[0].to_ascii_uppercase(); |
| 152 | |
| 153 | let (is_dml, _can_have_returning) = match first_char { |
| 154 | b'S' => { |
| 155 | // Check if it's SELECT (no RETURNING possible) |
| 156 | if query_bytes.len() >= 7 { |
| 157 | let prefix = &query_bytes[0..7]; |
| 158 | let is_select = prefix.eq_ignore_ascii_case(b"SELECT "); |
| 159 | (is_select, false) |
| 160 | } else { |
| 161 | (false, false) |
| 162 | } |
| 163 | }, |
| 164 | b'I' => { |
| 165 | // Check if it's INSERT INTO (can have RETURNING) |
| 166 | if query_bytes.len() >= 12 { |
| 167 | let prefix = &query_bytes[0..12]; |
| 168 | let is_insert = prefix.eq_ignore_ascii_case(b"INSERT INTO "); |
| 169 | (is_insert, is_insert) |
| 170 | } else { |
| 171 | (false, false) |
| 172 | } |
| 173 | }, |
| 174 | b'U' => { |
| 175 | // Check if it's UPDATE (can have RETURNING) |
| 176 | if query_bytes.len() >= 7 { |
| 177 | let prefix = &query_bytes[0..7]; |
| 178 | let is_update = prefix.eq_ignore_ascii_case(b"UPDATE "); |
| 179 | (is_update, is_update) |
| 180 | } else { |
| 181 | (false, false) |
| 182 | } |
| 183 | }, |
| 184 | b'D' => { |
| 185 | // Check if it's DELETE FROM (can have RETURNING) |
| 186 | if query_bytes.len() >= 12 { |
| 187 | let prefix = &query_bytes[0..12]; |
| 188 | let is_delete = prefix.eq_ignore_ascii_case(b"DELETE FROM "); |
| 189 | (is_delete, is_delete) |
| 190 | } else { |
| 191 | (false, false) |
| 192 | } |
| 193 | }, |
| 194 | _ => (false, false), |
| 195 | }; |
| 196 | |
| 197 | if !is_dml { |
| 198 | return false; |
no test coverage detected