01-01 hello-sql
该示例提供了一个将Sql解析为语法树并返回select 'hello';
中字符串的逻辑
其核心逻辑如下:
pub fn run(&self, sql: &str) -> Result<Vec<String>, Error> {
// parse -- 借用开源的PostgreSqlDialect进行Sql的解析
// 来自 sqlparser-0.13.0 解析为Statement类型
// 返回的是一个list的原因是一个Sql可能包含多条语句
let stmts = parse(sql)?;
let mut outputs = vec![];
// 这里直接对每条Sql的输出进行打印. 没有做跨Sql语句的变量什么的定义
for stmt in stmts {
debug!("execute: {:#?}", stmt);
// 实际的执行函数
let output = execute(&stmt);
// 插入结果列表
outputs.extend(output);
}
Ok(outputs)
}
该项目学习停止了, 由于进行测试后发现, 该项目在较为复杂的谓词下推中存在错误, 其本身节点实现方式存在问题
标签:risinglight,outputs,sql,笔记,let,stmt,Sql,解析,tutorial From: https://www.cnblogs.com/NoobSirPersonalBlog/p/17595082.html