OmniSciDB  c1a53651b2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ExtensionFunctionsWhitelist.cpp File Reference
#include "QueryEngine/ExtensionFunctionsWhitelist.h"
#include <boost/algorithm/string/join.hpp>
#include <iostream>
#include "QueryEngine/ExtensionFunctionsBinding.h"
#include "QueryEngine/JsonAccessors.h"
#include "QueryEngine/TableFunctions/TableFunctionsFactory.h"
#include "Shared/StringTransform.h"
+ Include dependency graph for ExtensionFunctionsWhitelist.cpp:

Go to the source code of this file.

Namespaces

 anonymous_namespace{ExtensionFunctionsWhitelist.cpp}
 

Macros

#define EXTARGTYPECASE(EXTARGTYPE, ELEMTYPE, ENCODING, ARRAYENCODING)
 

Typedefs

using SignatureMap = std::unordered_map< std::string, std::vector< ExtensionFunction >>
 

Functions

std::string anonymous_namespace{ExtensionFunctionsWhitelist.cpp}::serialize_type (const ExtArgumentType type, bool byval=true, bool declare=false)
 
std::string anonymous_namespace{ExtensionFunctionsWhitelist.cpp}::drop_suffix (const std::string &str)
 
SQLTypeInfo ext_arg_type_to_type_info (const ExtArgumentType ext_arg_type)
 
ExtArgumentType anonymous_namespace{ExtensionFunctionsWhitelist.cpp}::deserialize_type (const std::string &type_name)
 
std::string toString (const ExtArgumentType &sig_type)
 

Macro Definition Documentation

#define EXTARGTYPECASE (   EXTARGTYPE,
  ELEMTYPE,
  ENCODING,
  ARRAYENCODING 
)
Value:
case ExtArgumentType::EXTARGTYPE: \
type = ELEMTYPE; \
c = kENCODING_##ENCODING; \
break; \
case ExtArgumentType::Array##EXTARGTYPE: \
c = kENCODING_##ENCODING; \
subtype = ELEMTYPE; \
break; \
case ExtArgumentType::Column##EXTARGTYPE: \
c = kENCODING_##ENCODING; \
subtype = ELEMTYPE; \
break; \
case ExtArgumentType::ColumnList##EXTARGTYPE: \
c = kENCODING_##ENCODING; \
subtype = ELEMTYPE; \
break; \
case ExtArgumentType::ColumnArray##EXTARGTYPE: \
subtype = ELEMTYPE; \
c = kENCODING_##ARRAYENCODING; \
break; \
case ExtArgumentType::ColumnListArray##EXTARGTYPE: \
subtype = ELEMTYPE; \
c = kENCODING_##ARRAYENCODING; \
break;

Referenced by ext_arg_type_to_type_info().

Typedef Documentation

using SignatureMap = std::unordered_map<std::string, std::vector<ExtensionFunction>>

Definition at line 900 of file ExtensionFunctionsWhitelist.cpp.

Function Documentation

SQLTypeInfo ext_arg_type_to_type_info ( const ExtArgumentType  ext_arg_type)

Definition at line 313 of file ExtensionFunctionsWhitelist.cpp.

References Bool, ColumnTimestamp, DayTimeInterval, Double, EXTARGTYPECASE, logger::FATAL, Float, Int16, Int32, Int64, Int8, kBIGINT, kBOOLEAN, kCOLUMN, kDOUBLE, kENCODING_NONE, kFLOAT, kINT, kINTERVAL_DAY_TIME, kINTERVAL_YEAR_MONTH, kNULLT, kSMALLINT, kTEXT, kTIMESTAMP, kTINYINT, LOG, anonymous_namespace{Utm.h}::n, NONE, anonymous_namespace{ExtensionFunctionsWhitelist.cpp}::serialize_type(), Timestamp, run_benchmark_import::type, UNREACHABLE, and YearMonthTimeInterval.

