MySQL 8.3.0
Source Code Documentation
anonymous_namespace{item_create.cc}::Function_factory< Instantiator_fn > Class Template Reference

Factory for creating function objects. More...

Inheritance diagram for anonymous_namespace{item_create.cc}::Function_factory< Instantiator_fn >:
[legend]

Public Member Functions

Itemcreate_func (THD *thd, LEX_STRING function_name, PT_item_list *item_list) override
 The builder create method. More...
 

Static Public Attributes

static Function_factory< Instantiator_fn > s_singleton
 

Private Member Functions

 Function_factory ()=default
 

Private Attributes

Instantiator_fn m_instantiator
 

Additional Inherited Members

- Protected Member Functions inherited from Create_func
 Create_func ()=default
 
virtual ~Create_func ()=default
 

Detailed Description

template<typename Instantiator_fn>
class anonymous_namespace{item_create.cc}::Function_factory< Instantiator_fn >

Factory for creating function objects.

Performs validation check that the number of arguments is correct, then calls upon the instantiator function to instantiate the function object.

Template Parameters
Instantiator_fnA class that is expected to contain the following:
  • Min_argcount: The minimal number of arguments required to call the function. If the parameter count is less, an SQL error is raised and nullptr is returned.
  • Max_argcount: The maximum number of arguments required to call the function. If the parameter count is greater, an SQL error is raised and nullptr is returned.
  • Item *instantiate(THD *, PT_item_list *): Should construct an Item.

Constructor & Destructor Documentation

◆ Function_factory()

template<typename Instantiator_fn >
anonymous_namespace{item_create.cc}::Function_factory< Instantiator_fn >::Function_factory ( )
privatedefault

Member Function Documentation

◆ create_func()

template<typename Instantiator_fn >
Item * anonymous_namespace{item_create.cc}::Function_factory< Instantiator_fn >::create_func ( THD thd,
LEX_STRING  name,
PT_item_list item_list 
)
inlineoverridevirtual

The builder create method.

Given the function name and list or arguments, this method creates an Item that represents the function call. In case or errors, a NULL item is returned, and an error is reported. Note that the thd object may be modified by the builder. In particular, the following members/methods can be set/called, depending on the function called and the function possible side effects.

  • thd->lex->binlog_row_based_if_mixed
  • thd->lex->current_context()
  • thd->lex->safe_to_cache_query
  • thd->lex->uncacheable(UNCACHEABLE_SIDEEFFECT)
  • thd->lex->uncacheable(UNCACHEABLE_RAND)
  • thd->lex->add_time_zone_tables_to_query_tables(thd)
Parameters
thdThe current thread
nameThe function name
item_listThe list of arguments to the function, can be NULL
Returns
An item representing the parsed function call, or NULL

Implements Create_func.

Member Data Documentation

◆ m_instantiator

template<typename Instantiator_fn >
Instantiator_fn anonymous_namespace{item_create.cc}::Function_factory< Instantiator_fn >::m_instantiator
private

◆ s_singleton

template<typename Instantiator_fn >
Function_factory< Instantiator_fn > anonymous_namespace{item_create.cc}::Function_factory< Instantiator_fn >::s_singleton
static

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