源码简要分析
分析于2024.8.2
国内git recursive拖不下来,只能手动下载下来自己组装 (使用Docker更省事😋教程在第二章)
vendored: 提供PG解析器,md5,xxhash相关组件
tools:杂项,包括了Docker构建的过程,Python Package构建,MLIR基础设施,便于调试的Source Map,mlir-tools
建议先从mlir-tools看起,SQL->MLIR有意思,这里先贴一段,有空闲时问下大模型
解释下面C++代码
test: 对于Dialect实现的lit(LLVM Integrated Tester)的mlir与sqlite的数据输入
resources:SQL数据与Apache Arrow的相关数据
llvm-project: 关于LLVM的Submodule
**TUM居然自己修改了一版LLVM!!!**确实是研究型数据库🥵(看commit时间应该介于LLVM17-LLVM18之间)
lib: 项目实现的静态文件
Conversion实现论文的层级流转
include:项目的库文件
utility下面是Tracer的相关实现文件
fronetend下面有SQL解析的头文件
execution涉及SQL运行细节(使用Arrow Compute实现,并用Intel的OneAPI进行加速?)
runtime有很多细节实现
runtime/Catalog.h涉及文件读取
runtime/Realtion.h涉及文件关系,Arrow读取则依赖PyArrow的库
让我惊讶的是:.venv/lib/python3.10/site-packages
下面的库也被调用了!(即PyArrow包装的C++库)
eval有相关操作的实现
parser.cpp
非常经典的Parser,使用Enum量构建AST树
Docker镜像运行
编译环境是不可能折腾的!
有Docker的话当然用Docker🤣
编译好的文件默认在build/lingodb-release
貌似跑了TCP-DS?
有一个Lingodbllvm在Python环境里面,所以LingoProject下面是空的
修改下官网给的测试(Data部分需要从外部拷入)
修改后的shell:
制作Debug版本
内存建议大于8GB,编译中出现的任何错误一律按内存不够大处理(问就是试过了)😅
你也可以使用我打包好的的Docker Image:
docker pull ccr.ccs.tencentyun.com/mocusz/lingo-debug
编译完后,安装GDB
配置VScode的Launch.json
文件(供参考,有需要的自己添加,主要是arg
和cwd
)
效果如图: