Autonomy Software C++ 24.5.1
Welcome to the Autonomy Software repository of the Mars Rover Design Team (MRDT) at Missouri University of Science and Technology (Missouri S&T)! API reference contains the source code and other resources for the development of the autonomy software for our Mars rover. The Autonomy Software project aims to compete in the University Rover Challenge (URC) by demonstrating advanced autonomous capabilities and robust navigation algorithms.
Loading...
Searching...
No Matches
duckdb::ScalarFunction Class Reference
Inheritance diagram for duckdb::ScalarFunction:
Collaboration diagram for duckdb::ScalarFunction:

Public Member Functions

DUCKDB_API ScalarFunction (string name, vector< LogicalType > arguments, LogicalType return_type, scalar_function_t function, bind_scalar_function_t bind=nullptr, bind_scalar_function_extended_t bind_extended=nullptr, function_statistics_t statistics=nullptr, init_local_state_t init_local_state=nullptr, LogicalType varargs=LogicalType(LogicalTypeId::INVALID), FunctionStability stability=FunctionStability::CONSISTENT, FunctionNullHandling null_handling=FunctionNullHandling::DEFAULT_NULL_HANDLING, bind_lambda_function_t bind_lambda=nullptr)
 
DUCKDB_API ScalarFunction (vector< LogicalType > arguments, LogicalType return_type, scalar_function_t function, bind_scalar_function_t bind=nullptr, bind_scalar_function_extended_t bind_extended=nullptr, function_statistics_t statistics=nullptr, init_local_state_t init_local_state=nullptr, LogicalType varargs=LogicalType(LogicalTypeId::INVALID), FunctionStability stability=FunctionStability::CONSISTENT, FunctionNullHandling null_handling=FunctionNullHandling::DEFAULT_NULL_HANDLING, bind_lambda_function_t bind_lambda=nullptr)
 
bool HasFunctionCallback () const
 
scalar_function_t GetFunctionCallback () const
 
void SetFunctionCallback (scalar_function_t callback)
 
bool HasBindCallback () const
 
bind_scalar_function_t GetBindCallback () const
 
void SetBindCallback (bind_scalar_function_t callback)
 
bool HasBindExtendedCallback () const
 
bind_scalar_function_extended_t GetBindExtendedCallback () const
 
void SetBindExtendedCallback (bind_scalar_function_extended_t callback)
 
bool HasBindLambdaCallback () const
 
bind_lambda_function_t GetBindLambdaCallback () const
 
void SetBindLambdaCallback (bind_lambda_function_t callback)
 
bool HasBindExpressionCallback () const
 
function_bind_expression_t GetBindExpressionCallback () const
 
void SetBindExpressionCallback (function_bind_expression_t callback)
 
bool HasInitStateCallback () const
 
init_local_state_t GetInitStateCallback () const
 
void SetInitStateCallback (init_local_state_t callback)
 
bool HasStatisticsCallback () const
 
function_statistics_t GetStatisticsCallback () const
 
void SetStatisticsCallback (function_statistics_t callback)
 
bool HasModifiedDatabasesCallback () const
 
get_modified_databases_t GetModifiedDatabasesCallback () const
 
void SetModifiedDatabasesCallback (get_modified_databases_t callback)
 
bool HasSerializationCallbacks () const
 
void SetSerializeCallback (function_serialize_t callback)
 
void SetDeserializeCallback (function_deserialize_t callback)
 
function_serialize_t GetSerializeCallback () const
 
function_deserialize_t GetDeserializeCallback () const
 
bool HasExtraFunctionInfo () const
 
ScalarFunctionInfoGetExtraFunctionInfo () const
 
void SetExtraFunctionInfo (shared_ptr< ScalarFunctionInfo > info)
 
template<class T , class... ARGS>
void SetExtraFunctionInfo (ARGS &&... args)
 
DUCKDB_API bool operator== (const ScalarFunction &rhs) const
 
DUCKDB_API bool operator!= (const ScalarFunction &rhs) const
 
DUCKDB_API bool Equal (const ScalarFunction &rhs) const
 
- Public Member Functions inherited from duckdb::BaseScalarFunction
DUCKDB_API BaseScalarFunction (string name, vector< LogicalType > arguments, LogicalType return_type, FunctionStability stability, LogicalType varargs=LogicalType(LogicalTypeId::INVALID), FunctionNullHandling null_handling=FunctionNullHandling::DEFAULT_NULL_HANDLING, FunctionErrors errors=FunctionErrors::CANNOT_ERROR)
 
