OmniSciDB  16c4e035a1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SQLTypeInfo Class Reference

#include <sqltypes.h>

Public Member Functions

 SQLTypeInfo (SQLTypes t, int d, int s, bool n, EncodingType c, int p, SQLTypes st)
 
 SQLTypeInfo (SQLTypes t, int d, int s, bool n)
 
 SQLTypeInfo (SQLTypes t, EncodingType c, int p, SQLTypes st)
 
 SQLTypeInfo (SQLTypes t, int d, int s)
 
 SQLTypeInfo (SQLTypes t, bool n)
 
 SQLTypeInfo (SQLTypes t)
 
 SQLTypeInfo (SQLTypes t, bool n, EncodingType c)
 
 SQLTypeInfo ()
 
HOST DEVICE SQLTypes get_type () const
 
HOST DEVICE SQLTypes get_subtype () const
 
HOST DEVICE int get_dimension () const
 
int get_precision () const
 
HOST DEVICE int get_input_srid () const
 
HOST DEVICE int get_scale () const
 
HOST DEVICE int get_output_srid () const
 
HOST DEVICE bool get_notnull () const
 
HOST DEVICE EncodingType get_compression () const
 
HOST DEVICE int get_comp_param () const
 
HOST DEVICE int get_size () const
 
int is_logical_geo_type () const
 
int get_logical_size () const
 
int get_physical_cols () const
 
int get_physical_coord_cols () const
 
bool has_bounds () const
 
bool has_render_group () const
 
HOST DEVICE void set_type (SQLTypes t)
 
HOST DEVICE void set_subtype (SQLTypes st)
 
void set_dimension (int d)
 
void set_precision (int d)
 
void set_input_srid (int d)
 
void set_scale (int s)
 
void set_output_srid (int s)
 
void set_notnull (bool n)
 
void set_size (int s)
 
void set_fixed_size ()
 
void set_compression (EncodingType c)
 
void set_comp_param (int p)
 
std::string get_type_name () const
 
std::string get_compression_name () const
 
std::string toString () const
 
std::string to_string () const
 
std::string get_buffer_name () const
 
bool is_string () const
 
bool is_string_array () const
 
bool is_integer () const
 
bool is_decimal () const
 
bool is_fp () const
 
bool is_number () const
 
bool is_time () const
 
bool is_boolean () const
 
bool is_array () const
 
bool is_varlen_array () const
 
bool is_fixlen_array () const
 
bool is_timeinterval () const
 
bool is_geometry () const
 
bool is_column () const
 
bool is_column_list () const
 
bool is_bytes () const
 
bool is_buffer () const
 
bool transforms () const
 
bool is_varlen () const
 
bool is_varlen_indeed () const
 
bool is_dict_encoded_string () const
 
bool is_subtype_dict_encoded_string () const
 
bool is_dict_encoded_type () const
 
HOST DEVICE bool operator!= (const SQLTypeInfo &rhs) const
 
HOST DEVICE bool operator== (const SQLTypeInfo &rhs) const
 
int get_array_context_logical_size () const
 
HOST DEVICE void operator= (const SQLTypeInfo &rhs)
 
bool is_castable (const SQLTypeInfo &new_type_info) const
 
bool is_numeric_scalar_auto_castable (const SQLTypeInfo &new_type_info) const
 returns true if the sql_type can be cast to the type specified by new_type_info with no loss of precision. Currently only used in ExtensionFunctionsBindings to determine legal function matches, but we should consider whether we need to rationalize implicit casting behavior more broadly in QueryEngine. More...
 
int32_t get_numeric_scalar_scale () const
 returns integer between 1 and 8 indicating what is roughly equivalent to the logical byte size of a scalar numeric type (including boolean + time types), but with decimals and numerics mapped to the byte size of their dimension (which may vary from the type width), and timestamps, dates and times handled in a relative fashion. Note: this function only takes the scalar numeric types above, and will throw a check for other types. More...
 
HOST DEVICE bool is_null (const Datum &d) const
 
HOST DEVICE bool is_null (const int8_t *val) const
 
HOST DEVICE bool is_null_fixlen_array (const int8_t *val, int array_size) const
 
HOST DEVICE bool is_null_point_coord_array (const int8_t *val, int array_size) const
 
SQLTypeInfo get_elem_type () const
 
SQLTypeInfo get_array_type () const
 
bool is_date_in_days () const
 
bool is_date () const
 
bool is_high_precision_timestamp () const
 
bool is_timestamp () const
 

Private Member Functions

HOST DEVICE int get_storage_size () const
 

Private Attributes

SQLTypes type
 
SQLTypes subtype
 
int dimension
 
int scale
 
bool notnull
 
EncodingType compression
 
int comp_param
 
int size
 

Static Private Attributes

static std::string type_name [kSQLTYPE_LAST]
 
static std::string comp_name [kENCODING_LAST]
 

Detailed Description

Definition at line 270 of file sqltypes.h.

Constructor & Destructor Documentation

SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
int  d,
int  s,
bool  n,
EncodingType  c,
int  p,
SQLTypes  st 
)
inline

Definition at line 272 of file sqltypes.h.

273  : type(t)
274  , subtype(st)
275  , dimension(d)
276  , scale(s)
277  , notnull(n)
278  , compression(c)
279  , comp_param(p)
280  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:907
char * t
SQLTypes type
Definition: sqltypes.h:894
constexpr double n
Definition: Utm.h:38
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
int  d,
int  s,
bool  n 
)
inline

Definition at line 281 of file sqltypes.h.

282  : type(t)
283  , subtype(kNULLT)
284  , dimension(d)
285  , scale(s)
286  , notnull(n)
288  , comp_param(0)
289  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:907
char * t
SQLTypes type
Definition: sqltypes.h:894
constexpr double n
Definition: Utm.h:38
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
EncodingType  c,
int  p,
SQLTypes  st 
)
inline

Definition at line 290 of file sqltypes.h.

291  : type(t)
292  , subtype(st)
293  , dimension(0)
294  , scale(0)
295  , notnull(false)
296  , compression(c)
297  , comp_param(p)
298  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:907
char * t
SQLTypes type
Definition: sqltypes.h:894
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
int  d,
int  s 
)
inline

Definition at line 299 of file sqltypes.h.

299 : SQLTypeInfo(t, d, s, false) {}
char * t
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
bool  n 
)
inline

Definition at line 300 of file sqltypes.h.

301  : type(t)
302  , subtype(kNULLT)
303  , dimension(0)
304  , scale(0)
305  , notnull(n)
307  , comp_param(0)
308  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:907
char * t
SQLTypes type
Definition: sqltypes.h:894
constexpr double n
Definition: Utm.h:38
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t)
inline

Definition at line 309 of file sqltypes.h.

309 : SQLTypeInfo(t, false) {}
char * t
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
bool  n,
EncodingType  c 
)
inline

Definition at line 310 of file sqltypes.h.

311  : type(t)
312  , subtype(kNULLT)
313  , dimension(0)
314  , scale(0)
315  , notnull(n)
316  , compression(c)
317  , comp_param(0)
318  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:907
char * t
SQLTypes type
Definition: sqltypes.h:894
constexpr double n
Definition: Utm.h:38
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896
SQLTypeInfo::SQLTypeInfo ( )
inline

Definition at line 319 of file sqltypes.h.

Referenced by get_array_type(), and get_elem_type().

320  : type(kNULLT)
321  , subtype(kNULLT)
322  , dimension(0)
323  , scale(0)
324  , notnull(false)
326  , comp_param(0)
327  , size(0) {}
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
SQLTypes type
Definition: sqltypes.h:894
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896

+ Here is the caller graph for this function:

Member Function Documentation

int SQLTypeInfo::get_array_context_logical_size ( ) const
inline

Definition at line 587 of file sqltypes.h.

References get_compression(), get_logical_size(), is_string(), kENCODING_DICT, kENCODING_FIXED, and kENCODING_NONE.

Referenced by ResultSet::makeVarlenTargetValue().

587  {
588  if (is_string()) {
589  auto comp_type(get_compression());
590  if (comp_type == kENCODING_DICT || comp_type == kENCODING_FIXED ||
591  comp_type == kENCODING_NONE) {
592  return sizeof(int32_t);
593  }
594  }
595  return get_logical_size();
596  }
int get_logical_size() const
Definition: sqltypes.h:349
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:337
bool is_string() const
Definition: sqltypes.h:519

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

SQLTypeInfo SQLTypeInfo::get_array_type ( ) const
inline

Definition at line 865 of file sqltypes.h.

References comp_param, compression, dimension, kARRAY, notnull, scale, SQLTypeInfo(), and type.

Referenced by Parser::OperExpr::normalize().

865  {
867  }
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
SQLTypes type
Definition: sqltypes.h:894
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::string SQLTypeInfo::get_buffer_name ( ) const
inline

Definition at line 503 of file sqltypes.h.

References is_array(), is_bytes(), and is_column().

503  {
504  if (is_array()) {
505  return "Array";
506  }
507  if (is_bytes()) {
508  return "Bytes";
509  }
510 
511  if (is_column()) {
512  return "Column";
513  }
514 
515  assert(false);
516  return "";
517  }
bool is_column() const
Definition: sqltypes.h:532
bool is_bytes() const
Definition: sqltypes.h:534
bool is_array() const
Definition: sqltypes.h:527

+ Here is the call graph for this function:

HOST DEVICE int SQLTypeInfo::get_comp_param ( ) const
inline

Definition at line 338 of file sqltypes.h.

References comp_param.

