13#include "common/lang/array.h"
14#include "common/lang/memory.h"
15#include "common/lang/string.h"
16#include "common/sys/rc.h"
17#include "common/type/attr_type.h"
32 explicit DataType(AttrType attr_type) : attr_type_(attr_type) {}
36 inline static DataType *type_instance(AttrType attr_type)
38 return type_instances_.at(
static_cast<int>(attr_type)).get();
41 inline AttrType get_attr_type()
const {
return attr_type_; }
52 virtual int compare(
const Column &left,
const Column &right,
int left_idx,
int right_idx)
const {
return INT32_MAX; }
57 virtual RC
add(
const Value &left,
const Value &right,
Value &result)
const {
return RC::UNSUPPORTED; }
82 virtual RC
cast_to(
const Value &val, AttrType type,
Value &result)
const {
return RC::UNSUPPORTED; }
87 virtual RC
to_string(
const Value &val,
string &result)
const {
return RC::UNSUPPORTED; }
94 if (type == attr_type_) {
100 virtual RC set_value_from_str(
Value &val,
const string &data)
const {
return RC::UNSUPPORTED; }
105 static array<unique_ptr<DataType>,
static_cast<int>(AttrType::MAXTYPE)> type_instances_;
A column contains multiple values in contiguous memory with a specified type.
Definition: column.h:23
Definition: data_type.h:30
virtual RC to_string(const Value &val, string &result) const
将 val 转换为 string,并将结果保存到 result 中
Definition: data_type.h:87
virtual RC divide(const Value &left, const Value &right, Value &result) const
计算 left / right,并将结果保存到 result 中
Definition: data_type.h:72
virtual RC cast_to(const Value &val, AttrType type, Value &result) const
将 val 转换为 type 类型,并将结果保存到 result 中
Definition: data_type.h:82
virtual RC subtract(const Value &left, const Value &right, Value &result) const
计算 left - right,并将结果保存到 result 中
Definition: data_type.h:62
virtual int compare(const Value &left, const Value &right) const
Definition: data_type.h:50
virtual RC multiply(const Value &left, const Value &right, Value &result) const
计算 left * right,并将结果保存到 result 中
Definition: data_type.h:67
virtual RC add(const Value &left, const Value &right, Value &result) const
计算 left + right,并将结果保存到 result 中
Definition: data_type.h:57
virtual RC negative(const Value &val, Value &result) const
计算 -val,并将结果保存到 result 中
Definition: data_type.h:77
virtual int cast_cost(AttrType type)
计算从 type 到 attr_type 的隐式转换的 cost,如果无法转换,返回 INT32_MAX
Definition: data_type.h:92
属性的值
Definition: value.h:31