void SetReturnType (LogicalType return_type_p)
 
const LogicalTypeGetReturnType () const
 
LogicalTypeGetReturnType ()
 
FunctionStability GetStability () const
 
void SetStability (FunctionStability stability_p)
 
FunctionNullHandling GetNullHandling () const
 
void SetNullHandling (FunctionNullHandling null_handling_p)
 
FunctionErrors GetErrorMode () const
 
void SetErrorMode (FunctionErrors errors_p)
 
void SetFallible ()
 Set this functions error-mode as fallible (can throw runtime errors)
 
void SetVolatile ()
 Set this functions stability as volatile (can not be cached per row)
 
void SetCollationHandling (FunctionCollationHandling collation_handling_p)
 
FunctionCollationHandling GetCollationHandling () const
 
DUCKDB_API hash_t Hash () const
 
DUCKDB_API string ToString () const override
 
- Public Member Functions inherited from duckdb::SimpleFunction
DUCKDB_API SimpleFunction (string name, vector< LogicalType > arguments, LogicalType varargs=LogicalType(LogicalTypeId::INVALID))
 
DUCKDB_API bool HasVarArgs () const
 
- Public Member Functions inherited from duckdb::Function
DUCKDB_API Function (string name)
 

Static Public Member Functions

static DUCKDB_API void NopFunction (DataChunk &input, ExpressionState &state, Vector &result)
 
template<class TA , class TR , class OP >
static void UnaryFunction (DataChunk &input, ExpressionState &state, Vector &result)
 
template<class TA , class TB , class TR , class OP >
static void BinaryFunction (DataChunk &input, ExpressionState &state, Vector &result)
 
template<class TA , class TB , class TC , class TR , class OP >
static void TernaryFunction (DataChunk &input, ExpressionState &state, Vector &result)
 
template<class OP >
static scalar_function_t GetScalarUnaryFunction (const LogicalType &type)
 
template<class TR , class OP >
static scalar_function_t GetScalarUnaryFunctionFixedReturn (const LogicalType &type)
 
- Static Public Member Functions inherited from duckdb::BaseScalarFunction
static BaseScalarFunction SetReturnsError (BaseScalarFunction &function)
 
- Static Public Member Functions inherited from duckdb::Function
static DUCKDB_API string CallToString (const string &catalog_name, const string &schema_name, const string &name, const vector< LogicalType > &arguments, const LogicalType &varargs=LogicalType::INVALID)
 Returns the formatted string name(arg1, arg2, ...)
 
static DUCKDB_API string CallToString (const string &catalog_name, const string &schema_name, const string &name, const vector< LogicalType > &arguments, const LogicalType &varargs, const LogicalType &return_type)
 Returns the formatted string name(arg1, arg2..) -> return_type.
 
static DUCKDB_API string CallToString (const string &catalog_name, const string &schema_name, const string &name, const vector< LogicalType > &arguments, const named_parameter_type_map_t &named_parameters)
 Returns the formatted string name(arg1, arg2.., np1=a, np2=b, ...)
 
static DUCKDB_API void EraseArgument (SimpleFunction &bound_function, vector< unique_ptr< Expression > > &arguments, idx_t argument_index)
 Used in the bind to erase an argument from a function.
 

Public Attributes

scalar_function_t function
 The main scalar function to execute.
 
bind_scalar_function_t bind
 The bind function (if any)
 
bind_scalar_function_extended_t bind_extended = nullptr
 The bind function that receives extra input to perform more complex binding operations (if any)
 
init_local_state_t init_local_state
 Init thread local state for the function (if any)
 
function_statistics_t statistics
 The statistics propagation function (if any)
 
bind_lambda_function_t bind_lambda
 The lambda bind function (if any)
 
function_bind_expression_t bind_expression
 Function to bind the result function expression directly (if any)
 
get_modified_databases_t get_modified_databases
 Gets the modified databases (if any)
 
function_serialize_t serialize
 
function_deserialize_t deserialize
 
shared_ptr< ScalarFunctionInfofunction_info
 Additional function info, passed to the bind.
 
- Public Attributes inherited from duckdb::BaseScalarFunction
LogicalType return_type
 Return type of the function.
 
FunctionStability stability
 The stability of the function (see FunctionStability enum for more info)
 
FunctionNullHandling null_handling
 How this function handles NULL values.
 
FunctionErrors errors
 Whether or not this function can throw an error.
 
FunctionCollationHandling collation_handling
 Collation handling of the function.
 
