table_scan_physical_operator.h 1.4 KB
Newer Older
W
wangyunlai.wyl 已提交
1 2 3 4 5 6 7 8 9 10 11
/* Copyright (c) 2021 Xie Meiyi(xiemeiyi@hust.edu.cn) and OceanBase and/or its affiliates. All rights reserved.
miniob is licensed under Mulan PSL v2.
You can use this software according to the terms and conditions of the Mulan PSL v2.
You may obtain a copy of Mulan PSL v2 at:
         http://license.coscl.org.cn/MulanPSL2
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
See the Mulan PSL v2 for more details. */

//
羽飞's avatar
羽飞 已提交
12
// Created by WangYunlai on 2022/6/7.
W
wangyunlai.wyl 已提交
13 14 15 16
//

#pragma once

羽飞's avatar
羽飞 已提交
17
#include "sql/operator/physical_operator.h"
羽飞's avatar
羽飞 已提交
18
#include "storage/record/record_manager.h"
W
wangyunlai.wyl 已提交
19 20 21 22
#include "rc.h"

class Table;

L
Longda Feng 已提交
23
class TableScanPhysicalOperator : public PhysicalOperator {
W
wangyunlai.wyl 已提交
24
public:
L
Longda Feng 已提交
25
  TableScanPhysicalOperator(Table *table) : table_(table)
W
wangyunlai.wyl 已提交
26 27
  {}

羽飞's avatar
羽飞 已提交
28
  virtual ~TableScanPhysicalOperator() = default;
W
wangyunlai.wyl 已提交
29

羽飞's avatar
羽飞 已提交
30
  std::string param() const override;
L
Longda Feng 已提交
31 32 33 34 35 36

  PhysicalOperatorType type() const override
  {
    return PhysicalOperatorType::TABLE_SCAN;
  }

W
wangyunlai.wyl 已提交
37 38 39 40
  RC open() override;
  RC next() override;
  RC close() override;

L
Longda Feng 已提交
41
  Tuple *current_tuple() override;
羽飞's avatar
羽飞 已提交
42

羽飞's avatar
羽飞 已提交
43 44 45 46
  void set_predicates(std::vector<std::unique_ptr<Expression>> &&exprs);

private:
  RC filter(RowTuple &tuple, bool &result);
L
Longda Feng 已提交
47

W
wangyunlai.wyl 已提交
48 49 50 51
private:
  Table *table_ = nullptr;
  RecordFileScanner record_scanner_;
  Record current_record_;
羽飞's avatar
羽飞 已提交
52
  RowTuple tuple_;
羽飞's avatar
羽飞 已提交
53
  std::vector<std::unique_ptr<Expression>> predicates_;
W
wangyunlai.wyl 已提交
54
};