CaltechCS122 笔记:Assignment 2: SQL Translation and Joins
Assignment 2: SQL Translation and Joins
NanoDB 是加州理工大学 Caltech CS122 课程使用的教学数据库系统
task
- Implement a simple query planner that translates a wide range of parsed SQL expressions into query plans that can be executed
- Complete the implementation of a nested-loop join plan-node that supports inner and left-outer joins
- Create some automated tests to ensure that your inner- and outer-join support works correctly
Submit your work along with a design document describing your efforts
DataStuct
General Planner Approach
clause in Select Stmt in a specific order:
- WITH
- FROM
- WHERE
- GROUP BY
- HAVING
- SELECT
- ORDER BY
- LIMIT / OFFSET
在构造 Planner 的类中,makePlan() 方法的结构如下所示:
PlanNode plan = null;
if (FROM-clause is present)
plan = generate_FROM_clause_plan();
if (WHERE-clause is present)
plan = add_WHERE_clause_to(plan);
if (GROUP-BY-clause and/or HAVING-clause is present)
plan = handle_grouping_and_aggregation(plan);
if (ORDER-BY-clause is present)
plan = add_ORDER_BY_clause_to(plan);
// There's always a SELECT clause of some sort!
plan = add_SELECT_clause_to(plan);
Grouping and Aggregation
Nested-Loop Join
for tr in r:
for ts in s:
if pred(tr, ts):
add join(tr, ts) to result
Join Type
- cross join/ tb1, tb2
- inner join
- left join
- right join
- full join
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