- Public Attributes inherited from duckdb::SimpleFunction
vector< LogicalTypearguments
 The set of arguments of the function.
 
vector< LogicalTypeoriginal_arguments
 
LogicalType varargs
 
- Public Attributes inherited from duckdb::Function
string name
 The name of the function.
 
string extra_info
 Additional Information to specify function from it's name.
 
string catalog_name
 
string schema_name
 

Member Function Documentation

◆ HasFunctionCallback()

bool duckdb::ScalarFunction::HasFunctionCallback ( ) const
inline
16538{ return function != nullptr; }
scalar_function_t function
The main scalar function to execute.
Definition duckdb.hpp:16594

◆ GetFunctionCallback()

scalar_function_t duckdb::ScalarFunction::GetFunctionCallback ( ) const
inline
16539{ return function; }

◆ SetFunctionCallback()

void duckdb::ScalarFunction::SetFunctionCallback ( scalar_function_t  callback)
inline
16540{ function = std::move(callback); }

◆ HasBindCallback()

bool duckdb::ScalarFunction::HasBindCallback ( ) const
inline
16542{ return bind != nullptr; };
bind_scalar_function_t bind
The bind function (if any)
Definition duckdb.hpp:16596

◆ GetBindCallback()

bind_scalar_function_t duckdb::ScalarFunction::GetBindCallback ( ) const
inline
16543{ return bind; };

◆ SetBindCallback()

void duckdb::ScalarFunction::SetBindCallback ( bind_scalar_function_t  callback)
inline
16544{ bind = callback; }

◆ HasBindExtendedCallback()

bool duckdb::ScalarFunction::HasBindExtendedCallback ( ) const
inline
16546{ return bind_extended != nullptr; }
bind_scalar_function_extended_t bind_extended
The bind function that receives extra input to perform more complex binding operations (if any)
Definition duckdb.hpp:16598

◆ GetBindExtendedCallback()

bind_scalar_function_extended_t duckdb::ScalarFunction::GetBindExtendedCallback ( ) const
inline
16547{ return bind_extended; }

◆ SetBindExtendedCallback()

void duckdb::ScalarFunction::SetBindExtendedCallback ( bind_scalar_function_extended_t  callback)
inline
16548{ bind_extended = callback; }

◆ HasBindLambdaCallback()

bool duckdb::ScalarFunction::HasBindLambdaCallback ( ) const
inline
16550{ return bind_lambda != nullptr; }
bind_lambda_function_t bind_lambda
The lambda bind function (if any)
Definition duckdb.hpp:16604

◆ GetBindLambdaCallback()

bind_lambda_function_t duckdb::ScalarFunction::GetBindLambdaCallback ( ) const
inline
16551{ return bind_lambda; }

◆ SetBindLambdaCallback()

void duckdb::ScalarFunction::SetBindLambdaCallback ( bind_lambda_function_t  callback)
inline
16552{ bind_lambda = callback; }

◆ HasBindExpressionCallback()

bool duckdb::ScalarFunction::HasBindExpressionCallback ( ) const
inline
16554{ return bind_expression != nullptr; }
function_bind_expression_t bind_expression
Function to bind the result function expression directly (if any)
Definition duckdb.hpp:16606

◆ GetBindExpressionCallback()

function_bind_expression_t duckdb::ScalarFunction::GetBindExpressionCallback ( ) const
inline
16555{ return bind_expression; }

◆ SetBindExpressionCallback()

void duckdb::ScalarFunction::SetBindExpressionCallback ( function_bind_expression_t  callback)
inline
16556{ bind_expression = callback; }

◆ HasInitStateCallback()

bool duckdb::ScalarFunction::HasInitStateCallback ( ) const
inline
16558{ return init_local_state != nullptr; }
init_local_state_t init_local_state
Init thread local state for the function (if any)
Definition duckdb.hpp:16600

◆ GetInitStateCallback()

init_local_state_t duckdb::ScalarFunction::GetInitStateCallback ( ) const
inline
16559{ return init_local_state; }

◆ SetInitStateCallback()

void duckdb::ScalarFunction::SetInitStateCallback ( init_local_state_t  callback)
inline
16560{ init_local_state = callback; }

◆ HasStatisticsCallback()

bool duckdb::ScalarFunction::HasStatisticsCallback ( ) const
inline
16562{ return statistics != nullptr; }
function_statistics_t statistics
The statistics propagation function (if any)
Definition duckdb.hpp:16602

◆ GetStatisticsCallback()

function_statistics_t duckdb::ScalarFunction::GetStatisticsCallback ( ) const
inline
16563{ return statistics; }

