17#include "sql/operator/group_by_physical_operator.h"
18#include "sql/expr/composite_tuple.h"
35 OpType
get_op_type()
const override {
return OpType::HASHGROUPBY; }
37 RC open(
Trx *trx)
override;
41 Tuple *current_tuple()
override;
44 using AggregatorList = GroupByPhysicalOperator::AggregatorList;
47 using GroupType = tuple<ValueListTuple, GroupValueType>;
53 vector<unique_ptr<Expression>> group_by_exprs_;
60 vector<GroupType>::iterator current_group_;
61 bool first_emited_ =
false;
Group By 物理算子基类
Definition: group_by_physical_operator.h:26
tuple< AggregatorList, CompositeTuple > GroupValueType
聚合出来的一组数据
Definition: group_by_physical_operator.h:42
Group By Hash 方式物理算子
Definition: hash_group_by_physical_operator.h:28
vector< GroupType > groups_
一组一条数据 pair的first是group by 的值列表,second是计算出来的表达式值列表 TODO 改成hash/unordered_map
Definition: hash_group_by_physical_operator.h:58
OpType get_op_type() const override
Definition: hash_group_by_physical_operator.h:35
tuple< ValueListTuple, GroupValueType > GroupType
聚合出来的一组数据
Definition: hash_group_by_physical_operator.h:47
事务接口
Definition: trx.h:141
元组的抽象描述
Definition: tuple.h:66
PhysicalOperatorType
物理算子类型
Definition: physical_operator.h:36