MCPcopy Create free account
hub / github.com/erans/pgsqlite / rewrite_query_for_decimal

Function rewrite_query_for_decimal

src/session/db_handler.rs:2859–2883  ·  view source on GitHub ↗

Rewrite query to handle DECIMAL types if needed

(query: &str, conn: &rusqlite::Connection)

Source from the content-addressed store, hash-verified

2857
2858/// Rewrite query to handle DECIMAL types if needed
2859pub fn rewrite_query_for_decimal(query: &str, conn: &rusqlite::Connection) -> Result<String, rusqlite::Error> {
2860 use sqlparser::parser::Parser;
2861 use sqlparser::dialect::PostgreSqlDialect;
2862
2863 // Parse the SQL statement (keep JSON path placeholders for now)
2864 let dialect = PostgreSqlDialect {};
2865 let mut statements = Parser::parse_sql(&dialect, query)
2866 .map_err(|e| rusqlite::Error::ToSqlConversionFailure(Box::new(e)))?;
2867
2868 if statements.is_empty() {
2869 return Ok(query.to_string());
2870 }
2871
2872 // Rewrite the first statement for decimal handling
2873 let mut rewriter = crate::rewriter::DecimalQueryRewriter::new(conn);
2874 if let Err(e) = rewriter.rewrite_statement(&mut statements[0]) {
2875 // If rewriting fails, log and return original query
2876 tracing::warn!("Failed to rewrite query for decimal: {}", e);
2877 return Ok(query.to_string());
2878 }
2879
2880 let rewritten = statements[0].to_string();
2881 tracing::debug!("Decimal rewriter output: {}", rewritten);
2882 Ok(rewritten)
2883}
2884
2885#[cfg(test)]
2886mod tests {

Callers

nothing calls this directly

Calls 2

rewrite_statementMethod · 0.80
is_emptyMethod · 0.45

Tested by

no test coverage detected