18#include "sql/operator/physical_operator.h"
33 template <
typename InputIt>
34 void append(InputIt begin, InputIt end)
36 strings_.emplace_back(begin, end);
39 void append(std::initializer_list<std::string> init)
41 strings_.emplace_back(init);
45 void append(
const T &v)
47 strings_.emplace_back(1, v);
52 return PhysicalOperatorType::STRING_LIST;
55 RC open(
Trx *)
override
64 iterator_ = strings_.begin();
65 }
else if (iterator_ != strings_.end()) {
68 return iterator_ == strings_.end() ? RC::RECORD_EOF : RC::SUCCESS;
71 virtual RC close()
override
73 iterator_ = strings_.end();
77 virtual Tuple *current_tuple()
override
79 if (iterator_ == strings_.end()) {
83 const StringList &string_list = *iterator_;
84 std::vector<Value> cells;
85 for (
const std::string &s : string_list) {
88 value.set_string(s.c_str());
89 cells.push_back(value);
91 tuple_.set_cells(cells);
96 using StringList = std::vector<std::string>;
97 using StringListList = std::vector<StringList>;
98 StringListList strings_;
99 StringListList::iterator iterator_;
100 bool started_ =
false;
与LogicalOperator对应,物理算子描述执行计划将如何执行
Definition: physical_operator.h:57
字符串列表物理算子
Definition: string_list_physical_operator.h:26
事务接口
Definition: trx.h:142
元组的抽象描述
Definition: tuple.h:84
一些常量值组成的Tuple
Definition: tuple.h:340
属性的值
Definition: value.h:40
PhysicalOperatorType
物理算子类型
Definition: physical_operator.h:39