![]() |
mutable
A Database System for Research and Fast Prototyping
|
This class represents types in the SQL type system. More...
#include <Type.hpp>
Public Types | |
| template<typename T > | |
| using | Pooled = m::Pooled< T, Pool< Type > > |
Public Member Functions | |
| M_DECLARE_ENUM (category_t) | |
| a category for whether this type is scalar or vectorial | |
| Type ()=default | |
| Type (const Type &)=delete | |
| Type (Type &&)=default | |
| virtual | ~Type () |
| virtual void | accept (TypeVisitor &v)=0 |
| virtual void | accept (ConstTypeVisitor &v) const =0 |
| virtual bool | operator== (const Type &other) const =0 |
| bool | operator!= (const Type &other) const |
| bool | is_error () const |
| bool | is_none () const |
| bool | is_primitive () const |
Returns true iff this Type is a PrimitiveType. | |
| bool | is_boolean () const |
| bool | is_bitmap () const |
| bool | is_character_sequence () const |
| bool | is_date () const |
| bool | is_date_time () const |
| bool | is_numeric () const |
Returns true iff this Type is a Numeric type. | |
| bool | is_integral () const |
| bool | is_decimal () const |
| bool | is_floating_point () const |
Returns true iff this type is a floating-point type, i.e. f32 or f64. | |
| bool | is_float () const |
Returns true iff this type is a 32 bit floating-point type. | |
| bool | is_double () const |
Returns true iff this type is a 64 bit floating-point type. | |
| virtual uint64_t | size () const |
| Compute the size in bits of an instance of this type. | |
| virtual uint64_t | alignment () const |
| Compute the alignment requirement in bits of an instance of this type. | |
| virtual uint64_t | hash () const =0 |
Compute the 64 bit hash of this Type. | |
| virtual void | print (std::ostream &out) const =0 |
Print a textual representation of this Type to out. | |
| virtual void | dump (std::ostream &out) const =0 |
| void | dump () const |
Static Public Member Functions | |
| static M_LCOV_EXCL_STOP Pooled< ErrorType > | Get_Error () |
Returns a ErrorType. | |
| static Pooled< NoneType > | Get_None () |
Returns a NoneType. | |
| static Pooled< Boolean > | Get_Boolean (category_t category) |
Returns a Boolean type of the given category. | |
| static Pooled< Bitmap > | Get_Bitmap (category_t category, std::size_t length) |
Returns a Bitmap type of the given category and length. | |
| static Pooled< CharacterSequence > | Get_Char (category_t category, std::size_t length) |
Returns a CharacterSequence type of the given category and fixed length. | |
| static Pooled< CharacterSequence > | Get_Varchar (category_t category, std::size_t length) |
Returns a CharacterSequence type of the given category and varying length. | |
| static Pooled< Date > | Get_Date (category_t category) |
Returns a Date type of the given category. | |
| static Pooled< DateTime > | Get_Datetime (category_t category) |
Returns a DateTime type of the given category. | |
| static Pooled< Numeric > | Get_Decimal (category_t category, unsigned digits, unsigned scale) |
Returns a Numeric type for decimals of given category, decimal digits, and scale. | |
| static Pooled< Numeric > | Get_Integer (category_t category, unsigned num_bytes) |
Returns a Numeric type for integrals of given category and num_bytes bytes. | |
| static Pooled< Numeric > | Get_Float (category_t category) |
Returns a Numeric type of given category for 32 bit floating-points. | |
| static Pooled< Numeric > | Get_Double (category_t category) |
Returns a Numeric type of given category for 64 bit floating-points. | |
| static Pooled< FnType > | Get_Function (const Type *return_type, std::vector< const Type * > parameter_types) |
Returns a FnType for a function with parameter types parameter_types and return type return_type. | |
Static Protected Attributes | |
| static constexpr const char * | CATEGORY_TO_STR_ [] = { M_ENUM_TO_STR(category_t) } |
| |
| static Pool< Type > | types_ |
| a pool of internalized, parameterized types | |
Friends | |
| M_LCOV_EXCL_START friend std::ostream & | operator<< (std::ostream &out, const Type &t) |
Print a textual representation of Type t to out. | |
|
default |
|
delete |
|
default |
|
pure virtual |
Implemented in m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, and m::FnType.
|
pure virtual |
Implemented in m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, and m::FnType.
|
inlinevirtual |
Compute the alignment requirement in bits of an instance of this type.
Reimplemented in m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, and m::Numeric.
Definition at line 95 of file Type.hpp.
Referenced by m::PaxStore::compute_block_offsets(), and m::RowStore::compute_offsets().
| M_LCOV_EXCL_START void Type::dump | ( | ) | const |
|
pure virtual |
Implemented in m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, m::FnType, m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, and m::FnType.
|
static |
Returns a Bitmap type of the given category and length.
Definition at line 70 of file Type.cpp.
References types_.
Referenced by m::wasm::ChainedHashTable< IsGlobal >::ChainedHashTable(), m::storage::RowLayoutFactory::make(), m::storage::PAXLayoutFactory::make(), and m::wasm::OpenAddressingHashTable< IsGlobal, ValueInPlace >::OpenAddressingHashTable().
|
static |
Returns a Boolean type of the given category.
Definition at line 68 of file Type.cpp.
References types_.
Referenced by M_LCOV_EXCL_STOP::apply_timestamp_filter(), and m::ast::Parser::parse_data_type().
|
static |
Returns a CharacterSequence type of the given category and fixed length.
Definition at line 75 of file Type.cpp.
References types_.
Referenced by m::ast::Parser::parse_data_type().
|
static |
Returns a Date type of the given category.
Definition at line 85 of file Type.cpp.
References types_.
Referenced by m::ast::Parser::parse_data_type().
|
static |
Returns a DateTime type of the given category.
Definition at line 87 of file Type.cpp.
References types_.
Referenced by m::ast::Parser::parse_data_type().
|
static |
Returns a Numeric type for decimals of given category, decimal digits, and scale.
Definition at line 89 of file Type.cpp.
References types_.
Referenced by m::arithmetic_join(), and m::ast::Parser::parse_data_type().
|
static |
Returns a Numeric type of given category for 64 bit floating-points.
Definition at line 104 of file Type.cpp.
Referenced by m::arithmetic_join(), compute_aggregate_info(), m::get_runtime_type(), and m::ast::Parser::parse_data_type().
|
static |
Returns a ErrorType.
Definition at line 64 of file Type.cpp.
References types_.
Referenced by m::ast::Parser::parse_data_type().
|
static |
Returns a Numeric type of given category for 32 bit floating-points.
Definition at line 99 of file Type.cpp.
References types_.
Referenced by m::arithmetic_join(), m::get_runtime_type(), and m::ast::Parser::parse_data_type().
|
static |
|
static |
Returns a Numeric type for integrals of given category and num_bytes bytes.
Definition at line 94 of file Type.cpp.
References types_.
Referenced by M_LCOV_EXCL_STOP::apply_timestamp_filter(), m::arithmetic_join(), m::wasm::ChainedHashTable< IsGlobal >::ChainedHashTable(), compute_aggregate_info(), m::wasm::HashBasedGroupJoin::execute(), generate_training_suite_filter(), generate_training_suite_group_by(), generate_training_suite_join(), m::get_runtime_type(), m::MultiVersioningTable::MultiVersioningTable(), m::wasm::OpenAddressingHashTable< IsGlobal, ValueInPlace >::OpenAddressingHashTable(), and m::ast::Parser::parse_data_type().
|
static |
|
static |
Returns a CharacterSequence type of the given category and varying length.
Definition at line 80 of file Type.cpp.
References types_.
Referenced by m::ast::Parser::parse_data_type().
|
pure virtual |
Compute the 64 bit hash of this Type.
Implemented in m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, and m::FnType.
Referenced by std::hash< m::Type >::operator()().
|
inline |
Definition at line 76 of file Type.hpp.
Referenced by m::storage::DataLayout::INode::add_leaf().
|
inline |
Definition at line 75 of file Type.hpp.
Referenced by m::storage::DataLayout::INode::add_leaf(), m::StackMachine::emit_Ld(), m::StackMachine::emit_St(), m::is_comparable(), and tystr().
|
inline |
Definition at line 77 of file Type.hpp.
Referenced by m::StackMachine::emit_Cast(), m::is_comparable(), and tystr().
|
inline |
Definition at line 78 of file Type.hpp.
Referenced by m::StackMachine::emit_Print(), m::is_comparable(), and tystr().
|
inline |
Definition at line 79 of file Type.hpp.
Referenced by m::StackMachine::emit_Print(), m::is_comparable(), and tystr().
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 500 of file Type.hpp.
Referenced by m::generate_primary_keys().
|
inline |
Definition at line 72 of file Type.hpp.
Referenced by m::StackMachine::emit_Print(), m::StackMachine::emit_St_Tup(), and m::wasm::ExprCompiler::operator()().
|
inline |
Returns true iff this Type is a Numeric type.
Definition at line 81 of file Type.hpp.
Referenced by m::StackMachine::emit_Cast(), and m::is_comparable().
|
inline |
Returns true iff this Type is a PrimitiveType.
| m::Type::M_DECLARE_ENUM | ( | category_t | ) |
a category for whether this type is scalar or vectorial
|
pure virtual |
Implemented in m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, and m::FnType.
|
pure virtual |
Print a textual representation of this Type to out.
Implemented in m::ErrorType, m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, m::Numeric, and m::FnType.
|
inlinevirtual |
Compute the size in bits of an instance of this type.
Reimplemented in m::NoneType, m::Boolean, m::Bitmap, m::CharacterSequence, m::Date, m::DateTime, and m::Numeric.
Definition at line 92 of file Type.hpp.
Referenced by m::PaxStore::compute_block_offsets(), and m::RowStore::compute_offsets().
|
friend |
|
staticconstexprprotected |
a pool of internalized, parameterized types
Definition at line 54 of file Type.hpp.
Referenced by m::ErrorType::dump(), Get_Bitmap(), Get_Boolean(), Get_Char(), Get_Date(), Get_Datetime(), Get_Decimal(), Get_Error(), Get_Float(), Get_Function(), Get_Integer(), Get_None(), and Get_Varchar().