MiniOB 1
MiniOB is one mini database, helping developers to learn how database works.
|
表达式的抽象描述 更多...
#include <expression.h>
Public 成员函数 | |
virtual RC | get_value (const Tuple &tuple, Value &value) const =0 |
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据 更多... | |
virtual RC | try_get_value (Value &value) const |
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值 更多... | |
virtual ExprType | type () const =0 |
表达式的类型 可以根据表达式类型来转换为具体的子类 更多... | |
virtual AttrType | value_type () const =0 |
表达式值的类型 更多... | |
virtual std::string | name () const |
表达式的名字,比如是字段名称,或者用户在执行SQL语句时输入的内容 | |
virtual void | set_name (std::string name) |
Private 属性 | |
std::string | name_ |
表达式的抽象描述
在SQL的元素中,任何需要得出值的元素都可以使用表达式来描述 比如获取某个字段的值、比较运算、类型转换 当然还有一些当前没有实现的表达式,比如算术运算。
通常表达式的值,是在真实的算子运算过程中,拿到具体的tuple后 才能计算出来真实的值。但是有些表达式可能就表示某一个固定的 值,比如ValueExpr。
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
在 FieldExpr, ValueExpr, CastExpr, ComparisonExpr, ConjunctionExpr , 以及 ArithmeticExpr 内被实现.
|
inlinevirtual |
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值
有些表达式的值是固定的,比如ValueExpr,这种情况下可以直接获取值
被 ValueExpr, CastExpr, ComparisonExpr , 以及 ArithmeticExpr 重载.
|
pure virtual |
表达式的类型 可以根据表达式类型来转换为具体的子类
在 FieldExpr, ValueExpr, CastExpr, ComparisonExpr, ConjunctionExpr , 以及 ArithmeticExpr 内被实现.
|
pure virtual |
表达式值的类型
一个表达式运算出结果后,只有一个值
在 FieldExpr, ValueExpr, CastExpr, ComparisonExpr, ConjunctionExpr , 以及 ArithmeticExpr 内被实现.