OmniSciDB  06b3bd477c
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros 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, 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 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 to_string () 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_varlen () const
 
bool is_varlen_indeed () const
 
bool is_dict_encoded_string () 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
 
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 208 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 210 of file sqltypes.h.

211  : type(t)
212  , subtype(st)
213  , dimension(d)
214  , scale(s)
215  , notnull(n)
216  , compression(c)
217  , comp_param(p)
218  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:667
SQLTypes type
Definition: sqltypes.h:655
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
int  d,
int  s,
bool  n 
)
inline

Definition at line 219 of file sqltypes.h.

220  : type(t)
221  , subtype(kNULLT)
222  , dimension(d)
223  , scale(s)
224  , notnull(n)
226  , comp_param(0)
227  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:667
SQLTypes type
Definition: sqltypes.h:655
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
int  d,
int  s 
)
inline

Definition at line 228 of file sqltypes.h.

228 : SQLTypeInfo(t, d, s, false) {}
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
bool  n 
)
inline

Definition at line 229 of file sqltypes.h.

230  : type(t)
231  , subtype(kNULLT)
232  , dimension(0)
233  , scale(0)
234  , notnull(n)
236  , comp_param(0)
237  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:667
SQLTypes type
Definition: sqltypes.h:655
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t)
inline

Definition at line 238 of file sqltypes.h.

238 : SQLTypeInfo(t, false) {}
SQLTypeInfo::SQLTypeInfo ( SQLTypes  t,
bool  n,
EncodingType  c 
)
inline

Definition at line 239 of file sqltypes.h.

240  : type(t)
241  , subtype(kNULLT)
242  , dimension(0)
243  , scale(0)
244  , notnull(n)
245  , compression(c)
246  , comp_param(0)
247  , size(get_storage_size()) {}
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
HOST DEVICE int get_storage_size() const
Definition: sqltypes.h:667
SQLTypes type
Definition: sqltypes.h:655
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657
SQLTypeInfo::SQLTypeInfo ( )
inline

Definition at line 248 of file sqltypes.h.

Referenced by get_array_type(), and get_elem_type().

249  : type(kNULLT)
250  , subtype(kNULLT)
251  , dimension(0)
252  , scale(0)
253  , notnull(false)
255  , comp_param(0)
256  , size(0) {}
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
SQLTypes type
Definition: sqltypes.h:655
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657

+ Here is the caller graph for this function:

Member Function Documentation

int SQLTypeInfo::get_array_context_logical_size ( ) const
inline

Definition at line 463 of file sqltypes.h.

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

Referenced by ResultSet::makeVarlenTargetValue().

463  {
464  if (is_string()) {
465  auto comp_type(get_compression());
466  if (comp_type == kENCODING_DICT || comp_type == kENCODING_FIXED ||
467  comp_type == kENCODING_NONE) {
468  return sizeof(int32_t);
469  }
470  }
471  return get_logical_size();
472  }
int get_logical_size() const
Definition: sqltypes.h:269
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:266
bool is_string() const
Definition: sqltypes.h:415

+ 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 626 of file sqltypes.h.

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

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

626  {
628  }
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
SQLTypes type
Definition: sqltypes.h:655
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_comp_param ( ) const
inline

Definition at line 267 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(), RelLogicalUnion::checkForMatchingMetaInfoTypes(), CodeGenerator::codegen(), CodeGenerator::codegenCastFromString(), CodeGenerator::codegenCompression(), Analyzer::BinOper::common_string_type(), geospatial::compress_coord(), geospatial::compress_coords(), geospatial::compress_null_point(), DictionaryConverterFactory< TARGET_TYPE >::create(), Encoder::Create(), Catalog_Namespace::Catalog::createTable(), DateDaysOverflowValidator::DateDaysOverflowValidator(), decompress(), Catalog_Namespace::Catalog::delDictionary(), Parser::InsertValuesStmt::determineLeafIndex(), DictionaryValueConverter< TARGET_TYPE >::DictionaryValueConverter(), Catalog_Namespace::Catalog::doTruncateTable(), 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(), Parser::OperExpr::normalize(), operator!=(), TextConverterFactory::operator()(), operator=(), operator==(), 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(), ThriftSerializers::type_info_to_thrift(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), and File_Namespace::FileBuffer::writeMetadata().

267 { return comp_param; }
int comp_param
Definition: sqltypes.h:661

+ Here is the caller graph for this function:

HOST DEVICE EncodingType SQLTypeInfo::get_compression ( ) const
inline

