把p3对应的说明看了,但还是一头雾水,要看懂一个算子是怎么运行的,首先得看以下几个类的源码(按照顺序) 相关类 schema: 表示一行信息的结构,由若干个coloum组成 Tuple: 存储每一条记录,需要一个对应的sechma表示这个tuple的结构,内部成员有RID(每个tuple的标识符,包括存储在哪个页面以及在页面上对应的slot编号) ...
Aggregation & Join Executors 实现 AggregationExecutor 的实现# AggregationExecutor的实现需要关注AggregationExecutor.h和AggregationPlanNode, 以理解其支持的 SQL 语句及其执行方式.在 BUSTUB 中,AggregationExecutor支持以下类型的 SQL 语句: Copy EXPLAINSELECTcolA,MIN(colB)FROM__mock_table_1GROUPBYcolA; EXPLAINSELECT...
认真阅读实验指导说明的ROAD MAP 官方B+树可视化:https://15445.courses.cs.cmu.edu/fall2022/bpt-printer/ 简要了解设计模式里的组合模式设计(源代码框架就采用了这样的设计) 调试工具GDB,并发调试工具perf 推荐参考: p3:本项目最大的亮点,2022年在迟先生的加持下,实现了整个SQL层。这个project有非常有趣和烧脑...
add_custom_target(check-clang-tidy-p3 ${BUSTUB_BUILD_SUPPORT_DIR}/run_clang_tidy.py # run LLVM's clang-tidy script -clang-tidy-binary ${CLANG_TIDY_BIN} # using our clang-tidy binary -p ${CMAKE_BINARY_DIR} # using cmake's generated compile commands ${P3_FILES} ) add_custom_target...
Having Conquered the Loftiest Peak, We Stand But a Step Away from Victory in This Stage. With unwavering determination, we press onward, for destiny favors those brave enough to forge ahead, cutting through the thorns and overcoming every obstacle that d
查找key = 3 , 在root page P8 找找到第一个大于3的 key 5,然后在它的前一个节点 value0 的子树中查找,定位到P3,再到P2等等。 总结一下 find_leaf_page 的伪代码 find_leaf_page(key v) -> page p if(empty()) return nullptr page P = rootpage ...
2023-04-20· 浙江 回复喜欢 进击的大羊驼 大佬,修改 child 的 parent_page_id 无需对 child 加锁,可否这样理解?其实internal page 会发生 borrow/merge 本质上是 Delete 操作先一路向下到 child (持有child 的写锁),child 删除 kv 后发生 merge 导致父结点要删除被合并 page 位置的 kv,然后再向...
难度p4>p3>p2>p1>p0 环境配置 我的环境是vm虚拟机下装的ubuntu22.04,然后用vscode的ssh插件连接到虚拟机,git clone之后按照p0配置完插件之后没有遇到什么困难,debug用的是cmake tools插件提供的debug without a launch.json,debug方法参考cmake tools的READMEhttps://github.com/microsoft/vscode-cmake-tools.git...
https://15445.courses.cs.cmu.edu/fall2022/slides/06-bufferpool.pdf Extendible Hash Table 这应该算是P1中最难的部分了,建议coding之前,先用笔和纸模拟几次插入的过程,会对后续的实现很有帮助。某些值的插入过程会使得整个数据结构非常地tricky,需要额外注意。