THSS-DB / TDB

Educational Database Management System for Software School of Tsinghua University
Mulan Permissive Software License, Version 2
13 stars 17 forks source link

One of my doubts about join_tuple.h #15

Closed xiaoxu03 closed 4 months ago

xiaoxu03 commented 4 months ago

关于JoinedTuple::cell_at方法实现的一个疑问

在现在主分支上实现的方法是如下:

RC cell_at(int index, Value &value) const override {
    const int left_cell_num = left_->cell_num();
    if (index > 0 && index < left_cell_num) {
      return left_->cell_at(index, value);
    }

    if (index >= left_cell_num && index < left_cell_num + right_->cell_num()) {
      return right_->cell_at(index - left_cell_num, value);
    }

    return RC::NOTFOUND;
  }

第一种情况下的">"是否应该改为">="?不然如果查询的是该Record的第一个Field的话,岂不是无法获取?

hotwords123 commented 4 months ago

感觉确实有问题,不过现有代码里调用 cell_at 的只有 execution_engine.cppsend_result 函数,以及 update_physical_operator.cppnext 方法。前者因为查询时最外层一定是 ProjectTuple,实际上不会调用;后者在执行 UPDATE 语句时用不到 JoinTuple,也执行不到。所以目前看来就是有 bug,但是因为这段代码不会执行所以表现不出来。

ycycse commented 4 months ago

感谢发现!已经有同学提了修复PR #16