MCPcopy Create free account
hub / github.com/NodeDB-Lab/nodedb / eval_sql_expr

Function eval_sql_expr

nodedb/src/data/executor/handlers/recursive_value.rs:178–199  ·  view source on GitHub ↗

Evaluate a single SQL expression string with an optional row context.

(
    sql_text: &str,
    ctx: &HashMap<String, nodedb_types::Value>,
)

Source from the content-addressed store, hash-verified

176
177/// Evaluate a single SQL expression string with an optional row context.
178fn eval_sql_expr(
179 sql_text: &str,
180 ctx: &HashMap<String, nodedb_types::Value>,
181) -> Option<nodedb_types::Value> {
182 let dialect = sqlparser::dialect::PostgreSqlDialect {};
183 let full_sql = format!("SELECT {sql_text}");
184 let stmts = sqlparser::parser::Parser::parse_sql(&dialect, &full_sql).ok()?;
185 let stmt = stmts.into_iter().next()?;
186
187 if let sqlparser::ast::Statement::Query(query) = stmt
188 && let sqlparser::ast::SetExpr::Select(select) = &*query.body
189 && let Some(item) = select.projection.first()
190 {
191 let expr = match item {
192 sqlparser::ast::SelectItem::UnnamedExpr(e) => e,
193 sqlparser::ast::SelectItem::ExprWithAlias { expr: e, .. } => e,
194 _ => return None,
195 };
196 return eval_ast_expr(expr, ctx);
197 }
198 None
199}
200
201/// Evaluate a WHERE condition expression; returns `None` on failure (treated as false).
202fn eval_condition(sql_text: &str, ctx: &HashMap<String, nodedb_types::Value>) -> Option<bool> {

Callers 2

eval_row_exprsFunction · 0.85
eval_conditionFunction · 0.85

Calls 5

eval_ast_exprFunction · 0.85
firstMethod · 0.80
parse_sqlFunction · 0.50
okMethod · 0.45
nextMethod · 0.45

Tested by

no test coverage detected