◆ SetStatisticsCallback()

void duckdb::ScalarFunction::SetStatisticsCallback ( function_statistics_t  callback)
inline
16564{ statistics = callback; }

◆ HasModifiedDatabasesCallback()

bool duckdb::ScalarFunction::HasModifiedDatabasesCallback ( ) const
inline
16566{ return get_modified_databases != nullptr; }
get_modified_databases_t get_modified_databases
Gets the modified databases (if any)
Definition duckdb.hpp:16608

◆ GetModifiedDatabasesCallback()

get_modified_databases_t duckdb::ScalarFunction::GetModifiedDatabasesCallback ( ) const
inline
16567{ return get_modified_databases; }

◆ SetModifiedDatabasesCallback()

void duckdb::ScalarFunction::SetModifiedDatabasesCallback ( get_modified_databases_t  callback)
inline
16568{ get_modified_databases = callback; }

◆ HasSerializationCallbacks()

bool duckdb::ScalarFunction::HasSerializationCallbacks ( ) const
inline
16570{ return serialize != nullptr && deserialize != nullptr; }

◆ SetSerializeCallback()

void duckdb::ScalarFunction::SetSerializeCallback ( function_serialize_t  callback)
inline
16571{ serialize = callback; }

◆ SetDeserializeCallback()

void duckdb::ScalarFunction::SetDeserializeCallback ( function_deserialize_t  callback)
inline
16572{ deserialize = callback; }

◆ GetSerializeCallback()

function_serialize_t duckdb::ScalarFunction::GetSerializeCallback ( ) const
inline
16573{ return serialize; }

◆ GetDeserializeCallback()

function_deserialize_t duckdb::ScalarFunction::GetDeserializeCallback ( ) const
inline
16574{ return deserialize; }

◆ HasExtraFunctionInfo()

bool duckdb::ScalarFunction::HasExtraFunctionInfo ( ) const
inline
16577 {
16578 return function_info != nullptr;
16579 }
shared_ptr< ScalarFunctionInfo > function_info
Additional function info, passed to the bind.
Definition duckdb.hpp:16613

◆ GetExtraFunctionInfo()

ScalarFunctionInfo & duckdb::ScalarFunction::GetExtraFunctionInfo ( ) const
inline
16580 {
16581 D_ASSERT(function_info.get());
16582 return *function_info;
16583 }

◆ SetExtraFunctionInfo() [1/2]

void duckdb::ScalarFunction::SetExtraFunctionInfo ( shared_ptr< ScalarFunctionInfo info)
inline
16584 {
16585 function_info = std::move(info);
16586 }

◆ SetExtraFunctionInfo() [2/2]

template<class T , class... ARGS>
void duckdb::ScalarFunction::SetExtraFunctionInfo ( ARGS &&...  args)
inline
16588 {
16589 function_info = make_shared_ptr<T>(std::forward<ARGS>(args)...);
16590 }

◆ UnaryFunction()

template<class TA , class TR , class OP >
static void duckdb::ScalarFunction::UnaryFunction ( DataChunk input,
ExpressionState state,
Vector result 
)
inlinestatic
16625 {
16626 D_ASSERT(input.ColumnCount() >= 1);
16627 UnaryExecutor::Execute<TA, TR, OP>(input.data[0], result, input.size());
16628 }

◆ BinaryFunction()

template<class TA , class TB , class TR , class OP >
static void duckdb::ScalarFunction::BinaryFunction ( DataChunk input,
ExpressionState state,
Vector result 
)
inlinestatic
16631 {
16632 D_ASSERT(input.ColumnCount() == 2);
16633 BinaryExecutor::ExecuteStandard<TA, TB, TR, OP>(input.data[0], input.data[1], result, input.size());
16634 }

◆ TernaryFunction()

template<class TA , class TB , class TC , class TR , class OP >
static void duckdb::ScalarFunction::TernaryFunction ( DataChunk input,
ExpressionState state,
Vector result 
)
inlinestatic
16637 {
16638 D_ASSERT(input.ColumnCount() == 3);
16639 TernaryExecutor::ExecuteStandard<TA, TB, TC, TR, OP>(input.data[0], input.data[1], input.data[2], result,
16640 input.size());
16641 }

◆ GetScalarUnaryFunction()

