MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
算术表达式 更多...
#include <expression.h>
Public 类型 | |
enum class | Type { ADD , SUB , MUL , DIV , NEGATIVE } |
Public 成员函数 | |
ArithmeticExpr (Type type, Expression *left, Expression *right) | |
ArithmeticExpr (Type type, unique_ptr< Expression > left, unique_ptr< Expression > right) | |
unique_ptr< Expression > | copy () const override |
复制表达式 更多... | |
bool | equal (const Expression &other) const override |
判断两个表达式是否相等 更多... | |
ExprType | type () const override |
表达式的类型 可以根据表达式类型来转换为具体的子类 更多... | |
AttrType | value_type () const override |
表达式值的类型 更多... | |
int | value_length () const override |
表达式值的长度 更多... | |
RC | get_value (const Tuple &tuple, Value &value) const override |
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据 更多... | |
RC | get_column (Chunk &chunk, Column &column) override |
从 chunk 中获取表达式的计算结果 column 更多... | |
RC | try_get_value (Value &value) const override |
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值 更多... | |
Type | arithmetic_type () const |
unique_ptr< Expression > & | left () |
unique_ptr< Expression > & | right () |
![]() | |
virtual unique_ptr< Expression > | copy () const =0 |
复制表达式 更多... | |
virtual bool | equal (const Expression &other) const |
判断两个表达式是否相等 更多... | |
virtual RC | get_value (const Tuple &tuple, Value &value) const =0 |
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据 更多... | |
virtual RC | try_get_value (Value &value) const |
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值 更多... | |
virtual RC | get_column (Chunk &chunk, Column &column) |
从 chunk 中获取表达式的计算结果 column 更多... | |
virtual ExprType | type () const =0 |
表达式的类型 可以根据表达式类型来转换为具体的子类 更多... | |
virtual AttrType | value_type () const =0 |
表达式值的类型 更多... | |
virtual int | value_length () const |
表达式值的长度 更多... | |
virtual const char * | name () const |
表达式的名字,比如是字段名称,或者用户在执行SQL语句时输入的内容 | |
virtual void | set_name (string name) |
virtual int | pos () const |
表达式在下层算子返回的 chunk 中的位置 | |
virtual void | set_pos (int pos) |
virtual RC | eval (Chunk &chunk, vector< uint8_t > &select) |
用于 ComparisonExpr 获得比较结果 select 。 更多... | |
Private 成员函数 | |
RC | calc_value (const Value &left_value, const Value &right_value, Value &value) const |
RC | calc_column (const Column &left_column, const Column &right_column, Column &column) const |
template<bool LEFT_CONSTANT, bool RIGHT_CONSTANT> | |
RC | execute_calc (const Column &left, const Column &right, Column &result, Type type, AttrType attr_type) const |
Private 属性 | |
Type | arithmetic_type_ |
unique_ptr< Expression > | left_ |
unique_ptr< Expression > | right_ |
额外继承的成员函数 | |
![]() | |
int | pos_ = -1 |
表达式在下层算子返回的 chunk 中的位置 更多... | |
算术表达式
|
inlineoverridevirtual |
复制表达式
实现了 Expression.
|
overridevirtual |
判断两个表达式是否相等
重载 Expression .
从 chunk
中获取表达式的计算结果 column
重载 Expression .
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
实现了 Expression.
|
overridevirtual |
|
inlineoverridevirtual |
表达式的类型 可以根据表达式类型来转换为具体的子类
实现了 Expression.
|
inlineoverridevirtual |
表达式值的长度
重载 Expression .
|
overridevirtual |