| 93 | } |
| 94 | |
| 95 | fn parse_set_audit_dml(parts: &[&str]) -> Result<AlterDatabaseOperation, SqlError> { |
| 96 | let eq = parts.get(5).copied().unwrap_or(""); |
| 97 | if eq != "=" { |
| 98 | return Err(SqlError::Parse { |
| 99 | detail: format!("ALTER DATABASE SET AUDIT_DML requires '=', got '{eq}'"), |
| 100 | }); |
| 101 | } |
| 102 | let raw = parts.get(6).copied().ok_or_else(|| SqlError::Parse { |
| 103 | detail: "ALTER DATABASE SET AUDIT_DML requires a value (NONE, WRITES, ALL)".into(), |
| 104 | })?; |
| 105 | let mode = raw |
| 106 | .trim_matches('\'') |
| 107 | .trim_matches('"') |
| 108 | .parse::<AuditDmlMode>() |
| 109 | .map_err(|e| SqlError::Parse { |
| 110 | detail: format!("ALTER DATABASE SET AUDIT_DML: {e}"), |
| 111 | })?; |
| 112 | Ok(AlterDatabaseOperation::SetAuditDml(mode)) |
| 113 | } |
| 114 | |
| 115 | fn parse_set_idle_timeout(parts: &[&str]) -> Result<AlterDatabaseOperation, SqlError> { |
| 116 | let eq = parts.get(5).copied().unwrap_or(""); |