risinglight-tutorial 学习笔记

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)
    }

该项目学习停止了, 由于进行测试后发现, 该项目在较为复杂的谓词下推中存在错误, 其本身节点实现方式存在问题

posted @ 2024-02-13 09:47  NoobSir  阅读(5)  评论(0编辑  收藏  举报