template<class OP >
static scalar_function_t duckdb::ScalarFunction::GetScalarUnaryFunction ( const LogicalType type)
inlinestatic
16645 {
16647 switch (type.id()) {
16648 case LogicalTypeId::TINYINT:
16649 function = &ScalarFunction::UnaryFunction<int8_t, int8_t, OP>;
16650 break;
16651 case LogicalTypeId::SMALLINT:
16652 function = &ScalarFunction::UnaryFunction<int16_t, int16_t, OP>;
16653 break;
16654 case LogicalTypeId::INTEGER:
16655 function = &ScalarFunction::UnaryFunction<int32_t, int32_t, OP>;
16656 break;
16657 case LogicalTypeId::BIGINT:
16658 function = &ScalarFunction::UnaryFunction<int64_t, int64_t, OP>;
16659 break;
16660 case LogicalTypeId::UTINYINT:
16661 function = &ScalarFunction::UnaryFunction<uint8_t, uint8_t, OP>;
16662 break;
16663 case LogicalTypeId::USMALLINT:
16664 function = &ScalarFunction::UnaryFunction<uint16_t, uint16_t, OP>;
16665 break;
16666 case LogicalTypeId::UINTEGER:
16667 function = &ScalarFunction::UnaryFunction<uint32_t, uint32_t, OP>;
16668 break;
16669 case LogicalTypeId::UBIGINT:
16670 function = &ScalarFunction::UnaryFunction<uint64_t, uint64_t, OP>;
16671 break;
16672 case LogicalTypeId::HUGEINT:
16673 function = &ScalarFunction::UnaryFunction<hugeint_t, hugeint_t, OP>;
16674 break;
16675 case LogicalTypeId::UHUGEINT:
16676 function = &ScalarFunction::UnaryFunction<uhugeint_t, uhugeint_t, OP>;
16677 break;
16678 case LogicalTypeId::FLOAT:
16679 function = &ScalarFunction::UnaryFunction<float, float, OP>;
16680 break;
16681 case LogicalTypeId::DOUBLE:
16682 function = &ScalarFunction::UnaryFunction<double, double, OP>;
16683 break;
16684 default:
16685 throw InternalException("Unimplemented type for GetScalarUnaryFunction");
16686 }
16687 return function;
16688 }
std::function< void(DataChunk &, ExpressionState &, Vector &)> scalar_function_t
The scalar function type.
Definition duckdb.hpp:16489

◆ GetScalarUnaryFunctionFixedReturn()

template<class TR , class OP >
static scalar_function_t duckdb::ScalarFunction::GetScalarUnaryFunctionFixedReturn ( const LogicalType type)
inlinestatic
16691 {
16693 switch (type.id()) {
16694 case LogicalTypeId::TINYINT:
16695 function = &ScalarFunction::UnaryFunction<int8_t, TR, OP>;
16696 break;
16697 case LogicalTypeId::SMALLINT:
16698 function = &ScalarFunction::UnaryFunction<int16_t, TR, OP>;
16699 break;
16700 case LogicalTypeId::INTEGER:
16701 function = &ScalarFunction::UnaryFunction<int32_t, TR, OP>;
16702 break;
16703 case LogicalTypeId::BIGINT:
16704 function = &ScalarFunction::UnaryFunction<int64_t, TR, OP>;
16705 break;
16706 case LogicalTypeId::UTINYINT:
16707 function = &ScalarFunction::UnaryFunction<uint8_t, TR, OP>;
16708 break;
16709 case LogicalTypeId::USMALLINT:
16710 function = &ScalarFunction::UnaryFunction<uint16_t, TR, OP>;
16711 break;
16712 case LogicalTypeId::UINTEGER:
16713 function = &ScalarFunction::UnaryFunction<uint32_t, TR, OP>;
16714 break;
16715 case LogicalTypeId::UBIGINT:
16716 function = &ScalarFunction::UnaryFunction<uint64_t, TR, OP>;
16717 break;
16718 case LogicalTypeId::HUGEINT:
16719 function = &ScalarFunction::UnaryFunction<hugeint_t, TR, OP>;
16720 break;
16721 case LogicalTypeId::UHUGEINT:
16722 function = &ScalarFunction::UnaryFunction<uhugeint_t, TR, OP>;
16723 break;
16724 case LogicalTypeId::FLOAT:
16725 function = &ScalarFunction::UnaryFunction<float, TR, OP>;
16726 break;
16727 case LogicalTypeId::DOUBLE:
16728 function = &ScalarFunction::UnaryFunction<double, TR, OP>;
16729 break;
16730 default:
16731 throw InternalException("Unimplemented type for GetScalarUnaryFunctionFixedReturn");
16732 }
16733 return function;
16734 }

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