sanitize string for ast::Literal

This commit is contained in:
pedrocarlo
2025-06-03 14:52:35 -03:00
parent 6bb10d4d45
commit acb8a47911
2 changed files with 8 additions and 1 deletions

View File

@@ -369,6 +369,12 @@ impl Display for ast::LikeOperator {
}
}
/// Sanitaizes a string literal by removing single quote at front and back
/// and escaping double single quotes
pub fn sanitize_string(input: &str) -> String {
input[1..input.len() - 1].replace("''", "'").to_string()
}
impl Display for ast::Literal {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
@@ -382,7 +388,7 @@ impl Display for ast::Literal {
Self::Keyword(keyword) => keyword.clone(),
Self::Null => "NULL".to_string(),
Self::Numeric(num) => num.clone(),
Self::String(s) => s.clone(),
Self::String(s) => format!("'{}'", sanitize_string(s)),
}
)
}

View File

@@ -77,6 +77,7 @@ impl ToSqlString for ast::OneSelect {
impl ToSqlString for ast::SelectInner {
fn to_sql_string<C: ToSqlContext>(&self, context: &C) -> String {
dbg!(&self);
let mut ret = Vec::with_capacity(2 + self.columns.len());
ret.push("SELECT".to_string());
if let Some(distinct) = self.distinctness {