21#include "storage/field/field.h" 
   22#include "sql/parser/value.h" 
   23#include "common/log/log.h" 
   76    return RC::UNIMPLENMENT;
 
   94  virtual std::string 
name()
 const { 
return name_; }
 
   95  virtual void set_name(std::string 
name) { name_ = 
name; }
 
  117  AttrType 
value_type()
 const override { 
return field_.attr_type(); }
 
  119  Field &field() { 
return field_; }
 
  121  const Field &field()
 const { 
return field_; }
 
  123  const char *table_name()
 const { 
return field_.table_name(); }
 
  125  const char *field_name()
 const { 
return field_.field_name(); }
 
  151  AttrType 
value_type()
 const override { 
return value_.attr_type(); }
 
  153  void get_value(
Value &value)
 const { value = value_; }
 
  155  const Value &get_value()
 const { 
return value_; }
 
  168  CastExpr(std::unique_ptr<Expression> child, AttrType cast_type);
 
  173    return ExprType::CAST;
 
  181  std::unique_ptr<Expression> &child() { 
return child_; }
 
  184  RC cast(
const Value &value, 
Value &cast_value) 
const;
 
  198  ComparisonExpr(
CompOp comp, std::unique_ptr<Expression> left, std::unique_ptr<Expression> right);
 
  207  CompOp comp()
 const { 
return comp_; }
 
  209  std::unique_ptr<Expression> &left()  { 
return left_;  }
 
  210  std::unique_ptr<Expression> &right() { 
return right_; }
 
  226  std::unique_ptr<Expression> left_;
 
  227  std::unique_ptr<Expression> right_;
 
  254  Type conjunction_type()
 const { 
return conjunction_type_; }
 
  256  std::vector<std::unique_ptr<Expression>> &children() { 
return children_; }
 
  259  Type conjunction_type_;
 
  260  std::vector<std::unique_ptr<Expression>> children_;
 
  280  ArithmeticExpr(Type 
type, std::unique_ptr<Expression> left, std::unique_ptr<Expression> right);
 
  290  Type arithmetic_type()
 const { 
return arithmetic_type_; }
 
  292  std::unique_ptr<Expression> &left() { 
return left_; }
 
  293  std::unique_ptr<Expression> &right() { 
return right_; }
 
  296  RC calc_value(
const Value &left_value, 
const Value &right_value, 
Value &value) 
const;
 
  299  Type arithmetic_type_;
 
  300  std::unique_ptr<Expression> left_;
 
  301  std::unique_ptr<Expression> right_;
 
算术表达式
Definition: expression.h:268
RC get_value(const Tuple &tuple, Value &value) const override
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
Definition: expression.cpp:288
RC try_get_value(Value &value) const override
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值
Definition: expression.cpp:308
ExprType type() const override
表达式的类型 可以根据表达式类型来转换为具体的子类
Definition: expression.h:283
AttrType value_type() const override
表达式值的类型
Definition: expression.cpp:208
类型转换表达式
Definition: expression.h:166
ExprType type() const override
表达式的类型 可以根据表达式类型来转换为具体的子类
Definition: expression.h:171
AttrType value_type() const override
表达式值的类型
Definition: expression.h:179
AttrType cast_type_
想要转换成这个类型
Definition: expression.h:188
RC try_get_value(Value &value) const override
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值
Definition: expression.cpp:70
std::unique_ptr< Expression > child_
从这个表达式转换
Definition: expression.h:187
RC get_value(const Tuple &tuple, Value &value) const override
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
Definition: expression.cpp:60
比较表达式
Definition: expression.h:196
RC get_value(const Tuple &tuple, Value &value) const override
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
Definition: expression.cpp:143
AttrType value_type() const override
表达式值的类型
Definition: expression.h:205
ExprType type() const override
表达式的类型 可以根据表达式类型来转换为具体的子类
Definition: expression.h:201
RC compare_value(const Value &left, const Value &right, bool &value) const
Definition: expression.cpp:89
RC try_get_value(Value &value) const override
Definition: expression.cpp:122
联结表达式多个表达式使用同一种关系(AND或OR)来联结 当前miniob仅有AND操作
Definition: expression.h:237
RC get_value(const Tuple &tuple, Value &value) const override
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
Definition: expression.cpp:172
AttrType value_type() const override
表达式值的类型
Definition: expression.h:250
ExprType type() const override
表达式的类型 可以根据表达式类型来转换为具体的子类
Definition: expression.h:248
表达式的抽象描述
Definition: expression.h:60
virtual AttrType value_type() const =0
表达式值的类型
virtual std::string name() const
表达式的名字,比如是字段名称,或者用户在执行SQL语句时输入的内容
Definition: expression.h:94
virtual RC get_value(const Tuple &tuple, Value &value) const =0
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
virtual ExprType type() const =0
表达式的类型 可以根据表达式类型来转换为具体的子类
virtual RC try_get_value(Value &value) const
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值
Definition: expression.h:74
字段表达式
Definition: expression.h:106
RC get_value(const Tuple &tuple, Value &value) const override
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
Definition: expression.cpp:20
ExprType type() const override
表达式的类型 可以根据表达式类型来转换为具体的子类
Definition: expression.h:116
AttrType value_type() const override
表达式值的类型
Definition: expression.h:117
元组的抽象描述
Definition: tuple.h:84
常量值表达式
Definition: expression.h:138
AttrType value_type() const override
表达式值的类型
Definition: expression.h:151
ExprType type() const override
表达式的类型 可以根据表达式类型来转换为具体的子类
Definition: expression.h:149
RC get_value(const Tuple &tuple, Value &value) const override
根据具体的tuple,来计算当前表达式的值。tuple有可能是一个具体某个表的行数据
Definition: expression.cpp:25
RC try_get_value(Value &value) const override
在没有实际运行的情况下,也就是无法获取tuple的情况下,尝试获取表达式的值
Definition: expression.h:147
属性的值
Definition: value.h:40
ExprType
表达式类型
Definition: expression.h:37
@ FIELD
字段。在实际执行时,根据行数据内容提取对应字段的值
@ CONJUNCTION
多个表达式使用同一种关系(AND或OR)来联结
CompOp
描述比较运算符
Definition: parse_defs.h:48