Definition at line 266 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(), CodeGenerator::castArrayPointer(), ChunkIter_get_next(), ChunkIter_get_nth(), import_export::TypedImportBuffer::clear(), CodeGenerator::codegenCastFromString(), CodeGenerator::codegenCmp(), CodeGenerator::codegenCompression(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codgenAdjustFixedEncNull(), Analyzer::BinOper::common_string_type(), geospatial::compress_coord(), geospatial::compress_coords(), geospatial::compress_null_point(), Encoder::Create(), Catalog_Namespace::Catalog::createTable(), DatumEqual(), decompress(), Analyzer::Expr::decompress(), Catalog_Namespace::Catalog::delDictionary(), Catalog_Namespace::Catalog::doTruncateTable(), encoding_to_thrift(), RelAlgExecutor::executeSimpleInsert(), extract_from_datum(), ChunkMetadata::fillChunkStats(), anonymous_namespace{ColumnarResults.cpp}::fixed_encoding_nullable_val(), 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(), get_logical_type_info(), Chunk_NS::Chunk::getChunkBuffer(), 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(), is_date_in_days(), FixedLengthArrayNoneEncoder::is_null(), geospatial::is_null_point(), is_real_str_or_array(), is_unsigned_type(), Fragmenter_Namespace::isStringVectorData(), ResultSet::makeVarlenTargetValue(), Parser::OperExpr::normalize(), null_val_bit_pattern(), numeric_type_name(), operator!=(), TextConverterFactory::operator()(), operator=(), operator==(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Catalog_Namespace::Catalog::removeTableFromMap(), anonymous_namespace{TableOptimizer.cpp}::set_metadata_from_results(), Fragmenter_Namespace::sizeOfRawColumn(), 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(), ddl_utils::validate_and_set_array_size(), File_Namespace::FileBuffer::writeMetadata(), and import_export::TypedImportBuffer::~TypedImportBuffer().

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

Definition at line 392 of file sqltypes.h.

References comp_name, and compression.

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

392 { return comp_name[(int)compression]; }
EncodingType compression
Definition: sqltypes.h:660
static std::string comp_name[kENCODING_LAST]
Definition: sqltypes.h:665

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_dimension ( ) const
inline

Definition at line 260 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(), anonymous_namespace{ExpressionRange.cpp}::getDateTimePrecisionCastRange(), DateTimeTranslator::getDateTruncConstantValue(), DateTimeTranslator::getExtractFromTimeConstantValue(), is_high_precision_timestamp(), operator!=(), operator=(), operator==(), parse_numeric(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), StringToDatum(), to_string(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), and File_Namespace::FileBuffer::writeMetadata().

260 { return dimension; }
int dimension
Definition: sqltypes.h:657

+ Here is the caller graph for this function:

SQLTypeInfo SQLTypeInfo::get_elem_type ( ) const
inline

Definition at line 622 of file sqltypes.h.

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

Referenced by import_export::TypedImportBuffer::add_value(), Parser::FunctionRef::analyze(), anonymous_namespace{ResultSetIteration.cpp}::build_array_target_value(), CodeGenerator::codegenArrayBuff(), CodeGenerator::codegenFunctionOperCastArgs(), ArrayConverterFactory< ELEMENT_FACTORY >::create(), DateDaysOverflowValidator::DateDaysOverflowValidator(), datum_to_string(), DecimalOverflowValidator::DecimalOverflowValidator(), Analyzer::Constant::do_cast(), RelAlgExecutor::executeSimpleInsert(), get_bit_width(), get_compact_type(), anonymous_namespace{ExtensionsIR.cpp}::get_llvm_type_from_sql_array_type(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), get_type_name(), getLeafColumnRange(), is_castable(), ResultSet::isNull(), lazy_decode(), ResultSet::makeTargetValue(), ResultSet::makeVarlenTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), import_export::NullArray(), NullAwareValidator< INNER_VALIDATOR >::NullAwareValidator(), ArraysConverterFactory::operator()(), Parser::InsertIntoTableAsSelectStmt::populateData(), ResultSetReductionJIT::reduceOneSlot(), ResultSetStorage::reduceOneSlot(), import_export::StringToArray(), import_export::TDatumToArrayDatum(), to_string(), Analyzer::Constant::toString(), ThriftSerializers::type_info_to_thrift(), ExpressionRange::typeSupportsRange(), ddl_utils::validate_and_set_array_size(), DBHandler::value_to_thrift(), and DBHandler::value_to_thrift_column().

622  {
623  return SQLTypeInfo(
625  }
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657

+ 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

Definition at line 262 of file sqltypes.h.

References dimension.

Referenced by RelAlgTranslator::translateBinaryGeoFunction(), RelAlgTranslator::translateGeoFunctionArg(), and RelAlgTranslator::translateUnaryGeoFunction().

262 { return dimension; }
int dimension
Definition: sqltypes.h:657

+ Here is the caller graph for this function:

int SQLTypeInfo::get_logical_size ( ) const
inline

Definition at line 269 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(), StorageIOFacility< EXECUTOR_TRAITS, FRAGMENT_UPDATER >::getRsBufferNoPadding(), inline_int_null_val(), anonymous_namespace{TypedDataAccessors.h}::is_null(), is_unsigned_type(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), numeric_type_name(), and Fragmenter_Namespace::sizeOfRawColumn().

269  {
272  return ti.get_size();
273  }
274  if (compression == kENCODING_DICT) {
275  return 4;
276  }
277  return get_size();
278  }
HOST DEVICE int get_size() const
Definition: sqltypes.h:268
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
SQLTypes type
Definition: sqltypes.h:655
int dimension
Definition: sqltypes.h:657

+ 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 265 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(), 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(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastBetweenIntTypes(), CodeGenerator::codegenCastBetweenIntTypesOverflowChecks(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCastToFp(), CodeGenerator::codegenDateTruncHighPrecisionTimestamps(), CodeGenerator::codegenDiv(), CodeGenerator::codegenExtractHighPrecisionTimestamps(), 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(), Analyzer::anonymous_namespace{Analyzer.cpp}::is_expr_nullable(), FixedLengthArrayNoneEncoder::is_null(), foreign_storage::csv_file_buffer_parser::is_null_datum(), geospatial::is_null_point(), ArrowResultSetConverter::makeField(), NullAwareValidator< INNER_VALIDATOR >::NullAwareValidator(), operator!=(), operator=(), operator==(), pair_to_double(), 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(), ddl_utils::validate_and_set_sparse_encoding(), DBHandler::value_to_thrift_column(), DeepCopyVisitor::visitInIntegerSet(), and File_Namespace::FileBuffer::writeMetadata().

265 { return notnull; }
bool notnull
Definition: sqltypes.h:659
int SQLTypeInfo::get_physical_cols ( ) const
inline

Definition at line 279 of file sqltypes.h.

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

Referenced by Catalog_Namespace::Catalog::buildMaps(), Parser::DropColumnStmt::execute(), and Catalog_Namespace::Catalog::renameColumn().

279  {
280  switch (type) {
281  case kPOINT:
282  return 1; // coords
283  case kLINESTRING:
284  return 2; // coords, bounds
285  case kPOLYGON:
286  return 4; // coords, ring_sizes, bounds, render_group
287  case kMULTIPOLYGON:
288  return 5; // coords, ring_sizes, poly_rings, bounds, render_group
289  default:
290  break;
291  }
292  return 0;
293  }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

int SQLTypeInfo::get_physical_coord_cols ( ) const
inline

Definition at line 294 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(), and RelAlgTranslator::translateGeoColumn().

294  {
295  // @TODO dmitri/simon rename this function?
296  // It needs to return the number of extra columns
297  // which need to go through the executor, as opposed
298  // to those which are only needed by CPU for poly
299  // cache building or what-not. For now, we just omit
300  // the Render Group column. If we add Bounding Box
301  // or something this may require rethinking. Perhaps
302  // these two functions need to return an array of
303  // offsets rather than just a number to loop over,
304  // so that executor and non-executor columns can
305  // be mixed.
306  // NOTE(adb): In binding to extension functions, we need to know some pretty specific
307  // type info about each of the physical coords cols for each geo type. I added checks
308  // there to ensure the physical coords col for the geo type match what we expect. If
309  // these values are ever changed, corresponding values in
310  // ExtensionFunctionsBinding.cpp::compute_narrowing_conv_scores and
311  // ExtensionFunctionsBinding.cpp::compute_widening_conv_scores will also need to be
312  // changed.
313  switch (type) {
314  case kPOINT:
315  return 1;
316  case kLINESTRING:
317  return 1; // omit bounds
318  case kPOLYGON:
319  return 2; // omit bounds, render group
320  case kMULTIPOLYGON:
321  return 3; // omit bounds, render group
322  default:
323  break;
324  }
325  return 0;
326  }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_scale ( ) const
inline

Definition at line 263 of file sqltypes.h.

References scale.

Referenced by Catalog_Namespace::Catalog::addColumn(), Analyzer::BinOper::analyze_type_info(), Analyzer::Constant::cast_number(), 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(), Analyzer::anonymous_namespace{Analyzer.cpp}::decimal_to_int_frac(), 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::AllowedParquetMetadataTypeMappings::validateDecimalMapping(), DBHandler::value_to_thrift(), DBHandler::value_to_thrift_column(), and File_Namespace::FileBuffer::writeMetadata().

263 { return scale; }

+ Here is the caller graph for this function:

HOST DEVICE int SQLTypeInfo::get_size ( ) const
inline

Definition at line 268 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(), 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(), DictionaryConverterFactory< TARGET_TYPE >::create(), Encoder::Create(), ArrowCsvForeignStorage::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(), get_logical_size(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_physical_type(), anonymous_namespace{TypedDataAccessors.h}::get_scalar(), getArrowImportType(), Parser::LocalConnector::getColumnDescriptors(), Chunk_NS::Chunk::getNumElemsForBytesInsertData(), StorageIOFacility< EXECUTOR_TRAITS, FRAGMENT_UPDATER >::getRsBufferNoPadding(), import_export::TypedImportBuffer::getStringDictBuffer(), inline_fixed_encoding_null_val(), is_unsigned_type(), ColumnFetcher::makeJoinColumn(), import_export::NullArray(), TextConverterFactory::operator()(), operator=(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_null(), anonymous_namespace{TypedDataAccessors.h}::put_null_array(), Fragmenter_Namespace::sizeOfRawColumn(), 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::AllowedParquetMetadataTypeMappings::validateIntegralMapping(), File_Namespace::FileBuffer::writeMetadata(), and import_export::TypedImportBuffer::~TypedImportBuffer().

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

Definition at line 667 of file sqltypes.h.

References assert(), comp_param, compression, dimension, kARRAY, kBIGINT, kBOOLEAN, kCHAR, kCOLUMN, kDATE, kDECIMAL, kDOUBLE, kENCODING_DATE_IN_DAYS, kENCODING_DICT, kENCODING_DIFF, kENCODING_FIXED, 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().

667  {
668  switch (type) {
669  case kBOOLEAN:
670  return sizeof(int8_t);
671  case kTINYINT:
672  return sizeof(int8_t);
673  case kSMALLINT:
674  switch (compression) {
675  case kENCODING_NONE:
676  return sizeof(int16_t);
677  case kENCODING_FIXED:
678  case kENCODING_SPARSE:
679  return comp_param / 8;
680  case kENCODING_RL:
681  case kENCODING_DIFF:
682  break;
683  default:
684  assert(false);
685  }
686  break;
687  case kINT:
688  switch (compression) {
689  case kENCODING_NONE:
690  return sizeof(int32_t);
691  case kENCODING_FIXED:
692  case kENCODING_SPARSE:
693  return comp_param / 8;
694  case kENCODING_RL:
695  case kENCODING_DIFF:
696  break;
697  default:
698  assert(false);
699  }
700  break;
701  case kBIGINT:
702  case kNUMERIC:
703  case kDECIMAL:
704  switch (compression) {
705  case kENCODING_NONE:
706  return sizeof(int64_t);
707  case kENCODING_FIXED:
708  case kENCODING_SPARSE:
709  return comp_param / 8;
710  case kENCODING_RL:
711  case kENCODING_DIFF:
712  break;
713  default:
714  assert(false);
715  }
716  break;
717  case kFLOAT:
718  switch (compression) {
719  case kENCODING_NONE:
720  return sizeof(float);
721  case kENCODING_FIXED:
722  case kENCODING_RL:
723  case kENCODING_DIFF:
724  case kENCODING_SPARSE:
725  assert(false);
726  break;
727  default:
728  assert(false);
729  }
730  break;
731  case kDOUBLE:
732  switch (compression) {
733  case kENCODING_NONE:
734  return sizeof(double);
735  case kENCODING_FIXED:
736  case kENCODING_RL:
737  case kENCODING_DIFF:
738  case kENCODING_SPARSE:
739  assert(false);
740  break;
741  default:
742  assert(false);
743  }
744  break;
745  case kTIMESTAMP:
746  case kTIME:
747  case kINTERVAL_DAY_TIME:
749  case kDATE:
750  switch (compression) {
751  case kENCODING_NONE:
752  return sizeof(int64_t);
753  case kENCODING_FIXED:
754  if (type == kTIMESTAMP && dimension > 0) {
755  assert(false); // disable compression for timestamp precisions
756  }
757  return comp_param / 8;
758  case kENCODING_RL:
759  case kENCODING_DIFF:
760  case kENCODING_SPARSE:
761  assert(false);
762  break;
764  switch (comp_param) {
765  case 0:
766  return 4; // Default date encoded in days is 32 bits
767  case 16:
768  case 32:
769  return comp_param / 8;
770  default:
771  assert(false);
772  break;
773  }
774  default:
775  assert(false);
776  }
777  break;
778  case kTEXT:
779  case kVARCHAR:
780  case kCHAR:
781  if (compression == kENCODING_DICT) {
782  return sizeof(int32_t); // @TODO(wei) must check DictDescriptor
783  }
784  break;
785  case kARRAY:
786  // TODO: return size for fixlen arrays?
787  break;
788  case kPOINT:
789  case kLINESTRING:
790  case kPOLYGON:
791  case kMULTIPOLYGON:
792  case kCOLUMN:
793  break;
794  default:
795  break;
796  }
797  return -1;
798  }
Definition: sqltypes.h:50
EncodingType compression
Definition: sqltypes.h:660
Definition: sqltypes.h:53
Definition: sqltypes.h:54
int64_t const int32_t sz assert(dest)
Definition: sqltypes.h:42
SQLTypes type
Definition: sqltypes.h:655
Definition: sqltypes.h:46
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

HOST DEVICE SQLTypes SQLTypeInfo::get_subtype ( ) const
inline

Definition at line 259 of file sqltypes.h.

References subtype.

Referenced by import_export::TypedImportBuffer::add_value(), import_export::TypedImportBuffer::add_values(), Catalog_Namespace::Catalog::addColumn(), Parser::ArrayLiteral::analyze(), 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(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), get_logical_type_info(), import_export::Loader::getStringDict(), 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(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::sql_type_info_to_ogr_field_type(), RelAlgTranslator::translateArrayFunction(), RelAlgTranslator::translateBinaryGeoFunction(), RelAlgTranslator::translateUnaryGeoFunction(), type_to_thrift(), import_export::TypedImportBuffer::TypedImportBuffer(), FixedLengthArrayNoneEncoder::update_elem_stats(), ArrayNoneEncoder::update_elem_stats(), ddl_utils::validate_and_set_fixed_encoding(), File_Namespace::FileBuffer::writeMetadata(), and import_export::TypedImportBuffer::~TypedImportBuffer().

259 { return subtype; }
SQLTypes subtype
Definition: sqltypes.h:656

+ Here is the caller graph for this function:

HOST DEVICE SQLTypes SQLTypeInfo::get_type ( ) const
inline

Definition at line 258 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(), Parser::ArrayLiteral::analyze(), Parser::FunctionRef::analyze(), Parser::InsertValuesStmt::analyze(), Analyzer::BinOper::analyze_type_info(), appendDatum(), Analyzer::Constant::cast_number(), Analyzer::Constant::cast_string(), Analyzer::Constant::cast_to_string(), CodeGenerator::castArrayPointer(), import_export::TypedImportBuffer::clear(), TargetExprCodegen::codegenAggregate(), CodeGenerator::codegenCast(), CodeGenerator::codegenCastFromFp(), CodeGenerator::codegenCastToFp(), CodeGenerator::codegenCmp(), CodeGenerator::codegenDiv(), CodeGenerator::codegenFunctionOper(), 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_from_datum(), anonymous_namespace{ExpressionRange.cpp}::extract_max_stat_double(), anonymous_namespace{ExpressionRange.cpp}::extract_min_stat_double(), anonymous_namespace{ResultSetIteration.cpp}::GeoLazyFetchHandler::fetch(), anonymous_namespace{ResultSetIteration.cpp}::GeoQueryOutputFetchHandler::fetch(), ChunkMetadata::fillChunkStats(), anonymous_namespace{WindowContext.cpp}::fp_comparator(), anonymous_namespace{ExpressionRange.cpp}::fpRangeFromDecimal(), get_bit_width(), anonymous_namespace{JoinHashTable.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(), anonymous_namespace{WindowFunctionIR.cpp}::get_window_agg_name(), getArrowImportType(), import_export::TypedImportBuffer::getAsBytes(), Chunk_NS::Chunk::getChunkBuffer(), EmbeddedDatabase::CursorImpl::getColType(), import_export::TypedImportBuffer::getElementSize(), getExpressionRange(), Geo_namespace::GeoTypesFactory::getGeoColumns(), JoinHashTable::getHashJoinArgs(), Geo_namespace::GeoTypesFactory::getNullGeoColumns(), Chunk_NS::Chunk::getNumElemsForBytesInsertData(), StorageIOFacility< EXECUTOR_TRAITS, FRAGMENT_UPDATER >::getRsBufferNoPadding(), import_export::Loader::getStringDict(), Analyzer::ColumnVar::group_predicates(), import_export::Importer::importDelimited(), import_export::Importer::importGDAL(), 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(), is_castable(), geospatial::is_null_point(), Analyzer::anonymous_namespace{Analyzer.cpp}::is_null_value(), anonymous_namespace{ScalarCodeGenerator.cpp}::llvm_type_from_sql(), DBHandler::load_table(), make_fp_constant(), ResultSet::makeGeoTargetValue(), anonymous_namespace{RelAlgTranslator.cpp}::makeNumericConstant(), ResultSet::makeVarlenTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), anonymous_namespace{WindowExpressionRewrite.cpp}::matches_gt_bigint_zero(), need_patch_unnest_double(), Parser::CaseExpr::normalize(), null_val_bit_pattern(), import_export::NullArrayDatum(), import_export::NullDatum(), numeric_type_name(), operator!=(), operator=(), operator==(), pair_to_double(), import_export::TypedImportBuffer::pop_value(), populate_TColumn(), Parser::InsertIntoTableAsSelectStmt::populateData(), DBHandler::populateThriftColumnType(), anonymous_namespace{TypedDataAccessors.h}::put_null(), anonymous_namespace{TypedDataAccessors.h}::put_null_array(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), ArrowCsvForeignStorage::read(), 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(), Fragmenter_Namespace::sizeOfRawColumn(), 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::translateGeoBinaryConstructor(), RelAlgTranslator::translateGeoColumn(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), RelAlgTranslator::translateGeoOverlapsOper(), RelAlgTranslator::translateUnaryGeoFunction(), type_to_thrift(), import_export::TypedImportBuffer::TypedImportBuffer(), ddl_utils::validate_and_set_date_encoding(), ddl_utils::validate_and_set_fixed_encoding(), 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().

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

Definition at line 361 of file sqltypes.h.

References CHECK_LT, dimension, get_elem_type(), get_output_srid(), IS_GEO, kARRAY, kCOLUMN, 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(), 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(), Parser::InsertIntoTableAsSelectStmt::populateData(), Fragmenter_Namespace::sizeOfRawColumn(), import_export::anonymous_namespace{QueryExporterGDAL.cpp}::sql_type_info_to_ogr_field_type(), StringToDatum(), anonymous_namespace{ResultSetReductionJIT.cpp}::target_info_key(), Analyzer::ColumnVar::toString(), Analyzer::UOper::toString(), RexAgg::toString(), anonymous_namespace{ArrowImporter.h}::type_conversion_error(), foreign_storage::anonymous_namespace{LazyParquetImporter.cpp}::type_to_string(), and ScalarExprToSql::visitUOper().

361  {
362  if (IS_GEO(type)) {
363  std::string srid_string = "";
364  if (get_output_srid() > 0) {
365  srid_string = ", " + std::to_string(get_output_srid());
366  }
367  CHECK_LT(static_cast<int>(subtype), kSQLTYPE_LAST);
368  return type_name[static_cast<int>(subtype)] + "(" +
369  type_name[static_cast<int>(type)] + srid_string + ")";
370  }
371  std::string ps = "";
372  if (type == kDECIMAL || type == kNUMERIC || subtype == kDECIMAL ||
373  subtype == kNUMERIC) {
374  ps = "(" + std::to_string(dimension) + "," + std::to_string(scale) + ")";
375  } else if (type == kTIMESTAMP) {
376  ps = "(" + std::to_string(dimension) + ")";
377  }
378  if (type == kARRAY) {
379  auto elem_ti = get_elem_type();
380  auto num_elems = (size > 0) ? std::to_string(size / elem_ti.get_size()) : "";
381  CHECK_LT(static_cast<int>(subtype), kSQLTYPE_LAST);
382  return type_name[static_cast<int>(subtype)] + ps + "[" + num_elems + "]";
383  }
384  if (type == kCOLUMN) {
385  auto elem_ti = get_elem_type();
386  auto num_elems = (size > 0) ? std::to_string(size / elem_ti.get_size()) : "";
387  CHECK_LT(static_cast<int>(subtype), kSQLTYPE_LAST);
388  return "Column" + type_name[static_cast<int>(subtype)] + ps + "[" + num_elems + "]";
389  }
390  return type_name[static_cast<int>(type)] + ps;
391  }
std::string to_string(char const *&&v)
static std::string type_name[kSQLTYPE_LAST]
Definition: sqltypes.h:664
SQLTypes subtype
Definition: sqltypes.h:656
#define CHECK_LT(x, y)
Definition: Logger.h:207
SQLTypes type
Definition: sqltypes.h:655
size_t num_elems
SQLTypeInfo get_elem_type() const
Definition: sqltypes.h:622
#define IS_GEO(T)
Definition: sqltypes.h:173
int dimension
Definition: sqltypes.h:657
HOST DEVICE int get_output_srid() const
Definition: sqltypes.h:264

+ 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 327 of file sqltypes.h.

References kLINESTRING, kMULTIPOLYGON, kPOLYGON, and type.

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

327  {
328  switch (type) {
329  case kLINESTRING:
330  case kPOLYGON:
331  case kMULTIPOLYGON:
332  return true;
333  default:
334  break;
335  }
336  return false;
337  }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

bool SQLTypeInfo::has_render_group ( ) const
inline

Definition at line 338 of file sqltypes.h.

References kMULTIPOLYGON, kPOLYGON, and type.

Referenced by RelAlgTranslator::translateGeoColumn().

338  {
339  switch (type) {
340  case kPOLYGON:
341  case kMULTIPOLYGON:
342  return true;
343  default:
344  break;
345  }
346  return false;
347  }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_array ( ) const
inline

Definition at line 423 of file sqltypes.h.

References kARRAY, and type.

Referenced by CodeGenerator::beginArgsNullcheck(), anonymous_namespace{ResultSetIteration.cpp}::build_array_target_value(), anonymous_namespace{CastIR.cpp}::byte_array_cast(), CodeGenerator::codegenFunctionOperCastArgs(), CodeGenerator::codegenHoistedConstantsLoads(), CodeGenerator::codegenHoistedConstantsPlaceholders(), Catalog_Namespace::Catalog::createTable(), DateDaysOverflowValidator::DateDaysOverflowValidator(), datum_to_string(), DecimalOverflowValidator::DecimalOverflowValidator(), Analyzer::Constant::do_cast(), CodeGenerator::endArgsNullcheck(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), anonymous_namespace{ExtensionsIR.cpp}::get_llvm_type_from_sql_array_type(), foreign_storage::get_var_length_data_block_size(), Parser::LocalConnector::getColumnDescriptors(), getLeafColumnRange(), ResultSet::getTargetValueFromBufferRowwise(), CodeGenerator::hashJoinLhs(), is_real_str_or_array(), Fragmenter_Namespace::isDatumVectorData(), ResultSet::makeVarlenTargetValue(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), null_val_bit_pattern(), NullAwareValidator< INNER_VALIDATOR >::NullAwareValidator(), Analyzer::Constant::operator==(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Catalog_Namespace::Catalog::setColumnDictionary(), anonymous_namespace{LogicalIR.cpp}::should_defer_eval(), Analyzer::Constant::toString(), ThriftSerializers::type_info_to_thrift(), ExpressionRange::typeSupportsRange(), foreign_storage::update_stats(), DBHandler::value_to_thrift(), and DBHandler::value_to_thrift_column().

423 { return type == kARRAY; }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

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

Definition at line 485 of file sqltypes.h.

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

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

485  {
486  // can always cast between the same type but different precision/scale/encodings
487  if (type == new_type_info.get_type()) {
488  return true;
489  // can always cast from or to string
490  } else if (is_string() || new_type_info.is_string()) {
491  return true;
492  // can cast between numbers
493  } else if (is_number() && new_type_info.is_number()) {
494  return true;
495  // can cast from timestamp or date to number (epoch)
496  } else if ((type == kTIMESTAMP || type == kDATE) && new_type_info.is_number()) {
497  return true;
498  // can cast from date to timestamp
499  } else if (type == kDATE && new_type_info.get_type() == kTIMESTAMP) {
500  return true;
501  } else if (type == kTIMESTAMP && new_type_info.get_type() == kDATE) {
502  return true;
503  } else if (type == kBOOLEAN && new_type_info.is_number()) {
504  return true;
505  } else if (type == kARRAY && new_type_info.get_type() == kARRAY) {
506  return get_elem_type().is_castable(new_type_info.get_elem_type());
507  } else if (type == kCOLUMN && new_type_info.get_type() == kCOLUMN) {
508  return get_elem_type().is_castable(new_type_info.get_elem_type());
509  } else {
510  return false;
511  }
512  }
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:258
bool is_number() const
Definition: sqltypes.h:420
bool is_castable(const SQLTypeInfo &new_type_info) const
Definition: sqltypes.h:485
Definition: sqltypes.h:54
SQLTypes type
Definition: sqltypes.h:655
bool is_string() const
Definition: sqltypes.h:415
SQLTypeInfo get_elem_type() const
Definition: sqltypes.h:622

+ 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 428 of file sqltypes.h.

References kCOLUMN, and type.

Referenced by get_compact_type(), anonymous_namespace{TableFunctionCompilationContext.cpp}::get_llvm_type_from_sql_column_type(), ResultSet::isNull(), lazy_decode(), ColumnFetcher::makeJoinColumn(), and ResultSet::makeTargetValue().

428 { return type == kCOLUMN; }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_date ( ) const
inline

Definition at line 640 of file sqltypes.h.

References kDATE, and type.

Referenced by Analyzer::Constant::add_cast(), Parser::LocalConnector::getColumnDescriptors(), anonymous_namespace{ExpressionRange.cpp}::getDateTimePrecisionCastRange(), and Parser::InsertIntoTableAsSelectStmt::populateData().

640 { return type == kDATE; }
Definition: sqltypes.h:54
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_date_in_days ( ) const
inline

Definition at line 630 of file sqltypes.h.

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

Referenced by DateDaysEncoder< T, V >::appendData(), DateDaysOverflowValidator::DateDaysOverflowValidator(), get_join_column_type_kind(), Parser::LocalConnector::getColumnDescriptors(), ResultSet::makeTargetValue(), and DBHandler::populateThriftColumnType().

630  {
631  if (type == kDATE) {
632  const auto comp_type = get_compression();
633  if (comp_type == kENCODING_DATE_IN_DAYS) {
634  return true;
635  }
636  }
637  return false;
638  }
Definition: sqltypes.h:54
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:266
SQLTypes type
Definition: sqltypes.h:655

+ 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 418 of file sqltypes.h.

References kDECIMAL, kNUMERIC, and type.

Referenced by import_export::TypedImportBuffer::add_arrow_values(), 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(), datum_to_string(), DecimalOverflowValidator::DecimalOverflowValidator(), extract_from_datum(), get_bit_width(), inline_fixed_encoding_null_val(), anonymous_namespace{ResultSetIteration.cpp}::make_avg_target_value(), import_export::NullArrayDatum(), CodeGenerator::NullCheckCodegen::NullCheckCodegen(), import_export::NullDatum(), 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::TDatumToDatum(), RelAlgTranslator::translateFunction(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumnMetadata(), anonymous_namespace{InputMetadata.cpp}::uses_int_meta(), ddl_utils::validate_and_set_fixed_encoding(), foreign_storage::AllowedParquetMetadataTypeMappings::validateDecimalMapping(), DBHandler::value_to_thrift(), DBHandler::value_to_thrift_column(), and anonymous_namespace{ExpressionRewrite.cpp}::ConstantFoldingVisitor::visitBinOper().

418 { return type == kDECIMAL || type == kNUMERIC; }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_dict_encoded_string ( ) const
inline

Definition at line 442 of file sqltypes.h.

References compression, is_string(), and kENCODING_DICT.

Referenced by ArrowResultSetConverter::append(), RelLogicalUnion::checkForMatchingMetaInfoTypes(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_arrow_type(), anonymous_namespace{ArrowResultSetConverter.cpp}::get_dict_index_type(), StorageIOFacility< EXECUTOR_TRAITS, FRAGMENT_UPDATER >::getRsBufferNoPadding(), ArrowResultSetConverter::initializeColumnBuilder(), ArrowCsvForeignStorage::read(), and Fragmenter_Namespace::InsertOrderFragmenter::updateChunkStats().

442  {
443  return is_string() && compression == kENCODING_DICT;
444  }
EncodingType compression
Definition: sqltypes.h:660
bool is_string() const
Definition: sqltypes.h:415

+ 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 425 of file sqltypes.h.

References kARRAY, size, and type.

Referenced by Chunk_NS::Chunk::createChunkBuffer(), Chunk_NS::Chunk::getChunkBuffer(), Chunk_NS::Chunk::initEncoder(), is_varlen_indeed(), and Chunk_NS::Chunk::isChunkOnDevice().

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

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_geometry ( ) const
inline

Definition at line 427 of file sqltypes.h.

References IS_GEO, and type.

Referenced by 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(), Analyzer::Constant::deep_copy(), Analyzer::Constant::do_cast(), Parser::AddColumnStmt::execute(), foreign_storage::get_var_length_data_block_size(), 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(), ResultSet::makeGeoTargetValue(), Parser::OperExpr::normalize(), null_val_bit_pattern(), 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_none_encoding(), DBHandler::value_to_thrift_column(), and Analyzer::Constant::~Constant().

427 { return IS_GEO(type); }
SQLTypes type
Definition: sqltypes.h:655
#define IS_GEO(T)
Definition: sqltypes.h:173

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_high_precision_timestamp ( ) const
inline

Definition at line 642 of file sqltypes.h.

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

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

642  {
643  if (type == kTIMESTAMP) {
644  const auto dimension = get_dimension();
645  if (dimension > 0) {
646  return true;
647  }
648  }
649  return false;
650  }
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:260
SQLTypes type
Definition: sqltypes.h:655
int dimension
Definition: sqltypes.h:657

+ 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 417 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(), NumericConverterFactory< SOURCE_TYPE, TARGET_TYPE >::create(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), get_agg_type(), 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(), anonymous_namespace{ResultSetIteration.cpp}::make_avg_target_value(), numeric_type_name(), pair_to_double(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Executor::reduceResults(), anonymous_namespace{InputMetadata.cpp}::uses_int_meta(), ddl_utils::validate_and_set_fixed_encoding(), and foreign_storage::AllowedParquetMetadataTypeMappings::validateIntegralMapping().

417 { return IS_INTEGER(type); }
#define IS_INTEGER(T)
Definition: sqltypes.h:167
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

HOST DEVICE bool SQLTypeInfo::is_null ( const Datum d) const
inline

Definition at line 514 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().

514  {
515  // assuming Datum is always uncompressed
516  switch (type) {
517  case kBOOLEAN:
518  return (int8_t)d.boolval == NULL_BOOLEAN;
519  case kTINYINT:
520  return d.tinyintval == NULL_TINYINT;
521  case kSMALLINT:
522  return d.smallintval == NULL_SMALLINT;
523  case kINT:
524  return d.intval == NULL_INT;
525  case kBIGINT:
526  case kNUMERIC:
527  case kDECIMAL:
528  return d.bigintval == NULL_BIGINT;
529  case kFLOAT:
530  return d.floatval == NULL_FLOAT;
531  case kDOUBLE:
532  return d.doubleval == NULL_DOUBLE;
533  case kTIME:
534  case kTIMESTAMP:
535  case kDATE:
536  return d.bigintval == NULL_BIGINT;
537  case kTEXT:
538  case kVARCHAR:
539  case kCHAR:
540  // @TODO handle null strings
541  break;
542  case kNULLT:
543  return true;
544  case kARRAY:
545  return d.arrayval == NULL || d.arrayval->is_null;
546  default:
547  break;
548  }
549  return false;
550  }
int8_t tinyintval
Definition: sqltypes.h:134
#define NULL_DOUBLE
Definition: sqltypes.h:185
Definition: sqltypes.h:50
bool is_null
Definition: sqltypes.h:75
#define NULL_BIGINT
Definition: sqltypes.h:183
bool boolval
Definition: sqltypes.h:133
VarlenDatum * arrayval
Definition: sqltypes.h:140
int32_t intval
Definition: sqltypes.h:136
float floatval
Definition: sqltypes.h:138
#define NULL_TINYINT
Definition: sqltypes.h:180
int64_t bigintval
Definition: sqltypes.h:137
#define NULL_FLOAT
Definition: sqltypes.h:184
int16_t smallintval
Definition: sqltypes.h:135
#define NULL_INT
Definition: sqltypes.h:182
Definition: sqltypes.h:53
Definition: sqltypes.h:54
Definition: sqltypes.h:42
#define NULL_SMALLINT
Definition: sqltypes.h:181
SQLTypes type
Definition: sqltypes.h:655
Definition: sqltypes.h:46
#define NULL_BOOLEAN
Definition: sqltypes.h:179
double doubleval
Definition: sqltypes.h:139

+ Here is the caller graph for this function:

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

Definition at line 551 of file sqltypes.h.

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

551  {
552  if (type == kFLOAT) {
553  return *(float*)val == NULL_FLOAT;
554  }
555  if (type == kDOUBLE) {
556  return *(double*)val == NULL_DOUBLE;
557  }
558  // val can be either compressed or uncompressed
559  switch (size) {
560  case 1:
561  return *val == NULL_TINYINT;
562  case 2:
563  return *(int16_t*)val == NULL_SMALLINT;
564  case 4:
565  return *(int32_t*)val == NULL_INT;
566  case 8:
567  return *(int64_t*)val == NULL_BIGINT;
568  case kNULLT:
569  return true;
570  default:
571  // @TODO(wei) handle null strings
572  break;
573  }
574  return false;
575  }
#define NULL_DOUBLE
Definition: sqltypes.h:185
#define NULL_BIGINT
Definition: sqltypes.h:183
#define NULL_TINYINT
Definition: sqltypes.h:180
#define NULL_FLOAT
Definition: sqltypes.h:184
#define NULL_INT
Definition: sqltypes.h:182
#define NULL_SMALLINT
Definition: sqltypes.h:181
SQLTypes type
Definition: sqltypes.h:655
HOST DEVICE bool SQLTypeInfo::is_null_fixlen_array ( const int8_t *  val,
int  array_size 
) const
inline

Definition at line 576 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().

576  {
577  // Check if fixed length array has a NULL_ARRAY sentinel as the first element
578  if (type == kARRAY && val && array_size > 0 && array_size == size) {
579  // Need to create element type to get the size, but can't call get_elem_type()
580  // since this is a HOST DEVICE function. Going through copy constructor instead.
581  auto elem_ti{*this};
582  elem_ti.set_type(subtype);
583  elem_ti.set_subtype(kNULLT);
584  auto elem_size = elem_ti.get_storage_size();
585  if (elem_size < 1) {
586  return false;
587  }
588  if (subtype == kFLOAT) {
589  return *(float*)val == NULL_ARRAY_FLOAT;
590  }
591  if (subtype == kDOUBLE) {
592  return *(double*)val == NULL_ARRAY_DOUBLE;
593  }
594  switch (elem_size) {
595  case 1:
596  return *val == NULL_ARRAY_TINYINT;
597  case 2:
598  return *(int16_t*)val == NULL_ARRAY_SMALLINT;
599  case 4:
600  return *(int32_t*)val == NULL_ARRAY_INT;
601  case 8:
602  return *(int64_t*)val == NULL_ARRAY_BIGINT;
603  default:
604  return false;
605  }
606  }
607  return false;
608  }
#define NULL_ARRAY_DOUBLE
Definition: sqltypes.h:193
#define NULL_ARRAY_SMALLINT
Definition: sqltypes.h:189
#define NULL_ARRAY_TINYINT
Definition: sqltypes.h:188
SQLTypes subtype
Definition: sqltypes.h:656
#define NULL_ARRAY_INT
Definition: sqltypes.h:190
#define NULL_ARRAY_BIGINT
Definition: sqltypes.h:191
SQLTypes type
Definition: sqltypes.h:655
#define NULL_ARRAY_FLOAT
Definition: sqltypes.h:192

+ 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 609 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().

610  {
611  if (type == kARRAY && subtype == kTINYINT && val && array_size > 0 &&
612  array_size == size) {
613  if (array_size == 2 * sizeof(double)) {
614  return *(double*)val == NULL_ARRAY_DOUBLE;
615  }
616  if (array_size == 2 * sizeof(int32_t)) {
617  return *(uint32_t*)val == NULL_ARRAY_COMPRESSED_32;
618  }
619  }
620  return false;
621  }
#define NULL_ARRAY_COMPRESSED_32
Definition: sqltypes.h:195
#define NULL_ARRAY_DOUBLE
Definition: sqltypes.h:193
SQLTypes subtype
Definition: sqltypes.h:656
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_string ( ) const
inline

Definition at line 415 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(), CodeGenerator::createInValuesBitmap(), 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(), anonymous_namespace{TargetExprBuilder.cpp}::get_initial_agg_val(), foreign_storage::get_var_length_data_block_size(), Catalog_Namespace::Catalog::getColumnDictDirectory(), 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(), foreign_storage::csv_file_buffer_parser::is_null_datum(), is_real_str_or_array(), is_supported_type_for_extern_execution(), Fragmenter_Namespace::isStringVectorData(), ResultSet::makeVarlenTargetValue(), Parser::CaseExpr::normalize(), null_val_bit_pattern(), import_export::NullArray(), 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(), and Analyzer::Constant::~Constant().

415 { return IS_STRING(type); }
#define IS_STRING(T)
Definition: sqltypes.h:172
SQLTypes type
Definition: sqltypes.h:655
bool SQLTypeInfo::is_string_array ( ) const
inline

Definition at line 416 of file sqltypes.h.

References IS_STRING, kARRAY, subtype, and type.

Referenced by Catalog_Namespace::Catalog::delDictionary(), anonymous_namespace{TypedDataAccessors.h}::get_element_size(), Catalog_Namespace::Catalog::getColumnDictDirectory(), ddl_utils::set_default_encoding(), ddl_utils::validate_and_set_array_size(), ddl_utils::validate_and_set_dictionary_encoding(), and ddl_utils::validate_and_set_none_encoding().

416 { return (type == kARRAY) && IS_STRING(subtype); }
SQLTypes subtype
Definition: sqltypes.h:656
#define IS_STRING(T)
Definition: sqltypes.h:172
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

bool SQLTypeInfo::is_time ( ) const
inline

Definition at line 421 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(), NumericConverterFactory< SOURCE_TYPE, TARGET_TYPE >::create(), anonymous_namespace{ArrowResultSetConverter.cpp}::create_or_append_validity(), datum_to_string(), Analyzer::Constant::do_cast(), 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(), numeric_type_name(), Parser::InsertIntoTableAsSelectStmt::populateData(), anonymous_namespace{TypedDataAccessors.h}::put_scalar(), Executor::reduceResults(), import_export::StringToArray(), ExpressionRange::typeSupportsRange(), Fragmenter_Namespace::InsertOrderFragmenter::updateColumn(), anonymous_namespace{InputMetadata.cpp}::uses_int_meta(), and ddl_utils::validate_and_set_fixed_encoding().

421 { return is_datetime(type); }
SQLTypes type
Definition: sqltypes.h:655
constexpr auto is_datetime(SQLTypes type)
Definition: sqltypes.h:201

+ 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_timestamp ( ) const
inline

Definition at line 652 of file sqltypes.h.

References kTIMESTAMP, and type.

Referenced by CodeGenerator::codegenCast(), NumericConverterFactory< SOURCE_TYPE, TARGET_TYPE >::create(), anonymous_namespace{ExpressionRange.cpp}::getDateTimePrecisionCastRange(), and Parser::InsertIntoTableAsSelectStmt::populateData().

652 { return type == kTIMESTAMP; }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

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

Definition at line 424 of file sqltypes.h.

References kARRAY, size, and type.

424 { return type == kARRAY && size <= 0; }
SQLTypes type
Definition: sqltypes.h:655
bool SQLTypeInfo::is_varlen_indeed ( ) const
inline

Definition at line 436 of file sqltypes.h.

References is_fixlen_array(), and is_varlen().

436  {
437  // SQLTypeInfo.is_varlen() is broken with fixedlen array now
438  // and seems left broken for some concern, so fix it locally
439  return is_varlen() && !is_fixlen_array();
440  }
bool is_varlen() const
Definition: sqltypes.h:430
bool is_fixlen_array() const
Definition: sqltypes.h:425

+ Here is the call graph for this function:

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

Definition at line 446 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.

446  {
447  return type != rhs.get_type() || subtype != rhs.get_subtype() ||
448  dimension != rhs.get_dimension() || scale != rhs.get_scale() ||
449  compression != rhs.get_compression() ||
452  notnull != rhs.get_notnull();
453  }
HOST DEVICE SQLTypes get_subtype() const
Definition: sqltypes.h:259
HOST DEVICE int get_scale() const
Definition: sqltypes.h:263
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:258
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:266
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:260
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:267
SQLTypes type
Definition: sqltypes.h:655
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:265
#define TRANSIENT_DICT(ID)
Definition: sqltypes.h:198
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657

+ Here is the call graph for this function:

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

Definition at line 474 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.

474  {
475  type = rhs.get_type();
476  subtype = rhs.get_subtype();
477  dimension = rhs.get_dimension();
478  scale = rhs.get_scale();
479  notnull = rhs.get_notnull();
481  comp_param = rhs.get_comp_param();
482  size = rhs.get_size();
483  }
HOST DEVICE SQLTypes get_subtype() const
Definition: sqltypes.h:259
HOST DEVICE int get_size() const
Definition: sqltypes.h:268
HOST DEVICE int get_scale() const
Definition: sqltypes.h:263
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:258
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:266
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:260
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:267
SQLTypes type
Definition: sqltypes.h:655
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:265
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657

+ Here is the call graph for this function:

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

Definition at line 454 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.

454  {
455  return type == rhs.get_type() && subtype == rhs.get_subtype() &&
456  dimension == rhs.get_dimension() && scale == rhs.get_scale() &&
457  compression == rhs.get_compression() &&
460  notnull == rhs.get_notnull();
461  }
HOST DEVICE SQLTypes get_subtype() const
Definition: sqltypes.h:259
HOST DEVICE int get_scale() const
Definition: sqltypes.h:263
HOST DEVICE SQLTypes get_type() const
Definition: sqltypes.h:258
SQLTypes subtype
Definition: sqltypes.h:656
bool notnull
Definition: sqltypes.h:659
EncodingType compression
Definition: sqltypes.h:660
HOST DEVICE EncodingType get_compression() const
Definition: sqltypes.h:266
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:260
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:267
SQLTypes type
Definition: sqltypes.h:655
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:265
#define TRANSIENT_DICT(ID)
Definition: sqltypes.h:198
int comp_param
Definition: sqltypes.h:661
int dimension
Definition: sqltypes.h:657

+ Here is the call graph for this function:

void SQLTypeInfo::set_dimension ( int  d)
inline

Definition at line 350 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().

350 { dimension = d; }
int dimension
Definition: sqltypes.h:657

+ Here is the caller graph for this function:

void SQLTypeInfo::set_fixed_size ( )
inline

Definition at line 357 of file sqltypes.h.

References get_storage_size(), and size.

Referenced by Parser::QuerySpec::analyze_group_by(), Analyzer::BinOper::common_numeric_type(), import_export::Importer::gdalToColumnDescriptors(), Parser::OperExpr::normalize(), and ddl_utils::validate_and_set_array_size().

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

+ 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 352 of file sqltypes.h.

References dimension.

Referenced by import_export::Importer::gdalToColumnDescriptors(), Geo_namespace::GeoTypesFactory::getGeoColumns(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), and ddl_utils::validate_and_set_type().

352 { dimension = d; }
int dimension
Definition: sqltypes.h:657

+ Here is the caller graph for this function:

void SQLTypeInfo::set_notnull ( bool  n)
inline
void SQLTypeInfo::set_output_srid ( int  s)
inline

Definition at line 354 of file sqltypes.h.

References scale.

Referenced by import_export::Importer::gdalToColumnDescriptors(), Geo_namespace::GeoTypesFactory::getGeoColumns(), RelAlgTranslator::translateGeoBinaryConstructor(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), and ddl_utils::validate_and_set_type().

354 { scale = s; }

+ Here is the caller graph for this function:

void SQLTypeInfo::set_precision ( int  d)
inline

Definition at line 351 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().

351 { dimension = d; }
int dimension
Definition: sqltypes.h:657

+ Here is the caller graph for this function:

void SQLTypeInfo::set_scale ( int  s)
inline
void SQLTypeInfo::set_size ( int  s)
inline

Definition at line 356 of file sqltypes.h.

References size.

Referenced by Catalog_Namespace::Catalog::buildMaps(), Catalog_Namespace::Catalog::createTable(), Catalog_Namespace::Catalog::expandGeoColumn(), File_Namespace::FileBuffer::readMetadata(), Catalog_Namespace::Catalog::setColumnDictionary(), RelAlgTranslator::translateGeoLiteral(), and ddl_utils::validate_and_set_array_size().

356 { size = s; }

+ Here is the caller graph for this function:

HOST DEVICE void SQLTypeInfo::set_subtype ( SQLTypes  st)
inline

Definition at line 349 of file sqltypes.h.

References subtype.

Referenced by Parser::ArrayLiteral::analyze(), Catalog_Namespace::Catalog::buildMaps(), Catalog_Namespace::Catalog::expandGeoColumn(), import_export::Importer::gdalToColumnDescriptors(), File_Namespace::FileBuffer::readMetadata(), RelAlgTranslator::translateGeoFunctionArg(), RelAlgTranslator::translateGeoLiteral(), and ddl_utils::validate_and_set_type().

349 { subtype = st; }
SQLTypes subtype
Definition: sqltypes.h:656

+ Here is the caller graph for this function:

HOST DEVICE void SQLTypeInfo::set_type ( SQLTypes  t)
inline

Definition at line 348 of file sqltypes.h.

References type.

Referenced by Catalog_Namespace::Catalog::buildMaps(), import_export::Importer::gdalToColumnDescriptors(), Geo_namespace::GeoTypesFactory::getGeoColumnsImpl(), File_Namespace::FileBuffer::readMetadata(), RelAlgTranslator::translateGeoBinaryConstructor(), RelAlgTranslator::translateGeoFunctionArg(), and ddl_utils::validate_and_set_type().

348 { type = t; }
SQLTypes type
Definition: sqltypes.h:655

+ Here is the caller graph for this function:

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

Definition at line 393 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(), operator<<(), and TargetInfo::toString().

393  {
394  return concat("(",
395  type_name[static_cast<int>(type)],
396  ", ",
397  get_dimension(),
398  ", ",
399  get_scale(),
400  ", ",
401  get_notnull() ? "not nullable" : "nullable",
402  ", ",
404  ", ",
405  get_comp_param(),
406  ", ",
407  type_name[static_cast<int>(subtype)],
408  ": ",
409  get_size(),
410  ": ",
412  ")");
413  }
HOST DEVICE int get_size() const
Definition: sqltypes.h:268
HOST DEVICE int get_scale() const
Definition: sqltypes.h:263
std::string get_compression_name() const
Definition: sqltypes.h:392
std::string concat(Types &&...parms)
static std::string type_name[kSQLTYPE_LAST]
Definition: sqltypes.h:664
SQLTypes subtype
Definition: sqltypes.h:656
HOST DEVICE int get_dimension() const
Definition: sqltypes.h:260
HOST DEVICE int get_comp_param() const
Definition: sqltypes.h:267
SQLTypes type
Definition: sqltypes.h:655
HOST DEVICE bool get_notnull() const
Definition: sqltypes.h:265
SQLTypeInfo get_elem_type() const
Definition: sqltypes.h:622

+ 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 665 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"}

Definition at line 664 of file sqltypes.h.

Referenced by get_type_name(), and to_string().


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