Parse function arguments from `SELECT FUNC_NAME(arg1, arg2, ...)`. Handles quoted strings with commas inside them.
(sql: &str, _func_name: &str)
| 202 | /// |
| 203 | /// Handles quoted strings with commas inside them. |
| 204 | pub(super) fn parse_function_args(sql: &str, _func_name: &str) -> PgWireResult<Vec<String>> { |
| 205 | let start = sql |
| 206 | .find('(') |
| 207 | .ok_or_else(|| sqlstate_error("42601", "expected '(' in function call"))?; |
| 208 | let end = sql |
| 209 | .rfind(')') |
| 210 | .ok_or_else(|| sqlstate_error("42601", "expected ')' in function call"))?; |
| 211 | if start >= end { |
| 212 | return Ok(Vec::new()); |
| 213 | } |
| 214 | |
| 215 | let inner = &sql[start + 1..end]; |
| 216 | Ok(split_args(inner)) |
| 217 | } |
| 218 | |
| 219 | /// Split comma-separated arguments, respecting single-quoted strings. |
| 220 | /// |
no test coverage detected