(expr: &ast::Expr)
| 125 | } |
| 126 | |
| 127 | pub(super) fn extract_column_name(expr: &ast::Expr) -> Result<String> { |
| 128 | match expr { |
| 129 | ast::Expr::Identifier(ident) => Ok(normalize_ident(ident)), |
| 130 | ast::Expr::CompoundIdentifier(parts) if parts.len() >= 3 => { |
| 131 | let qualified: String = parts |
| 132 | .iter() |
| 133 | .map(normalize_ident) |
| 134 | .collect::<Vec<_>>() |
| 135 | .join("."); |
| 136 | Err(SqlError::Unsupported { |
| 137 | detail: format!( |
| 138 | "schema-qualified column reference '{qualified}': {SCHEMA_QUALIFIED_MSG}" |
| 139 | ), |
| 140 | }) |
| 141 | } |
| 142 | ast::Expr::CompoundIdentifier(parts) => Ok(parts |
| 143 | .iter() |
| 144 | .map(normalize_ident) |
| 145 | .collect::<Vec<_>>() |
| 146 | .join(".")), |
| 147 | _ => Err(SqlError::Unsupported { |
| 148 | detail: format!("expected column name, got: {expr}"), |
| 149 | }), |
| 150 | } |
| 151 | } |
| 152 | |
| 153 | pub fn extract_string_literal(expr: &ast::Expr) -> Result<String> { |
| 154 | match expr { |
no test coverage detected