Referenced by bind_function(), RelAlgExecutor::createTableFunctionWorkUnit(), table_functions::anonymous_namespace{TableFunctionsFactory.cpp}::ext_arg_pointer_type_to_type_info(), table_functions::anonymous_namespace{TableFunctionsFactory.cpp}::ext_arg_type_to_type_info_output(), ExtensionFunctionsWhitelist::get_ext_funcs(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_arguments(), anonymous_namespace{ExtensionFunctionsBinding.cpp}::match_numeric_argument(), and RelAlgTranslator::translateFunction().

313  {
314  SQLTypes type = kNULLT;
315  int d = 0;
316  int s = 0;
317  bool n = false;
319  int p = 0;
320  SQLTypes subtype = kNULLT;
321 
322 #define EXTARGTYPECASE(EXTARGTYPE, ELEMTYPE, ENCODING, ARRAYENCODING) \
323  case ExtArgumentType::EXTARGTYPE: \
324  type = ELEMTYPE; \
325  c = kENCODING_##ENCODING; \
326  break; \
327  case ExtArgumentType::Array##EXTARGTYPE: \
328  type = kARRAY; \
329  c = kENCODING_##ENCODING; \
330  subtype = ELEMTYPE; \
331  break; \
332  case ExtArgumentType::Column##EXTARGTYPE: \
333  type = kCOLUMN; \
334  c = kENCODING_##ENCODING; \
335  subtype = ELEMTYPE; \
336  break; \
337  case ExtArgumentType::ColumnList##EXTARGTYPE: \
338  type = kCOLUMN_LIST; \
339  c = kENCODING_##ENCODING; \
340  subtype = ELEMTYPE; \
341  break; \
342  case ExtArgumentType::ColumnArray##EXTARGTYPE: \
343  type = kCOLUMN; \
344  subtype = ELEMTYPE; \
345  c = kENCODING_##ARRAYENCODING; \
346  break; \
347  case ExtArgumentType::ColumnListArray##EXTARGTYPE: \
348  type = kCOLUMN_LIST; \
349  subtype = ELEMTYPE; \
350  c = kENCODING_##ARRAYENCODING; \
351  break;
352 
353  switch (ext_arg_type) {
354  EXTARGTYPECASE(Bool, kBOOLEAN, NONE, ARRAY);
355  EXTARGTYPECASE(Int8, kTINYINT, NONE, ARRAY);
357  EXTARGTYPECASE(Int32, kINT, NONE, ARRAY);
358  EXTARGTYPECASE(Int64, kBIGINT, NONE, ARRAY);
359  EXTARGTYPECASE(Float, kFLOAT, NONE, ARRAY);
360  EXTARGTYPECASE(Double, kDOUBLE, NONE, ARRAY);
362  EXTARGTYPECASE(TextEncodingDict, kTEXT, DICT, ARRAY_DICT);
363  // TODO: EXTARGTYPECASE(Timestamp, kTIMESTAMP, NONE, ARRAY);
365  type = kTIMESTAMP;
366  c = kENCODING_NONE;
367  d = 9;
368  break;
370  type = kCOLUMN;
371  subtype = kTIMESTAMP;
372  c = kENCODING_NONE;
373  d = 9;
374  break;
376  type = kINTERVAL_DAY_TIME;
377  break;
379  type = kINTERVAL_YEAR_MONTH;
380  break;
381  default:
382  LOG(FATAL) << "ExtArgumentType `" << serialize_type(ext_arg_type)
383  << "` cannot be converted to SQLTypes.";
384  UNREACHABLE();
385  }
386  return SQLTypeInfo(type, d, s, n, c, p, subtype);
387 }
SQLTypes
Definition: sqltypes.h:55
#define LOG(tag)
Definition: Logger.h:285
#define UNREACHABLE()
Definition: Logger.h:337
EncodingType
Definition: sqltypes.h:230
#define EXTARGTYPECASE(EXTARGTYPE, ELEMTYPE, ENCODING, ARRAYENCODING)
Definition: sqltypes.h:69
std::string serialize_type(const ExtArgumentType type, bool byval=true, bool declare=false)
Definition: sqltypes.h:62
constexpr double n
Definition: Utm.h:38

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::string toString ( const ExtArgumentType sig_type)

Definition at line 988 of file ExtensionFunctionsWhitelist.cpp.

References ExtensionFunctionsWhitelist::toString().

988  {
989  return ExtensionFunctionsWhitelist::toString(sig_type);
990 }
static std::string toString(const std::vector< ExtensionFunction > &ext_funcs, std::string tab="")

+ Here is the call graph for this function: