/**
 * Update join row sets depending on types of join.
 * When new result tile is buffered, matching status of the
 * rows in the new tile should be tracked.
 * This is called by BufferTile routines, as join row sets
 * should be updated when new result tile is buffered
 */
void AbstractJoinExecutor::UpdateJoinRowSets() {
  PL_ASSERT(join_type_ != JoinType::INVALID);
  switch (join_type_) {
    case JoinType::LEFT:
      UpdateLeftJoinRowSets();
      break;
    case JoinType::RIGHT:
      UpdateRightJoinRowSets();
      break;
    case JoinType::OUTER:
      UpdateFullJoinRowSets();
      break;
    default:
      break;
  }
}
/**
 * Update join row sets depending on types of join.
 * When new result tile is buffered, matching status of the
 * rows in the new tile should be tracked.
 * This is called by BufferTile routines, as join row sets
 * should be updated when new result tile is buffered
 */
void AbstractJoinExecutor::UpdateJoinRowSets() {
  assert(join_type_ != JOIN_TYPE_INVALID);
  switch (join_type_) {
    case JOIN_TYPE_LEFT:
      UpdateLeftJoinRowSets();
      break;
    case JOIN_TYPE_RIGHT:
      UpdateRightJoinRowSets();
      break;
    case JOIN_TYPE_OUTER:
      UpdateFullJoinRowSets();
      break;
    default:
      break;
  }
}