Referenced by Analyzer::Expr::add_cast(), Analyzer::UOper::add_cast(), Analyzer::CaseExpr::add_cast(), Catalog_Namespace::Catalog::addColumn(), Catalog_Namespace::Catalog::addReferenceToForeignDict(), bind_function(), RelLogicalUnion::checkForMatchingMetaInfoTypes(), CodeGenerator::codegen(), CodeGenerator::codegenCastFromString(), CodeGenerator::codegenCompression(), Analyzer::BinOper::common_string_type(), import_export::ImporterUtils::composeNullPointCoords(), Geospatial::compress_coord(), Geospatial::compress_coords(), Geospatial::compress_null_point(), DictionaryConverterFactory< TARGET_TYPE >::create(), Encoder::Create(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::create_parquet_decimal_encoder(), Catalog_Namespace::Catalog::createTable(), DateDaysOverflowValidator::DateDaysOverflowValidator(), decompress(), Catalog_Namespace::Catalog::delDictionary(), Parser::InsertValuesStmt::determineLeafIndex(), DictionaryValueConverter< TARGET_TYPE >::DictionaryValueConverter(), Catalog_Namespace::Catalog::doTruncateTable(), import_export::fill_missing_columns(), Catalog_Namespace::Catalog::gatherAdditionalInfo(), Analyzer::ColumnVar::get_comp_param(), Geospatial::get_compression_scheme(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), get_logical_type_info(), Catalog_Namespace::Catalog::getColumnDictDirectory(), Catalog_Namespace::Catalog::getDictionaryToColumnMapping(), ArrowResultSetConverter::initializeColumnBuilder(), inline_fixed_encoding_null_val(), anonymous_namespace{RelAlgExecutor.cpp}::insert_one_dict_str(), Geospatial::is_null_point(), foreign_storage::ParquetDataWrapper::loadBuffersUsingLazyParquetChunkLoader(), Parser::OperExpr::normalize(), operator!=(), TextConverterFactory::operator()(), operator=(), operator==(), anonymous_namespace{Datum.cpp}::parseInteger(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Catalog_Namespace::Catalog::removeTableFromMap(), Catalog_Namespace::Catalog::setColumnDictionary(), Catalog_Namespace::Catalog::setColumnSharedDictionary(), to_string(), Analyzer::UOper::toString(), RelAlgTranslator::translateBinaryGeoFunction(), ThriftSerializers::type_info_to_thrift(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_date_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_time_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_timestamp_mapping(), TransientDictIdVisitor::visitCaseExpr(), TransientDictIdVisitor::visitUOper(), and File_Namespace::FileBuffer::writeMetadata().

338 { return comp_param; }
int comp_param
Definition: sqltypes.h:901
HOST DEVICE EncodingType SQLTypeInfo::get_compression ( ) const
inline

Definition at line 337 of file sqltypes.h.

References compression.

Referenced by Analyzer::Expr::add_cast(), Analyzer::Constant::add_cast(), Analyzer::UOper::add_cast(), Analyzer::CaseExpr::add_cast(), Catalog_Namespace::Catalog::addColumn(), Parser::InValues::analyze(), Parser::FunctionRef::analyze(), Parser::QuerySpec::analyze_group_by(), bind_function(), CodeGenerator::castArrayPointer(), ChunkIter_get_next(), ChunkIter_get_nth(), import_export::TypedImportBuffer::clear(), spatial_type::NPoints::codegen(), TargetExprCodegen::codegenAggregate(), CodeGenerator::codegenCastFromString(), CodeGenerator::codegenCmp(), CodeGenerator::codegenCompression(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codgenAdjustFixedEncNull(), Analyzer::BinOper::common_string_type(), import_export::ImporterUtils::composeNullPointCoords(), Geospatial::compress_coord(), Geospatial::compress_coords(), Geospatial::compress_null_point(), Geospatial::convert_coords(), Encoder::Create(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::create_parquet_decimal_encoder(), Catalog_Namespace::Catalog::createTable(), DatumEqual(), decompress(), Analyzer::Expr::decompress(), Catalog_Namespace::Catalog::delDictionary(), Catalog_Namespace::Catalog::doTruncateTable(), encoding_to_thrift(), RelAlgExecutor::executeSimpleInsert(), extract_int_type_from_datum(), import_export::fill_missing_columns(), ChunkMetadata::fillChunkStats(), anonymous_namespace{ColumnarResults.cpp}::fixed_encoding_nullable_val(), Catalog_Namespace::Catalog::gatherAdditionalInfo(), get_array_context_logical_size(), Analyzer::ColumnVar::get_compression(), Geospatial::get_compression_scheme(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), anonymous_namespace{TargetExprBuilder.cpp}::get_initial_agg_val(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), get_logical_type_info(), Parser::LocalConnector::getColumnDescriptors(), Catalog_Namespace::Catalog::getColumnDictDirectory(), Chunk_NS::Chunk::getNumElemsForBytesInsertData(), import_export::Loader::getStringDict(), ResultSet::getTargetValueFromBufferRowwise(), Chunk_NS::Chunk::initEncoder(), inline_fixed_encoding_null_val(), inline_int_null_val(), CgenState::inlineIntNull(), anonymous_namespace{RelAlgExecutor.cpp}::int_value_from_numbers_ptr(), is_bytes(), is_date_in_days(), FixedLengthArrayNoneEncoder::is_null(), Geospatial::is_null_point(), is_real_str_or_array(), is_unsigned_type(), RangeJoinHashTable::isInnerColCompressed(), Fragmenter_Namespace::isStringVectorData(), ResultSet::makeGeoTargetValue(), ResultSet::makeVarlenTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), Parser::OperExpr::normalize(), null_val_bit_pattern(), numeric_type_name(), operator!=(), TextConverterFactory::operator()(), operator=(), operator==(), anonymous_namespace{Datum.cpp}::parseInteger(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Catalog_Namespace::Catalog::removeTableFromMap(), anonymous_namespace{TableOptimizer.cpp}::set_metadata_from_results(), Chunk_NS::Chunk::setChunkBuffer(), Fragmenter_Namespace::size_of_raw_column(), RelAlgTranslator::translateBinaryGeoFunction(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), import_export::TypedImportBuffer::TypedImportBuffer(), ExpressionRange::typeSupportsRange(), FixedLengthArrayNoneEncoder::update_elem_stats(), ArrayNoneEncoder::update_elem_stats(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), anonymous_namespace{InputMetadata.cpp}::uses_int_meta(), foreign_storage::ParquetDateInSecondsEncoder< NullType >::validate(), ddl_utils::validate_and_set_array_size(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_date_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_decimal_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_floating_point_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_integral_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_none_type_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_string_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_time_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_timestamp_mapping(), File_Namespace::FileBuffer::writeMetadata(), and import_export::TypedImportBuffer::~TypedImportBuffer().

337 { return compression; }
EncodingType compression
Definition: sqltypes.h:900
std::string SQLTypeInfo::get_compression_name ( ) const
inline

Definition at line 480 of file sqltypes.h.

References comp_name, and compression.

Referenced by to_string(), and Analyzer::UOper::toString().

480 { return comp_name[(int)compression]; }
EncodingType compression
Definition: sqltypes.h:900
static std::string comp_name[kENCODING_LAST]
Definition: sqltypes.h:905

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_dimension ( ) const
inline

Definition at line 331 of file sqltypes.h.

References dimension.

Referenced by Catalog_Namespace::Catalog::addColumn(), Analyzer::BinOper::analyze_type_info(), Analyzer::Constant::cast_string(), Analyzer::Constant::cast_to_string(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastBetweenTimestamps(), CodeGenerator::codegenDateTruncHighPrecisionTimestamps(), CodeGenerator::codegenExtractHighPrecisionTimestamps(), CodeGenerator::codgenAdjustFixedEncNull(), Analyzer::BinOper::common_numeric_type(), Analyzer::BinOper::common_string_type(), Catalog_Namespace::Catalog::createTable(), DatumToString(), Analyzer::Expr::decompress(), Analyzer::Constant::do_cast(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), anonymous_namespace{Execute.cpp}::get_hpt_overflow_underflow_safe_scaled_values(), get_logical_type_info(), get_numeric_scalar_scale(), anonymous_namespace{ExpressionRange.cpp}::getDateTimePrecisionCastRange(), DateTimeTranslator::getDateTruncConstantValue(), DateTimeTranslator::getExtractFromTimeConstantValue(), is_high_precision_timestamp(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::is_microsecond_precision(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::is_millisecond_precision(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::is_nanosecond_precision(), is_numeric_scalar_auto_castable(), operator!=(), operator=(), operator==(), parse_numeric(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), StringToDatum(), to_string(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_timestamp_mapping(), and File_Namespace::FileBuffer::writeMetadata().

331 { return dimension; }
int dimension
Definition: sqltypes.h:896

+ Here is the caller graph for this function:

SQLTypeInfo SQLTypeInfo::get_elem_type ( ) const
inline

Definition at line 861 of file sqltypes.h.

References comp_param, compression, dimension, kNULLT, notnull, scale, SQLTypeInfo(), and subtype.

Referenced by import_export::TypedImportBuffer::add_value(), import_export::TypedImportBuffer::add_values(), Parser::FunctionRef::analyze(), anonymous_namespace{ResultSetIteration.cpp}::build_array_target_value(), CodeGenerator::codegenArrayBuff(), CodeGenerator::codegenFunctionOperCastArgs(), spatial_type::NPoints::codegenLoads(), spatial_type::NRings::codegenLoads(), ArrayConverterFactory< ELEMENT_FACTORY >::create(), foreign_storage::ParquetEncoder::createMetadata(), DateDaysOverflowValidator::DateDaysOverflowValidator(), DecimalOverflowValidator::DecimalOverflowValidator(), Analyzer::Constant::do_cast(), ChunkMetadata::dump(), RelAlgExecutor::executeSimpleInsert(), get_bit_width(), anonymous_namespace{ExtensionsIR.cpp}::get_llvm_type_from_sql_array_type(), foreign_storage::get_placeholder_metadata(), foreign_storage::Csv::get_placeholder_metadata(), foreign_storage::get_sub_type_column_descriptor(), get_type_name(), getLeafColumnRange(), foreign_storage::TypedParquetInPlaceEncoder< V, V >::getRowGroupMetadata(), is_castable(), is_dict_encoded_type(), foreign_storage::ParquetDataWrapper::loadBuffersUsingLazyParquetChunkLoader(), ResultSet::makeVarlenTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), import_export::NullArray(), NullAwareValidator< INNER_VALIDATOR >::NullAwareValidator(), ArraysConverterFactory::operator()(), ChunkMetadata::operator==(), Parser::InsertIntoTableAsSelectStmt::populateData(), ResultSetReductionJIT::reduceOneSlot(), ResultSetStorage::reduceOneSlot(), FixedLengthArrayNoneEncoder::resetChunkStats(), ArrayNoneEncoder::resetChunkStats(), foreign_storage::ParquetFixedLengthArrayEncoder::setNullFixedLengthArraySentinel(), import_export::StringToArray(), import_export::anonymous_namespace{QueryExporterCSV.cpp}::target_value_to_string(), import_export::TDatumToArrayDatum(), to_string(), Analyzer::Constant::toString(), ThriftSerializers::type_info_to_thrift(), ExpressionRange::typeSupportsRange(), ddl_utils::validate_and_set_array_size(), ddl_utils::anonymous_namespace{DdlUtils.cpp}::validate_literal(), DBHandler::value_to_thrift(), and DBHandler::value_to_thrift_column().

861  {
862  return SQLTypeInfo(
864  }
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_input_srid ( ) const
inline
int SQLTypeInfo::get_logical_size ( ) const
inline

Definition at line 349 of file sqltypes.h.

References compression, dimension, get_size(), kENCODING_DATE_IN_DAYS, kENCODING_DICT, kENCODING_FIXED, kENCODING_NONE, notnull, scale, subtype, and type.

Referenced by CodeGenerator::codegenCastBetweenIntTypes(), CodeGenerator::codegenCastBetweenIntTypesOverflowChecks(), CodeGenerator::codgenAdjustFixedEncNull(), Parser::InsertValuesStmt::determineLeafIndex(), get_agg_initial_val(), get_array_context_logical_size(), get_numeric_scalar_scale(), StorageIOFacility::getRsBufferNoPadding(), inline_int_null_val(), anonymous_namespace{RelAlgExecutor.cpp}::int_value_from_numbers_ptr(), anonymous_namespace{TypedDataAccessors.h}::is_null(), is_numeric_scalar_auto_castable(), is_unsigned_type(), numeric_type_name(), and Fragmenter_Namespace::size_of_raw_column().

349  {
352  return ti.get_size();
353  }
354  if (compression == kENCODING_DICT) {
355  return 4;
356  }
357  return get_size();
358  }
HOST DEVICE int get_size() const
Definition: sqltypes.h:339
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
SQLTypes type
Definition: sqltypes.h:894
int dimension
Definition: sqltypes.h:896

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HOST DEVICE bool SQLTypeInfo::get_notnull ( ) const
inline

Definition at line 336 of file sqltypes.h.

References notnull.

Referenced by import_export::TypedImportBuffer::add_arrow_values(), import_export::TypedImportBuffer::add_value(), import_export::TypedImportBuffer::add_values(), Catalog_Namespace::Catalog::addColumn(), import_export::TypedImportBuffer::addDefaultValues(), Parser::InsertValuesStmt::analyze(), Analyzer::BinOper::analyze_type_info(), anonymous_namespace{ResultSetIteration.cpp}::GeoTargetValueBuilder< GEO_SOURCE_TYPE, GeoTargetFetcher >::build(), ChunkIter_get_nth(), ChunkIter_get_nth_point_coords(), GroupByAndAggregate::codegenApproxQuantile(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastBetweenIntTypes(), CodeGenerator::codegenCastBetweenIntTypesOverflowChecks(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCastToFp(), CodeGenerator::codegenDateTruncHighPrecisionTimestamps(), CodeGenerator::codegenDiv(), CodeGenerator::codegenExtractHighPrecisionTimestamps(), CodeGenerator::codegenGeoArrayLoadAndNullcheck(), Analyzer::BinOper::common_numeric_type(), Analyzer::BinOper::common_string_type(), Geospatial::compress_coords(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), Catalog_Namespace::Catalog::createTable(), Analyzer::Expr::decompress(), Analyzer::InIntegerSet::deep_copy(), Analyzer::Constant::do_cast(), anonymous_namespace{ResultSetIteration.cpp}::GeoLazyFetchHandler::fetch(), anonymous_namespace{ResultSetIteration.cpp}::GeoQueryOutputFetchHandler::fetch(), get_agg_initial_val(), get_logical_type_info(), get_null_check_suffix(), get_target_info(), Fragmenter_Namespace::get_var_len_null_array_indexes(), spatial_type::NPoints::getOperand(), Analyzer::anonymous_namespace{Analyzer.cpp}::is_expr_nullable(), FixedLengthArrayNoneEncoder::is_null(), Geospatial::is_null_point(), ResultSet::isNull(), foreign_storage::TextFileBufferParser::isNullDatum(), ArrowResultSetConverter::makeField(), NullAwareValidator< INNER_VALIDATOR >::NullAwareValidator(), operator!=(), operator=(), operator==(), anonymous_namespace{Datum.cpp}::parseInteger(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_null(), anonymous_namespace{TypedDataAccessors.h}::put_null_array(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Executor::reduceResults(), GeoTargetValueSerializer< kPOINT >::serialize(), GeoWktSerializer< kPOINT >::serialize(), GeoTargetValuePtrSerializer< kPOINT >::serialize(), GeoTargetValueSerializer< kLINESTRING >::serialize(), GeoWktSerializer< kLINESTRING >::serialize(), GeoTargetValuePtrSerializer< kLINESTRING >::serialize(), GeoTargetValueSerializer< kPOLYGON >::serialize(), GeoWktSerializer< kPOLYGON >::serialize(), GeoTargetValuePtrSerializer< kPOLYGON >::serialize(), GeoTargetValueSerializer< kMULTIPOLYGON >::serialize(), GeoWktSerializer< kMULTIPOLYGON >::serialize(), GeoTargetValuePtrSerializer< kMULTIPOLYGON >::serialize(), Fragmenter_Namespace::set_chunk_stats(), anonymous_namespace{ResultSetReductionJIT.cpp}::target_info_key(), to_string(), ThriftSerializers::type_info_to_thrift(), Fragmenter_Namespace::anonymous_namespace{UpdelStorage.cpp}::update_metadata(), ddl_utils::validate_and_set_sparse_encoding(), foreign_storage::ParquetEncoder::validateNullCount(), DBHandler::value_to_thrift_column(), DeepCopyVisitor::visitInIntegerSet(), and File_Namespace::FileBuffer::writeMetadata().

336 { return notnull; }
bool notnull
Definition: sqltypes.h:899
int32_t SQLTypeInfo::get_numeric_scalar_scale ( ) const
inline

returns integer between 1 and 8 indicating what is roughly equivalent to the logical byte size of a scalar numeric type (including boolean + time types), but with decimals and numerics mapped to the byte size of their dimension (which may vary from the type width), and timestamps, dates and times handled in a relative fashion. Note: this function only takes the scalar numeric types above, and will throw a check for other types.

Definition at line 709 of file sqltypes.h.

References CHECK, get_dimension(), get_logical_size(), kBIGINT, kBOOLEAN, kDATE, kDECIMAL, kDOUBLE, kFLOAT, kINT, kNUMERIC, kSMALLINT, kTIME, kTIMESTAMP, kTINYINT, type, and UNREACHABLE.

Referenced by anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_numeric_argument().

709  {
710  CHECK(type == kBOOLEAN || type == kTINYINT || type == kSMALLINT || type == kINT ||
711  type == kBIGINT || type == kFLOAT || type == kDOUBLE || type == kDECIMAL ||
712  type == kNUMERIC || type == kTIMESTAMP || type == kDATE || type == kTIME);
713  switch (type) {
714  case kBOOLEAN:
715  return 1;
716  case kTINYINT:
717  case kSMALLINT:
718  case kINT:
719  case kBIGINT:
720  case kFLOAT:
721  case kDOUBLE:
722  return get_logical_size();
723  case kDECIMAL:
724  case kNUMERIC:
725  if (get_dimension() > 7) {
726  return 8;
727  } else {
728  return 4;
729  }
730  case kTIMESTAMP:
731  switch (get_dimension()) {
732  case 9:
733  return 8;
734  case 6:
735  return 4;
736  case 3:
737  return 2;
738  case 0:
739  return 1;
740  default:
741  UNREACHABLE();
742  }
743  case kDATE:
744  return 1;
745  case kTIME:
746  return 1;
747  default:
748  UNREACHABLE();
749  return 0;
750  }
751  }
Definition: sqltypes.h:49
#define UNREACHABLE()
Definition: Logger.h:255
int get_logical_size() const
Definition: sqltypes.h:349
Definition: sqltypes.h:53
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:331
#define CHECK(condition)
Definition: Logger.h:211
SQLTypes type
Definition: sqltypes.h:894
Definition: sqltypes.h:45

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int SQLTypeInfo::get_physical_cols ( ) const
inline

Definition at line 360 of file sqltypes.h.

References kLINESTRING, kMULTIPOLYGON, kPOINT, kPOLYGON, and type.

Referenced by Catalog_Namespace::Catalog::buildMaps(), Parser::DropColumnStmt::execute(), import_export::fill_missing_columns(), foreign_storage::ParquetDataWrapper::loadBuffersUsingLazyParquetChunkLoader(), and Catalog_Namespace::Catalog::renameColumn().

360  {
361  switch (type) {
362  case kPOINT:
363  return 1; // coords
364  case kLINESTRING:
365  return 2; // coords, bounds
366  case kPOLYGON:
367  return 4; // coords, ring_sizes, bounds, render_group
368  case kMULTIPOLYGON:
369  return 5; // coords, ring_sizes, poly_rings, bounds, render_group
370  default:
371  break;
372  }
373  return 0;
374  }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

int SQLTypeInfo::get_physical_coord_cols ( ) const
inline

Definition at line 375 of file sqltypes.h.

References kLINESTRING, kMULTIPOLYGON, kPOINT, kPOLYGON, and type.

Referenced by advance_target_ptr_col_wise(), advance_target_ptr_row_wise(), TargetExprCodegen::codegen(), CodeGenerator::codegenFunctionOperNullArg(), CodeGenerator::codegenGeoBinOper(), CodeGenerator::codegenGeoUOper(), get_slots_for_geo_target(), Analyzer::GeoConstant::makePhysicalConstant(), Analyzer::GeoConstant::physicalCols(), and RelAlgTranslator::translateGeoColumn().

375  {
376  // @TODO dmitri/simon rename this function?
377  // It needs to return the number of extra columns
378  // which need to go through the executor, as opposed
379  // to those which are only needed by CPU for poly
380  // cache building or what-not. For now, we just omit
381  // the Render Group column. If we add Bounding Box
382  // or something this may require rethinking. Perhaps
383  // these two functions need to return an array of
384  // offsets rather than just a number to loop over,
385  // so that executor and non-executor columns can
386  // be mixed.
387  // NOTE(adb): In binding to extension functions, we need to know some pretty specific
388  // type info about each of the physical coords cols for each geo type. I added checks
389  // there to ensure the physical coords col for the geo type match what we expect. If
390  // these values are ever changed, corresponding values in
391  // ExtensionFunctionsBinding.cpp::compute_narrowing_conv_scores and
392  // ExtensionFunctionsBinding.cpp::compute_widening_conv_scores will also need to be
393  // changed.
394  switch (type) {
395  case kPOINT:
396  return 1;
397  case kLINESTRING:
398  return 1; // omit bounds
399  case kPOLYGON:
400  return 2; // omit bounds, render group
401  case kMULTIPOLYGON:
402  return 3; // omit bounds, render group
403  default:
404  break;
405  }
406  return 0;
407  }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_scale ( ) const
inline

Definition at line 334 of file sqltypes.h.

References scale.

Referenced by Catalog_Namespace::Catalog::addColumn(), Analyzer::BinOper::analyze_type_info(), Analyzer::Constant::cast_number(), Executor::castToFP(), CodeGenerator::codegenCastBetweenIntTypes(), CodeGenerator::codegenCastToFp(), CodeGenerator::codegenCmpDecimalConst(), CodeGenerator::codegenDiv(), CodeGenerator::codgenAdjustFixedEncNull(), Analyzer::BinOper::common_numeric_type(), convert_decimal_value_to_scale(), Catalog_Namespace::Catalog::createTable(), DatumToString(), anonymous_namespace{TypedDataAccessors.h}::decimal_to_double(), DecimalOverflowValidator::DecimalOverflowValidator(), Analyzer::Expr::decompress(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_arrow_type(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), get_logical_type_info(), getArrowImportType(), anonymous_namespace{RelAlgTranslator.cpp}::makeNumericConstant(), operator!=(), operator=(), operator==(), pair_to_double(), parse_numeric(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), anonymous_namespace{ExpressionRange.cpp}::scale_up_interval_endpoint(), to_string(), Analyzer::UOper::toString(), ThriftSerializers::type_info_to_thrift(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_decimal_mapping(), DBHandler::value_to_thrift(), DBHandler::value_to_thrift_column(), and File_Namespace::FileBuffer::writeMetadata().

334 { return scale; }

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_size ( ) const
inline

Definition at line 339 of file sqltypes.h.

References size.

Referenced by import_export::TypedImportBuffer::add_value(), Catalog_Namespace::Catalog::addColumn(), import_export::TypedImportBuffer::addDictEncodedString(), ArrayValueConverter< ELEMENT_CONVERTER >::ArrayValueConverter(), Chunk_NS::Chunk::begin_iterator(), anonymous_namespace{CastIR.cpp}::byte_array_cast(), CodeGenerator::castArrayPointer(), Executor::castToFP(), anonymous_namespace{QueryRewrite.cpp}::check_string_id_overflow(), import_export::TypedImportBuffer::clear(), CodeGenerator::codegenAdd(), CodeGenerator::codegenCast(), CodeGenerator::codegenMul(), CodeGenerator::codegenSub(), CodeGenerator::codgenAdjustFixedEncNull(), GroupByAndAggregate::convertNullIfAny(), NumericConverterFactory< SOURCE_TYPE, TARGET_TYPE >::create(), ResultSetLogicalValuesBuilder::create(), DictionaryConverterFactory< TARGET_TYPE >::create(), Encoder::Create(), ArrowForeignStorageBase::createDecimalColumn(), Catalog_Namespace::Catalog::createTable(), decimal_to_int_type(), Parser::InsertValuesStmt::determineLeafIndex(), RelAlgExecutor::executeSimpleInsert(), Fragmenter_Namespace::FixedLenArrayChunkConverter::FixedLenArrayChunkConverter(), get_bit_width(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_dict_index_type(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), get_logical_size(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_physical_type(), foreign_storage::get_placeholder_metadata(), foreign_storage::Csv::get_placeholder_metadata(), anonymous_namespace{TypedDataAccessors.h}::get_scalar(), getArrowImportType(), Parser::LocalConnector::getColumnDescriptors(), foreign_storage::TimestampBoundsValidator< T >::getMinMaxBoundsAsStrings(), foreign_storage::IntegralFixedLengthBoundsValidator< T >::getMinMaxBoundsAsStrings(), foreign_storage::DateInSecondsBoundsValidator< T >::getMinMaxBoundsAsStrings(), foreign_storage::FloatPointValidator< T >::getMinMaxBoundsAsStrings(), Chunk_NS::Chunk::getNumElemsForBytesInsertData(), StorageIOFacility::getRsBufferNoPadding(), import_export::TypedImportBuffer::getStringDictBuffer(), inline_fixed_encoding_null_val(), anonymous_namespace{RelAlgExecutor.cpp}::int_value_from_numbers_ptr(), is_unsigned_type(), ColumnFetcher::makeJoinColumn(), import_export::NullArray(), TextConverterFactory::operator()(), operator=(), foreign_storage::ParquetFixedLengthArrayEncoder::ParquetFixedLengthArrayEncoder(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_null(), anonymous_namespace{TypedDataAccessors.h}::put_null_array(), ArrowForeignStorageBase::replaceNullValues(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::resize_values_buffer(), Fragmenter_Namespace::size_of_raw_column(), string_dict_to_int_type(), import_export::StringToArray(), import_export::TDatumToArrayDatum(), to_string(), ThriftSerializers::type_info_to_thrift(), import_export::TypedImportBuffer::TypedImportBuffer(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumns(), ddl_utils::validate_and_set_array_size(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_integral_mapping(), ddl_utils::anonymous_namespace{DdlUtils.cpp}::validate_literal(), foreign_storage::TimestampBoundsValidator< T >::valueWithinBounds(), foreign_storage::IntegralFixedLengthBoundsValidator< T >::valueWithinBounds(), foreign_storage::DateInSecondsBoundsValidator< T >::valueWithinBounds(), foreign_storage::FloatPointValidator< T >::valueWithinBounds(), File_Namespace::FileBuffer::writeMetadata(), and import_export::TypedImportBuffer::~TypedImportBuffer().

339 { return size; }
HOST DEVICE int SQLTypeInfo::get_storage_size ( ) const
inlineprivate

Definition at line 907 of file sqltypes.h.

References comp_param, compression, dimension, kARRAY, kBIGINT, kBOOLEAN, kCHAR, kCOLUMN, kCOLUMN_LIST, kDATE, kDECIMAL, kDOUBLE, kENCODING_DATE_IN_DAYS, kENCODING_DICT, kENCODING_DIFF, kENCODING_FIXED, kENCODING_GEOINT, kENCODING_NONE, kENCODING_RL, kENCODING_SPARSE, kFLOAT, kINT, kINTERVAL_DAY_TIME, kINTERVAL_YEAR_MONTH, kLINESTRING, kMULTIPOLYGON, kNUMERIC, kPOINT, kPOLYGON, kSMALLINT, kTEXT, kTIME, kTIMESTAMP, kTINYINT, kVARCHAR, and type.

Referenced by set_fixed_size().

907  {
908  switch (type) {
909  case kBOOLEAN:
910  return sizeof(int8_t);
911  case kTINYINT:
912  return sizeof(int8_t);
913  case kSMALLINT:
914  switch (compression) {
915  case kENCODING_NONE:
916  return sizeof(int16_t);
917  case kENCODING_FIXED:
918  case kENCODING_SPARSE:
919  return comp_param / 8;
920  case kENCODING_RL:
921  case kENCODING_DIFF:
922  break;
923  default:
924  assert(false);
925  }
926  break;
927  case kINT:
928  switch (compression) {
929  case kENCODING_NONE:
930  return sizeof(int32_t);
931  case kENCODING_FIXED:
932  case kENCODING_SPARSE:
933  case kENCODING_GEOINT:
934  return comp_param / 8;
935  case kENCODING_RL:
936  case kENCODING_DIFF:
937  break;
938  default:
939  assert(false);
940  }
941  break;
942  case kBIGINT:
943  case kNUMERIC:
944  case kDECIMAL:
945  switch (compression) {
946  case kENCODING_NONE:
947  return sizeof(int64_t);
948  case kENCODING_FIXED:
949  case kENCODING_SPARSE:
950  return comp_param / 8;
951  case kENCODING_RL:
952  case kENCODING_DIFF:
953  break;
954  default:
955  assert(false);
956  }
957  break;
958  case kFLOAT:
959  switch (compression) {
960  case kENCODING_NONE:
961  return sizeof(float);
962  case kENCODING_FIXED:
963  case kENCODING_RL:
964  case kENCODING_DIFF:
965  case kENCODING_SPARSE:
966  assert(false);
967  break;
968  default:
969  assert(false);
970  }
971  break;
972  case kDOUBLE:
973  switch (compression) {
974  case kENCODING_NONE:
975  return sizeof(double);
976  case kENCODING_FIXED:
977  case kENCODING_RL:
978  case kENCODING_DIFF:
979  case kENCODING_SPARSE:
980  assert(false);
981  break;
982  default:
983  assert(false);
984  }
985  break;
986  case kTIMESTAMP:
987  case kTIME:
988  case kINTERVAL_DAY_TIME:
990  case kDATE:
991  switch (compression) {
992  case kENCODING_NONE:
993  return sizeof(int64_t);
994  case kENCODING_FIXED:
995  if (type == kTIMESTAMP && dimension > 0) {
996  assert(false); // disable compression for timestamp precisions
997  }
998  return comp_param / 8;
999  case kENCODING_RL:
1000  case kENCODING_DIFF:
1001  case kENCODING_SPARSE:
1002  assert(false);
1003  break;
1005  switch (comp_param) {
1006  case 0:
1007  return 4; // Default date encoded in days is 32 bits
1008  case 16:
1009  case 32:
1010  return comp_param / 8;
1011  default:
1012  assert(false);
1013  break;
1014  }
1015  default:
1016  assert(false);
1017  }
1018  break;
1019  case kTEXT:
1020  case kVARCHAR:
1021  case kCHAR:
1022  if (compression == kENCODING_DICT) {
1023  return sizeof(int32_t); // @TODO(wei) must check DictDescriptor
1024  }
1025  break;
1026  case kARRAY:
1027  // TODO: return size for fixlen arrays?
1028  break;
1029  case kPOINT:
1030  case kLINESTRING:
1031  case kPOLYGON:
1032  case kMULTIPOLYGON:
1033  case kCOLUMN:
1034  case kCOLUMN_LIST:
1035  break;
1036  default:
1037  break;
1038  }
1039  return -1;
1040  }
Definition: sqltypes.h:49
EncodingType compression
Definition: sqltypes.h:900
Definition: sqltypes.h:52
Definition: sqltypes.h:53
Definition: sqltypes.h:41
SQLTypes type
Definition: sqltypes.h:894
Definition: sqltypes.h:45
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896

+ Here is the caller graph for this function:

HOST DEVICE SQLTypes SQLTypeInfo::get_subtype ( ) const
inline

Definition at line 330 of file sqltypes.h.

References subtype.

Referenced by import_export::TypedImportBuffer::add_value(), import_export::TypedImportBuffer::add_values(), Catalog_Namespace::Catalog::addColumn(), Parser::InsertValuesStmt::analyze(), anonymous_namespace{CastIR.cpp}::byte_array_cast(), import_export::TypedImportBuffer::clear(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codgenAdjustFixedEncNull(), Encoder::Create(), Catalog_Namespace::Catalog::createTable(), Analyzer::Expr::decompress(), import_export::fill_missing_columns(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), get_logical_type_info(), ColumnDescriptor::getDefaultValueLiteral(), import_export::Loader::getStringDict(), import_export::Importer::importGDALRaster(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::insert_array_column(), FixedLengthArrayNoneEncoder::is_null(), operator!=(), operator=(), operator==(), import_export::TypedImportBuffer::pop_value(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), foreign_storage::ParquetRowGroupReader::readAndValidateRowGroup(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::sql_type_info_to_ogr_field_type(), RelAlgTranslator::translateArrayFunction(), RelAlgTranslator::translateBinaryGeoFunction(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateTernaryGeoFunction(), RelAlgTranslator::translateUnaryGeoFunction(), ThriftSerializers::type_info_to_thrift(), type_to_thrift(), import_export::TypedImportBuffer::TypedImportBuffer(), FixedLengthArrayNoneEncoder::update_elem_stats(), ArrayNoneEncoder::update_elem_stats(), ddl_utils::validate_and_set_date_encoding(), ddl_utils::validate_and_set_fixed_encoding(), File_Namespace::FileBuffer::writeMetadata(), and import_export::TypedImportBuffer::~TypedImportBuffer().

330 { return subtype; }
SQLTypes subtype
Definition: sqltypes.h:895

+ Here is the caller graph for this function:

HOST DEVICE SQLTypes SQLTypeInfo::get_type ( ) const
inline

Definition at line 329 of file sqltypes.h.

References type.

Referenced by import_export::TypedImportBuffer::add_arrow_values(), import_export::TypedImportBuffer::add_value(), import_export::TypedImportBuffer::add_values(), Catalog_Namespace::Catalog::addColumn(), import_export::TypedImportBuffer::addDefaultValues(), Parser::ArrayLiteral::analyze(), Parser::FunctionRef::analyze(), Parser::InsertValuesStmt::analyze(), Analyzer::BinOper::analyze_type_info(), append_datum(), bind_function(), Executor::canSkipFragmentForFpQual(), Analyzer::Constant::cast_number(), Analyzer::Constant::cast_string(), Analyzer::Constant::cast_to_string(), CodeGenerator::castArrayPointer(), anonymous_namespace{IRCodegen.cpp}::check_valid_join_qual(), import_export::TypedImportBuffer::clear(), TargetExprCodegen::codegenAggregate(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCastToFp(), CodeGenerator::codegenCmp(), CodeGenerator::codegenDiv(), CodeGenerator::codegenFunctionOper(), CodeGenerator::codegenGeoArrayLoadAndNullcheck(), CodeGenerator::codegenGeoBinOper(), CodeGenerator::codegenGeoUOper(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codegenIsNullNumber(), Analyzer::BinOper::common_numeric_type(), Analyzer::BinOper::common_string_type(), Geospatial::compress_coords(), import_export::TypedImportBuffer::convert_arrow_val_to_import_buffer(), TargetValueConverterFactory::create(), Encoder::Create(), Catalog_Namespace::Catalog::createTable(), Analyzer::Datum_equal(), DatumEqual(), DatumToString(), decompress(), Analyzer::Expr::decompress(), Analyzer::Constant::deep_copy(), Analyzer::Constant::do_cast(), RelAlgExecutor::executeSimpleInsert(), Parser::anonymous_namespace{ParserNode.cpp}::expr_is_null(), extract_fp_type_from_datum(), extract_int_type_from_datum(), anonymous_namespace{ResultSetIteration.cpp}::GeoLazyFetchHandler::fetch(), anonymous_namespace{ResultSetIteration.cpp}::GeoQueryOutputFetchHandler::fetch(), import_export::fill_missing_columns(), ChunkMetadata::fillChunkStats(), DBHandler::fillGeoColumns(), anonymous_namespace{WindowContext.cpp}::fp_comparator(), anonymous_namespace{ExpressionRange.cpp}::fpRangeFromDecimal(), Analyzer::GeoConstant::GeoConstant(), foreign_storage::GeospatialEncoder::GeospatialEncoder(), get_bit_width(), anonymous_namespace{PerfectJoinHashTable.cpp}::get_bucketized_hash_entry_info(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_dict_index_type(), ExtensionFunctionsWhitelist::get_ext_funcs(), get_logical_type_info(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_physical_type(), anonymous_namespace{TypedDataAccessors.h}::get_scalar(), import_export::anonymous_namespace{Importer.cpp}::get_type_for_datum(), anonymous_namespace{WindowFunctionIR.cpp}::get_window_agg_name(), getArrowImportType(), import_export::TypedImportBuffer::getAsBytes(), EmbeddedDatabase::CursorImpl::getColType(), import_export::TypedImportBuffer::getElementSize(), getExpressionRange(), Geospatial::GeoTypesFactory::getGeoColumns(), PerfectJoinHashTable::getHashJoinArgs(), Geospatial::GeoTypesFactory::getNullGeoColumns(), Chunk_NS::Chunk::getNumElemsForBytesInsertData(), StorageIOFacility::getRsBufferNoPadding(), import_export::Loader::getStringDict(), Analyzer::ColumnVar::group_predicates(), foreign_storage::GeospatialEncoder::hasBoundsColumn(), foreign_storage::GeospatialEncoder::hasPolyRingsColumn(), foreign_storage::GeospatialEncoder::hasRenderGroupColumn(), foreign_storage::GeospatialEncoder::hasRingSizesColumn(), import_export::Importer::importDelimited(), import_export::Importer::importGDALGeo(), import_export::Importer::importGDALRaster(), Chunk_NS::Chunk::initEncoder(), inline_fp_null_val(), inline_int_null_val(), anonymous_namespace{Execute.cpp}::inline_null_val(), CgenState::inlineFpNull(), CgenState::inlineIntNull(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::insert_geo_column(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::insert_scalar_column(), anonymous_namespace{RelAlgExecutor.cpp}::int_value_from_numbers_ptr(), is_castable(), Geospatial::is_null_point(), Analyzer::anonymous_namespace{Analyzer.cpp}::is_null_value(), is_numeric_scalar_auto_castable(), anonymous_namespace{TargetExprBuilder.cpp}::is_varlen_projection(), anonymous_namespace{ScalarCodeGenerator.cpp}::llvm_type_from_sql(), make_fp_constant(), ResultSet::makeGeoTargetValue(), anonymous_namespace{RelAlgTranslator.cpp}::makeNumericConstant(), ResultSet::makeVarlenTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_numeric_argument(), anonymous_namespace{WindowExpressionRewrite.cpp}::matches_gt_bigint_zero(), need_patch_unnest_double(), Parser::CaseExpr::normalize(), null_val_bit_pattern(), numeric_type_name(), operator!=(), operator=(), operator==(), pair_to_double(), foreign_storage::ParquetGeospatialImportEncoder::ParquetGeospatialImportEncoder(), import_export::TypedImportBuffer::pop_value(), populate_TColumn(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), foreign_storage::GeospatialEncoder::processGeoElement(), foreign_storage::GeospatialEncoder::processNullGeoElement(), anonymous_namespace{TypedDataAccessors.h}::put_null(), anonymous_namespace{TypedDataAccessors.h}::put_null_array(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), ArrowForeignStorageBase::read(), ArrowForeignStorageBase::replaceNullValues(), ddl_utils::set_default_encoding(), import_export::Importer::set_geo_physical_import_buffer(), import_export::Importer::set_geo_physical_import_buffer_columnar(), anonymous_namespace{TableOptimizer.cpp}::set_metadata_from_results(), Analyzer::Constant::set_null_value(), Chunk_NS::Chunk::setChunkBuffer(), Fragmenter_Namespace::size_of_raw_column(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::sql_type_info_to_ogr_field_type(), StringToDatum(), takes_float_argument(), import_export::TDatumToDatum(), Analyzer::Constant::toString(), RelAlgTranslator::translateBinaryGeoFunction(), RelAlgTranslator::translateGeoColumn(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), RelAlgTranslator::translateGeoOverlapsOper(), RelAlgTranslator::translateTernaryGeoFunction(), RelAlgTranslator::translateUnaryGeoFunction(), ArrowForeignStorageBase::tryZeroCopy(), ThriftSerializers::type_info_to_thrift(), type_to_thrift(), import_export::TypedImportBuffer::TypedImportBuffer(), ddl_utils::validate_and_set_date_encoding(), ddl_utils::validate_and_set_fixed_encoding(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_date_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_floating_point_mapping(), ddl_utils::anonymous_namespace{DdlUtils.cpp}::validate_literal(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_none_type_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_time_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_timestamp_mapping(), foreign_storage::GeospatialEncoder::validateChunksSizing(), foreign_storage::GeospatialEncoder::validateMetadataSizing(), DBHandler::value_to_thrift(), DBHandler::value_to_thrift_column(), anonymous_namespace{WindowExpressionRewrite.cpp}::window_sum_and_count_match(), File_Namespace::FileBuffer::writeMetadata(), and import_export::TypedImportBuffer::~TypedImportBuffer().

329 { return type; }
SQLTypes type
Definition: sqltypes.h:894
std::string SQLTypeInfo::get_type_name ( ) const
inline

Definition at line 442 of file sqltypes.h.

References CHECK_LT, dimension, get_elem_type(), get_output_srid(), IS_GEO, kARRAY, kCOLUMN, kCOLUMN_LIST, kDECIMAL, kNUMERIC, kSQLTYPE_LAST, kTIMESTAMP, scale, size, subtype, to_string(), type, and type_name.

Referenced by Analyzer::Expr::add_cast(), Analyzer::BinOper::analyze_type_info(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCastFromString(), CodeGenerator::codegenCastToFp(), Analyzer::BinOper::common_numeric_type(), TargetValueConverterFactory::create(), anonymous_namespace{ExternalExecutor.cpp}::create_table_schema(), anonymous_namespace{ArrowImporter.h}::data_conversion_error(), Analyzer::Datum_equal(), DatumToString(), Analyzer::Constant::do_cast(), ChunkMetadata::dump(), Analyzer::GeoConstant::GeoConstant(), get_agg_type(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_arrow_type(), getArrowImportType(), Data_Namespace::AbstractBuffer::initEncoder(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::insert_array_column(), ResultSet::makeGeoTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), pair_to_double(), anonymous_namespace{Datum.cpp}::parseFloatAsInteger(), anonymous_namespace{Datum.cpp}::parseInteger(), Parser::InsertIntoTableAsSelectStmt::populateData(), Fragmenter_Namespace::size_of_raw_column(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::sql_type_info_to_ogr_field_type(), StringToDatum(), anonymous_namespace{ResultSetReductionJIT.cpp}::target_info_key(), RexAgg::toHash(), anonymous_namespace{Datum.cpp}::toString(), Analyzer::ColumnVar::toString(), Analyzer::UOper::toString(), RexAgg::toString(), anonymous_namespace{ArrowImporter.h}::type_conversion_error(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_allowed_mapping(), and ScalarExprToSql::visitUOper().

442  {
443  if (IS_GEO(type)) {
444  std::string srid_string = "";
445  if (get_output_srid() > 0) {
446  srid_string = ", " + std::to_string(get_output_srid());
447  }
448  CHECK_LT(static_cast<int>(subtype), kSQLTYPE_LAST);
449  return type_name[static_cast<int>(subtype)] + "(" +
450  type_name[static_cast<int>(type)] + srid_string + ")";
451  }
452  std::string ps = "";
453  if (type == kDECIMAL || type == kNUMERIC) {
454  ps = "(" + std::to_string(dimension) + "," + std::to_string(scale) + ")";
455  } else if (type == kTIMESTAMP) {
456  ps = "(" + std::to_string(dimension) + ")";
457  }
458  if (type == kARRAY) {
459  auto elem_ti = get_elem_type();
460  auto num_elems = (size > 0) ? std::to_string(size / elem_ti.get_size()) : "";
461  CHECK_LT(static_cast<int>(subtype), kSQLTYPE_LAST);
462  return elem_ti.get_type_name() + ps + "[" + num_elems + "]";
463  }
464  if (type == kCOLUMN) {
465  auto elem_ti = get_elem_type();
466  auto num_elems =
467  (size > 0) ? "[" + std::to_string(size / elem_ti.get_size()) + "]" : "";
468  CHECK_LT(static_cast<int>(subtype), kSQLTYPE_LAST);
469  return "COLUMN<" + type_name[static_cast<int>(subtype)] + ps + ">" + num_elems;
470  }
471  if (type == kCOLUMN_LIST) {
472  auto elem_ti = get_elem_type();
473  auto num_elems =
474  (size > 0) ? "[" + std::to_string(size / elem_ti.get_size()) + "]" : "";
475  CHECK_LT(static_cast<int>(subtype), kSQLTYPE_LAST);
476  return "COLUMN_LIST<" + type_name[static_cast<int>(subtype)] + ps + ">" + num_elems;
477  }
478  return type_name[static_cast<int>(type)] + ps;
479  }
std::string to_string(char const *&&v)
static std::string type_name[kSQLTYPE_LAST]
Definition: sqltypes.h:904
SQLTypes subtype
Definition: sqltypes.h:895
#define CHECK_LT(x, y)
Definition: Logger.h:221
SQLTypes type
Definition: sqltypes.h:894
size_t num_elems
SQLTypeInfo get_elem_type() const
Definition: sqltypes.h:861
#define IS_GEO(T)
Definition: sqltypes.h:251
int dimension
Definition: sqltypes.h:896
HOST DEVICE int get_output_srid() const
Definition: sqltypes.h:335

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::has_bounds ( ) const
inline

Definition at line 408 of file sqltypes.h.

References kLINESTRING, kMULTIPOLYGON, kPOLYGON, and type.

Referenced by RelAlgTranslator::translateGeoColumn(), RelAlgTranslator::translateGeoLiteral(), and RelAlgTranslator::translateUnaryGeoFunction().

408  {
409  switch (type) {
410  case kLINESTRING:
411  case kPOLYGON:
412  case kMULTIPOLYGON:
413  return true;
414  default:
415  break;
416  }
417  return false;
418  }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::has_render_group ( ) const
inline

Definition at line 419 of file sqltypes.h.

References kMULTIPOLYGON, kPOLYGON, and type.

Referenced by RelAlgTranslator::translateGeoColumn().

419  {
420  switch (type) {
421  case kPOLYGON:
422  case kMULTIPOLYGON:
423  return true;
424  default:
425  break;
426  }
427  return false;
428  }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_array ( ) const
inline

Definition at line 527 of file sqltypes.h.

References kARRAY, and type.

Referenced by anonymous_namespace{ResultSetIteration.cpp}::build_array_target_value(), anonymous_namespace{CastIR.cpp}::byte_array_cast(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codegenHoistedConstantsPlaceholders(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::create_parquet_array_encoder(), foreign_storage::ParquetEncoder::createMetadata(), Catalog_Namespace::Catalog::createSystemTable(), Catalog_Namespace::Catalog::createTable(), DateDaysOverflowValidator::DateDaysOverflowValidator(), DecimalOverflowValidator::DecimalOverflowValidator(), Analyzer::Constant::do_cast(), ChunkMetadata::dump(), get_buffer_name(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), foreign_storage::get_placeholder_metadata(), foreign_storage::Csv::get_placeholder_metadata(), Parser::LocalConnector::getColumnDescriptors(), ColumnDescriptor::getDefaultValueLiteral(), getLeafColumnRange(), foreign_storage::TypedParquetInPlaceEncoder< V, V >::getRowGroupMetadata(), ResultSet::getTargetValueFromBufferRowwise(), foreign_storage::TypedParquetInPlaceEncoder< V, V >::getUpdatedStats(), CodeGenerator::hashJoinLhs(), is_buffer(), is_dict_encoded_type(), is_real_str_or_array(), Fragmenter_Namespace::isDatumVectorData(), foreign_storage::ParquetDataWrapper::loadBuffersUsingLazyParquetChunkLoader(), ResultSet::makeVarlenTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), Executor::needLinearizeAllFragments(), null_val_bit_pattern(), NullAwareValidator< INNER_VALIDATOR >::NullAwareValidator(), ChunkMetadata::operator==(), Analyzer::Constant::operator==(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), foreign_storage::ParquetRowGroupReader::readAndValidateRowGroup(), Catalog_Namespace::Catalog::setColumnDictionary(), anonymous_namespace{LogicalIR.cpp}::should_defer_eval(), import_export::anonymous_namespace{QueryExporterCSV.cpp}::target_value_to_string(), Analyzer::Constant::toString(), ThriftSerializers::type_info_to_thrift(), ExpressionRange::typeSupportsRange(), foreign_storage::update_stats(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_array_mapping(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_max_repetition_and_definition_level(), DBHandler::value_to_thrift(), and DBHandler::value_to_thrift_column().

527 { return type == kARRAY; } // rbc Array
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_buffer ( ) const
inline

Definition at line 537 of file sqltypes.h.

References is_array(), is_bytes(), is_column(), and is_column_list().

Referenced by anonymous_namespace{ExtensionsIR.cpp}::get_llvm_type_from_sql_array_type().

537  {
538  return is_array() || is_column() || is_column_list() || is_bytes();
539  }
bool is_column() const
Definition: sqltypes.h:532
bool is_bytes() const
Definition: sqltypes.h:534
bool is_column_list() const
Definition: sqltypes.h:533
bool is_array() const
Definition: sqltypes.h:527

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_bytes ( ) const
inline

Definition at line 534 of file sqltypes.h.

References get_compression(), kENCODING_NONE, kTEXT, and type.

Referenced by get_buffer_name(), anonymous_namespace{ExtensionsIR.cpp}::get_llvm_type_from_sql_array_type(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), and is_buffer().

534  {
535  return type == kTEXT && get_compression() == kENCODING_NONE;
536  } // rbc Bytes
Definition: sqltypes.h:52
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:337
SQLTypes type
Definition: sqltypes.h:894

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_castable ( const SQLTypeInfo new_type_info) const
inline

Definition at line 609 of file sqltypes.h.

References get_elem_type(), get_type(), is_castable(), is_number(), is_string(), kARRAY, kBOOLEAN, kCOLUMN, kCOLUMN_LIST, kDATE, kTIMESTAMP, and type.

Referenced by Analyzer::Expr::add_cast(), and is_castable().

609  {
610  // can always cast between the same type but different precision/scale/encodings
611  if (type == new_type_info.get_type()) {
612  return true;
613  // can always cast from or to string
614  } else if (is_string() || new_type_info.is_string()) {
615  return true;
616  // can cast between numbers
617  } else if (is_number() && new_type_info.is_number()) {
618  return true;
619  // can cast from timestamp or date to number (epoch)
620  } else if ((type == kTIMESTAMP || type == kDATE) && new_type_info.is_number()) {
621  return true;
622  // can cast from date to timestamp
623  } else if (type == kDATE && new_type_info.get_type() == kTIMESTAMP) {
624  return true;
625  } else if (type == kTIMESTAMP && new_type_info.get_type() == kDATE) {
626  return true;
627  } else if (type == kBOOLEAN && new_type_info.is_number()) {
628  return true;
629  } else if (type == kARRAY && new_type_info.get_type() == kARRAY) {
630  return get_elem_type().is_castable(new_type_info.get_elem_type());
631  } else if (type == kCOLUMN && new_type_info.get_type() == kCOLUMN) {
632  return get_elem_type().is_castable(new_type_info.get_elem_type());
633  } else if (type == kCOLUMN_LIST && new_type_info.get_type() == kCOLUMN_LIST) {
634  return get_elem_type().is_castable(new_type_info.get_elem_type());
635  } else {
636  return false;
637  }
638  }
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:329
bool is_number() const
Definition: sqltypes.h:524
bool is_castable(const SQLTypeInfo &new_type_info) const
Definition: sqltypes.h:609
Definition: sqltypes.h:53
SQLTypes type
Definition: sqltypes.h:894
bool is_string() const
Definition: sqltypes.h:519
SQLTypeInfo get_elem_type() const
Definition: sqltypes.h:861

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_column ( ) const
inline

Definition at line 532 of file sqltypes.h.

References kCOLUMN, and type.

Referenced by get_buffer_name(), is_buffer(), and DBHandler::value_to_thrift_column().

532 { return type == kCOLUMN; } // rbc Column
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_column_list ( ) const
inline

Definition at line 533 of file sqltypes.h.

References kCOLUMN_LIST, and type.

Referenced by is_buffer().

533 { return type == kCOLUMN_LIST; } // rbc ColumnList
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_date_in_days ( ) const
inline

Definition at line 869 of file sqltypes.h.

References get_compression(), kDATE, kENCODING_DATE_IN_DAYS, and type.

Referenced by DateDaysOverflowValidator::DateDaysOverflowValidator(), get_join_column_type_kind(), Parser::LocalConnector::getColumnDescriptors(), ResultSet::makeTargetValue(), and DBHandler::populateThriftColumnType().

869  {
870  if (type == kDATE) {
871  const auto comp_type = get_compression();
872  if (comp_type == kENCODING_DATE_IN_DAYS) {
873  return true;
874  }
875  }
876  return false;
877  }
Definition: sqltypes.h:53
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:337
SQLTypes type
Definition: sqltypes.h:894

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_decimal ( ) const
inline

Definition at line 522 of file sqltypes.h.

References kDECIMAL, kNUMERIC, and type.

Referenced by Analyzer::Constant::add_cast(), import_export::TypedImportBuffer::add_value(), Analyzer::BinOper::analyze_type_info(), anonymous_namespace{RelAlgTranslator.cpp}::build_type_info(), CodeGenerator::checkExpressionRanges(), CodeGenerator::codegenAdd(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastBetweenIntTypes(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCmp(), CodeGenerator::codegenDiv(), CodeGenerator::codegenFunctionOperWithCustomTypeHandling(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codegenMul(), CodeGenerator::codegenSub(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), DecimalOverflowValidator::DecimalOverflowValidator(), extract_int_type_from_datum(), get_bit_width(), import_export::anonymous_namespace{Importer.cpp}::get_type_for_datum(), inline_fixed_encoding_null_val(), numeric_type_name(), pair_to_double(), import_export::TypedImportBuffer::pop_value(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Executor::reduceResults(), ddl_utils::set_default_encoding(), import_export::anonymous_namespace{QueryExporterCSV.cpp}::target_value_to_string(), import_export::TDatumToDatum(), RelAlgTranslator::translateFunction(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumnMetadata(), anonymous_namespace{InputMetadata.cpp}::uses_int_meta(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_decimal_mapping(), DBHandler::value_to_thrift(), DBHandler::value_to_thrift_column(), and anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor::visitBinOper().

522 { return type == kDECIMAL || type == kNUMERIC; }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_dict_encoded_string ( ) const
inline
bool SQLTypeInfo::is_dict_encoded_type ( ) const
inline

Definition at line 565 of file sqltypes.h.

References get_elem_type(), is_array(), and is_dict_encoded_string().

Referenced by foreign_storage::is_metadata_placeholder(), Executor::needLinearizeAllFragments(), and foreign_storage::anonymous_namespace{AbstractTextFileDataWrapper.cpp}::skip_metadata_scan().

565  {
566  return is_dict_encoded_string() ||
568  }
bool is_dict_encoded_string() const
Definition: sqltypes.h:557
SQLTypeInfo get_elem_type() const
Definition: sqltypes.h:861
bool is_array() const
Definition: sqltypes.h:527

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_fixlen_array ( ) const
inline

Definition at line 529 of file sqltypes.h.

References kARRAY, size, and type.

Referenced by foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::create_parquet_array_encoder(), Chunk_NS::Chunk::createChunkBuffer(), Chunk_NS::Chunk::getChunkBuffer(), Chunk_NS::Chunk::initEncoder(), is_varlen_indeed(), Chunk_NS::Chunk::isChunkOnDevice(), and Chunk_NS::Chunk::setChunkBuffer().

529 { return type == kARRAY && size > 0; }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_fp ( ) const
inline

Definition at line 523 of file sqltypes.h.

References kDOUBLE, kFLOAT, and type.

Referenced by Analyzer::Constant::add_cast(), Executor::castToFP(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCastToFp(), CodeGenerator::codegenDiv(), CodeGenerator::codegenFixedLengthColVarInWindow(), CodeGenerator::codegenIsNullNumber(), GroupByAndAggregate::convertNullIfAny(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), anonymous_namespace{ExpressionRange.cpp}::fpRangeFromDecimal(), get_agg_initial_val(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), foreign_storage::FloatPointValidator< T >::getMinMaxBoundsAsStrings(), StorageIOFacility::getRsBufferNoPadding(), inline_fp_null_val(), anonymous_namespace{Execute.cpp}::inline_null_val(), CgenState::inlineFpNull(), CgenState::inlineNull(), is_numeric_scalar_auto_castable(), is_supported_type_for_extern_execution(), need_patch_unnest_double(), null_val_bit_pattern(), CodeGenerator::NullCheckCodegen::NullCheckCodegen(), numeric_type_name(), Executor::reduceResults(), ArrowForeignStorageBase::replaceNullValues(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_floating_point_mapping(), foreign_storage::ParquetFixedLengthEncoder< V, T, NullType >::validateIntegralOrFloatingPointMetadata(), foreign_storage::ParquetFixedLengthEncoder< V, T, NullType >::validateIntegralOrFloatingPointValue(), and foreign_storage::FloatPointValidator< T >::valueWithinBounds().

523 { return type == kFLOAT || type == kDOUBLE; }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_geometry ( ) const
inline

Definition at line 531 of file sqltypes.h.

References IS_GEO, and type.

Referenced by Analyzer::GeoOperator::add_cast(), advance_slot(), advance_target_ptr_col_wise(), advance_target_ptr_row_wise(), Parser::InsertStmt::analyze(), Parser::InsertValuesStmt::analyze(), Catalog_Namespace::Catalog::buildMaps(), TargetExprCodegen::codegen(), GroupByAndAggregate::codegenAggArg(), CodeGenerator::codegenCmp(), CodeGenerator::codegenColVar(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codegenHoistedConstantsPlaceholders(), Analyzer::Constant::deep_copy(), Analyzer::Constant::do_cast(), Parser::AddColumnStmt::execute(), import_export::fill_missing_columns(), foreign_storage::GeospatialEncoder::GeospatialEncoder(), ColumnDescriptor::getDefaultValueLiteral(), spatial_type::NPoints::getOperand(), ResultSet::getTargetValueFromBufferColwise(), ResultSet::getTargetValueFromBufferRowwise(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::insert_array_column(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::insert_geo_column(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::insert_scalar_column(), isGeometry(), Fragmenter_Namespace::isStringVectorData(), foreign_storage::ParquetDataWrapper::loadBuffersUsingLazyParquetChunkLoader(), ResultSet::makeGeoTargetValue(), Parser::OperExpr::normalize(), null_val_bit_pattern(), foreign_storage::ParquetGeospatialImportEncoder::ParquetGeospatialImportEncoder(), Analyzer::GeoConstant::physicalCols(), Parser::InsertIntoTableAsSelectStmt::populateData(), ResultSetReductionJIT::reduceOneSlot(), ResultSetStorage::reduceOneSlot(), ddl_utils::set_default_encoding(), anonymous_namespace{TargetExprBuilder.cpp}::target_has_geo(), ddl_utils::validate_and_set_compressed_encoding(), ddl_utils::validate_and_set_default_value(), ddl_utils::validate_and_set_none_encoding(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_geospatial_mapping(), DBHandler::value_to_thrift_column(), and Analyzer::Constant::~Constant().

531 { return IS_GEO(type); }
SQLTypes type
Definition: sqltypes.h:894
#define IS_GEO(T)
Definition: sqltypes.h:251

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_high_precision_timestamp ( ) const
inline

Definition at line 881 of file sqltypes.h.

References dimension, get_dimension(), kTIMESTAMP, and type.

Referenced by CodeGenerator::codegenDateTruncHighPrecisionTimestamps(), CodeGenerator::codegenExtractHighPrecisionTimestamps(), Analyzer::Constant::do_cast(), anonymous_namespace{ExpressionRange.cpp}::getDateTimePrecisionCastRange(), DateTimeTranslator::getDateTruncConstantValue(), DateTimeTranslator::getExtractFromTimeConstantValue(), and ddl_utils::validate_and_set_fixed_encoding().

881  {
882  if (type == kTIMESTAMP) {
883  const auto dimension = get_dimension();
884  if (dimension > 0) {
885  return true;
886  }
887  }
888  return false;
889  }
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:331
SQLTypes type
Definition: sqltypes.h:894
int dimension
Definition: sqltypes.h:896

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_integer ( ) const
inline

Definition at line 521 of file sqltypes.h.

References IS_INTEGER, and type.

Referenced by Analyzer::Constant::add_cast(), Parser::FunctionRef::analyze(), Analyzer::BinOper::analyze_type_info(), CodeGenerator::castArrayPointer(), CodeGenerator::codegenAdd(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastBetweenIntTypes(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCmp(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codegenMod(), CodeGenerator::codegenMul(), CodeGenerator::codegenSub(), Analyzer::BinOper::common_numeric_type(), Analyzer::WidthBucketExpr::compute_bucket(), NumericConverterFactory< SOURCE_TYPE, TARGET_TYPE >::create(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), get_agg_type(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), foreign_storage::IntegralFixedLengthBoundsValidator< T >::getMinMaxBoundsAsStrings(), inline_fixed_encoding_null_val(), anonymous_namespace{QueryMemoryDescriptor.cpp}::is_int_and_no_bigger_than(), Fragmenter_Namespace::is_integral(), is_supported_type_for_extern_execution(), numeric_type_name(), pair_to_double(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Executor::reduceResults(), ArrowForeignStorageBase::replaceNullValues(), anonymous_namespace{InputMetadata.cpp}::uses_int_meta(), foreign_storage::ParquetUnsignedFixedLengthEncoder< V, T, U, NullType >::validate(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_integral_mapping(), foreign_storage::ParquetFixedLengthEncoder< V, T, NullType >::validateIntegralOrFloatingPointMetadata(), foreign_storage::ParquetFixedLengthEncoder< V, T, NullType >::validateIntegralOrFloatingPointValue(), and foreign_storage::IntegralFixedLengthBoundsValidator< T >::valueWithinBounds().

521 { return IS_INTEGER(type); }
#define IS_INTEGER(T)
Definition: sqltypes.h:245
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

int SQLTypeInfo::is_logical_geo_type ( ) const
inline

Definition at line 341 of file sqltypes.h.

References kLINESTRING, kMULTIPOLYGON, kPOINT, kPOLYGON, and type.

341  {
342  if (type == kPOINT || type == kLINESTRING || type == kPOLYGON ||
343  type == kMULTIPOLYGON) {
344  return true;
345  }
346  return false;
347  }
SQLTypes type
Definition: sqltypes.h:894
HOST DEVICE bool SQLTypeInfo::is_null ( const Datum d) const
inline

Definition at line 753 of file sqltypes.h.

References Datum::arrayval, Datum::bigintval, Datum::boolval, Datum::doubleval, Datum::floatval, Datum::intval, VarlenDatum::is_null, kARRAY, kBIGINT, kBOOLEAN, kCHAR, kDATE, kDECIMAL, kDOUBLE, kFLOAT, kINT, kNULLT, kNUMERIC, kSMALLINT, kTEXT, kTIME, kTIMESTAMP, kTINYINT, kVARCHAR, NULL_BIGINT, NULL_BOOLEAN, NULL_DOUBLE, NULL_FLOAT, NULL_INT, NULL_SMALLINT, NULL_TINYINT, Datum::smallintval, Datum::tinyintval, and type.

Referenced by ChunkIter_get_next(), ChunkIter_get_nth(), and decompress().

753  {
754  // assuming Datum is always uncompressed
755  switch (type) {
756  case kBOOLEAN:
757  return (int8_t)d.boolval == NULL_BOOLEAN;
758  case kTINYINT:
759  return d.tinyintval == NULL_TINYINT;
760  case kSMALLINT:
761  return d.smallintval == NULL_SMALLINT;
762  case kINT:
763  return d.intval == NULL_INT;
764  case kBIGINT:
765  case kNUMERIC:
766  case kDECIMAL:
767  return d.bigintval == NULL_BIGINT;
768  case kFLOAT:
769  return d.floatval == NULL_FLOAT;
770  case kDOUBLE:
771  return d.doubleval == NULL_DOUBLE;
772  case kTIME:
773  case kTIMESTAMP:
774  case kDATE:
775  return d.bigintval == NULL_BIGINT;
776  case kTEXT:
777  case kVARCHAR:
778  case kCHAR:
779  // @TODO handle null strings
780  break;
781  case kNULLT:
782  return true;
783  case kARRAY:
784  return d.arrayval == NULL || d.arrayval->is_null;
785  default:
786  break;
787  }
788  return false;
789  }
int8_t tinyintval
Definition: sqltypes.h:212
#define NULL_DOUBLE
Definition: sqltypes.h:49
#define NULL_FLOAT
bool is_null
Definition: sqltypes.h:153
#define NULL_BIGINT
int8_t boolval
Definition: sqltypes.h:211
VarlenDatum * arrayval
Definition: sqltypes.h:218
int32_t intval
Definition: sqltypes.h:214
#define NULL_INT
float floatval
Definition: sqltypes.h:216
int64_t bigintval
Definition: sqltypes.h:215
int16_t smallintval
Definition: sqltypes.h:213
#define NULL_BOOLEAN
Definition: sqltypes.h:52
Definition: sqltypes.h:53
Definition: sqltypes.h:41
#define NULL_TINYINT
SQLTypes type
Definition: sqltypes.h:894
#define NULL_SMALLINT
Definition: sqltypes.h:45
double doubleval
Definition: sqltypes.h:217

+ Here is the caller graph for this function:

HOST DEVICE bool SQLTypeInfo::is_null ( const int8_t *  val) const
inline

Definition at line 790 of file sqltypes.h.

References kDOUBLE, kFLOAT, kNULLT, NULL_BIGINT, NULL_DOUBLE, NULL_FLOAT, NULL_INT, NULL_SMALLINT, NULL_TINYINT, size, and type.

790  {
791  if (type == kFLOAT) {
792  return *(float*)val == NULL_FLOAT;
793  }
794  if (type == kDOUBLE) {
795  return *(double*)val == NULL_DOUBLE;
796  }
797  // val can be either compressed or uncompressed
798  switch (size) {
799  case 1:
800  return *val == NULL_TINYINT;
801  case 2:
802  return *(int16_t*)val == NULL_SMALLINT;
803  case 4:
804  return *(int32_t*)val == NULL_INT;
805  case 8:
806  return *(int64_t*)val == NULL_BIGINT;
807  case kNULLT:
808  return true;
809  default:
810  // @TODO(wei) handle null strings
811  break;
812  }
813  return false;
814  }
#define NULL_DOUBLE
#define NULL_FLOAT
#define NULL_BIGINT
#define NULL_INT
#define NULL_TINYINT
SQLTypes type
Definition: sqltypes.h:894
#define NULL_SMALLINT
HOST DEVICE bool SQLTypeInfo::is_null_fixlen_array ( const int8_t *  val,
int  array_size 
) const
inline

Definition at line 815 of file sqltypes.h.

References kARRAY, kDOUBLE, kFLOAT, kNULLT, NULL_ARRAY_BIGINT, NULL_ARRAY_DOUBLE, NULL_ARRAY_FLOAT, NULL_ARRAY_INT, NULL_ARRAY_SMALLINT, NULL_ARRAY_TINYINT, size, subtype, and type.

Referenced by ChunkIter_get_nth().

815  {
816  // Check if fixed length array has a NULL_ARRAY sentinel as the first element
817  if (type == kARRAY && val && array_size > 0 && array_size == size) {
818  // Need to create element type to get the size, but can't call get_elem_type()
819  // since this is a HOST DEVICE function. Going through copy constructor instead.
820  auto elem_ti{*this};
821  elem_ti.set_type(subtype);
822  elem_ti.set_subtype(kNULLT);
823  auto elem_size = elem_ti.get_storage_size();
824  if (elem_size < 1) {
825  return false;
826  }
827  if (subtype == kFLOAT) {
828  return *(float*)val == NULL_ARRAY_FLOAT;
829  }
830  if (subtype == kDOUBLE) {
831  return *(double*)val == NULL_ARRAY_DOUBLE;
832  }
833  switch (elem_size) {
834  case 1:
835  return *val == NULL_ARRAY_TINYINT;
836  case 2:
837  return *(int16_t*)val == NULL_ARRAY_SMALLINT;
838  case 4:
839  return *(int32_t*)val == NULL_ARRAY_INT;
840  case 8:
841  return *(int64_t*)val == NULL_ARRAY_BIGINT;
842  default:
843  return false;
844  }
845  }
846  return false;
847  }
#define NULL_ARRAY_INT
#define NULL_ARRAY_SMALLINT
#define NULL_ARRAY_TINYINT
SQLTypes subtype
Definition: sqltypes.h:895
#define NULL_ARRAY_FLOAT
#define NULL_ARRAY_DOUBLE
SQLTypes type
Definition: sqltypes.h:894
#define NULL_ARRAY_BIGINT

+ Here is the caller graph for this function:

HOST DEVICE bool SQLTypeInfo::is_null_point_coord_array ( const int8_t *  val,
int  array_size 
) const
inline

Definition at line 848 of file sqltypes.h.

References kARRAY, kTINYINT, NULL_ARRAY_COMPRESSED_32, NULL_ARRAY_DOUBLE, size, subtype, and type.

Referenced by ChunkIter_get_nth_point_coords().

849  {
850  if (type == kARRAY && subtype == kTINYINT && val && array_size > 0 &&
851  array_size == size) {
852  if (array_size == 2 * sizeof(double)) {
853  return *(double*)val == NULL_ARRAY_DOUBLE;
854  }
855  if (array_size == 2 * sizeof(int32_t)) {
856  return *(uint32_t*)val == NULL_ARRAY_COMPRESSED_32;
857  }
858  }
859  return false;
860  }
#define NULL_ARRAY_COMPRESSED_32
SQLTypes subtype
Definition: sqltypes.h:895
#define NULL_ARRAY_DOUBLE
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_numeric_scalar_auto_castable ( const SQLTypeInfo new_type_info) const
inline

returns true if the sql_type can be cast to the type specified by new_type_info with no loss of precision. Currently only used in ExtensionFunctionsBindings to determine legal function matches, but we should consider whether we need to rationalize implicit casting behavior more broadly in QueryEngine.

Definition at line 648 of file sqltypes.h.

References get_dimension(), get_logical_size(), get_type(), is_fp(), is_number(), kBIGINT, kBOOLEAN, kDATE, kDECIMAL, kDOUBLE, kFLOAT, kINT, kNUMERIC, kSMALLINT, kTIME, kTIMESTAMP, kTINYINT, type, and UNREACHABLE.

Referenced by anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_numeric_argument().

648  {
649  const auto& new_type = new_type_info.get_type();
650  switch (type) {
651  case kBOOLEAN:
652  return new_type == kBOOLEAN;
653  case kTINYINT:
654  case kSMALLINT:
655  case kINT:
656  if (!new_type_info.is_number()) {
657  return false;
658  }
659  if (new_type_info.is_fp()) {
660  // We can lose precision here, but preserving existing behavior
661  return true;
662  }
663  return new_type_info.get_logical_size() >= get_logical_size();
664  case kBIGINT:
665  return new_type == kBIGINT || new_type == kDOUBLE || new_type == kFLOAT;
666  case kFLOAT:
667  case kDOUBLE:
668  if (!new_type_info.is_fp()) {
669  return false;
670  }
671  return (new_type_info.get_logical_size() >= get_logical_size());
672  case kDECIMAL:
673  case kNUMERIC:
674  switch (new_type) {
675  case kDECIMAL:
676  case kNUMERIC:
677  return new_type_info.get_dimension() >= get_dimension();
678  case kDOUBLE:
679  return true;
680  case kFLOAT:
681  return get_dimension() <= 7;
682  default:
683  return false;
684  }
685  case kTIMESTAMP:
686  if (new_type != kTIMESTAMP) {
687  return false;
688  }
689  return new_type_info.get_dimension() >= get_dimension();
690  case kDATE:
691  return new_type == kDATE;
692  case kTIME:
693  return new_type == kTIME;
694  default:
695  UNREACHABLE();
696  return false;
697  }
698  }
Definition: sqltypes.h:49
bool is_fp() const
Definition: sqltypes.h:523
#define UNREACHABLE()
Definition: Logger.h:255
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:329
bool is_number() const
Definition: sqltypes.h:524
int get_logical_size() const
Definition: sqltypes.h:349
Definition: sqltypes.h:53
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:331
SQLTypes type
Definition: sqltypes.h:894
Definition: sqltypes.h:45

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_string ( ) const
inline

Definition at line 519 of file sqltypes.h.

References IS_STRING, and type.

Referenced by Analyzer::Expr::add_cast(), Analyzer::UOper::add_cast(), Analyzer::CaseExpr::add_cast(), Parser::InValues::analyze(), Parser::FunctionRef::analyze(), Parser::QuerySpec::analyze_group_by(), Analyzer::BinOper::analyze_type_info(), CodeGenerator::castArrayPointer(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastFromString(), CodeGenerator::codegenCmp(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codegenHoistedConstantsPlaceholders(), Analyzer::BinOper::common_string_type(), Encoder::Create(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::create_parquet_none_type_encoder(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::create_parquet_string_encoder(), CodeGenerator::createInValuesBitmap(), Catalog_Namespace::Catalog::createSystemTable(), Analyzer::Constant::deep_copy(), Catalog_Namespace::Catalog::delDictionary(), Parser::InsertValuesStmt::determineLeafIndex(), Analyzer::Constant::do_cast(), RelAlgExecutor::executeSimpleInsert(), get_agg_initial_val(), get_array_context_logical_size(), import_export::TypedImportBuffer::get_data_block_pointers(), anonymous_namespace{TargetExprBuilder.cpp}::get_initial_agg_val(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), PerfectJoinHashTable::getAlternativeCacheKey(), Catalog_Namespace::Catalog::getColumnDictDirectory(), ColumnDescriptor::getDefaultValueLiteral(), import_export::Loader::getStringDict(), ResultSet::getTargetValueFromBufferRowwise(), CodeGenerator::hashJoinLhs(), inline_fixed_encoding_null_val(), inline_int_null_val(), anonymous_namespace{Execute.cpp}::inline_null_val(), CgenState::inlineIntNull(), is_castable(), is_dict_encoded_string(), is_real_str_or_array(), is_supported_type_for_extern_execution(), foreign_storage::TextFileBufferParser::isNullDatum(), Fragmenter_Namespace::isStringVectorData(), ResultSet::makeVarlenTargetValue(), Executor::needLinearizeAllFragments(), Parser::CaseExpr::normalize(), null_val_bit_pattern(), numeric_type_name(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), ResultSetReductionJIT::reduceOneSlot(), ResultSetStorage::reduceOneSlot(), ddl_utils::set_default_encoding(), import_export::StringToArray(), import_export::TDatumToArrayDatum(), ExpressionRange::typeSupportsRange(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumns(), anonymous_namespace{InputMetadata.cpp}::uses_int_meta(), ddl_utils::validate_and_set_dictionary_encoding(), ddl_utils::validate_and_set_none_encoding(), foreign_storage::anonymous_namespace{LazyParquetChunkLoader.cpp}::validate_string_mapping(), TransientStringLiteralsVisitor::visitConstant(), StorageIOFacility::yieldUpdateCallback(), and Analyzer::Constant::~Constant().

519 { return IS_STRING(type); }
#define IS_STRING(T)
Definition: sqltypes.h:250
SQLTypes type
Definition: sqltypes.h:894
bool SQLTypeInfo::is_string_array ( ) const
inline
bool SQLTypeInfo::is_subtype_dict_encoded_string ( ) const
inline

Definition at line 561 of file sqltypes.h.

References compression, IS_STRING, kENCODING_DICT, and subtype.

561  {
563  }
SQLTypes subtype
Definition: sqltypes.h:895
EncodingType compression
Definition: sqltypes.h:900
#define IS_STRING(T)
Definition: sqltypes.h:250
bool SQLTypeInfo::is_time ( ) const
inline

Definition at line 525 of file sqltypes.h.

References is_datetime(), and type.

Referenced by Analyzer::Constant::add_cast(), Analyzer::BinOper::analyze_type_info(), CodeGenerator::codegenCast(), CodeGenerator::codegenCmp(), CodeGenerator::codegenHoistedConstantsLoads(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), Analyzer::Constant::do_cast(), ColumnDescriptor::getDefaultValueLiteral(), inline_fixed_encoding_null_val(), anonymous_namespace{Execute.cpp}::inline_null_val(), anonymous_namespace{RelAlgTranslator.cpp}::is_agg_supported_for_type(), Fragmenter_Namespace::is_integral(), CodeGenerator::NullCheckCodegen::NullCheckCodegen(), numeric_type_name(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Executor::reduceResults(), import_export::StringToArray(), import_export::anonymous_namespace{QueryExporterCSV.cpp}::target_value_to_string(), ExpressionRange::typeSupportsRange(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), and anonymous_namespace{InputMetadata.cpp}::uses_int_meta().

525 { return is_datetime(type); }
SQLTypes type
Definition: sqltypes.h:894
constexpr auto is_datetime(SQLTypes type)
Definition: sqltypes.h:263

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_timeinterval ( ) const
inline
bool SQLTypeInfo::is_varlen ( ) const
inline
bool SQLTypeInfo::is_varlen_array ( ) const
inline

Definition at line 528 of file sqltypes.h.

References kARRAY, size, and type.

Referenced by Fragmenter_Namespace::get_var_len_null_array_indexes().

528 { return type == kARRAY && size <= 0; }
SQLTypes type
Definition: sqltypes.h:894

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_varlen_indeed ( ) const
inline

Definition at line 551 of file sqltypes.h.

References is_fixlen_array(), and is_varlen().

Referenced by foreign_storage::anonymous_namespace{AbstractTextFileDataWrapper.cpp}::add_placeholder_metadata(), foreign_storage::cache_blocks(), foreign_storage::get_placeholder_metadata(), and foreign_storage::Csv::get_placeholder_metadata().

551  {
552  // SQLTypeInfo.is_varlen() is broken with fixedlen array now
553  // and seems left broken for some concern, so fix it locally
554  return is_varlen() && !is_fixlen_array();
555  }
bool is_varlen() const
Definition: sqltypes.h:545
bool is_fixlen_array() const
Definition: sqltypes.h:529

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HOST DEVICE bool SQLTypeInfo::operator!= ( const SQLTypeInfo rhs) const
inline

Definition at line 570 of file sqltypes.h.

References comp_param, compression, dimension, get_comp_param(), get_compression(), get_dimension(), get_notnull(), get_scale(), get_subtype(), get_type(), kENCODING_NONE, notnull, scale, subtype, TRANSIENT_DICT, and type.

570  {
571  return type != rhs.get_type() || subtype != rhs.get_subtype() ||
572  dimension != rhs.get_dimension() || scale != rhs.get_scale() ||
573  compression != rhs.get_compression() ||
576  notnull != rhs.get_notnull();
577  }
HOST DEVICE SQLTypes get_subtype() const
Definition: sqltypes.h:330
HOST DEVICE int get_scale() const
Definition: sqltypes.h:334
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:329
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:337
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:331
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:338
SQLTypes type
Definition: sqltypes.h:894
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:336
#define TRANSIENT_DICT(ID)
Definition: sqltypes.h:260
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896

+ Here is the call graph for this function:

HOST DEVICE void SQLTypeInfo::operator= ( const SQLTypeInfo rhs)
inline

Definition at line 598 of file sqltypes.h.

References comp_param, compression, dimension, get_comp_param(), get_compression(), get_dimension(), get_notnull(), get_scale(), get_size(), get_subtype(), get_type(), notnull, scale, size, subtype, and type.

598  {
599  type = rhs.get_type();
600  subtype = rhs.get_subtype();
601  dimension = rhs.get_dimension();
602  scale = rhs.get_scale();
603  notnull = rhs.get_notnull();
605  comp_param = rhs.get_comp_param();
606  size = rhs.get_size();
607  }
HOST DEVICE SQLTypes get_subtype() const
Definition: sqltypes.h:330
HOST DEVICE int get_size() const
Definition: sqltypes.h:339
HOST DEVICE int get_scale() const
Definition: sqltypes.h:334
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:329
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:337
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:331
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:338
SQLTypes type
Definition: sqltypes.h:894
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:336
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896

+ Here is the call graph for this function:

HOST DEVICE bool SQLTypeInfo::operator== ( const SQLTypeInfo rhs) const
inline

Definition at line 578 of file sqltypes.h.

References comp_param, compression, dimension, get_comp_param(), get_compression(), get_dimension(), get_notnull(), get_scale(), get_subtype(), get_type(), kENCODING_NONE, notnull, scale, subtype, TRANSIENT_DICT, and type.

578  {
579  return type == rhs.get_type() && subtype == rhs.get_subtype() &&
580  dimension == rhs.get_dimension() && scale == rhs.get_scale() &&
581  compression == rhs.get_compression() &&
584  notnull == rhs.get_notnull();
585  }
HOST DEVICE SQLTypes get_subtype() const
Definition: sqltypes.h:330
HOST DEVICE int get_scale() const
Definition: sqltypes.h:334
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:329
SQLTypes subtype
Definition: sqltypes.h:895
bool notnull
Definition: sqltypes.h:899
EncodingType compression
Definition: sqltypes.h:900
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:337
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:331
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:338
SQLTypes type
Definition: sqltypes.h:894
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:336
#define TRANSIENT_DICT(ID)
Definition: sqltypes.h:260
int comp_param
Definition: sqltypes.h:901
int dimension
Definition: sqltypes.h:896

+ Here is the call graph for this function:

void SQLTypeInfo::set_dimension ( int  d)
inline

Definition at line 431 of file sqltypes.h.

References dimension.

Referenced by Analyzer::BinOper::analyze_type_info(), Catalog_Namespace::Catalog::buildMaps(), parse_numeric(), File_Namespace::FileBuffer::readMetadata(), and ddl_utils::validate_and_set_type().

431 { dimension = d; }
int dimension
Definition: sqltypes.h:896

+ Here is the caller graph for this function:

void SQLTypeInfo::set_fixed_size ( )
inline

Definition at line 438 of file sqltypes.h.

References get_storage_size(), and size.

Referenced by Parser::QuerySpec::analyze_group_by(), Analyzer::BinOper::common_numeric_type(), Catalog_Namespace::Catalog::createSystemTable(), import_export::Importer::gdalToColumnDescriptorsGeo(), import_export::Importer::gdalToColumnDescriptorsRaster(), Parser::OperExpr::normalize(), and ddl_utils::validate_and_set_array_size().

438 { size = get_storage_size(); }
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:907

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void SQLTypeInfo::set_input_srid ( int  d)
inline

Definition at line 433 of file sqltypes.h.

References dimension.

Referenced by Analyzer::GeoConstant::add_cast(), import_export::Importer::gdalToColumnDescriptorsGeo(), import_export::Importer::gdalToColumnDescriptorsRaster(), RelAlgTranslator::translateBinaryGeoConstructor(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), and ddl_utils::validate_and_set_type().

433 { dimension = d; }
int dimension
Definition: sqltypes.h:896

+ Here is the caller graph for this function:

void SQLTypeInfo::set_output_srid ( int  s)
inline

Definition at line 435 of file sqltypes.h.

References scale.

Referenced by import_export::Importer::gdalToColumnDescriptorsGeo(), import_export::Importer::gdalToColumnDescriptorsRaster(), RelAlgTranslator::translateBinaryGeoConstructor(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), and ddl_utils::validate_and_set_type().

435 { scale = s; }

+ Here is the caller graph for this function:

void SQLTypeInfo::set_precision ( int  d)
inline

Definition at line 432 of file sqltypes.h.

References dimension.

Referenced by Parser::FixedPtLiteral::analyzeValue(), anonymous_namespace{RelAlgTranslator.cpp}::build_type_info(), and anonymous_namespace{RelAlgDagBuilder.cpp}::parse_type().

432 { dimension = d; }
int dimension
Definition: sqltypes.h:896

+ Here is the caller graph for this function:

void SQLTypeInfo::set_scale ( int  s)
inline

Definition at line 434 of file sqltypes.h.

References scale.

Referenced by Analyzer::BinOper::analyze_type_info(), Parser::FixedPtLiteral::analyzeValue(), anonymous_namespace{RelAlgTranslator.cpp}::build_type_info(), Catalog_Namespace::Catalog::buildMaps(), parse_numeric(), anonymous_namespace{RelAlgDagBuilder.cpp}::parse_type(), File_Namespace::FileBuffer::readMetadata(), and ddl_utils::validate_and_set_type().

434 { scale = s; }

+ Here is the caller graph for this function:

std::string SQLTypeInfo::to_string ( ) const
inline

Definition at line 482 of file sqltypes.h.

References concat(), get_comp_param(), get_compression_name(), get_dimension(), get_elem_type(), get_notnull(), get_scale(), get_size(), subtype, type, and type_name.

Referenced by RelLogicalUnion::checkForMatchingMetaInfoTypes(), DatumToString(), operator<<(), TargetMetaInfo::toString(), TargetInfo::toString(), RexOperator::toString(), and toString().

482  {
483  return concat("(type=",
484  type_name[static_cast<int>(type)],
485  ", dimension=",
486  get_dimension(),
487  ", scale=",
488  get_scale(),
489  ", null=",
490  get_notnull() ? "not nullable" : "nullable",
491  ", name=",
493  ", comp=",
494  get_comp_param(),
495  ", subtype=",
496  type_name[static_cast<int>(subtype)],
497  ", size=",
498  get_size(),
499  ", element_size=",
501  ")");
502  }
HOST DEVICE int get_size() const
Definition: sqltypes.h:339
HOST DEVICE int get_scale() const
Definition: sqltypes.h:334
std::string get_compression_name() const
Definition: sqltypes.h:480
std::string concat(Types &&...parms)
static std::string type_name[kSQLTYPE_LAST]
Definition: sqltypes.h:904
SQLTypes subtype
Definition: sqltypes.h:895
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:331
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:338
SQLTypes type
Definition: sqltypes.h:894
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:336
SQLTypeInfo get_elem_type() const
Definition: sqltypes.h:861

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::string SQLTypeInfo::toString ( ) const
inline

Definition at line 481 of file sqltypes.h.

References to_string().

481 { return to_string(); } // for PRINT macro
std::string to_string() const
Definition: sqltypes.h:482

+ Here is the call graph for this function:

bool SQLTypeInfo::transforms ( ) const
inline

Definition at line 540 of file sqltypes.h.

References get_input_srid(), get_output_srid(), IS_GEO, and type.

Referenced by CodeGenerator::codegenGeoBinOper(), CodeGenerator::codegenGeoUOper(), and import_export::importGeoFromLonLat().

540  {
541  return IS_GEO(type) && get_input_srid() > 0 && get_output_srid() > 0 &&
543  }
HOST DEVICE int get_input_srid() const
Definition: sqltypes.h:333
SQLTypes type
Definition: sqltypes.h:894
#define IS_GEO(T)
Definition: sqltypes.h:251
HOST DEVICE int get_output_srid() const
Definition: sqltypes.h:335

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Member Data Documentation

std::string SQLTypeInfo::comp_name
staticprivate
Initial value:
=
{"NONE", "FIXED", "RL", "DIFF", "DICT", "SPARSE", "COMPRESSED", "DAYS"}

Definition at line 905 of file sqltypes.h.

Referenced by get_compression_name().

int SQLTypeInfo::comp_param
private
bool SQLTypeInfo::notnull
private
std::string SQLTypeInfo::type_name
staticprivate
Initial value:
= {"NULL",
"BOOLEAN",
"CHAR",
"VARCHAR",
"NUMERIC",
"DECIMAL",
"INTEGER",
"SMALLINT",
"FLOAT",
"DOUBLE",
"TIME",
"TIMESTAMP",
"BIGINT",
"TEXT",
"DATE",
"ARRAY",
"INTERVAL_DAY_TIME",
"INTERVAL_YEAR_MONTH",
"POINT",
"LINESTRING",
"POLYGON",
"MULTIPOLYGON",
"TINYINT",
"GEOMETRY",
"GEOGRAPHY",
"EVAL_CONTEXT_TYPE",
"VOID",
"CURSOR",
"COLUMN",
"COLUMN_LIST"}

Definition at line 904 of file sqltypes.h.

Referenced by get_type_name(), and to_string().


The documentation for this class was generated from the following files: