![]() |
MySQL 8.0.43
Source Code Documentation
|
The function classes for regular expression functions. More...
#include <assert.h>#include <unicode/uregex.h>#include <optional>#include <string>#include "my_inttypes.h"#include "sql/item_cmpfunc.h"#include "sql/item_strfunc.h"#include "sql/mysqld.h"#include "sql/regexp/regexp_facade.h"#include "sql_string.h"Go to the source code of this file.
Classes | |
| class | Item_func_regexp |
| Base class for all regular expression function classes. More... | |
| class | Item_func_regexp_instr |
| class | Item_func_regexp_like |
| class | Item_func_regexp_replace |
| class | Item_func_regexp_substr |
| class | Item_func_icu_version |
The function classes for regular expression functions.
They have a common base class Item_func_regexp, which is also the prefix of their class names. After the Item_func prefix comes the name of the SQL function, e.g. Item_func_regexp_instr represents the SQL function REGEXP_INSTR.
The type and name resolution procedure is hooked into by the Item_func_regexp class, which implement both Item_result_field::resolve_type() and Item::fix_fields().
The regular expression library doesn't deal with collations at all, but we need them because the 'winning' collation of the pattern and the subject strings dictates case-sensitivity. The winning collation is defined by coercion rules, and we don't delve into that here. See Item_func::agg_arg_charsets_for_comparison(). The call to this function is done in resolve_type() as this appears to be an unwritten convention.
All communication with the regular expression library is done through a Regexp_facade object, instantiated in Item_func_regexp::fix_fields().