1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-01 03:47:19 +03:00

Merge branch '10.4' into 10.5

This commit is contained in:
Sergei Golubchik
2023-12-01 13:43:58 +01:00
511 changed files with 26233 additions and 3853 deletions

View File

@ -145,6 +145,11 @@ public:
struct Lex_ident_sys_st: public LEX_CSTRING
{
public:
static void *operator new(size_t size, MEM_ROOT *mem_root) throw ()
{ return alloc_root(mem_root, size); }
static void operator delete(void *ptr,size_t size) { TRASH_FREE(ptr, size); }
static void operator delete(void *ptr, MEM_ROOT *mem_root) {}
bool copy_ident_cli(THD *thd, const Lex_ident_cli_st *str);
bool copy_keyword(THD *thd, const Lex_ident_cli_st *str);
bool copy_sys(THD *thd, const LEX_CSTRING *str);
@ -178,6 +183,10 @@ public:
LEX_CSTRING tmp= {name, length};
set_valid_utf8(&tmp);
}
Lex_ident_sys(THD *thd, const LEX_CSTRING *str)
{
set_valid_utf8(str);
}
Lex_ident_sys & operator=(const Lex_ident_sys_st &name)
{
Lex_ident_sys_st::operator=(name);
@ -2445,6 +2454,15 @@ public:
void reduce_digest_token(uint token_left, uint token_right);
private:
enum Ident_mode
{
GENERAL_KEYWORD_OR_FUNC_LPAREN,
QUALIFIED_SPECIAL_FUNC_LPAREN
};
int scan_ident_common(THD *thd, Lex_ident_cli_st *str, Ident_mode mode);
/**
Set the echo mode.
@ -2765,8 +2783,8 @@ private:
bool consume_comment(int remaining_recursions_permitted);
int lex_one_token(union YYSTYPE *yylval, THD *thd);
int find_keyword(Lex_ident_cli_st *str, uint len, bool function) const;
int find_keyword_qualified_special_func(Lex_ident_cli_st *str, uint len) const;
LEX_CSTRING get_token(uint skip, uint length);
int scan_ident_sysvar(THD *thd, Lex_ident_cli_st *str);
int scan_ident_start(THD *thd, Lex_ident_cli_st *str);
int scan_ident_middle(THD *thd, Lex_ident_cli_st *str,
CHARSET_INFO **cs, my_lex_states *);
@ -4108,8 +4126,41 @@ public:
Item *create_item_query_expression(THD *thd, st_select_lex_unit *unit);
Item *make_item_func_call_generic(THD *thd, Lex_ident_cli_st *db,
Lex_ident_cli_st *name, List<Item> *args);
static const Schema *
find_func_schema_by_name_or_error(const Lex_ident_sys &schema_name,
const Lex_ident_sys &func_name);
Item *make_item_func_replace(THD *thd,
const Lex_ident_cli_st &schema_name,
const Lex_ident_cli_st &func_name,
Item *org, Item *find, Item *replace);
Item *make_item_func_replace(THD *thd,
const Lex_ident_cli_st &schema_name,
const Lex_ident_cli_st &func_name,
List<Item> *args);
Item *make_item_func_substr(THD *thd,
const Lex_ident_cli_st &schema_name,
const Lex_ident_cli_st &func_name,
const Lex_substring_spec_st &spec);
Item *make_item_func_substr(THD *thd,
const Lex_ident_cli_st &schema_name,
const Lex_ident_cli_st &func_name,
List<Item> *args);
Item *make_item_func_trim(THD *thd,
const Lex_ident_cli_st &schema_name,
const Lex_ident_cli_st &func_name,
const Lex_trim_st &spec);
Item *make_item_func_trim(THD *thd,
const Lex_ident_cli_st &schema_name,
const Lex_ident_cli_st &func_name,
List<Item> *args);
Item *make_item_func_call_generic(THD *thd,
const Lex_ident_cli_st *db,
const Lex_ident_cli_st *name,
List<Item> *args);
Item *make_item_func_call_generic(THD *thd,
const Lex_ident_sys &db,
const Lex_ident_sys &name,
List<Item> *args);
Item *make_item_func_call_generic(THD *thd,
Lex_ident_cli_st *db,
Lex_ident_cli_st *pkg,