1#ifndef SQL_ITEM_REGEXP_FUNC_H_
2#define SQL_ITEM_REGEXP_FUNC_H_
63#include <unicode/uregex.h>
78#if defined(__GNUC__) && !defined(__clang__)
79#pragma GCC diagnostic push
80#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
117 if (the_index != -1 &&
arg_count >=
static_cast<uint
>(the_index) + 1) {
136 if (the_index != -1 &&
arg_count >=
static_cast<uint
>(the_index) + 1) {
155 if (the_index != -1 &&
arg_count >=
static_cast<uint
>(the_index) + 1) {
163 return std::string{};
193 const char *end_not_used;
195 if (res ==
nullptr)
return 0.0;
204 if (res ==
nullptr)
return 0;
246 const char *
func_name()
const override {
return "regexp_instr"; }
251 if (the_index != -1 &&
arg_count >=
static_cast<uint
>(the_index) + 1) {
254 return std::optional<int>();
303 const char *
func_name()
const override {
return "regexp_like"; }
349 const char *
func_name()
const override {
return "regexp_replace"; }
388 const char *
func_name()
const override {
return "regexp_substr"; }
421#if defined(__GNUC__) && !defined(__clang__)
422#pragma GCC diagnostic pop
const CHARSET_INFO * collation
Definition: item.h:185
Definition: my_temporal.h:395
Definition: my_temporal.h:339
Definition: item_regexp_func.h:412
bool do_itemize(Parse_context *pc, Item **res) override
The core function that does the actual itemization.
Definition: item_regexp_func.cc:339
Item_func_icu_version(const POS &pos)
Definition: item_regexp_func.cc:333
Definition: item_regexp_func.h:229
int retopt_arg_pos() const
The position in the argument list of occurrence.
Definition: item_regexp_func.h:281
const char * func_name() const override
Definition: item_regexp_func.h:246
bool fix_fields(THD *thd, Item **arguments) override
Decides on the mode for matching, case sensitivity etc.
Definition: item_regexp_func.cc:159
Item_func_regexp_instr(const POS &pos, PT_item_list *opt_list)
Definition: item_regexp_func.h:231
bool val_date(Date_val *date, my_time_flags_t flags) override
Copy-pasted from Item_int_func.
Definition: item_regexp_func.h:268
String * val_str(String *str) override
Definition: item_regexp_func.h:240
double val_real() override
Definition: item_regexp_func.h:242
int occ_arg_pos() const override
The position in the argument list of 'occurrence'.
Definition: item_regexp_func.h:279
int match_arg_pos() const override
The position in the argument list of match_parameter.
Definition: item_regexp_func.h:282
std::optional< int > return_option() const
The value of the return_option argument, or its default if absent.
Definition: item_regexp_func.h:249
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_regexp_func.h:272
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_regexp_func.h:271
bool resolve_type(THD *) final
Resolves the collation to use for comparison.
Definition: item_regexp_func.cc:181
Item_result result_type() const override
Definition: item_regexp_func.h:236
longlong val_int() override
Definition: item_regexp_func.cc:189
int pos_arg_pos() const override
The position in the argument list of 'position'.
Definition: item_regexp_func.h:278
Definition: item_regexp_func.h:288
bool val_date(Date_val *date, my_time_flags_t flags) override
Copy-pasted from Item_int_func.
Definition: item_regexp_func.h:314
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_regexp_func.h:317
bool is_bool_func() const override
Definition: item_regexp_func.h:305
int occ_arg_pos() const override
The position in the argument list of 'occurrence'.
Definition: item_regexp_func.h:325
bool resolve_type(THD *) final
Resolves the collation to use for comparison.
Definition: item_regexp_func.cc:243
int pos_arg_pos() const override
The position in the argument list of 'position'.
Definition: item_regexp_func.h:324
String * val_str(String *str) override
Definition: item_regexp_func.h:297
longlong val_int() override
Definition: item_regexp_func.cc:219
Item_func_regexp_like(const POS &pos, PT_item_list *opt_list)
Definition: item_regexp_func.h:290
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_regexp_func.h:318
int match_arg_pos() const override
The position in the argument list of match_parameter.
Definition: item_regexp_func.h:326
double val_real() override
Definition: item_regexp_func.h:299
Item_result result_type() const override
Definition: item_regexp_func.h:295
const char * func_name() const override
Definition: item_regexp_func.h:303
Definition: item_regexp_func.h:332
double val_real() override
Definition: item_regexp_func.h:347
Item_func_regexp_replace(const POS &pos, PT_item_list *item_list)
Definition: item_regexp_func.h:334
const char * func_name() const override
Definition: item_regexp_func.h:349
bool val_date(Date_val *date, my_time_flags_t flags) override
Copy-pasted from Item_str_func.
Definition: item_regexp_func.h:358
longlong val_int() override
Definition: item_regexp_func.h:343
int pos_arg_pos() const override
The position in the argument list of 'position'.
Definition: item_regexp_func.h:368
Item * replacement()
Definition: item_regexp_func.h:341
int occ_arg_pos() const override
The position in the argument list of 'occurrence'.
Definition: item_regexp_func.h:369
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_regexp_func.h:362
bool resolve_type(THD *) final
Resolves the collation to use for comparison.
Definition: item_regexp_func.cc:250
Item_result result_type() const override
Definition: item_regexp_func.h:337
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_regexp_func.h:361
String * val_str(String *result) override
Definition: item_regexp_func.cc:277
int match_arg_pos() const override
The position in the argument list of match_parameter.
Definition: item_regexp_func.h:370
Definition: item_regexp_func.h:373
longlong val_int() override
Definition: item_regexp_func.h:382
int pos_arg_pos() const override
The position in the argument list of 'position'.
Definition: item_regexp_func.h:407
const char * func_name() const override
Definition: item_regexp_func.h:388
bool resolve_type(THD *) final
Resolves the collation to use for comparison.
Definition: item_regexp_func.cc:301
bool val_date(Date_val *date, my_time_flags_t flags) override
Copy-pasted from Item_str_func.
Definition: item_regexp_func.h:397
double val_real() override
Definition: item_regexp_func.h:386
int match_arg_pos() const override
The position in the argument list of match_parameter.
Definition: item_regexp_func.h:409
int occ_arg_pos() const override
The position in the argument list of 'occurrence'.
Definition: item_regexp_func.h:408
bool val_datetime(Datetime_val *dt, my_time_flags_t flags) override
Evaluate the item and return result as a datetime value.
Definition: item_regexp_func.h:401
String * val_str(String *result) override
Definition: item_regexp_func.cc:311
Item_func_regexp_substr(const POS &pos, PT_item_list *item_list)
Definition: item_regexp_func.h:375
bool val_time(Time_val *time) override
Evaluate the item and return result as a time value.
Definition: item_regexp_func.h:400
Item_result result_type() const override
Definition: item_regexp_func.h:378
Base class for all regular expression function classes.
Definition: item_regexp_func.h:87
void cleanup() override
Called for every Item after use (preparation and execution).
Definition: item_regexp_func.cc:137
std::optional< int > position() const
The value of the position argument, or its default if absent.
Definition: item_regexp_func.h:115
std::optional< std::string > match_parameter() const
The value of the match_parameter argument, or an empty string if absent.
Definition: item_regexp_func.h:153
Item * pattern() const
The expression for the pattern string.
Definition: item_regexp_func.h:112
Item * subject() const
The expression for the subject string.
Definition: item_regexp_func.h:109
my_decimal * convert_int_to_decimal(my_decimal *value)
Definition: item_regexp_func.h:177
bool fix_fields(THD *thd, Item **) override
Decides on the mode for matching, case sensitivity etc.
Definition: item_regexp_func.cc:126
bool set_pattern()
Definition: item_regexp_func.cc:142
virtual int pos_arg_pos() const =0
The position in the argument list of 'position'.
unique_ptr_destroy_only< regexp::Regexp_facade > m_facade
Definition: item_regexp_func.h:226
virtual int match_arg_pos() const =0
The position in the argument list of match_parameter.
longlong convert_str_to_int()
Definition: item_regexp_func.h:200
virtual int occ_arg_pos() const =0
The position in the argument list of 'occurrence'.
bool resolve_type(THD *) override
Resolves the collation to use for comparison.
Definition: item_regexp_func.cc:110
String * convert_int_to_str(String *str)
Definition: item_regexp_func.h:169
double convert_int_to_real()
Definition: item_regexp_func.h:185
std::optional< int > occurrence() const
The value of the occurrence argument, or its default if absent.
Definition: item_regexp_func.h:134
Item_func_regexp(const POS &pos, PT_item_list *opt_list)
Definition: item_regexp_func.h:89
double convert_str_to_real()
Definition: item_regexp_func.h:190
Definition: item_func.h:101
Item ** args
Array of pointers to arguments.
Definition: item_func.h:108
uint arg_count
How many arguments in 'args'.
Definition: item_func.h:131
Item ** arguments() const
Definition: item_func.h:133
Item_static_string_func(const Name_string &name_par, const char *str, size_t length, const CHARSET_INFO *cs, Derivation dv=DERIVATION_COERCIBLE)
Definition: item.h:5780
Base class that is used to represent any kind of expression in a relational query.
Definition: item.h:928
String str_value
str_values's main purpose is to cache the value in save_in_field
Definition: item.h:3636
DTCollation collation
Character set and collation properties assigned for this Item.
Definition: item.h:3643
void set_data_type_bool()
Definition: item.h:1522
bool get_date_from_int(Date_val *date, my_time_flags_t flags)
Convert val_int() to date.
Definition: item.cc:1599
bool is_nullable() const
Definition: item.h:3747
virtual longlong val_int()=0
bool fixed
True if item has been resolved.
Definition: item.h:3736
bool null_value
True if item is null.
Definition: item.h:3773
bool get_datetime_from_string(Datetime_val *dt, my_time_flags_t flags)
Convert val_str() to datetime.
Definition: item.cc:1555
bool get_datetime_from_int(Datetime_val *dt, my_time_flags_t flags)
Convert val_int() to datetime.
Definition: item.cc:1593
bool get_time_from_int(Time_val *time)
Convert val_int() to time.
Definition: item.cc:1722
bool unsigned_flag
Definition: item.h:3774
bool get_date_from_string(Date_val *date, my_time_flags_t flags)
Convert val_str() to date.
Definition: item.cc:1563
virtual String * val_str(String *str)=0
void set_data_type_longlong()
Set the data type of the Item to be longlong.
Definition: item.h:1553
bool get_time_from_string(Time_val *time)
Convert val_str() to time.
Definition: item.cc:1701
Wrapper class for an Item list head, used to allocate Item lists in the parser in a context-independe...
Definition: parse_tree_helpers.h:109
Base class for parse tree nodes (excluding the Parse_tree_root hierarchy)
Definition: parse_tree_node_base.h:231
String class wrapper with a preallocated buffer of size buff_sz.
Definition: sql_string.h:672
Using this class is fraught with peril, and you need to be very careful when doing so.
Definition: sql_string.h:169
const CHARSET_INFO * charset() const
Definition: sql_string.h:242
const char * ptr() const
Definition: sql_string.h:251
size_t length() const
Definition: sql_string.h:243
For each client connection we create a separate thread with THD serving as a thread/connection descri...
Definition: sql_lexer_thd.h:36
bool is_error() const
true if there is an error in the error stack.
Definition: sql_class.h:3337
Time_val is a temporal type that represents only time.
Definition: my_temporal.h:55
my_decimal class limits 'decimal_t' type to what we need in MySQL.
Definition: my_decimal.h:97
static char buf[MAX_BUF]
Definition: conf_to_src.cc:74
thread_local THD * current_thd
Definition: current_thd.cc:26
#define E_DEC_FATAL_ERROR
Definition: decimal.h:154
static int flags[50]
Definition: hp_test1.cc:40
static std::string to_string(const LEX_STRING &str)
Definition: lex_string.h:50
A better implementation of the UNIX ctype(3) library.
int64_t my_strntoll(const CHARSET_INFO *cs, const char *str, size_t length, int base, const char **end, int *err)
Definition: m_ctype.h:747
double my_strntod(const CHARSET_INFO *cs, const char *str, size_t length, const char **end, int *err)
Definition: m_ctype.h:759
std::unique_ptr< T, Destroy_only< T > > unique_ptr_destroy_only
std::unique_ptr, but only destroying.
Definition: my_alloc.h:480
int int2my_decimal(uint mask, longlong i, bool unsigned_flag, my_decimal *d)
Definition: my_decimal.h:330
Some integer typedefs for easier portability.
long long int longlong
Definition: my_inttypes.h:55
unsigned int my_time_flags_t
Flags to str_to_datetime and number_to_datetime.
Definition: my_time.h:85
std::string str(const mysqlrouter::ConfigGenerator::Options::Endpoint &ep)
Definition: config_generator.cc:1078
Definition: buf0block_hint.cc:30
static Value err()
Create a Value object that represents an error condition.
Definition: json_binary.cc:924
ValueType value(const std::optional< ValueType > &v)
Definition: gtid.h:83
This file hides most of ICU from the Item_func_regexp subclasses.
Our own string classes, used pervasively throughout the executor.
Bison "location" class.
Definition: parse_location.h:43
Environment data for the contextualization phase.
Definition: parse_tree_node_base.h:422
Item_result
Type of the user defined function return slot and arguments.
Definition: udf_registration_types.h:39
@ STRING_RESULT
not valid for UDFs
Definition: udf_registration_types.h:41
@ INT_RESULT
double
Definition: udf_registration_types.h:43